/src/gui/

nfig9
-rw-r--r--.github/CONTRIBUTING.md183
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md32
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md25
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md20
-rw-r--r--.github/SECURITY.md20
-rw-r--r--.github/workflows/android.yml52
-rw-r--r--.github/workflows/build.yml271
-rw-r--r--.github/workflows/cpp_lint.yml55
-rw-r--r--.github/workflows/lua.yml72
-rw-r--r--.github/workflows/macos.yml67
-rw-r--r--.gitignore70
-rw-r--r--.gitlab-ci.yml289
-rw-r--r--.luacheckrc82
-rw-r--r--.mailmap76
-rw-r--r--.travis.yml31
-rw-r--r--AppImageBuilder.yml54
-rw-r--r--CMakeLists.txt252
-rw-r--r--CONTRIBUTING.md107
-rw-r--r--Dockerfile71
-rw-r--r--LICENSE.txt206
-rw-r--r--README.md480
-rw-r--r--README.txt562
-rw-r--r--android/.gitignore11
-rw-r--r--android/app/build.gradle116
-rw-r--r--android/app/src/main/AndroidManifest.xml75
-rw-r--r--android/app/src/main/java/net/minetest/minetest/CustomEditText.java45
-rw-r--r--android/app/src/main/java/net/minetest/minetest/GameActivity.java207
-rw-r--r--android/app/src/main/java/net/minetest/minetest/MainActivity.java185
-rw-r--r--android/app/src/main/java/net/minetest/minetest/UnzipService.java259
-rw-r--r--android/app/src/main/java/net/minetest/minetest/Utils.java39
-rw-r--r--android/app/src/main/res/drawable/background.pngbin0 -> 83 bytes-rw-r--r--android/app/src/main/res/drawable/bg.xml4
-rw-r--r--android/app/src/main/res/layout/activity_main.xml33
-rw-r--r--android/app/src/main/res/mipmap/ic_launcher.pngbin0 -> 5780 bytes-rw-r--r--android/app/src/main/res/values/strings.xml13
-rw-r--r--android/app/src/main/res/values/styles.xml15
-rw-r--r--android/app/src/main/res/xml/filepaths.xml3
-rw-r--r--android/build.gradle37
-rw-r--r--android/gradle.properties11
-rw-r--r--android/gradle/wrapper/gradle-wrapper.jarbin0 -> 55616 bytes-rw-r--r--android/gradle/wrapper/gradle-wrapper.properties5
-rwxr-xr-xandroid/gradlew188
-rw-r--r--android/gradlew.bat100
-rw-r--r--android/icons/aux1_btn.svg143
-rw-r--r--android/icons/camera_btn.svg108
-rw-r--r--android/icons/chat_btn.svg96
-rw-r--r--android/icons/chat_hide_btn.svg139
-rw-r--r--android/icons/chat_show_btn.svg133
-rw-r--r--android/icons/checkbox_tick.svg93
-rw-r--r--android/icons/debug_btn.svg344
-rw-r--r--android/icons/down.svg542
-rw-r--r--android/icons/drop_btn.svg173
-rw-r--r--android/icons/fast_btn.svg190
-rw-r--r--android/icons/fly_btn.svg168
-rw-r--r--android/icons/gear_icon.svg194
-rw-r--r--android/icons/inventory_btn.svg509
-rw-r--r--android/icons/joystick_bg.svg876
-rw-r--r--android/icons/joystick_center.svg877
-rw-r--r--android/icons/joystick_off.svg882
-rw-r--r--android/icons/jump_btn.svg547
-rw-r--r--android/icons/minimap_btn.svg159
-rw-r--r--android/icons/noclip_btn.svg173
-rw-r--r--android/icons/rangeview_btn.svg456
-rw-r--r--android/icons/rare_controls.svg521
-rw-r--r--android/icons/zoom.svg599
-rw-r--r--android/keystore-minetest.jksbin0 -> 2247 bytes-rw-r--r--android/native/build.gradle69
-rw-r--r--android/native/jni/Android.mk301
-rw-r--r--android/native/jni/Application.mk32
-rw-r--r--android/native/src/main/AndroidManifest.xml1
-rw-r--r--android/settings.gradle (renamed from build/android/settings.gradle)2
-rw-r--r--build/android/Makefile834
-rw-r--r--build/android/build.gradle49
-rw-r--r--build/android/jni/Android.mk382
-rw-r--r--build/android/jni/Application.mk9
-rw-r--r--build/android/patches/irrlicht-back_button.patch20
-rw-r--r--build/android/patches/irrlicht-texturehack.patch240
-rw-r--r--build/android/patches/irrlicht-touchcount.patch30
-rw-r--r--build/android/patches/libiconv_android.patch39
-rw-r--r--build/android/patches/libiconv_stdio.patch13
-rw-r--r--build/android/patches/libvorbis-libogg-fpu.patch37
-rw-r--r--build/android/patches/openssl_arch.patch13
-rw-r--r--build/android/src/debug/AndroidManifest.xml4
-rw-r--r--build/android/src/main/AndroidManifest.xml34
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java416
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java91
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java99
-rw-r--r--build/android/src/main/res/drawable-hdpi/irr_icon.pngbin5490 -> 0 bytes-rw-r--r--build/android/src/main/res/drawable-ldpi/irr_icon.pngbin2262 -> 0 bytes-rw-r--r--build/android/src/main/res/drawable-mdpi/irr_icon.pngbin3110 -> 0 bytes-rw-r--r--build/android/src/main/res/drawable-xhdpi/irr_icon.pngbin7610 -> 0 bytes-rw-r--r--build/android/src/main/res/layout/assetcopy.xml24
-rw-r--r--build/android/src/main/res/values/strings.xml5
-rw-r--r--build/android/src/main/res/values/styles.xml11
-rw-r--r--builtin/async/game.lua59
-rw-r--r--builtin/async/init.lua17
-rw-r--r--builtin/async/mainmenu.lua9
-rw-r--r--builtin/client/chatcommands.lua74
-rw-r--r--builtin/client/death_formspec.lua15
-rw-r--r--builtin/client/init.lua12
-rw-r--r--builtin/client/misc.lua7
-rw-r--r--builtin/client/register.lua83
-rw-r--r--builtin/common/after.lua50
-rw-r--r--builtin/common/chatcommands.lua178
-rw-r--r--builtin/common/filterlist.lua60
-rw-r--r--builtin/common/information_formspecs.lua136
-rw-r--r--builtin/common/misc_helpers.lua581
-rw-r--r--builtin/common/mod_storage.lua19
-rw-r--r--builtin/common/serialize.lua383
-rw-r--r--builtin/common/strict.lua40
-rw-r--r--builtin/common/tests/misc_helpers_spec.lua173
-rw-r--r--builtin/common/tests/serialize_spec.lua189
-rw-r--r--builtin/common/tests/vector_spec.lua465
-rw-r--r--builtin/common/vector.lua376
-rw-r--r--builtin/fstk/dialog.lua19
-rw-r--r--builtin/fstk/tabview.lua52
-rw-r--r--builtin/fstk/ui.lua88
-rw-r--r--builtin/game/async.lua22
-rw-r--r--builtin/game/auth.lua216
-rw-r--r--builtin/game/chat.lua1359
-rw-r--r--builtin/game/chatcommands.lua940
-rw-r--r--builtin/game/constants.lua4
-rw-r--r--builtin/game/deprecated.lua60
-rw-r--r--builtin/game/detached_inventory.lua8
-rw-r--r--builtin/game/falling.lua560
-rw-r--r--builtin/game/features.lua17
-rw-r--r--builtin/game/forceloading.lua46
-rw-r--r--builtin/game/init.lua54
-rw-r--r--builtin/game/item.lua568
-rw-r--r--builtin/game/item_entity.lua379
-rw-r--r--builtin/game/item_s.lua156
-rw-r--r--builtin/game/knockback.lua46
-rw-r--r--builtin/game/misc.lua267
-rw-r--r--builtin/game/misc_s.lua93
-rw-r--r--builtin/game/privileges.lua64
-rw-r--r--builtin/game/register.lua131
-rw-r--r--builtin/game/statbars.lua188
-rw-r--r--builtin/game/static_spawn.lua16
-rw-r--r--builtin/game/voxelarea.lua30
-rw-r--r--builtin/init.lua34
-rw-r--r--builtin/locale/__builtin.de.tr246
-rw-r--r--builtin/locale/__builtin.it.tr259
-rw-r--r--builtin/locale/template.txt246
-rw-r--r--builtin/mainmenu/async_event.lua (renamed from builtin/common/async_event.lua)10
-rw-r--r--builtin/mainmenu/common.lua202
-rw-r--r--builtin/mainmenu/dlg_config_world.lua474
-rw-r--r--builtin/mainmenu/dlg_contentstore.lua1062
-rw-r--r--builtin/mainmenu/dlg_create_world.lua485
-rw-r--r--builtin/mainmenu/dlg_delete_content.lua (renamed from builtin/mainmenu/dlg_delete_mod.lua)57
-rw-r--r--builtin/mainmenu/dlg_delete_world.lua24
-rw-r--r--builtin/mainmenu/dlg_register.lua123
-rw-r--r--builtin/mainmenu/dlg_rename_modpack.lua38
-rw-r--r--builtin/mainmenu/dlg_settings_advanced.lua737
-rw-r--r--builtin/mainmenu/dlg_version_info.lua172
-rw-r--r--builtin/mainmenu/game_theme.lua (renamed from builtin/mainmenu/textures.lua)144
-rw-r--r--builtin/mainmenu/gamemgr.lua83
-rw-r--r--builtin/mainmenu/generate_from_settingtypes.lua55
-rw-r--r--builtin/mainmenu/init.lua171
-rw-r--r--builtin/mainmenu/init_simple.lua4
-rw-r--r--builtin/mainmenu/modmgr.lua571
-rw-r--r--builtin/mainmenu/pkgmgr.lua929
-rw-r--r--builtin/mainmenu/serverlistmgr.lua252
-rw-r--r--builtin/mainmenu/store.lua614
-rw-r--r--builtin/mainmenu/tab_about.lua195
-rw-r--r--builtin/mainmenu/tab_content.lua237
-rw-r--r--builtin/mainmenu/tab_credits.lua101
-rw-r--r--builtin/mainmenu/tab_local.lua393
-rw-r--r--builtin/mainmenu/tab_mods.lua184
-rw-r--r--builtin/mainmenu/tab_multiplayer.lua249
-rw-r--r--builtin/mainmenu/tab_online.lua427
-rw-r--r--builtin/mainmenu/tab_server.lua195
-rw-r--r--builtin/mainmenu/tab_settings.lua333
-rw-r--r--builtin/mainmenu/tab_simple_main.lua219
-rw-r--r--builtin/mainmenu/tab_singleplayer.lua250
-rw-r--r--builtin/mainmenu/tab_texturepacks.lua132
-rw-r--r--builtin/mainmenu/tests/favorites_wellformed.txt29
-rw-r--r--builtin/mainmenu/tests/serverlistmgr_spec.lua38
-rw-r--r--builtin/profiler/init.lua32
-rw-r--r--builtin/profiler/instrumentation.lua33
-rw-r--r--builtin/profiler/reporter.lua25
-rw-r--r--builtin/profiler/sampling.lua2
-rw-r--r--builtin/settingtypes.txt2700
-rw-r--r--client/shaders/3d_interlaced_merge/opengl_fragment.glsl23
-rw-r--r--client/shaders/3d_interlaced_merge/opengl_vertex.glsl7
-rw-r--r--client/shaders/default_shader/opengl_fragment.glsl4
-rw-r--r--client/shaders/default_shader/opengl_vertex.glsl12
-rw-r--r--client/shaders/minimap_shader/opengl_fragment.glsl7
-rw-r--r--client/shaders/minimap_shader/opengl_vertex.glsl14
-rw-r--r--client/shaders/nodes_shader/opengl_fragment.glsl572
-rw-r--r--client/shaders/nodes_shader/opengl_vertex.glsl299
-rw-r--r--client/shaders/object_shader/opengl_fragment.glsl495
-rw-r--r--client/shaders/object_shader/opengl_vertex.glsl181
-rw-r--r--client/shaders/selection_shader/opengl_fragment.glsl7
-rw-r--r--client/shaders/selection_shader/opengl_vertex.glsl13
-rw-r--r--client/shaders/shadow_shaders/pass1_fragment.glsl13
-rw-r--r--client/shaders/shadow_shaders/pass1_trans_fragment.glsl42
-rw-r--r--client/shaders/shadow_shaders/pass1_trans_vertex.glsl50
-rw-r--r--client/shaders/shadow_shaders/pass1_vertex.glsl43
-rw-r--r--client/shaders/shadow_shaders/pass2_fragment.glsl23
-rw-r--r--client/shaders/shadow_shaders/pass2_vertex.glsl9
-rw-r--r--client/shaders/stars_shader/opengl_fragment.glsl6
-rw-r--r--client/shaders/stars_shader/opengl_vertex.glsl4
-rw-r--r--client/shaders/water_surface_shader/opengl_fragment.glsl164
-rw-r--r--client/shaders/water_surface_shader/opengl_vertex.glsl142
-rw-r--r--client/shaders/wielded_shader/opengl_fragment.glsl114
-rw-r--r--client/shaders/wielded_shader/opengl_vertex.glsl33
-rw-r--r--clientmods/preview/example.lua2
-rw-r--r--clientmods/preview/examples/first.lua1
-rw-r--r--clientmods/preview/init.lua206
-rw-r--r--clientmods/preview/mod.conf1
-rw-r--r--clientmods/preview/settingtypes.txt1
-rw-r--r--cmake/Modules/FindCURL.cmake19
-rw-r--r--cmake/Modules/FindGMP.cmake9
-rw-r--r--cmake/Modules/FindGettextLib.cmake15
-rw-r--r--cmake/Modules/FindIrrlicht.cmake71
-rw-r--r--cmake/Modules/FindJson.cmake28
-rw-r--r--cmake/Modules/FindLua.cmake28
-rw-r--r--cmake/Modules/FindLuaJIT.cmake57
-rw-r--r--cmake/Modules/FindOpenGLES2.cmake112
-rw-r--r--cmake/Modules/FindSQLite3.cmake2
-rw-r--r--cmake/Modules/FindVorbis.cmake21
-rw-r--r--cmake/Modules/FindZstd.cmake25
-rw-r--r--cmake/Modules/MinetestFindIrrlichtHeaders.cmake18
-rw-r--r--doc/Doxyfile.in13
-rw-r--r--doc/README.android79
-rw-r--r--doc/breakages.md8
-rw-r--r--doc/builtin_entities.txt101
-rw-r--r--doc/client_lua_api.txt1527
-rw-r--r--doc/direction.md69
-rw-r--r--doc/fst_api.txt7
-rw-r--r--doc/lgpl-2.1.txt18
-rw-r--r--doc/lua_api.txt10168
-rw-r--r--doc/menu_lua_api.txt365
-rw-r--r--doc/minetest.659
-rwxr-xr-xdoc/mkdocs/build.sh41
-rw-r--r--doc/mkdocs/docs/css/code_styles.css68
-rw-r--r--doc/mkdocs/docs/css/extra.css15
l---------doc/mkdocs/docs/img/favicon.ico1
-rw-r--r--doc/mkdocs/lua_highlight.patch9
-rw-r--r--doc/mod_channels.pngbin0 -> 349332 bytes-rw-r--r--doc/protocol.txt24
-rw-r--r--doc/texture_packs.txt134
-rw-r--r--doc/world_format.txt339
-rw-r--r--fonts/Arimo-Bold.ttfbin0 -> 420920 bytes-rw-r--r--fonts/Arimo-BoldItalic.ttfbin0 -> 417668 bytes-rw-r--r--fonts/Arimo-Italic.ttfbin0 -> 421372 bytes-rw-r--r--fonts/Arimo-LICENSE.txt2
-rw-r--r--fonts/Arimo-Regular.ttfbin0 -> 436876 bytes-rw-r--r--fonts/Cousine-Bold.ttfbin0 -> 288272 bytes-rw-r--r--fonts/Cousine-BoldItalic.ttfbin0 -> 265104 bytes-rw-r--r--fonts/Cousine-Italic.ttfbin0 -> 262524 bytes-rw-r--r--fonts/Cousine-LICENSE.txt2
-rw-r--r--fonts/Cousine-Regular.ttfbin0 -> 309040 bytes-rw-r--r--fonts/DroidSansFallbackFull-LICENSE.txt13
-rw-r--r--fonts/DroidSansFallbackFull.ttfbin4529044 -> 5398328 bytes-rw-r--r--fonts/liberationmono.ttfbin333636 -> 0 bytes-rw-r--r--fonts/liberationsans.ttfbin133828 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_10.xmlbin156248 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_100.pngbin12012 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_11.xmlbin157272 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_110.pngbin14739 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_12.xmlbin157058 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_120.pngbin16295 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_14.xmlbin159272 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_140.pngbin42429 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_16.xmlbin160744 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_160.pngbin48106 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_18.xmlbin162284 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_180.pngbin56766 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_20.xmlbin162438 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_200.pngbin69059 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_22.xmlbin162936 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_220.pngbin74427 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_24.xmlbin166358 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_240.pngbin83532 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_26.xmlbin167054 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_260.pngbin93958 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_28.xmlbin167156 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_280.pngbin101952 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_36.xmlbin169606 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_360.pngbin143453 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_4.xmlbin136910 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_40.pngbin7642 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_48.xmlbin171972 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_480.pngbin205578 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_56.xmlbin174174 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_560.pngbin246505 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_6.xmlbin140552 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_60.pngbin13992 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_8.xmlbin154564 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_80.pngbin9740 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_9.xmlbin154830 -> 0 bytes-rwxr-xr-xfonts/lucida_sans_90.pngbin10704 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_10.xmlbin257014 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_100.pngbin56121 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_11.xmlbin263644 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_110.pngbin67613 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_12.xmlbin268932 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_120.pngbin73938 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_14.xmlbin269188 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_140.pngbin89073 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_16.xmlbin275642 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_160.pngbin101939 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_18.xmlbin279962 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_180.pngbin122274 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_20.xmlbin282588 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_200.pngbin138662 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_22.xmlbin283950 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_220.pngbin152844 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_24.xmlbin286626 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_240.pngbin170247 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_26.xmlbin289710 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_260.pngbin190156 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_28.xmlbin292596 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_280.pngbin200848 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_4.xmlbin237740 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_40.pngbin15668 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_6.xmlbin245472 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_60.pngbin29291 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_8.xmlbin251876 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_80.pngbin45552 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_9.xmlbin254016 -> 0 bytes-rwxr-xr-xfonts/mono_dejavu_sans_90.pngbin50995 -> 0 bytes-rw-r--r--games/devtest/.luacheckrc43
-rw-r--r--games/devtest/LICENSE.txt4
-rw-r--r--games/devtest/README.md51
-rw-r--r--games/devtest/game.conf2
-rw-r--r--games/devtest/menu/background.pngbin0 -> 160 bytes-rw-r--r--games/devtest/menu/header.pngbin0 -> 404 bytes-rw-r--r--games/devtest/menu/icon.pngbin0 -> 217 bytes-rw-r--r--games/devtest/mods/basenodes/init.lua351
-rw-r--r--games/devtest/mods/basenodes/mod.conf2
-rw-r--r--games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.pngbin0 -> 187 bytes-rw-r--r--games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.pngbin0 -> 166 bytes-rw-r--r--games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.pngbin0 -> 177 bytes-rw-r--r--games/devtest/mods/basenodes/textures/basenodes_snow_sheet.pngbin0 -> 166 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_apple.pngbin0 -> 102 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_cobble.pngbin0 -> 340 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_desert_sand.pngbin0 -> 293 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_desert_stone.pngbin0 -> 584 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_dirt.pngbin0 -> 7303 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_grass.pngbin0 -> 697 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_gravel.pngbin0 -> 171 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_ice.pngbin0 -> 369 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_junglegrass.pngbin0 -> 201 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_jungleleaves.pngbin0 -> 399 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_jungletree.pngbin0 -> 730 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_jungletree_top.pngbin0 -> 714 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_lava.png (renamed from games/minimal/mods/default/textures/default_lava.png)bin172 -> 172 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_lava_flowing.pngbin0 -> 91 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_leaves.pngbin0 -> 883 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_mossycobble.pngbin0 -> 574 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_pine_needles.pngbin0 -> 648 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_pine_tree.pngbin0 -> 604 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_pine_tree_top.pngbin0 -> 174 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_river_water.pngbin0 -> 496 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_river_water_flowing.pngbin0 -> 99 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_sand.pngbin0 -> 554 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_snow.pngbin0 -> 166 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_snow_side.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_stone.pngbin0 -> 313 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_tree.pngbin0 -> 659 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_tree_top.pngbin0 -> 175 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_water.png (renamed from games/minimal/mods/default/textures/default_water.png)bin302 -> 302 bytes-rw-r--r--games/devtest/mods/basenodes/textures/default_water_flowing.pngbin0 -> 115 bytes-rw-r--r--games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass.pngbin0 -> 829 bytes-rw-r--r--games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass_side.pngbin0 -> 796 bytes-rw-r--r--games/devtest/mods/basenodes/textures/info.txt7
-rw-r--r--games/devtest/mods/basetools/init.lua449
-rw-r--r--games/devtest/mods/basetools/mod.conf2
-rw-r--r--games/devtest/mods/basetools/textures/basetools_bloodsword.pngbin0 -> 165 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_elementalsword.pngbin0 -> 177 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_firesword.pngbin0 -> 166 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_healdagger.pngbin0 -> 162 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_healsword.pngbin0 -> 170 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_icesword.pngbin0 -> 170 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_mesepick.pngbin0 -> 156 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_mesesword.pngbin0 -> 163 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelaxe.pngbin0 -> 131 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steeldagger.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelpick.pngbin0 -> 159 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelpick_l1.pngbin0 -> 190 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelpick_l2.pngbin0 -> 177 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelshears.pngbin0 -> 208 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelshovel.pngbin0 -> 140 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_steelsword.pngbin0 -> 163 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_stoneaxe.pngbin0 -> 130 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_stonepick.png (renamed from games/minimal/mods/default/textures/default_tool_stonepick.png)bin155 -> 155 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_stoneshears.pngbin0 -> 224 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_stoneshovel.pngbin0 -> 134 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_stonesword.pngbin0 -> 159 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_superhealsword.pngbin0 -> 192 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_titaniumsword.pngbin0 -> 160 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_usespick.pngbin0 -> 161 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_usessword.pngbin0 -> 133 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_woodaxe.pngbin0 -> 121 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_wooddagger.pngbin0 -> 139 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_woodpick.png (renamed from games/minimal/mods/default/textures/default_tool_woodpick.png)bin149 -> 149 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_woodshears.pngbin0 -> 212 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_woodshovel.pngbin0 -> 133 bytes-rw-r--r--games/devtest/mods/basetools/textures/basetools_woodsword.pngbin0 -> 139 bytes-rw-r--r--games/devtest/mods/broken/init.lua11
-rw-r--r--games/devtest/mods/broken/mod.conf2
-rw-r--r--games/devtest/mods/bucket/init.lua27
-rw-r--r--games/devtest/mods/bucket/mod.conf2
-rw-r--r--games/devtest/mods/bucket/textures/bucket.pngbin0 -> 163 bytes-rw-r--r--games/devtest/mods/bucket/textures/bucket_lava.pngbin0 -> 168 bytes-rw-r--r--games/devtest/mods/bucket/textures/bucket_water.pngbin0 -> 168 bytes-rw-r--r--games/devtest/mods/chest/init.lua40
-rw-r--r--games/devtest/mods/chest/mod.conf2
-rw-r--r--games/devtest/mods/chest/textures/chest_chest.pngbin0 -> 163 bytes-rw-r--r--games/devtest/mods/chest_of_everything/init.lua136
-rw-r--r--games/devtest/mods/chest_of_everything/mod.conf2
-rw-r--r--games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.pngbin0 -> 210 bytes-rw-r--r--games/devtest/mods/dignodes/init.lua37
-rw-r--r--games/devtest/mods/dignodes/mod.conf2
-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_choppy.pngbin0 -> 187 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_cracky.pngbin0 -> 193 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_crumbly.pngbin0 -> 172 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_dig_immediate.pngbin0 -> 170 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_none.pngbin0 -> 201 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_rating1.pngbin0 -> 94 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_rating2.pngbin0 -> 92 bytes-rw-r--r--games/devtest/mods/dignodes/textures/dignodes_rating3.pngbin0 -> 93 bytes-rw-r--r--games/devtest/mods/experimental/commands.lua221
-rw-r--r--games/devtest/mods/experimental/detached.lua29
-rw-r--r--games/devtest/mods/experimental/init.lua23
-rw-r--r--games/devtest/mods/experimental/items.lua105
-rw-r--r--games/devtest/mods/experimental/mod.conf2
-rw-r--r--games/devtest/mods/experimental/textures/experimental_callback_node.pngbin0 -> 139 bytes-rw-r--r--games/devtest/mods/experimental/textures/experimental_particle_sheet.pngbin0 -> 208 bytes-rw-r--r--games/devtest/mods/experimental/textures/experimental_particle_vertical.pngbin0 -> 308 bytes-rw-r--r--games/devtest/mods/experimental/textures/experimental_tester_tool_1.pngbin0 -> 138 bytes-rw-r--r--games/devtest/mods/give_initial_stuff/init.lua37
-rw-r--r--games/devtest/mods/give_initial_stuff/mod.conf3
-rw-r--r--games/devtest/mods/initial_message/init.lua9
-rw-r--r--games/devtest/mods/initial_message/mod.conf2
-rw-r--r--games/devtest/mods/mapgen/init.lua104
-rw-r--r--games/devtest/mods/mapgen/mod.conf3
-rw-r--r--games/devtest/mods/modchannels/init.lua14
-rw-r--r--games/devtest/mods/modchannels/mod.conf2
-rw-r--r--games/devtest/mods/soundstuff/init.lua174
-rw-r--r--games/devtest/mods/soundstuff/mod.conf2
-rw-r--r--games/devtest/mods/soundstuff/sounds/soundstuff_mono.oggbin0 -> 4362 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_eat.pngbin0 -> 113 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_blank.pngbin0 -> 83 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.pngbin0 -> 189 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_dig.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_dug.pngbin0 -> 132 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_fall.pngbin0 -> 100 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.pngbin0 -> 120 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_place.pngbin0 -> 115 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.pngbin0 -> 143 bytes-rw-r--r--games/devtest/mods/soundstuff/textures/soundstuff_node_sound.pngbin0 -> 116 bytes-rw-r--r--games/devtest/mods/stairs/init.lua (renamed from games/minimal/mods/stairs/init.lua)58
-rw-r--r--games/devtest/mods/stairs/mod.conf3
-rw-r--r--games/devtest/mods/testentities/armor.lua61
-rw-r--r--games/devtest/mods/testentities/callbacks.lua78
-rw-r--r--games/devtest/mods/testentities/init.lua3
-rw-r--r--games/devtest/mods/testentities/mod.conf2
-rw-r--r--games/devtest/mods/testentities/textures/testentities_armorball.pngbin0 -> 1385 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_callback.pngbin0 -> 156 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_callback_step.pngbin0 -> 166 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube1.pngbin0 -> 130 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube2.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube3.pngbin0 -> 124 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube4.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube5.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_cube6.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_dungeon_master.pngbin0 -> 2855 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_sprite.pngbin0 -> 120 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_upright_sprite1.pngbin0 -> 114 bytes-rw-r--r--games/devtest/mods/testentities/textures/testentities_upright_sprite2.pngbin0 -> 119 bytes-rw-r--r--games/devtest/mods/testentities/visuals.lua137
-rw-r--r--games/devtest/mods/testfood/init.lua31
-rw-r--r--games/devtest/mods/testfood/mod.conf2
-rw-r--r--games/devtest/mods/testfood/textures/testfood_bad.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testfood/textures/testfood_bad2.pngbin0 -> 133 bytes-rw-r--r--games/devtest/mods/testfood/textures/testfood_good.pngbin0 -> 129 bytes-rw-r--r--games/devtest/mods/testfood/textures/testfood_good2.pngbin0 -> 145 bytes-rw-r--r--games/devtest/mods/testfood/textures/testfood_replace.pngbin0 -> 135 bytes-rw-r--r--games/devtest/mods/testformspec/LICENSE.txt14
-rw-r--r--games/devtest/mods/testformspec/callbacks.lua51
-rw-r--r--games/devtest/mods/testformspec/dummy_items.lua14
-rw-r--r--games/devtest/mods/testformspec/formspec.lua536
-rw-r--r--games/devtest/mods/testformspec/init.lua3
-rw-r--r--games/devtest/mods/testformspec/mod.conf2
-rw-r--r--games/devtest/mods/testformspec/models/testformspec_character.b3dbin0 -> 73433 bytes-rw-r--r--games/devtest/mods/testformspec/models/testformspec_chest.obj79
-rw-r--r--games/devtest/mods/testformspec/textures/default_chest_front.pngbin0 -> 423 bytes-rw-r--r--games/devtest/mods/testformspec/textures/default_chest_inside.pngbin0 -> 102 bytes-rw-r--r--games/devtest/mods/testformspec/textures/default_chest_side.pngbin0 -> 375 bytes-rw-r--r--games/devtest/mods/testformspec/textures/default_chest_top.pngbin0 -> 423 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_9slice.pngbin0 -> 5935 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_animation.jpgbin0 -> 4376 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_animation.pngbin0 -> 214 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg.pngbin0 -> 92 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg_9slice.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg_hovered.pngbin0 -> 92 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_bg_pressed.pngbin0 -> 91 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_button_image.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_character.pngbin0 -> 2754 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_hovered.pngbin0 -> 195 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_item.pngbin0 -> 182 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_node.pngbin0 -> 113 bytes-rw-r--r--games/devtest/mods/testformspec/textures/testformspec_pressed.pngbin0 -> 165 bytes-rw-r--r--games/devtest/mods/testhud/init.lua81
-rw-r--r--games/devtest/mods/testhud/mod.conf2
-rw-r--r--games/devtest/mods/testitems/init.lua55
-rw-r--r--games/devtest/mods/testitems/mod.conf2
-rw-r--r--games/devtest/mods/testitems/textures/testitems_overlay_base.pngbin0 -> 106 bytes-rw-r--r--games/devtest/mods/testitems/textures/testitems_overlay_overlay.pngbin0 -> 220 bytes-rw-r--r--games/devtest/mods/testnodes/README.md11
-rw-r--r--games/devtest/mods/testnodes/drawtypes.lua629
-rw-r--r--games/devtest/mods/testnodes/init.lua11
-rw-r--r--games/devtest/mods/testnodes/light.lua50
-rw-r--r--games/devtest/mods/testnodes/liquids.lua134
-rw-r--r--games/devtest/mods/testnodes/meshes.lua145
-rw-r--r--games/devtest/mods/testnodes/mod.conf3
-rw-r--r--games/devtest/mods/testnodes/models/testnodes_ocorner.obj23
-rw-r--r--games/devtest/mods/testnodes/models/testnodes_pyramid.obj24
-rw-r--r--games/devtest/mods/testnodes/nodeboxes.lua81
-rw-r--r--games/devtest/mods/testnodes/overlays.lua93
-rw-r--r--games/devtest/mods/testnodes/param2.lua168
-rw-r--r--games/devtest/mods/testnodes/properties.lua397
-rw-r--r--games/devtest/mods/testnodes/textures.lua290
-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_1.pngbin0 -> 107 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_1g.pngbin0 -> 104 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_1w.pngbin0 -> 121 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_1wg.pngbin0 -> 122 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_2.pngbin0 -> 112 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_2g.pngbin0 -> 110 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_2w.pngbin0 -> 134 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_2wg.pngbin0 -> 135 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_3.pngbin0 -> 105 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_3g.pngbin0 -> 103 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_3w.pngbin0 -> 112 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_3wg.pngbin0 -> 112 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_4.pngbin0 -> 97 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_4g.pngbin0 -> 95 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_4w.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_4wg.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_5.pngbin0 -> 98 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_5g.pngbin0 -> 98 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_5w.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_5wg.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_6.pngbin0 -> 100 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_6g.pngbin0 -> 98 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_6w.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_6wg.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_airlike.pngbin0 -> 92 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_allfaces.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_alpha.pngbin0 -> 96 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_alpha128.pngbin0 -> 136 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_alpha191.pngbin0 -> 132 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_alpha64.pngbin0 -> 134 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_anim.pngbin0 -> 274 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attached_bottom.pngbin0 -> 86 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attached_side.pngbin0 -> 98 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attached_top.pngbin0 -> 87 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.pngbin0 -> 130 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attachedw_side.pngbin0 -> 122 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_attachedw_top.pngbin0 -> 109 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_bouncy.pngbin0 -> 106 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_buildable_to.pngbin0 -> 89 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.pngbin0 -> 164 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_climbable_resistance_side.pngbin0 -> 295 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_climbable_side.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_damage.pngbin0 -> 108 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_damage_neg.pngbin0 -> 121 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_drowning.pngbin0 -> 127 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.pngbin0 -> 116 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_fencelike.pngbin0 -> 90 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_firelike.pngbin0 -> 149 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslike.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.pngbin0 -> 167 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.pngbin0 -> 88 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.pngbin0 -> 118 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.pngbin0 -> 122 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light.pngbin0 -> 117 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_1.pngbin0 -> 158 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_10.pngbin0 -> 147 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_11.pngbin0 -> 149 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_12.pngbin0 -> 138 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_13.pngbin0 -> 137 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_14.pngbin0 -> 132 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_2.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_3.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_4.pngbin0 -> 157 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_5.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_6.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_7.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_8.pngbin0 -> 139 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_light_9.pngbin0 -> 149 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_line_crossing.pngbin0 -> 130 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_line_curved.pngbin0 -> 123 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_line_straight.pngbin0 -> 115 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_line_t_junction.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquid.pngbin0 -> 95 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing.pngbin0 -> 132 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.pngbin0 -> 162 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.pngbin0 -> 160 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.pngbin0 -> 155 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.pngbin0 -> 155 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.pngbin0 -> 155 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.pngbin0 -> 157 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.pngbin0 -> 149 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.pngbin0 -> 152 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.pngbin0 -> 155 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.pngbin0 -> 148 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.pngbin0 -> 148 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.pngbin0 -> 144 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.pngbin0 -> 85 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.pngbin0 -> 93 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_move_resistance.pngbin0 -> 221 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_node.pngbin0 -> 89 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_node_falling.pngbin0 -> 112 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_nodebox.pngbin0 -> 112 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_nojump_side.pngbin0 -> 94 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_nojump_top.pngbin0 -> 121 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal.pngbin0 -> 92 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal1.pngbin0 -> 114 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal2.pngbin0 -> 122 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal3.pngbin0 -> 114 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal4.pngbin0 -> 106 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal5.pngbin0 -> 109 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_normal6.pngbin0 -> 111 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_overlay.pngbin0 -> 153 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_overlayable.pngbin0 -> 87 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_palette_facedir.pngbin0 -> 87 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_palette_full.pngbin0 -> 568 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.pngbin0 -> 136 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike.pngbin0 -> 183 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.pngbin0 -> 176 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.pngbin0 -> 163 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.pngbin0 -> 164 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.pngbin0 -> 182 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.pngbin0 -> 101 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.pngbin0 -> 145 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.pngbin0 -> 127 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.pngbin0 -> 128 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_wallmounted.pngbin0 -> 224 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.pngbin0 -> 176 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.pngbin0 -> 162 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.pngbin0 -> 162 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_wallmounted.pngbin0 -> 268 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.pngbin0 -> 125 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_wallmounted.pngbin0 -> 268 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.pngbin0 -> 127 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.pngbin0 -> 246 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail2_curved.pngbin0 -> 253 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail2_straight.pngbin0 -> 246 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.pngbin0 -> 254 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail_crossing.pngbin0 -> 151 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail_curved.pngbin0 -> 164 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail_straight.pngbin0 -> 133 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.pngbin0 -> 202 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_signlike.pngbin0 -> 150 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_slippery.pngbin0 -> 111 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_street_crossing.pngbin0 -> 137 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_street_curved.pngbin0 -> 115 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_street_straight.pngbin0 -> 101 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_street_t_junction.pngbin0 -> 126 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.pngbin0 -> 113 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_bt.tgabin0 -> 179 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_tb.tgabin0 -> 179 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_bt.tgabin0 -> 120 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_tb.tgabin0 -> 120 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_bt.tgabin0 -> 172 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_tb.tgabin0 -> 172 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_bt.tgabin0 -> 300 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_tb.tgabin0 -> 300 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_bt.tgabin0 -> 172 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_tb.tgabin0 -> 172 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.pngbin0 -> 157 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.pngbin0 -> 141 bytes-rw-r--r--games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.pngbin0 -> 158 bytes-rw-r--r--games/devtest/mods/testpathfinder/README.md15
-rw-r--r--games/devtest/mods/testpathfinder/init.lua136
-rw-r--r--games/devtest/mods/testpathfinder/mod.conf2
-rw-r--r--games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.pngbin0 -> 159 bytes-rw-r--r--games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.pngbin0 -> 99 bytes-rw-r--r--games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.pngbin0 -> 147 bytes-rw-r--r--games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.pngbin0 -> 139 bytes-rw-r--r--games/devtest/mods/testtools/README.md128
-rw-r--r--games/devtest/mods/testtools/init.lua951
-rw-r--r--games/devtest/mods/testtools/light.lua37
-rw-r--r--games/devtest/mods/testtools/mod.conf2
-rw-r--r--games/devtest/mods/testtools/textures/testtools_children_getter.pngbin0 -> 281 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_entity_rotator.pngbin0 -> 151 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_entity_scaler.pngbin0 -> 182 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_entity_spawner.pngbin0 -> 189 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_falling_node_tool.pngbin0 -> 140 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_item_meta_editor.pngbin0 -> 114 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_lighttool.pngbin0 -> 1659 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_node_meta_editor.pngbin0 -> 135 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_node_setter.pngbin0 -> 146 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_object_attacher.pngbin0 -> 173 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_object_editor.pngbin0 -> 180 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_object_mover.pngbin0 -> 175 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_param2tool.pngbin0 -> 127 bytes-rw-r--r--games/devtest/mods/testtools/textures/testtools_remover.pngbin0 -> 129 bytes-rw-r--r--games/devtest/mods/tiled/init.lua33
-rw-r--r--games/devtest/mods/tiled/mod.conf3
-rw-r--r--games/devtest/mods/tiled/textures/tiled_tiled.pngbin0 -> 410 bytes-rw-r--r--games/devtest/mods/unittests/async_env.lua168
-rw-r--r--games/devtest/mods/unittests/crafting.lua112
-rw-r--r--games/devtest/mods/unittests/crafting_prepare.lua94
-rw-r--r--games/devtest/mods/unittests/entity.lua132
-rw-r--r--games/devtest/mods/unittests/init.lua202
-rw-r--r--games/devtest/mods/unittests/inside_async_env.lua25
-rw-r--r--games/devtest/mods/unittests/itemdescription.lua42
-rw-r--r--games/devtest/mods/unittests/misc.lua82
-rw-r--r--games/devtest/mods/unittests/mod.conf3
-rw-r--r--games/devtest/mods/unittests/player.lua70
-rw-r--r--games/devtest/mods/unittests/textures/default_dirt.pngbin0 -> 790 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_coal_lump.pngbin0 -> 160 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_description_test.pngbin0 -> 268 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_iron_lump.pngbin0 -> 154 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_repairable_tool.pngbin0 -> 160 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_steel_ingot.pngbin0 -> 159 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_stick.pngbin0 -> 147 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_torch.pngbin0 -> 155 bytes-rw-r--r--games/devtest/mods/unittests/textures/unittests_unrepairable_tool.pngbin0 -> 157 bytes-rw-r--r--games/devtest/mods/util_commands/init.lua309
-rw-r--r--games/devtest/mods/util_commands/mod.conf2
-rw-r--r--games/devtest/screenshot.pngbin0 -> 133364 bytes-rw-r--r--games/devtest/settingtypes.txt32
-rw-r--r--games/minimal/game.conf2
-rw-r--r--games/minimal/menu/background.pngbin392 -> 0 bytes-rw-r--r--games/minimal/menu/icon.pngbin218 -> 0 bytes-rw-r--r--games/minimal/mods/bucket/depends.txt2
-rw-r--r--games/minimal/mods/bucket/init.lua95
-rw-r--r--games/minimal/mods/bucket/textures/bucket.pngbin182 -> 0 bytes-rw-r--r--games/minimal/mods/bucket/textures/bucket_lava.pngbin183 -> 0 bytes-rw-r--r--games/minimal/mods/bucket/textures/bucket_water.pngbin180 -> 0 bytes-rw-r--r--games/minimal/mods/default/init.lua1797
-rw-r--r--games/minimal/mods/default/mapgen.lua136
-rw-r--r--games/minimal/mods/default/sounds/default_grass_footstep.1.oggbin7014 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/bubble.pngbin273 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_apple.pngbin109 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_book.pngbin157 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_bookshelf.pngbin515 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_brick.pngbin457 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_cactus_side.pngbin144 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_cactus_top.pngbin121 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_chest_front.pngbin114 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_chest_lock.pngbin145 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_chest_side.pngbin98 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_chest_top.pngbin93 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_clay.pngbin318 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_clay_brick.pngbin173 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_clay_lump.pngbin140 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_cloud.pngbin83 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_coal_lump.pngbin138 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_cobble.pngbin374 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_dirt.pngbin1586 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_fence.pngbin480 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_furnace_fire_bg.pngbin220 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_furnace_fire_fg.pngbin719 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_furnace_front.pngbin159 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_furnace_front_active.pngbin283 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_furnace_side.pngbin125 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_glass.pngbin210 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_grass.pngbin782 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_grass_footsteps.pngbin771 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_grass_side.pngbin878 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_gravel.pngbin172 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_iron_lump.pngbin140 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_junglegrass.pngbin237 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_ladder.pngbin368 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_lava_flowing_animated.pngbin7818 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_lava_source_animated.pngbin2902 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_leaves.pngbin1683 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_mese.pngbin129 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_mineral_coal.pngbin142 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_mineral_iron.pngbin922 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_mossycobble.pngbin603 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_nc_back.pngbin186 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_nc_front.pngbin204 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_nc_rb.pngbin137 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_nc_side.pngbin148 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_paper.pngbin139 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_papyrus.pngbin165 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_rail.pngbin437 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_rail_crossing.pngbin388 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_rail_curved.pngbin375 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_rail_t_junction.pngbin374 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_sand.pngbin762 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_sandstone.pngbin744 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_sapling.pngbin328 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_scorched_stuff.pngbin164 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_sign_wall.pngbin416 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_steel_block.pngbin128 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_steel_ingot.pngbin144 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_stick.pngbin120 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_stone.pngbin389 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tnt_bottom.pngbin98 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tnt_side.pngbin129 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tnt_top.pngbin146 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_mesepick.pngbin155 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_steelaxe.pngbin140 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_steelpick.pngbin163 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_steelshovel.pngbin144 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_steelsword.pngbin169 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_stoneaxe.pngbin141 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_stoneshovel.pngbin144 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_stonesword.pngbin168 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_woodaxe.pngbin134 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_woodshovel.pngbin135 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tool_woodsword.pngbin147 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_torch.pngbin146 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_torch_on_ceiling.pngbin137 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_torch_on_floor.pngbin138 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tree.pngbin1445 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_tree_top.pngbin177 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/default_wood.pngbin1400 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/heart.pngbin248 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/player.pngbin157 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/player_back.pngbin149 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/treeprop.pngbin757 -> 0 bytes-rw-r--r--games/minimal/mods/default/textures/wieldhand.pngbin212 -> 0 bytes-rw-r--r--games/minimal/mods/errorhandler_test/init.lua106
-rw-r--r--games/minimal/mods/experimental/depends.txt2
-rw-r--r--games/minimal/mods/experimental/init.lua601
-rw-r--r--games/minimal/mods/experimental/textures/experimental_dummyball.pngbin399 -> 0 bytes-rw-r--r--games/minimal/mods/experimental/textures/experimental_tester_tool_1.pngbin160 -> 0 bytes-rw-r--r--games/minimal/mods/give_initial_stuff/depends.txt2
-rw-r--r--games/minimal/mods/give_initial_stuff/init.lua16
-rw-r--r--games/minimal/mods/legacy/depends.txt2
-rw-r--r--games/minimal/mods/legacy/init.lua128
-rw-r--r--games/minimal/mods/legacy/textures/apple_iron.pngbin119 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/cooked_rat.pngbin145 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/dungeon_master.pngbin3007 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/fireball.pngbin279 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/firefly.pngbin99 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/oerkki1.pngbin165 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/oerkki1_damaged.pngbin210 -> 0 bytes-rw-r--r--games/minimal/mods/legacy/textures/rat.pngbin141 -> 0 bytes-rw-r--r--games/minimal/mods/stairs/depends.txt1
-rw-r--r--games/minimal/mods/test/init.lua11
-rw-r--r--lib/bitop/CMakeLists.txt4
-rw-r--r--lib/bitop/bit.c189
-rw-r--r--lib/bitop/bit.h34
-rw-r--r--lib/catch2/CMakeLists.txt16
-rw-r--r--lib/catch2/catch.hpp17970
-rw-r--r--lib/gmp/CMakeLists.txt3
-rw-r--r--lib/gmp/mini-gmp.c (renamed from src/gmp/mini-gmp.c)1810
-rw-r--r--lib/gmp/mini-gmp.h (renamed from src/gmp/mini-gmp.h)41
-rw-r--r--lib/jsoncpp/CMakeLists.txt3
-rw-r--r--lib/jsoncpp/json/UPDATING7
-rw-r--r--lib/jsoncpp/json/json-forwards.h447
-rw-r--r--lib/jsoncpp/json/json.h2343
-rw-r--r--lib/jsoncpp/jsoncpp.cpp5326
-rw-r--r--lib/lua/CMakeLists.txt (renamed from src/lua/CMakeLists.txt)38
-rw-r--r--lib/lua/COPYRIGHT (renamed from src/lua/COPYRIGHT)2
-rw-r--r--lib/lua/src/CMakeLists.txt (renamed from src/lua/src/CMakeLists.txt)18
-rw-r--r--lib/lua/src/lapi.c (renamed from src/lua/src/lapi.c)0
-rw-r--r--lib/lua/src/lapi.h (renamed from src/lua/src/lapi.h)0
-rw-r--r--lib/lua/src/lauxlib.c (renamed from src/lua/src/lauxlib.c)3
-rw-r--r--lib/lua/src/lauxlib.h (renamed from src/lua/src/lauxlib.h)0
-rw-r--r--lib/lua/src/lbaselib.c (renamed from src/lua/src/lbaselib.c)2
-rw-r--r--lib/lua/src/lcode.c (renamed from src/lua/src/lcode.c)10
-rw-r--r--lib/lua/src/lcode.h (renamed from src/lua/src/lcode.h)0
-rw-r--r--lib/lua/src/ldblib.c (renamed from src/lua/src/ldblib.c)3
-rw-r--r--lib/lua/src/ldebug.c (renamed from src/lua/src/ldebug.c)0
-rw-r--r--lib/lua/src/ldebug.h (renamed from src/lua/src/ldebug.h)0
-rw-r--r--lib/lua/src/ldo.c (renamed from src/lua/src/ldo.c)3
-rw-r--r--lib/lua/src/ldo.h (renamed from src/lua/src/ldo.h)0
-rw-r--r--lib/lua/src/ldump.c (renamed from src/lua/src/ldump.c)0
-rw-r--r--lib/lua/src/lfunc.c (renamed from src/lua/src/lfunc.c)0
-rw-r--r--lib/lua/src/lfunc.h (renamed from src/lua/src/lfunc.h)0
-rw-r--r--lib/lua/src/lgc.c (renamed from src/lua/src/lgc.c)12
-rw-r--r--lib/lua/src/lgc.h (renamed from src/lua/src/lgc.h)0
-rw-r--r--lib/lua/src/linit.c (renamed from src/lua/src/linit.c)0
-rw-r--r--lib/lua/src/liolib.c (renamed from src/lua/src/liolib.c)7
-rw-r--r--lib/lua/src/llex.c (renamed from src/lua/src/llex.c)6
-rw-r--r--lib/lua/src/llex.h (renamed from src/lua/src/llex.h)0
-rw-r--r--lib/lua/src/llimits.h (renamed from src/lua/src/llimits.h)0
-rw-r--r--lib/lua/src/lmathlib.c (renamed from src/lua/src/lmathlib.c)0
-rw-r--r--lib/lua/src/lmem.c (renamed from src/lua/src/lmem.c)0
-rw-r--r--lib/lua/src/lmem.h (renamed from src/lua/src/lmem.h)0
-rw-r--r--lib/lua/src/loadlib.c (renamed from src/lua/src/loadlib.c)4
-rw-r--r--lib/lua/src/lobject.c (renamed from src/lua/src/lobject.c)0
-rw-r--r--lib/lua/src/lobject.h (renamed from src/lua/src/lobject.h)0
-rw-r--r--lib/lua/src/lopcodes.c (renamed from src/lua/src/lopcodes.c)0
-rw-r--r--lib/lua/src/lopcodes.h (renamed from src/lua/src/lopcodes.h)0
-rw-r--r--lib/lua/src/loslib.c (renamed from src/lua/src/loslib.c)0
-rw-r--r--lib/lua/src/lparser.c (renamed from src/lua/src/lparser.c)4
-rw-r--r--lib/lua/src/lparser.h (renamed from src/lua/src/lparser.h)0
-rw-r--r--lib/lua/src/lstate.c (renamed from src/lua/src/lstate.c)0
-rw-r--r--lib/lua/src/lstate.h (renamed from src/lua/src/lstate.h)0
-rw-r--r--lib/lua/src/lstring.c (renamed from src/lua/src/lstring.c)0
-rw-r--r--lib/lua/src/lstring.h (renamed from src/lua/src/lstring.h)0
-rw-r--r--lib/lua/src/lstrlib.c (renamed from src/lua/src/lstrlib.c)6
-rw-r--r--lib/lua/src/ltable.c (renamed from src/lua/src/ltable.c)0
-rw-r--r--lib/lua/src/ltable.h (renamed from src/lua/src/ltable.h)0
-rw-r--r--lib/lua/src/ltablib.c (renamed from src/lua/src/ltablib.c)0
-rw-r--r--lib/lua/src/ltm.c (renamed from src/lua/src/ltm.c)0
-rw-r--r--lib/lua/src/ltm.h (renamed from src/lua/src/ltm.h)0
-rw-r--r--lib/lua/src/lua.c (renamed from src/lua/src/lua.c)0
-rw-r--r--lib/lua/src/lua.h (renamed from src/lua/src/lua.h)8
-rw-r--r--lib/lua/src/luac.c (renamed from src/lua/src/luac.c)0
-rw-r--r--lib/lua/src/luaconf.h (renamed from src/lua/src/luaconf.h)14
-rw-r--r--lib/lua/src/lualib.h (renamed from src/lua/src/lualib.h)0
-rw-r--r--lib/lua/src/lundump.c (renamed from src/lua/src/lundump.c)0
-rw-r--r--lib/lua/src/lundump.h (renamed from src/lua/src/lundump.h)0
-rw-r--r--lib/lua/src/lvm.c (renamed from src/lua/src/lvm.c)8
-rw-r--r--lib/lua/src/lvm.h (renamed from src/lua/src/lvm.h)0
-rw-r--r--lib/lua/src/lzio.c (renamed from src/lua/src/lzio.c)0
-rw-r--r--lib/lua/src/lzio.h (renamed from src/lua/src/lzio.h)0
-rw-r--r--lib/lua/src/print.c (renamed from src/lua/src/print.c)0
-rw-r--r--minetest.conf.example3916
-rw-r--r--misc/CPACK_WIX_UI_BANNER.BMPbin0 -> 114514 bytes-rw-r--r--misc/CPACK_WIX_UI_DIALOG.BMPbin0 -> 461882 bytes-rw-r--r--misc/Info.plist6
-rw-r--r--misc/debpkg-control33
-rw-r--r--misc/irrlichtmt_tag.txt1
-rw-r--r--misc/kubernetes.yml53
-rw-r--r--misc/minetest.appdata.xml46
-rw-r--r--misc/minetest.exe.manifest2
-rw-r--r--misc/net.minetest.minetest.appdata.xml87
-rw-r--r--misc/net.minetest.minetest.desktop (renamed from misc/minetest.desktop)1
-rw-r--r--misc/winresource.rc8
-rw-r--r--mods/mods_here.txt8
-rw-r--r--po/ar/minetest.po7139
-rw-r--r--po/be/minetest.po7174
-rw-r--r--po/bg/minetest.po6986
-rw-r--r--po/ca/minetest.po5591
-rw-r--r--po/cs/minetest.po6409
-rw-r--r--po/da/minetest.po6455
-rw-r--r--po/de/minetest.po7409
-rw-r--r--po/dv/minetest.po6986
-rw-r--r--po/el/minetest.po6965
-rw-r--r--po/eo/minetest.po7256
-rw-r--r--po/es/minetest.po6873
-rw-r--r--po/et/minetest.po5584
-rw-r--r--po/eu/minetest.po7008
-rw-r--r--po/fi/minetest.po6950
-rw-r--r--po/fil/minetest.po7064
-rw-r--r--po/fr/minetest.po7699
-rw-r--r--po/gd/minetest.po7199
-rw-r--r--po/gl/minetest.po8021
-rw-r--r--po/he/minetest.po5484
-rw-r--r--po/hi/minetest.po7083
-rw-r--r--po/hu/minetest.po7290
-rw-r--r--po/id/minetest.po7144
-rw-r--r--po/it/minetest.po7790
-rw-r--r--po/ja/minetest.po7238
-rw-r--r--po/jbo/minetest.po5136
-rw-r--r--po/kk/minetest.po6872
-rw-r--r--po/kn/minetest.po6897
-rw-r--r--po/ko/minetest.po6404
-rw-r--r--po/ky/minetest.po5079
-rw-r--r--po/lt/minetest.po5236
-rw-r--r--po/lv/minetest.po7083
-rw-r--r--po/lzh/minetest.po6842
-rw-r--r--po/minetest.pot5410
-rw-r--r--po/mr/minetest.po6865
-rw-r--r--po/ms/minetest.po8377
-rw-r--r--po/ms_Arab/minetest.po7824
-rw-r--r--po/nb/minetest.po6120
-rw-r--r--po/nl/minetest.po7274
-rw-r--r--po/nn/minetest.po7092
-rw-r--r--po/oc/minetest.po6859
-rw-r--r--po/pl/minetest.po7441
-rw-r--r--po/pt/minetest.po7173
-rw-r--r--po/pt_BR/minetest.po7346
-rw-r--r--po/ro/minetest.po5769
-rw-r--r--po/ru/minetest.po7560
-rw-r--r--po/sk/minetest.po8151
-rw-r--r--po/sl/minetest.po7323
-rw-r--r--po/sr_Cyrl/minetest.po5370
-rw-r--r--po/sr_Latn/minetest.po6875
-rw-r--r--po/sv/minetest.po7332
-rw-r--r--po/sw/minetest.po8189
-rw-r--r--po/th/minetest.po8085
-rw-r--r--po/tr/minetest.po7415
-rw-r--r--po/tt/minetest.po6846
-rw-r--r--po/uk/minetest.po5657
-rw-r--r--po/vi/minetest.po6983
-rw-r--r--po/yue/minetest.po6839
-rw-r--r--po/zh_CN/minetest.po6911
-rw-r--r--po/zh_TW/minetest.po6592
-rw-r--r--src/CMakeLists.txt723
-rw-r--r--src/activeobject.h80
-rw-r--r--src/activeobjectmgr.h66
-rw-r--r--src/ban.cpp36
-rw-r--r--src/ban.h17
-rw-r--r--src/benchmark/CMakeLists.txt7
-rw-r--r--src/benchmark/benchmark.cpp32
-rw-r--r--src/benchmark/benchmark.h (renamed from src/sound_openal.h)12
-rw-r--r--src/benchmark/benchmark_serialize.cpp71
-rw-r--r--src/benchmark/benchmark_setup.h22
-rw-r--r--src/cguittfont/CMakeLists.txt30
-rw-r--r--src/cguittfont/irrUString.h3892
-rw-r--r--src/cguittfont/xCGUITTFont.cpp5
-rw-r--r--src/cguittfont/xCGUITTFont.h7
-rw-r--r--src/chat.cpp292
-rw-r--r--src/chat.h90
-rw-r--r--src/chat_interface.h5
-rw-r--r--src/chatmessage.h49
-rw-r--r--src/client/CMakeLists.txt63
-rw-r--r--src/client/activeobjectmgr.cpp109
-rw-r--r--src/client/activeobjectmgr.h41
-rw-r--r--src/client/camera.cpp (renamed from src/camera.cpp)485
-rw-r--r--src/client/camera.h (renamed from src/camera.h)160
-rw-r--r--src/client/client.cpp (renamed from src/client.cpp)1561
-rw-r--r--src/client/client.h (renamed from src/client.h)630
-rw-r--r--src/client/clientenvironment.cpp515
-rw-r--r--src/client/clientenvironment.h156
-rw-r--r--src/client/clientevent.h148
-rw-r--r--src/client/clientlauncher.cpp602
-rw-r--r--src/client/clientlauncher.h102
-rw-r--r--src/client/clientmap.cpp964
-rw-r--r--src/client/clientmap.h209
-rw-r--r--src/client/clientmedia.cpp (renamed from src/clientmedia.cpp)397
-rw-r--r--src/client/clientmedia.h250
-rw-r--r--src/client/clientobject.cpp (renamed from src/clientobject.cpp)17
-rw-r--r--src/client/clientobject.h116
-rw-r--r--src/client/clientsimpleobject.h (renamed from src/clientsimpleobject.h)15
-rw-r--r--src/client/clouds.cpp (renamed from src/clouds.cpp)235
-rw-r--r--src/client/clouds.h (renamed from src/clouds.h)90
-rw-r--r--src/client/content_cao.cpp1988
-rw-r--r--src/client/content_cao.h282
-rw-r--r--src/client/content_cso.cpp (renamed from src/content_cso.cpp)26
-rw-r--r--src/client/content_cso.h (renamed from src/content_cso.h)6
-rw-r--r--src/client/content_mapblock.cpp1635
-rw-r--r--src/client/content_mapblock.h180
-rw-r--r--src/client/event_manager.h86
-rw-r--r--src/client/filecache.cpp (renamed from src/filecache.cpp)10
-rw-r--r--src/client/filecache.h (renamed from src/filecache.h)16
-rw-r--r--src/client/fontengine.cpp270
-rw-r--r--src/client/fontengine.h170
-rw-r--r--src/client/game.cpp4376
-rw-r--r--src/client/game.h (renamed from src/database.h)48
-rw-r--r--src/client/gameui.cpp331
-rw-r--r--src/client/gameui.h138
-rw-r--r--src/client/guiscalingfilter.cpp (renamed from src/guiscalingfilter.cpp)127
-rw-r--r--src/client/guiscalingfilter.h (renamed from src/guiscalingfilter.h)20
-rw-r--r--src/client/hud.cpp1260
-rw-r--r--src/client/hud.h173
-rw-r--r--src/client/imagefilters.cpp (renamed from src/imagefilters.cpp)123
-rw-r--r--src/client/imagefilters.h (renamed from src/imagefilters.h)11
-rw-r--r--src/client/inputhandler.cpp278
-rw-r--r--src/client/inputhandler.h580
-rw-r--r--src/client/joystick_controller.cpp241
-rw-r--r--src/client/joystick_controller.h69
-rw-r--r--src/client/keycode.cpp (renamed from src/keycode.cpp)56
-rw-r--r--src/client/keycode.h (renamed from src/keycode.h)22
-rw-r--r--src/client/keys.h70
-rw-r--r--src/client/localplayer.cpp1138
-rw-r--r--src/client/localplayer.h215
-rw-r--r--src/client/mapblock_mesh.cpp1581
-rw-r--r--src/client/mapblock_mesh.h332
-rw-r--r--src/client/mesh.cpp499
-rw-r--r--src/client/mesh.h (renamed from src/mesh.h)55
-rw-r--r--src/client/mesh_generator_thread.cpp321
-rw-r--r--src/client/mesh_generator_thread.h135
-rw-r--r--src/client/meshgen/collector.cpp104
-rw-r--r--src/client/meshgen/collector.h65
-rw-r--r--src/client/minimap.cpp (renamed from src/minimap.cpp)539
-rw-r--r--src/client/minimap.h (renamed from src/minimap.h)118
-rw-r--r--src/client/particles.cpp927
-rw-r--r--src/client/particles.h242
-rw-r--r--src/client/render/anaglyph.cpp52
-rw-r--r--src/client/render/anaglyph.h34
-rw-r--r--src/client/render/core.cpp129
-rw-r--r--src/client/render/core.h80
-rw-r--r--src/client/render/factory.cpp52
-rw-r--r--src/client/render/factory.h (renamed from src/content_mapblock.h)14
-rw-r--r--src/client/render/interlaced.cpp120
-rw-r--r--src/client/render/interlaced.h43
-rw-r--r--src/client/render/pageflip.cpp59
-rw-r--r--src/client/render/pageflip.h43
-rw-r--r--src/client/render/plain.cpp76
-rw-r--r--src/client/render/plain.h38
-rw-r--r--src/client/render/sidebyside.cpp74
-rw-r--r--src/client/render/sidebyside.h43
-rw-r--r--src/client/render/stereo.cpp60
-rw-r--r--src/client/render/stereo.h38
-rw-r--r--src/client/renderingengine.cpp652
-rw-r--r--src/client/renderingengine.h138
-rw-r--r--src/client/shader.cpp829
-rw-r--r--src/client/shader.h156
-rw-r--r--src/client/shadows/dynamicshadows.cpp191
-rw-r--r--src/client/shadows/dynamicshadows.h120
-rw-r--r--src/client/shadows/dynamicshadowsrender.cpp709
-rw-r--r--src/client/shadows/dynamicshadowsrender.h162
-rw-r--r--src/client/shadows/shadowsScreenQuad.cpp61
-rw-r--r--src/client/shadows/shadowsScreenQuad.h54
-rw-r--r--src/client/shadows/shadowsshadercallbacks.cpp48
-rw-r--r--src/client/shadows/shadowsshadercallbacks.h58
-rw-r--r--src/client/sky.cpp898
-rw-r--r--src/client/sky.h216
-rw-r--r--src/client/sound.cpp (renamed from src/sound.cpp)2
-rw-r--r--src/client/sound.h93
-rw-r--r--src/client/sound_openal.cpp (renamed from src/sound_openal.cpp)465
-rw-r--r--src/client/sound_openal.h (renamed from src/content_abm.cpp)21
-rw-r--r--src/client/tile.cpp1242
-rw-r--r--src/client/tile.h287
-rw-r--r--src/client/wieldmesh.cpp765
-rw-r--r--src/client/wieldmesh.h146
-rw-r--r--src/clientiface.cpp488
-rw-r--r--src/clientiface.h271
-rw-r--r--src/clientmap.cpp807
-rw-r--r--src/clientmap.h164
-rw-r--r--src/clientmedia.h150
-rw-r--r--src/clientobject.h127
-rw-r--r--src/cmake_config.h.in13
-rw-r--r--src/cmake_config_githash.h.in6
-rw-r--r--src/collision.cpp471
-rw-r--r--src/collision.h55
-rw-r--r--src/config.h31
-rw-r--r--src/constants.h34
-rw-r--r--src/content/CMakeLists.txt7
-rw-r--r--src/content/content.cpp122
-rw-r--r--src/content/content.h42
-rw-r--r--src/content/mod_configuration.cpp255
-rw-r--r--src/content/mod_configuration.h111
-rw-r--r--src/content/mods.cpp245
-rw-r--r--src/content/mods.h129
-rw-r--r--src/content/subgames.cpp423
-rw-r--r--src/content/subgames.h101
-rw-r--r--src/content_cao.cpp1828
-rw-r--r--src/content_cao.h218
-rw-r--r--src/content_mapblock.cpp1797
-rw-r--r--src/content_mapnode.cpp8
-rw-r--r--src/content_mapnode.h5
-rw-r--r--src/content_nodemeta.cpp27
-rw-r--r--src/content_nodemeta.h8
-rw-r--r--src/content_sao.cpp1441
-rw-r--r--src/content_sao.h374
-rw-r--r--src/convert_json.cpp370
-rw-r--r--src/convert_json.h15
-rw-r--r--src/craftdef.cpp473
-rw-r--r--src/craftdef.h205
-rw-r--r--src/database-dummy.cpp59
-rw-r--r--src/database-leveldb.cpp101
-rw-r--r--src/database-postgresql.cpp286
-rw-r--r--src/database-postgresql.h95
-rw-r--r--src/database-sqlite3.cpp300
-rw-r--r--src/database/CMakeLists.txt10
-rw-r--r--src/database/database-dummy.cpp120
-rw-r--r--src/database/database-dummy.h (renamed from src/database-sqlite3.h)60
-rw-r--r--src/database/database-files.cpp501
-rw-r--r--src/database/database-files.h97
-rw-r--r--src/database/database-leveldb.cpp309
-rw-r--r--src/database/database-leveldb.h80
-rw-r--r--src/database/database-postgresql.cpp816
-rw-r--r--src/database/database-postgresql.h171
-rw-r--r--src/database/database-redis.cpp (renamed from src/database-redis.cpp)23
-rw-r--r--src/database/database-redis.h (renamed from src/database-redis.h)14
-rw-r--r--src/database/database-sqlite3.cpp869
-rw-r--r--src/database/database-sqlite3.h259
-rw-r--r--src/database/database.cpp (renamed from src/database.cpp)8
-rw-r--r--src/database/database.h99
-rw-r--r--src/daynightratio.h73
-rw-r--r--src/debug.cpp170
-rw-r--r--src/debug.h43
-rw-r--r--src/defaultsettings.cpp515
-rw-r--r--src/defaultsettings.h15
-rw-r--r--src/drawscene.cpp615
-rw-r--r--src/drawscene.h39
-rw-r--r--src/emerge.cpp317
-rw-r--r--src/emerge.h133
-rw-r--r--src/environment.cpp2933
-rw-r--r--src/environment.h607
-rw-r--r--src/event_manager.h115
-rw-r--r--src/exceptions.h69
-rw-r--r--src/face_position_cache.cpp110
-rw-r--r--src/face_position_cache.h (renamed from src/util/cpp11_container.h)48
-rw-r--r--src/filesys.cpp394
-rw-r--r--src/filesys.h58
-rw-r--r--src/fontengine.cpp455
-rw-r--r--src/fontengine.h139
-rw-r--r--src/game.cpp4645
-rw-r--r--src/game.h162
-rw-r--r--src/gamedef.h67
-rw-r--r--src/gameparams.h34
-rw-r--r--src/genericobject.cpp196
-rw-r--r--src/genericobject.h84
-rw-r--r--src/gettext.cpp13
-rw-r--r--src/gettext.h59
-rw-r--r--src/gettime.h61
-rw-r--r--src/gmp/CMakeLists.txt7
-rw-r--r--src/gui/CMakeLists.txt34
-rw-r--r--src/gui/StyleSpec.h479
-rw-r--r--src/gui/guiAnimatedImage.cpp62
-rw-r--r--src/gui/guiAnimatedImage.h41
-rw-r--r--src/gui/guiBackgroundImage.cpp63
-rw-r--r--src/gui/guiBackgroundImage.h38
-rw-r--r--src/gui/guiBox.cpp117
-rw-r--r--src/gui/guiBox.h41
-rw-r--r--src/gui/guiButton.cpp766
-rw-r--r--src/gui/guiButton.h346
-rw-r--r--src/gui/guiButtonImage.cpp94
-rw-r--r--src/gui/guiButtonImage.h51
-rw-r--r--src/gui/guiButtonItemImage.cpp59
-rw-r--r--src/gui/guiButtonItemImage.h47
-rw-r--r--src/gui/guiChatConsole.cpp (renamed from src/guiChatConsole.cpp)216
-rw-r--r--src/gui/guiChatConsole.h (renamed from src/guiChatConsole.h)55
-rw-r--r--src/gui/guiEditBox.cpp848
-rw-r--r--src/gui/guiEditBox.h215
-rw-r--r--src/gui/guiEditBoxWithScrollbar.cpp660
-rw-r--r--src/gui/guiEditBoxWithScrollbar.h63
-rw-r--r--src/gui/guiEngine.cpp (renamed from src/guiEngine.cpp)313
-rw-r--r--src/gui/guiEngine.h (renamed from src/guiEngine.h)113
-rw-r--r--src/gui/guiFormSpecMenu.cpp4759
-rw-r--r--src/gui/guiFormSpecMenu.h499
-rw-r--r--src/gui/guiHyperText.cpp1153
-rw-r--r--src/gui/guiHyperText.h230
-rw-r--r--src/gui/guiInventoryList.cpp235
-rw-r--r--src/gui/guiInventoryList.h133
-rw-r--r--src/gui/guiItemImage.cpp52
-rw-r--r--src/gui/guiItemImage.h (renamed from src/database-leveldb.h)39
-rw-r--r--src/gui/guiKeyChangeMenu.cpp438
-rw-r--r--src/gui/guiKeyChangeMenu.h (renamed from src/guiKeyChangeMenu.h)42
-rw-r--r--src/gui/guiMainMenu.h (renamed from src/guiMainMenu.h)33
-rw-r--r--src/gui/guiPasswordChange.cpp303
-rw-r--r--src/gui/guiPasswordChange.h (renamed from src/guiPasswordChange.h)41
-rw-r--r--src/gui/guiPathSelectMenu.cpp112
-rw-r--r--src/gui/guiPathSelectMenu.h (renamed from src/guiFileSelectMenu.h)43
-rw-r--r--src/gui/guiScene.cpp274
-rw-r--r--src/gui/guiScene.h87
-rw-r--r--src/gui/guiScrollBar.cpp446
-rw-r--r--src/gui/guiScrollBar.h77
-rw-r--r--src/gui/guiScrollContainer.cpp81
-rw-r--r--src/gui/guiScrollContainer.h62
-rw-r--r--src/gui/guiSkin.cpp1042
-rw-r--r--src/gui/guiSkin.h366
-rw-r--r--src/gui/guiTable.cpp (renamed from src/guiTable.cpp)138
-rw-r--r--src/gui/guiTable.h (renamed from src/guiTable.h)66
-rw-r--r--src/gui/guiVolumeChange.cpp182
-rw-r--r--src/gui/guiVolumeChange.h (renamed from src/guiVolumeChange.h)21
-rw-r--r--src/gui/mainmenumanager.h (renamed from src/mainmenumanager.h)76
-rw-r--r--src/gui/modalMenu.cpp361
-rw-r--r--src/gui/modalMenu.h111
-rw-r--r--src/gui/profilergraph.cpp176
-rw-r--r--src/gui/profilergraph.h61
-rw-r--r--src/gui/touchscreengui.cpp1200
-rw-r--r--src/gui/touchscreengui.h314
-rw-r--r--src/guiFileSelectMenu.cpp126
-rw-r--r--src/guiFormSpecMenu.cpp3790
-rw-r--r--src/guiFormSpecMenu.h570
-rw-r--r--src/guiKeyChangeMenu.cpp420
-rw-r--r--src/guiPasswordChange.cpp266
-rw-r--r--src/guiVolumeChange.cpp169
-rw-r--r--src/httpfetch.cpp193
-rw-r--r--src/httpfetch.h92
-rw-r--r--src/hud.cpp770
-rw-r--r--src/hud.h158
-rw-r--r--src/intlGUIEditBox.cpp1509
-rw-r--r--src/intlGUIEditBox.h178
-rw-r--r--src/inventory.cpp567
-rw-r--r--src/inventory.h155
-rw-r--r--src/inventorymanager.cpp580
-rw-r--r--src/inventorymanager.h106
-rw-r--r--src/irr_aabb3d.h6
-rw-r--r--src/irr_ptr.h200
-rw-r--r--src/irr_v2d.h6
-rw-r--r--src/irr_v3d.h7
-rw-r--r--src/irrlicht_changes/CGUITTFont.cpp (renamed from src/cguittfont/CGUITTFont.cpp)173
-rw-r--r--src/irrlicht_changes/CGUITTFont.h (renamed from src/cguittfont/CGUITTFont.h)72
-rw-r--r--src/irrlicht_changes/CMakeLists.txt6
-rw-r--r--src/irrlicht_changes/static_text.cpp286
-rw-r--r--src/irrlicht_changes/static_text.h163
-rw-r--r--src/irrlichttypes.h44
-rw-r--r--src/irrlichttypes_bloated.h6
-rw-r--r--src/irrlichttypes_extrabloated.h7
-rw-r--r--src/itemdef.cpp384
-rw-r--r--src/itemdef.h63
-rw-r--r--src/itemgroup.h15
-rw-r--r--src/itemstackmetadata.cpp118
-rw-r--r--src/itemstackmetadata.h54
-rw-r--r--src/jsoncpp/json/CMakeLists.txt7
-rw-r--r--src/jsoncpp/json/UPDATING16
-rw-r--r--src/jsoncpp/json/json.h1914
-rw-r--r--src/jsoncpp/json/jsoncpp.cpp4367
-rw-r--r--src/light.cpp405
-rw-r--r--src/light.h63
-rw-r--r--src/lighting.h27
-rw-r--r--src/localplayer.cpp689
-rw-r--r--src/localplayer.h167
-rw-r--r--src/log.cpp287
-rw-r--r--src/log.h273
-rw-r--r--src/main.cpp463
-rw-r--r--src/map.cpp2238
-rw-r--r--src/map.h304
-rw-r--r--src/map_settings_manager.cpp90
-rw-r--r--src/map_settings_manager.h20
-rw-r--r--src/mapblock.cpp642
-rw-r--r--src/mapblock.h293
-rw-r--r--src/mapblock_mesh.cpp1504
-rw-r--r--src/mapblock_mesh.h224
-rw-r--r--src/mapgen/CMakeLists.txt19
-rw-r--r--src/mapgen/cavegen.cpp (renamed from src/cavegen.cpp)268
-rw-r--r--src/mapgen/cavegen.h (renamed from src/cavegen.h)103
-rw-r--r--src/mapgen/dungeongen.cpp (renamed from src/dungeongen.cpp)238
-rw-r--r--src/mapgen/dungeongen.h (renamed from src/dungeongen.h)65
-rw-r--r--src/mapgen/mapgen.cpp (renamed from src/mapgen.cpp)586
-rw-r--r--src/mapgen/mapgen.h (renamed from src/mapgen.h)211
-rw-r--r--src/mapgen/mapgen_carpathian.cpp572
-rw-r--r--src/mapgen/mapgen_carpathian.h114
-rw-r--r--src/mapgen/mapgen_flat.cpp335
-rw-r--r--src/mapgen/mapgen_flat.h (renamed from src/mapgen_flat.h)51
-rw-r--r--src/mapgen/mapgen_fractal.cpp448
-rw-r--r--src/mapgen/mapgen_fractal.h (renamed from src/mapgen_fractal.h)58
-rw-r--r--src/mapgen/mapgen_singlenode.cpp (renamed from src/mapgen_singlenode.cpp)24
-rw-r--r--src/mapgen/mapgen_singlenode.h (renamed from src/mapgen_singlenode.h)24
-rw-r--r--src/mapgen/mapgen_v5.cpp (renamed from src/mapgen_v5.cpp)199
-rw-r--r--src/mapgen/mapgen_v5.h (renamed from src/mapgen_v5.h)42
-rw-r--r--src/mapgen/mapgen_v6.cpp (renamed from src/mapgen_v6.cpp)549
-rw-r--r--src/mapgen/mapgen_v6.h (renamed from src/mapgen_v6.h)38
-rw-r--r--src/mapgen/mapgen_v7.cpp590
-rw-r--r--src/mapgen/mapgen_v7.h (renamed from src/mapgen_v7.h)61
-rw-r--r--src/mapgen/mapgen_valleys.cpp483
-rw-r--r--src/mapgen/mapgen_valleys.h (renamed from src/mapgen_valleys.h)110
-rw-r--r--src/mapgen/mg_biome.cpp331
-rw-r--r--src/mapgen/mg_biome.h (renamed from src/mg_biome.h)81
-rw-r--r--src/mapgen/mg_decoration.cpp467
-rw-r--r--src/mapgen/mg_decoration.h (renamed from src/mg_decoration.h)81
-rw-r--r--src/mapgen/mg_ore.cpp (renamed from src/mg_ore.cpp)270
-rw-r--r--src/mapgen/mg_ore.h (renamed from src/mg_ore.h)106
-rw-r--r--src/mapgen/mg_schematic.cpp (renamed from src/mg_schematic.cpp)240
-rw-r--r--src/mapgen/mg_schematic.h (renamed from src/mg_schematic.h)54
-rw-r--r--src/mapgen/treegen.cpp (renamed from src/treegen.cpp)142
-rw-r--r--src/mapgen/treegen.h (renamed from src/treegen.h)31
-rw-r--r--src/mapgen_flat.cpp271
-rw-r--r--src/mapgen_fractal.cpp397
-rw-r--r--src/mapgen_v7.cpp577
-rw-r--r--src/mapgen_valleys.cpp759
-rw-r--r--src/mapnode.cpp411
-rw-r--r--src/mapnode.h125
-rw-r--r--src/mapsector.cpp140
-rw-r--r--src/mapsector.h63
-rw-r--r--src/mesh.cpp1124
-rw-r--r--src/metadata.cpp115
-rw-r--r--src/metadata.h63
-rw-r--r--src/mg_biome.cpp244
-rw-r--r--src/mg_decoration.cpp375
-rw-r--r--src/modalMenu.h150
-rw-r--r--src/modchannels.cpp151
-rw-r--r--src/modchannels.h93
-rw-r--r--src/modifiedstate.h6
-rw-r--r--src/mods.cpp358
-rw-r--r--src/mods.h208
-rw-r--r--src/mtevent.h (renamed from src/event.h)53
-rw-r--r--src/nameidmapping.cpp15
-rw-r--r--src/nameidmapping.h55
-rw-r--r--src/network/CMakeLists.txt4
-rw-r--r--src/network/address.cpp259
-rw-r--r--src/network/address.h82
-rw-r--r--src/network/clientopcodes.cpp83
-rw-r--r--src/network/clientopcodes.h12
-rw-r--r--src/network/clientpackethandler.cpp1328
-rw-r--r--src/network/connection.cpp2569
-rw-r--r--src/network/connection.h966
-rw-r--r--src/network/connectionthreads.cpp1358
-rw-r--r--src/network/connectionthreads.h169
-rw-r--r--src/network/networkexceptions.h100
-rw-r--r--src/network/networkpacket.cpp114
-rw-r--r--src/network/networkpacket.h155
-rw-r--r--src/network/networkprotocol.h604
-rw-r--r--src/network/peerhandler.h77
-rw-r--r--src/network/serveropcodes.cpp162
-rw-r--r--src/network/serveropcodes.h10
-rw-r--r--src/network/serverpackethandler.cpp2016
-rw-r--r--src/network/socket.cpp372
-rw-r--r--src/network/socket.h56
-rw-r--r--src/nodedef.cpp1828
-rw-r--r--src/nodedef.h773
-rw-r--r--src/nodemetadata.cpp186
-rw-r--r--src/nodemetadata.h65
-rw-r--r--src/nodetimer.cpp8
-rw-r--r--src/nodetimer.h36
-rw-r--r--src/noise.cpp217
-rw-r--r--src/noise.h80
-rw-r--r--src/objdef.cpp19
-rw-r--r--src/objdef.h36
-rw-r--r--src/object_properties.cpp280
-rw-r--r--src/object_properties.h59
-rw-r--r--src/particles.cpp722
-rw-r--r--src/particles.h543
-rw-r--r--src/pathfinder.cpp814
-rw-r--r--src/pathfinder.h22
-rw-r--r--src/player.cpp118
-rw-r--r--src/player.h162
-rw-r--r--src/porting.cpp511
-rw-r--r--src/porting.h234
-rw-r--r--src/porting_android.cpp224
-rw-r--r--src/porting_android.h37
-rw-r--r--src/profiler.cpp159
-rw-r--r--src/profiler.h182
-rw-r--r--src/raycast.cpp137
-rw-r--r--src/raycast.h77
-rw-r--r--src/reflowscan.cpp205
-rw-r--r--src/reflowscan.h47
-rw-r--r--src/remoteplayer.cpp157
-rw-r--r--src/remoteplayer.h117
-rw-r--r--src/rollback.cpp55
-rw-r--r--src/rollback.h10
-rw-r--r--src/rollback_interface.cpp40
-rw-r--r--src/rollback_interface.h38
-rw-r--r--src/script/CMakeLists.txt7
-rw-r--r--src/script/common/CMakeLists.txt2
-rw-r--r--src/script/common/c_content.cpp1286
-rw-r--r--src/script/common/c_content.h91
-rw-r--r--src/script/common/c_converter.cpp342
-rw-r--r--src/script/common/c_converter.h48
-rw-r--r--src/script/common/c_internal.cpp148
-rw-r--r--src/script/common/c_internal.h66
-rw-r--r--src/script/common/c_packer.cpp596
-rw-r--r--src/script/common/c_packer.h126
-rw-r--r--src/script/common/c_types.h5
-rw-r--r--src/script/common/helper.cpp88
-rw-r--r--src/script/common/helper.h55
-rw-r--r--src/script/cpp_api/CMakeLists.txt2
-rw-r--r--src/script/cpp_api/s_async.cpp338
-rw-r--r--src/script/cpp_api/s_async.h129
-rw-r--r--src/script/cpp_api/s_base.cpp217
-rw-r--r--src/script/cpp_api/s_base.h100
-rw-r--r--src/script/cpp_api/s_client.cpp298
-rw-r--r--src/script/cpp_api/s_client.h64
-rw-r--r--src/script/cpp_api/s_entity.cpp132
-rw-r--r--src/script/cpp_api/s_entity.h28
-rw-r--r--src/script/cpp_api/s_env.cpp85
-rw-r--r--src/script/cpp_api/s_env.h10
-rw-r--r--src/script/cpp_api/s_internal.h25
-rw-r--r--src/script/cpp_api/s_inventory.cpp136
-rw-r--r--src/script/cpp_api/s_inventory.h32
-rw-r--r--src/script/cpp_api/s_item.cpp100
-rw-r--r--src/script/cpp_api/s_item.h30
-rw-r--r--src/script/cpp_api/s_mainmenu.cpp8
-rw-r--r--src/script/cpp_api/s_mainmenu.h9
-rw-r--r--src/script/cpp_api/s_modchannels.cpp50
-rw-r--r--src/script/cpp_api/s_modchannels.h31
-rw-r--r--src/script/cpp_api/s_node.cpp117
-rw-r--r--src/script/cpp_api/s_node.h18
-rw-r--r--src/script/cpp_api/s_nodemeta.cpp161
-rw-r--r--src/script/cpp_api/s_nodemeta.h40
-rw-r--r--src/script/cpp_api/s_player.cpp215
-rw-r--r--src/script/cpp_api/s_player.h69
-rw-r--r--src/script/cpp_api/s_security.cpp549
-rw-r--r--src/script/cpp_api/s_security.h42
-rw-r--r--src/script/cpp_api/s_server.cpp116
-rw-r--r--src/script/cpp_api/s_server.h29
-rw-r--r--src/script/lua_api/CMakeLists.txt18
-rw-r--r--src/script/lua_api/l_areastore.cpp71
-rw-r--r--src/script/lua_api/l_areastore.h14
-rw-r--r--src/script/lua_api/l_auth.cpp219
-rw-r--r--src/script/lua_api/l_auth.h54
-rw-r--r--src/script/lua_api/l_base.cpp89
-rw-r--r--src/script/lua_api/l_base.h48
-rw-r--r--src/script/lua_api/l_camera.cpp241
-rw-r--r--src/script/lua_api/l_camera.h60
-rw-r--r--src/script/lua_api/l_client.cpp446
-rw-r--r--src/script/lua_api/l_client.h110
-rw-r--r--src/script/lua_api/l_craft.cpp93
-rw-r--r--src/script/lua_api/l_craft.h6
-rw-r--r--src/script/lua_api/l_env.cpp785
-rw-r--r--src/script/lua_api/l_env.h122
-rw-r--r--src/script/lua_api/l_http.cpp170
-rw-r--r--src/script/lua_api/l_http.h18
-rw-r--r--src/script/lua_api/l_internal.h49
-rw-r--r--src/script/lua_api/l_inventory.cpp129
-rw-r--r--src/script/lua_api/l_inventory.h15
-rw-r--r--src/script/lua_api/l_item.cpp220
-rw-r--r--src/script/lua_api/l_item.h54
-rw-r--r--src/script/lua_api/l_itemstackmeta.cpp149
-rw-r--r--src/script/lua_api/l_itemstackmeta.h72
-rw-r--r--src/script/lua_api/l_localplayer.cpp495
-rw-r--r--src/script/lua_api/l_localplayer.h113
-rw-r--r--src/script/lua_api/l_mainmenu.cpp998
-rw-r--r--src/script/lua_api/l_mainmenu.h59
-rw-r--r--src/script/lua_api/l_mapgen.cpp536
-rw-r--r--src/script/lua_api/l_mapgen.h49
-rw-r--r--src/script/lua_api/l_metadata.cpp303
-rw-r--r--src/script/lua_api/l_metadata.h81
-rw-r--r--src/script/lua_api/l_minimap.cpp231
-rw-r--r--src/script/lua_api/l_minimap.h62
-rw-r--r--src/script/lua_api/l_modchannels.cpp153
-rw-r--r--src/script/lua_api/l_modchannels.h66
-rw-r--r--src/script/lua_api/l_nodemeta.cpp356
-rw-r--r--src/script/lua_api/l_nodemeta.h60
-rw-r--r--src/script/lua_api/l_nodetimer.cpp60
-rw-r--r--src/script/lua_api/l_nodetimer.h26
-rw-r--r--src/script/lua_api/l_noise.cpp158
-rw-r--r--src/script/lua_api/l_noise.h79
-rw-r--r--src/script/lua_api/l_object.cpp2319
-rw-r--r--src/script/lua_api/l_object.h191
-rw-r--r--src/script/lua_api/l_particleparams.h282
-rw-r--r--src/script/lua_api/l_particles.cpp344
-rw-r--r--src/script/lua_api/l_particles.h7
-rw-r--r--src/script/lua_api/l_particles_local.cpp225
-rw-r--r--src/script/lua_api/l_particles_local.h (renamed from src/database-dummy.h)27
-rw-r--r--src/script/lua_api/l_playermeta.cpp123
-rw-r--r--src/script/lua_api/l_playermeta.h57
-rw-r--r--src/script/lua_api/l_rollback.h5
-rw-r--r--src/script/lua_api/l_server.cpp474
-rw-r--r--src/script/lua_api/l_server.h42
-rw-r--r--src/script/lua_api/l_settings.cpp233
-rw-r--r--src/script/lua_api/l_settings.h57
-rw-r--r--src/script/lua_api/l_sound.cpp53
-rw-r--r--src/script/lua_api/l_sound.h (renamed from src/content_abm.h)22
-rw-r--r--src/script/lua_api/l_storage.cpp155
-rw-r--r--src/script/lua_api/l_storage.h60
-rw-r--r--src/script/lua_api/l_util.cpp478
-rw-r--r--src/script/lua_api/l_util.h69
-rw-r--r--src/script/lua_api/l_vmanip.cpp139
-rw-r--r--src/script/lua_api/l_vmanip.h21
-rw-r--r--src/script/scripting_client.cpp100
-rw-r--r--src/script/scripting_client.h47
-rw-r--r--src/script/scripting_mainmenu.cpp41
-rw-r--r--src/script/scripting_mainmenu.h12
-rw-r--r--src/script/scripting_server.cpp (renamed from src/script/scripting_game.cpp)107
-rw-r--r--src/script/scripting_server.h (renamed from src/script/scripting_game.h)31
-rw-r--r--src/serialization.cpp220
-rw-r--r--src/serialization.h26
-rw-r--r--src/server.cpp3805
-rw-r--r--src/server.h639
-rw-r--r--src/server/CMakeLists.txt9
-rw-r--r--src/server/activeobjectmgr.cpp184
-rw-r--r--src/server/activeobjectmgr.h49
-rw-r--r--src/server/luaentity_sao.cpp560
-rw-r--r--src/server/luaentity_sao.h107
-rw-r--r--src/server/mods.cpp108
-rw-r--r--src/server/mods.h73
-rw-r--r--src/server/player_sao.cpp679
-rw-r--r--src/server/player_sao.h306
-rw-r--r--src/server/serveractiveobject.cpp91
-rw-r--r--src/server/serveractiveobject.h (renamed from src/serverobject.h)152
-rw-r--r--src/server/serverinventorymgr.cpp210
-rw-r--r--src/server/serverinventorymgr.h61
-rw-r--r--src/server/unit_sao.cpp369
-rw-r--r--src/server/unit_sao.h137
-rw-r--r--src/serverenvironment.cpp2436
-rw-r--r--src/serverenvironment.h506
-rw-r--r--src/serverlist.cpp215
-rw-r--r--src/serverlist.h35
-rw-r--r--src/serverobject.cpp100
-rw-r--r--src/settings.cpp491
-rw-r--r--src/settings.h195
-rw-r--r--src/settings_translation_file.cpp1536
-rw-r--r--src/shader.cpp879
-rw-r--r--src/shader.h116
-rw-r--r--src/sky.cpp693
-rw-r--r--src/sky.h142
-rw-r--r--src/skyparams.h160
-rw-r--r--src/socket.cpp591
-rw-r--r--src/socket.h141
-rw-r--r--src/sound.h106
-rw-r--r--src/staticobject.cpp63
-rw-r--r--src/staticobject.h29
-rw-r--r--src/subgame.cpp325
-rw-r--r--src/subgame.h106
-rw-r--r--src/terminal_chat_console.cpp10
-rw-r--r--src/terminal_chat_console.h33
-rw-r--r--src/texture_override.cpp134
-rw-r--r--src/texture_override.h84
-rw-r--r--src/threading/CMakeLists.txt1
-rw-r--r--src/threading/atomic.h139
-rw-r--r--src/threading/event.cpp47
-rw-r--r--src/threading/event.h33
-rw-r--r--src/threading/mutex.cpp107
-rw-r--r--src/threading/mutex.h82
-rw-r--r--src/threading/mutex_auto_lock.h40
-rw-r--r--src/threading/semaphore.cpp27
-rw-r--r--src/threading/semaphore.h23
-rw-r--r--src/threading/thread.cpp223
-rw-r--r--src/threading/thread.h78
-rw-r--r--src/threads.h110
-rw-r--r--src/tileanimation.cpp116
-rw-r--r--src/tileanimation.h59
-rw-r--r--src/tool.cpp366
-rw-r--r--src/tool.h85
-rw-r--r--src/touchscreengui.cpp1089
-rw-r--r--src/touchscreengui.h252
-rw-r--r--src/translation.cpp162
-rw-r--r--src/translation.h40
-rw-r--r--src/unittest/CMakeLists.txt27
-rw-r--r--src/unittest/test.cpp124
-rw-r--r--src/unittest/test.h33
-rw-r--r--src/unittest/test_activeobject.cpp60
-rw-r--r--src/unittest/test_address.cpp67
-rw-r--r--src/unittest/test_areastore.cpp35
-rw-r--r--src/unittest/test_authdatabase.cpp296
-rw-r--r--src/unittest/test_ban.cpp170
-rw-r--r--src/unittest/test_clientactiveobjectmgr.cpp118
-rw-r--r--src/unittest/test_collision.cpp64
-rw-r--r--src/unittest/test_compression.cpp121
-rw-r--r--src/unittest/test_config.h.in7
-rw-r--r--src/unittest/test_connection.cpp84
-rw-r--r--src/unittest/test_eventmanager.cpp112
-rw-r--r--src/unittest/test_filepath.cpp3
-rw-r--r--src/unittest/test_gameui.cpp93
-rw-r--r--src/unittest/test_gettext.cpp43
-rw-r--r--src/unittest/test_inventory.cpp89
-rw-r--r--src/unittest/test_irrptr.cpp143
-rw-r--r--src/unittest/test_keycode.cpp2
-rw-r--r--src/unittest/test_lua.cpp79
-rw-r--r--src/unittest/test_map.cpp68
-rw-r--r--src/unittest/test_map_settings_manager.cpp119
-rw-r--r--src/unittest/test_mapnode.cpp7
-rw-r--r--src/unittest/test_mod/test_mod/init.lua1
-rw-r--r--src/unittest/test_mod/test_mod/mod.conf2
-rw-r--r--src/unittest/test_modchannels.cpp76
-rw-r--r--src/unittest/test_modmetadatadatabase.cpp253
-rw-r--r--src/unittest/test_nodedef.cpp11
-rw-r--r--src/unittest/test_noderesolver.cpp54
-rw-r--r--src/unittest/test_noise.cpp65
-rw-r--r--src/unittest/test_objdef.cpp80
-rw-r--r--src/unittest/test_player.cpp88
-rw-r--r--src/unittest/test_profiler.cpp3
-rw-r--r--src/unittest/test_random.cpp5
-rw-r--r--src/unittest/test_schematic.cpp64
-rw-r--r--src/unittest/test_serialization.cpp542
-rw-r--r--src/unittest/test_server_shutdown_state.cpp120
-rw-r--r--src/unittest/test_serveractiveobjectmgr.cpp200
-rw-r--r--src/unittest/test_servermodmanager.cpp201
-rw-r--r--src/unittest/test_settings.cpp137
-rw-r--r--src/unittest/test_socket.cpp20
-rw-r--r--src/unittest/test_threading.cpp47
-rw-r--r--src/unittest/test_utilities.cpp376
-rw-r--r--src/unittest/test_voxelalgorithms.cpp215
-rw-r--r--src/unittest/test_voxelarea.cpp388
-rw-r--r--src/unittest/test_voxelmanipulator.cpp8
-rw-r--r--src/unittest/test_world/do_not_remove.txt0
-rw-r--r--src/util/CMakeLists.txt5
-rw-r--r--src/util/Optional.h105
-rw-r--r--src/util/areastore.cpp71
-rw-r--r--src/util/areastore.h35
-rw-r--r--src/util/auth.cpp8
-rw-r--r--src/util/auth.h5
-rw-r--r--src/util/base64.cpp33
-rw-r--r--src/util/base64.h24
-rw-r--r--src/util/basic_macros.h29
-rw-r--r--src/util/container.h74
-rw-r--r--src/util/directiontables.cpp19
-rw-r--r--src/util/directiontables.h65
-rw-r--r--src/util/enriched_string.cpp103
-rw-r--r--src/util/enriched_string.h57
-rw-r--r--src/util/hex.h20
-rw-r--r--src/util/ieee_float.cpp136
-rw-r--r--src/util/ieee_float.h34
-rw-r--r--src/util/mathconstants.h7
-rw-r--r--src/util/md32_common.h4
-rw-r--r--src/util/metricsbackend.cpp204
-rw-r--r--src/util/metricsbackend.h72
-rw-r--r--src/util/numeric.cpp188
-rw-r--r--src/util/numeric.h227
-rwxr-xr-xsrc/util/png.cpp68
-rwxr-xr-xsrc/util/png.h27
-rw-r--r--src/util/pointedthing.cpp112
-rw-r--r--src/util/pointedthing.h74
-rw-r--r--src/util/pointer.h177
-rw-r--r--src/util/quicktune.cpp (renamed from src/quicktune.cpp)5
-rw-r--r--src/util/quicktune.h (renamed from src/quicktune.h)22
-rw-r--r--src/util/quicktune_shortcutter.h (renamed from src/quicktune_shortcutter.h)12
-rw-r--r--src/util/serialize.cpp611
-rw-r--r--src/util/serialize.h380
-rw-r--r--src/util/sha1.cpp23
-rw-r--r--src/util/sha1.h43
-rw-r--r--src/util/sha2.h110
-rw-r--r--src/util/sha256.c11
-rw-r--r--src/util/srp.cpp29
-rw-r--r--src/util/srp.h5
-rw-r--r--src/util/stream.h70
-rw-r--r--src/util/strfnd.h6
-rw-r--r--src/util/string.cpp974
-rw-r--r--src/util/string.h234
-rw-r--r--src/util/thread.h43
-rw-r--r--src/util/timetaker.cpp30
-rw-r--r--src/util/timetaker.h26
-rw-r--r--src/version.cpp21
-rw-r--r--src/version.h6
-rw-r--r--src/voxel.cpp291
-rw-r--r--src/voxel.h277
-rw-r--r--src/voxelalgorithms.cpp908
-rw-r--r--src/voxelalgorithms.h142
-rw-r--r--src/wieldmesh.cpp546
-rw-r--r--src/wieldmesh.h84
-rw-r--r--textures/base/pack/air.pngbin0 -> 225 bytes-rw-r--r--textures/base/pack/aux1_btn.pngbin0 -> 1652 bytes-rw-r--r--textures/base/pack/bubble.pngbin0 -> 142 bytes-rw-r--r--textures/base/pack/bubble_gone.pngbin0 -> 68 bytes-rw-r--r--textures/base/pack/camera_btn.pngbin729 -> 1859 bytes-rw-r--r--textures/base/pack/cdb_add.pngbin0 -> 147 bytes-rw-r--r--textures/base/pack/cdb_clear.pngbin0 -> 182 bytes-rw-r--r--textures/base/pack/cdb_downloading.pngbin0 -> 201 bytes-rw-r--r--textures/base/pack/cdb_queued.pngbin0 -> 210 bytes-rw-r--r--textures/base/pack/cdb_update.pngbin0 -> 173 bytes-rw-r--r--textures/base/pack/cdb_viewonline.pngbin0 -> 191 bytes-rw-r--r--textures/base/pack/chat_btn.pngbin399 -> 873 bytes-rw-r--r--textures/base/pack/chat_hide_btn.pngbin0 -> 1089 bytes-rw-r--r--textures/base/pack/chat_show_btn.pngbin0 -> 1082 bytes-rw-r--r--textures/base/pack/checkbox_16.pngbin0 -> 288 bytes-rw-r--r--textures/base/pack/checkbox_16_white.pngbin0 -> 173 bytes-rw-r--r--textures/base/pack/checkbox_32.pngbin0 -> 436 bytes-rw-r--r--textures/base/pack/checkbox_64.pngbin0 -> 766 bytes-rw-r--r--textures/base/pack/clear.pngbin0 -> 708 bytes-rw-r--r--textures/base/pack/crack_anylength.png (renamed from games/minimal/mods/default/textures/crack_anylength.png)bin255 -> 255 bytes-rw-r--r--textures/base/pack/debug_btn.pngbin895 -> 2484 bytes-rw-r--r--textures/base/pack/down.pngbin1328 -> 1690 bytes-rw-r--r--textures/base/pack/down_arrow.pngbin373 -> 0 bytes-rw-r--r--textures/base/pack/drop_btn.pngbin1035 -> 1269 bytes-rw-r--r--textures/base/pack/end_icon.pngbin0 -> 908 bytes-rw-r--r--textures/base/pack/error_icon_orange.pngbin0 -> 133 bytes-rw-r--r--textures/base/pack/error_icon_red.pngbin0 -> 133 bytes-rw-r--r--textures/base/pack/error_screenshot.pngbin0 -> 971 bytes-rw-r--r--textures/base/pack/fast_btn.pngbin875 -> 1212 bytes-rw-r--r--textures/base/pack/fly_btn.pngbin720 -> 1559 bytes-rw-r--r--textures/base/pack/gear_icon.pngbin1005 -> 1858 bytes-rw-r--r--textures/base/pack/heart.pngbin0 -> 255 bytes-rw-r--r--textures/base/pack/heart_gone.pngbin0 -> 68 bytes-rw-r--r--textures/base/pack/ignore.pngbin0 -> 234 bytes-rw-r--r--textures/base/pack/inventory_btn.pngbin343 -> 331 bytes-rw-r--r--textures/base/pack/joystick_bg.pngbin0 -> 12481 bytes-rw-r--r--textures/base/pack/joystick_center.pngbin0 -> 2574 bytes-rw-r--r--textures/base/pack/joystick_off.pngbin0 -> 14363 bytes-rw-r--r--textures/base/pack/jump_btn.pngbin434 -> 1710 bytes-rw-r--r--textures/base/pack/left_arrow.pngbin400 -> 0 bytes-rw-r--r--textures/base/pack/loading_screenshot.pngbin0 -> 580 bytes-rw-r--r--textures/base/pack/minimap_btn.pngbin0 -> 1220 bytes-rw-r--r--textures/base/pack/next_icon.pngbin0 -> 714 bytes-rw-r--r--textures/base/pack/no_screenshot.pngbin586 -> 2043 bytes-rw-r--r--textures/base/pack/no_texture.pngbin0 -> 281 bytes-rw-r--r--textures/base/pack/no_texture_airlike.pngbin0 -> 178 bytes-rw-r--r--textures/base/pack/noclip_btn.pngbin1087 -> 1236 bytes-rw-r--r--textures/base/pack/player.pngbin0 -> 142 bytes-rw-r--r--textures/base/pack/player_back.pngbin0 -> 140 bytes-rw-r--r--textures/base/pack/player_marker.pngbin2178 -> 2166 bytes-rw-r--r--textures/base/pack/plus.pngbin0 -> 763 bytes-rw-r--r--textures/base/pack/prev_icon.pngbin0 -> 714 bytes-rw-r--r--textures/base/pack/progress_bar.pngbin0 -> 413 bytes-rw-r--r--textures/base/pack/progress_bar_bg.pngbin0 -> 354 bytes-rw-r--r--textures/base/pack/rangeview_btn.pngbin1476 -> 2423 bytes-rw-r--r--textures/base/pack/rare_controls.pngbin349 -> 227 bytes-rw-r--r--textures/base/pack/refresh.pngbin0 -> 3660 bytes-rw-r--r--textures/base/pack/right_arrow.pngbin396 -> 0 bytes-rw-r--r--textures/base/pack/search.pngbin0 -> 1908 bytes-rw-r--r--textures/base/pack/server_favorite.png (renamed from textures/base/pack/server_flags_favorite.png)bin916 -> 916 bytes-rw-r--r--textures/base/pack/server_favorite_delete.pngbin0 -> 748 bytes-rw-r--r--textures/base/pack/server_incompatible.pngbin0 -> 385 bytes-rw-r--r--textures/base/pack/server_ping_1.pngbin0 -> 251 bytes-rw-r--r--textures/base/pack/server_ping_2.pngbin0 -> 244 bytes-rw-r--r--textures/base/pack/server_ping_3.pngbin0 -> 245 bytes-rw-r--r--textures/base/pack/server_ping_4.pngbin0 -> 213 bytes-rw-r--r--textures/base/pack/server_public.pngbin0 -> 492 bytes-rw-r--r--textures/base/pack/start_icon.pngbin0 -> 912 bytes-rw-r--r--textures/base/pack/sunrisebg.pngbin4231 -> 4435 bytes-rw-r--r--textures/base/pack/up_arrow.pngbin373 -> 0 bytes-rw-r--r--textures/base/pack/wieldhand.pngbin0 -> 126 bytes-rw-r--r--textures/base/pack/zoom.pngbin0 -> 1320 bytes-rwxr-xr-xutil/buildbot/buildwin32.sh215
-rwxr-xr-xutil/buildbot/buildwin64.sh211
-rw-r--r--util/buildbot/toolchain_i686-w64-mingw32-posix.cmake19
-rw-r--r--util/buildbot/toolchain_i686-w64-mingw32.cmake (renamed from util/buildbot/toolchain_mingw.cmake)8
-rw-r--r--util/buildbot/toolchain_x86_64-w64-mingw32-posix.cmake19
-rw-r--r--util/buildbot/toolchain_x86_64-w64-mingw32.cmake (renamed from util/buildbot/toolchain_mingw64.cmake)0
-rwxr-xr-xutil/bump_version.sh161
-rwxr-xr-xutil/ci/build.sh10
-rwxr-xr-xutil/ci/build_prometheus_cpp.sh13
-rw-r--r--util/ci/clang-format-whitelist.txt500
-rwxr-xr-xutil/ci/clang-format.sh64
-rwxr-xr-xutil/ci/clang-tidy.sh13
-rw-r--r--util/ci/common.sh34
-rwxr-xr-xutil/ci/run-clang-tidy.py321
-rw-r--r--util/colors.txt78
-rwxr-xr-xutil/fix_format.sh5
-rwxr-xr-xutil/gather_git_credits.py67
-rwxr-xr-xutil/generate-texture-normals.sh255
-rw-r--r--util/helper_mod/init.lua51
-rw-r--r--util/helper_mod/mod.conf3
-rwxr-xr-xutil/minetestmapper.py752
-rwxr-xr-xutil/reorder_translation_commits.py33
-rwxr-xr-xutil/sectors2sqlite.py132
-rwxr-xr-xutil/stress_mapgen.sh30
-rwxr-xr-xutil/test_multiplayer.sh90
-rwxr-xr-xutil/travis/before_install.sh38
-rw-r--r--util/travis/common.sh8
-rwxr-xr-xutil/travis/script.sh53
-rw-r--r--util/travis/toolchain_mingw.cmake.in18
-rwxr-xr-xutil/updatepo.sh8
-rw-r--r--util/wireshark/minetest.lua962
1804 files changed, 544727 insertions, 152877 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 000000000..63f12b6c4
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,33 @@
+BasedOnStyle: LLVM
+IndentWidth: 4
+UseTab: Always
+TabWidth: 4
+BreakBeforeBraces: Custom
+Standard: Cpp11
+BraceWrapping:
+ AfterClass: true
+ AfterControlStatement: false
+ AfterEnum: true
+ AfterFunction: true
+ AfterNamespace: true
+ AfterStruct: true
+ AfterUnion: true
+ BeforeCatch: false
+ BeforeElse: false
+FixNamespaceComments: false
+AllowShortIfStatementsOnASingleLine: false
+IndentCaseLabels: false
+AccessModifierOffset: -4
+ColumnLimit: 90
+AllowShortFunctionsOnASingleLine: InlineOnly
+SortIncludes: false
+IncludeCategories:
+ - Regex: '^".*'
+ Priority: 2
+ - Regex: '^<.*'
+ Priority: 1
+AlignAfterOpenBracket: DontAlign
+ContinuationIndentWidth: 8
+ConstructorInitializerIndentWidth: 8
+BreakConstructorInitializers: AfterColon
+AlwaysBreakTemplateDeclarations: Yes
diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 000000000..1b9f8bd07
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,5 @@
+Checks: '-*,modernize-use-emplace,modernize-avoid-bind,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,performance-*'
+WarningsAsErrors: '-*,modernize-use-emplace,performance-type-promotion-in-math-fn,performance-faster-string-find,performance-implicit-cast-in-loop'
+CheckOptions:
+ - key: performance-unnecessary-value-param.AllowedTypes
+ value: v[23]f;v[23][su](16|32)
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..bda43ebc0
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,4 @@
+./cmake-build-*
+./build/*
+./cache/*
+Dockerfile
diff --git a/.editorconfig b/.editorconfig
new file mode 100755
index 000000000..ec0645241
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+[*]
+end_of_line = lf
+
+[*.{cpp,h,lua,txt,glsl,md,c,cmake,java,gradle}]
+charset = utf8
+indent_size = 4
+indent_style = tab
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 000000000..f60f584f9
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,183 @@
+# Contributing
+
+Contributions are welcome! Here's how you can help:
+
+- [Contributing code](#code)
+- [Reporting issues](#issues)
+- [Requesting features](#feature-requests)
+- [Translating](#translations)
+- [Donating](#donations)
+
+## Code
+
+1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository and
+ [clone](https://help.github.com/articles/cloning-a-repository/) your fork.
+
+2. Before you start coding, consider opening an
+ [issue at Github](https://github.com/minetest/minetest/issues) to discuss the
+ suitability and implementation of your intended contribution with the core
+ developers.
+
+ Any Pull Request that isn't a bug fix and isn't covered by
+ [the roadmap](../doc/direction.md) will be closed within a week unless it
+ receives a concept approval from a Core Developer. For this reason, it is
+ recommended that you open an issue for any such pull requests before doing
+ the work, to avoid disappointment.
+
+ You may also benefit from discussing on our IRC development channel
+ [#minetest-dev](http://www.minetest.net/irc/). Note that a proper IRC client
+ is required to speak on this channel.
+
+3. Start coding!
+ - Refer to the
+ [Lua API](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt),
+ [Developer Wiki](http://dev.minetest.net/Main_Page) and other
+ [documentation](https://github.com/minetest/minetest/tree/master/doc).
+ - Follow the [C/C++](http://dev.minetest.net/Code_style_guidelines) and
+ [Lua](http://dev.minetest.net/Lua_code_style_guidelines) code style guidelines.
+ - Check your code works as expected and document any changes to the Lua API.
+
+4. Commit & [push](https://help.github.com/articles/pushing-to-a-remote/) your changes to a new branch (not `master`, one change per branch)
+ - Commit messages should:
+ - Use the present tense.
+ - Be descriptive. See the commit messages by core developers for examples.
+ - The first line should:
+ - Start with a capital letter.
+ - Be a compact summary of the commit.
+ - Preferably have less than 70 characters.
+ - Have no full stop at the end.
+ - The second line should be empty.
+ - The following lines should describe the commit, starting a new line for each point.
+
+5. Once you are happy with your changes, submit a pull request.
+ - Open the [pull-request form](https://github.com/minetest/minetest/pull/new/master).
+ - Add a description explaining what you've done (or if it's a
+ work-in-progress - what you need to do).
+ - Make sure to fill out the pull request template.
+
+### A pull-request is considered merge-able when:
+
+1. It follows [the roadmap](../doc/direction.md) in some way and fits the whole
+ picture of the project.
+2. It works.
+3. It follows the code style for
+ [C/C++](http://dev.minetest.net/Code_style_guidelines) or
+ [Lua](http://dev.minetest.net/Lua_code_style_guidelines).
+4. The code's interfaces are well designed, regardless of other aspects that
+ might need more work in the future.
+5. It uses protocols and formats which include the required compatibility.
+
+### Important note about automated GitHub checks
+
+When you submit a pull request, GitHub automatically runs checks on the Minetest
+Engine combined with your changes. One of these checks is called 'cpp lint /
+clang format', which checks code formatting. Because formatting for readability
+requires human judgement this check often fails and often makes unsuitable
+formatting requests which make code readability worse.
+
+If this check fails, look at the details to check for any clear mistakes and
+correct those. However, you should not apply everything ClangFormat requests.
+Ignore requests that make code readability worse and any other clearly
+unsuitable requests. Discuss in the pull request with a core developer about how
+to progress.
+
+## Issues
+
+If you experience an issue, we would like to know the details - especially when
+a stable release is on the way.
+
+1. Do a quick search on GitHub to check if the issue has already been reported.
+2. Is it an issue with the Minetest *engine*? If not, report it
+ [elsewhere](http://www.minetest.net/development/#reporting-issues).
+3. [Open an issue](https://github.com/minetest/minetest/issues/new) and describe
+ the issue you are having - you could include:
+ - Error logs (check the bottom of the `debug.txt` file).
+ - Screenshots.
+ - Ways you have tried to solve the issue, and whether they worked or not.
+ - Your Minetest version and the content (games, mods or texture packs) you have installed.
+ - Your platform (e.g. Windows 10 or Ubuntu 15.04 x64).
+
+After reporting you should aim to answer questions or clarifications as this
+helps pinpoint the cause of the issue (if you don't do this your issue may be
+closed after 1 month).
+
+## Feature requests
+
+Feature requests are welcome but take a moment to see if your idea follows
+[the roadmap](../doc/direction.md) in some way and fits the whole picture of
+the project. You should provide a clear explanation with as much detail as
+possible.
+
+## Translations
+
+The core translations of Minetest are performed using Weblate. You can access
+the project page with a list of current languages
+[here](https://hosted.weblate.org/projects/minetest/minetest/).
+
+Builtin (the component which contains things like server messages, chat command
+descriptions, privilege descriptions) is translated separately; it needs to be
+translated by editing a `.tr` text file. See
+[Translation](https://dev.minetest.net/Translation) for more information.
+
+## Donations
+
+If you'd like to monetarily support Minetest development, you can find donation
+methods on [our website](http://www.minetest.net/development/#donate).
+
+# Maintaining
+
+* This is a concise version of the
+ [Rules & Guidelines](http://dev.minetest.net/Category:Rules_and_Guidelines) on the developer wiki.*
+
+These notes are for those who have push access Minetest (core developers / maintainers).
+
+- See the [project organisation](http://dev.minetest.net/Organisation) for the people involved.
+
+## Concept approvals and roadmaps
+
+If a Pull Request is not a bug fix:
+
+* If it matches a goal in [the roadmap](../doc/direction.md), then the PR should
+ be labelled as "Roadmap" and the goal stated by number in the description.
+* If it doesn't match a goal, then it needs to receive a concept approval within
+ a week of being opened to remain open. This 1 week deadline does not apply to
+ PRs opened before the roadmap was adopted; instead, they may remain open or be
+ closed as needed. Use the "Concept Approved" label. Issues can be marked as
+ "Concept Approved" to give preapproval to future PRs.
+
+## Reviewing pull requests
+
+Pull requests should be reviewed and, if appropriate, checked if they achieve
+their intended purpose. You can show that you are in the process of, or will
+review the pull request by commenting *"Looks good"* or something similar.
+
+**If the pull-request is not [merge-able](#a-pull-request-is-considered-merge-able-when):**
+
+Submit a comment explaining to the author what they need to change to make the
+pull-request merge-able.
+
+- If the author comments or makes changes to the pull-request, it can be
+ reviewed again.
+- If no response is made from the author within 1 month (when improvements are
+ suggested or a question is asked), it can be closed.
+
+**If the pull-request is [merge-able](#a-pull-request-is-considered-merge-able-when):**
+
+Submit a :+1: (+1) or "Looks good" comment to show you believe the pull-request should be merged. "Looks good" comments often signify that the patch might require (more) testing.
+
+- Two core developers must agree to the merge before it is carried out and both should +1 the pull request.
+- Who intends to merge the pull-request should follow the commit rules:
+ - The title should follow the commit guidelines (title starts with a capital letter, present tense, descriptive).
+ - Don't modify history older than 10 minutes.
+ - Use rebase, not merge to get linear history:
+ - `curl https://github.com/minetest/minetest/pull/1.patch | git am`
+
+## Reviewing issues and feature requests
+
+- If an issue does not get a response from its author within 1 month (when requiring more details), it can be closed.
+- When an issue is a duplicate, refer to the first ones and close the later ones.
+- Tag issues with the appropriate [labels](https://github.com/minetest/minetest/labels) for devices, platforms etc.
+
+## Releasing a new version
+
+*Refer to [dev.minetest.net/Releasing_Minetest](http://dev.minetest.net/Releasing_Minetest)*
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..7cf34bd4a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,32 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: Unconfirmed bug
+assignees: ''
+---
+
+##### Minetest version
+<!--
+Paste Minetest version between quotes below.
+If you are on a devel version, please add git commit hash.
+You can use `minetest --version` to find it.
+-->
+```
+
+```
+
+##### OS / Hardware
+<!-- General information about your hardware and operating system -->
+Operating system:
+CPU:
+
+<!-- For graphical issues only -->
+GPU model:
+OpenGL version:
+
+##### Summary
+<!-- Describe your problem here -->
+
+##### Steps to reproduce
+<!-- Explain how the problem has happened, providing a minimal test (i.e. a code snippet reduced to the bone) where possible -->
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..ebcfa98ee
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,25 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: Feature request
+assignees: ''
+---
+
+## Problem
+
+A clear and concise description of what the problem is.
+ie: Why is this needed?
+Ex. I'm always frustrated when [...]
+
+## Solutions
+
+A clear and concise description of what you want to happen.
+
+## Alternatives
+
+A clear and concise description of any alternative solutions or features you've considered.
+
+## Additional context
+
+Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..4132826cd
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,20 @@
+Add compact, short information about your PR for easier understanding:
+
+- Goal of the PR
+- How does the PR work?
+- Does it resolve any reported issue?
+- Does this relate to a goal in [the roadmap](../doc/direction.md)?
+- If not a bug fix, why is this PR needed? What usecases does it solve?
+
+## To do
+
+This PR is a Work in Progress / Ready for Review.
+<!-- ^ delete one -->
+
+- [ ] List
+- [ ] Things
+- [ ] To do
+
+## How to test
+
+<!-- Example code or instructions -->
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 000000000..e2dd0432f
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,20 @@
+# Security Policy
+
+## Supported Versions
+
+We only support the latest stable version for security issues.
+See the [releases page](https://github.com/minetest/minetest/releases).
+
+## Reporting a Vulnerability
+
+We ask that you report vulnerabilities privately, by contacting a core developer,
+to give us time to fix them. You can do that by emailing one of the following addresses:
+
+* celeron55@gmail.com
+* rubenwardy@minetest.net
+
+Depending on severity, we will either create a private issue for the vulnerability
+and release a patch version of Minetest, or give you permission to file the issue publicly.
+
+For more information on the justification of this policy, see
+[Responsible Disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure).
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
new file mode 100644
index 000000000..8cbe5e09f
--- /dev/null
+++ b/.github/workflows/android.yml
@@ -0,0 +1,52 @@
+name: android
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - 'android/**'
+ - '.github/workflows/android.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - 'android/**'
+ - '.github/workflows/android.yml'
+
+jobs:
+ build:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y --no-install-recommends gettext openjdk-11-jdk-headless
+ - name: Build with Gradle
+ run: cd android; ./gradlew assemblerelease
+ - name: Save armeabi artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-armeabi-v7a.apk
+ path: android/app/build/outputs/apk/release/app-armeabi-v7a-release-unsigned.apk
+ - name: Save arm64 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-arm64-v8a.apk
+ path: android/app/build/outputs/apk/release/app-arm64-v8a-release-unsigned.apk
+ - name: Save x86 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-x86.apk
+ path: android/app/build/outputs/apk/release/app-x86-release-unsigned.apk
+ - name: Save x86_64 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-x86_64.apk
+ path: android/app/build/outputs/apk/release/app-x86_64-release-unsigned.apk
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 000000000..282dbe307
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,271 @@
+name: build
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/buildbot/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ - 'Dockerfile'
+ - '.dockerignore'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/buildbot/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ - 'Dockerfile'
+ - '.dockerignore'
+
+jobs:
+ # Older gcc version (should be close to our minimum supported version)
+ gcc_5:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps g++-5
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: gcc-5
+ CXX: g++-5
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ # Current gcc version
+ gcc_12:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps g++-12 libluajit-5.1-dev
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: gcc-12
+ CXX: g++-12
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ # Older clang version (should be close to our minimum supported version)
+ clang_3_9:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-3.9 valgrind
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-3.9
+ CXX: clang++-3.9
+
+ - name: Unittest
+ run: |
+ ./bin/minetest --run-unittests
+
+ - name: Valgrind
+ run: |
+ valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests
+
+ # Current clang version
+ clang_14:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-14 gdb
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-14
+ CXX: clang++-14
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ - name: Integration test + devtest
+ run: |
+ ./util/test_multiplayer.sh
+
+ # Build with prometheus-cpp (server-only)
+ clang_9_prometheus:
+ name: "clang_9 (PROMETHEUS=1)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-9
+
+ - name: Build prometheus-cpp
+ run: |
+ ./util/ci/build_prometheus_cpp.sh
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-9
+ CXX: clang++-9
+ CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0"
+
+ - name: Test
+ run: |
+ ./bin/minetestserver --run-unittests
+
+ docker:
+ name: "Docker image"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Build docker image
+ run: |
+ docker build . -t minetest:latest
+ docker run --rm minetest:latest /usr/local/bin/minetestserver --version
+
+ win32:
+ name: "MinGW cross-compiler (32-bit)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install compiler
+ run: |
+ sudo apt-get update && sudo apt-get install -y gettext
+ wget http://minetest.kitsunemimi.pw/mingw-w64-i686_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
+ sudo tar -xaf mingw.tar.xz -C /usr
+
+ - name: Build
+ run: |
+ EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh winbuild
+ env:
+ NO_MINETEST_GAME: 1
+ NO_PACKAGE: 1
+
+ win64:
+ name: "MinGW cross-compiler (64-bit)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install compiler
+ run: |
+ sudo apt-get update && sudo apt-get install -y gettext
+ wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
+ sudo tar -xaf mingw.tar.xz -C /usr
+
+ - name: Build
+ run: |
+ EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild
+ env:
+ NO_MINETEST_GAME: 1
+ NO_PACKAGE: 1
+
+ msvc:
+ name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }}
+ runs-on: windows-2019
+ env:
+ VCPKG_VERSION: 5cf60186a241e84e8232641ee973395d4fde90e1
+ # 2022.02
+ vcpkg_packages: zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp opengl-registry
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ arch: x86,
+ generator: "-G'Visual Studio 16 2019' -A Win32",
+ vcpkg_triplet: x86-windows
+ }
+ - {
+ arch: x64,
+ generator: "-G'Visual Studio 16 2019' -A x64",
+ vcpkg_triplet: x64-windows
+ }
+ type: [portable]
+# type: [portable, installer]
+# The installer type is working, but disabled, to save runner jobs.
+# Enable it, when working on the installer.
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Checkout IrrlichtMt
+ run: |
+ $ref = @(Get-Content misc\irrlichtmt_tag.txt)
+ git clone https://github.com/minetest/irrlicht lib\irrlichtmt --depth 1 -b $ref[0]
+
+ - name: Restore from cache and run vcpkg
+ uses: lukka/run-vcpkg@v7
+ with:
+ vcpkgArguments: ${{env.vcpkg_packages}}
+ vcpkgDirectory: '${{ github.workspace }}\vcpkg'
+ appendedCacheKey: ${{ matrix.config.vcpkg_triplet }}
+ vcpkgGitCommitId: ${{ env.VCPKG_VERSION }}
+ vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }}
+
+ - name: Minetest CMake
+ run: |
+ cmake ${{matrix.config.generator}} `
+ -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" `
+ -DCMAKE_BUILD_TYPE=Release `
+ -DENABLE_POSTGRESQL=OFF `
+ -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} .
+
+ - name: Build Minetest
+ run: cmake --build . --config Release
+
+ - name: CPack
+ run: |
+ If ($env:TYPE -eq "installer")
+ {
+ cpack -G WIX -B "$env:GITHUB_WORKSPACE\Package"
+ }
+ ElseIf($env:TYPE -eq "portable")
+ {
+ cpack -G ZIP -B "$env:GITHUB_WORKSPACE\Package"
+ }
+ env:
+ TYPE: ${{matrix.type}}
+
+ - name: Package Clean
+ run: rm -r $env:GITHUB_WORKSPACE\Package\_CPack_Packages
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: msvc-${{ matrix.config.arch }}-${{ matrix.type }}
+ path: .\Package\
diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml
new file mode 100644
index 000000000..581ee06d6
--- /dev/null
+++ b/.github/workflows/cpp_lint.yml
@@ -0,0 +1,55 @@
+name: cpp_lint
+
+# lint on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+
+jobs:
+
+# clang_format:
+# runs-on: ubuntu-20.04
+# steps:
+# - uses: actions/checkout@v3
+# - name: Install clang-format
+# run: |
+# sudo apt-get update
+# sudo apt-get install -y clang-format-9
+#
+# - name: Run clang-format
+# run: |
+# source ./util/ci/clang-format.sh
+# check_format
+# env:
+# CLANG_FORMAT: clang-format-9
+
+ clang_tidy:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-tidy-9
+
+ - name: Run clang-tidy
+ run: |
+ ./util/ci/clang-tidy.sh
diff --git a/.github/workflows/lua.yml b/.github/workflows/lua.yml
new file mode 100644
index 000000000..21cbbdcee
--- /dev/null
+++ b/.github/workflows/lua.yml
@@ -0,0 +1,72 @@
+name: lua_lint
+
+# Lint on lua changes on builtin or if workflow changed
+on:
+ push:
+ paths:
+ - 'builtin/**.lua'
+ - 'games/devtest/**.lua'
+ - '.github/workflows/**.yml'
+ pull_request:
+ paths:
+ - 'builtin/**.lua'
+ - 'games/devtest/**.lua'
+ - '.github/workflows/**.yml'
+
+jobs:
+ # Note that the integration tests are also run build.yml, but only when C++ code is changed.
+ integration_tests:
+ name: "Compile and run multiplayer tests"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-10 gdb libluajit-5.1-dev
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-10
+ CXX: clang++-10
+ CMAKE_FLAGS: "-DENABLE_GETTEXT=0 -DBUILD_SERVER=0"
+
+ - name: Integration test + devtest
+ run: |
+ ./util/test_multiplayer.sh
+
+ luacheck:
+ name: "Builtin Luacheck and Unit Tests"
+ runs-on: ubuntu-20.04
+
+ steps:
+
+ - uses: actions/checkout@v3
+ - uses: leafo/gh-actions-lua@v9
+ with:
+ luaVersion: "5.1.5"
+ - uses: leafo/gh-actions-luarocks@v4
+
+ - name: Install LuaJIT
+ run: |
+ cd $HOME
+ git clone https://github.com/LuaJIT/LuaJIT/
+ cd LuaJIT
+ make -j$(nproc)
+
+ - name: Install luarocks tools
+ run: |
+ luarocks install --local luacheck
+ luarocks install --local busted
+
+ - name: Run checks (builtin)
+ run: |
+ $HOME/.luarocks/bin/luacheck builtin
+ $HOME/.luarocks/bin/busted builtin
+ $HOME/.luarocks/bin/busted builtin --lua=$HOME/LuaJIT/src/luajit
+
+ - name: Run checks (devtest)
+ run: |
+ $HOME/.luarocks/bin/luacheck --config=games/devtest/.luacheckrc games/devtest
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
new file mode 100644
index 000000000..edc6630c0
--- /dev/null
+++ b/.github/workflows/macos.yml
@@ -0,0 +1,67 @@
+name: macos
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - '.github/workflows/macos.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - '.github/workflows/macos.yml'
+
+env:
+ MINETEST_GAME_REPO: https://github.com/minetest/minetest_game.git
+ MINETEST_GAME_BRANCH: master
+ MINETEST_GAME_NAME: minetest_game
+
+jobs:
+ build:
+ runs-on: macos-11
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_macos_deps
+
+ - name: Build
+ run: |
+ git clone -b $MINETEST_GAME_BRANCH $MINETEST_GAME_REPO games/$MINETEST_GAME_NAME
+ git clone https://github.com/minetest/irrlicht lib/irrlichtmt --depth 1 -b $(cat misc/irrlichtmt_tag.txt)
+ mkdir build
+ cd build
+ cmake .. \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_INSTALL_PREFIX=../build/macos/ \
+ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
+ make -j2
+ make install
+
+ - name: Test
+ run: |
+ ./build/macos/minetest.app/Contents/MacOS/minetest --run-unittests
+
+ # Zipping the built .app preserves permissions on the contained files,
+ # which the GitHub artifact pipeline would otherwise strip away.
+ - name: CPack
+ run: |
+ cd build
+ cpack -G ZIP -B macos
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: minetest-macos
+ path: ./build/macos/*.zip
diff --git a/.gitignore b/.gitignore
index d7e0daab4..bb5e0a0cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,9 @@
-## Editors and Development environments
+## Editors and development environments
*~
*.swp
*.bak*
*.orig
+.DS_Store
# Vim
*.vim
# Kate
@@ -21,17 +22,25 @@
tags
!tags/
gtags.files
-.idea/*
+.idea
+# Codelite
+*.project
+# Visual Studio Code & plugins
+.vscode/
+build/.cmake/
+# Gradle
+.gradle
-## Files related to minetest development cycle
+## Files related to Minetest development cycle
/*.patch
+*.diff
# GNU Patch reject file
*.rej
## Non-static Minetest directories or symlinks to these
/bin/
/games/*
-!/games/minimal/
+!/games/devtest/
/cache
/textures/*
!/textures/base/
@@ -43,30 +52,43 @@ gtags.files
!/mods/minetest/mods_here.txt
/worlds
/world/
+/clientmods/*
+!/clientmods/preview/
+/client/mod_storage/
## Configuration/log files
minetest.conf
debug.txt
+debug.txt.1
+
+## Other files generated by Minetest
+screenshot_*.png
+testbm.txt
## Doxygen files
doc/Doxyfile
doc/html/
doc/doxygen_*
+## MkDocs files
+public/
+doc/mkdocs/docs/*.md
+doc/mkdocs/mkdocs.yml
+
## Build files
+build/
CMakeFiles
Makefile
-!build/android/Makefile
cmake_install.cmake
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
-src/android_version.h
-src/android_version_githash.h
+src/test_config.h
src/cmake_config.h
src/cmake_config_githash.h
-src/lua/build/
-locale/
+src/unittest/test_world/world.mt
+games/devtest/mods/testnodes/textures/testnodes_generated_*.png
+/locale/
.directory
*.cbp
*.layout
@@ -74,16 +96,24 @@ locale/
*.a
*.ninja
.ninja*
+*.gch
+*.iml
+test_config.h
+cmake-build-debug/
+cmake-build-release/
+cmake_config.h
+cmake_config_githash.h
+CMakeDoxy*
+compile_commands.json
+*.apk
+*.zip
+# Visual Studio
+*.vcxproj*
+*.sln
+.vs/
-## Android build files
-build/android/src/main/assets
-build/android/build
-build/android/deps
-build/android/libs
-build/android/jni/src
-build/android/src/main/jniLibs
-build/android/obj
-build/android/local.properties
-build/android/.gradle
-timestamp
+# Optional user provided library folder
+lib/irrlichtmt
+# Generated mod storage database
+client/mod_storage.sqlite
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 000000000..28e35a971
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,289 @@
+---
+# Github repository is cloned every day on Gitlab.com
+# https://gitlab.com/minetest/minetest
+# Pipelines URL: https://gitlab.com/minetest/minetest/pipelines
+
+stages:
+ - build
+ - package
+ - deploy
+
+variables:
+ 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
+ - DEBIAN_FRONTEND=noninteractive 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 libzstd-dev
+ script:
+ - git clone https://github.com/minetest/irrlicht lib/irrlichtmt --depth 1 -b $(cat misc/irrlichtmt_tag.txt)
+ - mkdir build && cd build
+ - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE ..
+ - make -j $(($(nproc) + 1))
+ - make install
+ artifacts:
+ when: on_success
+ expire_in: 1h
+ paths:
+ - artifact/*
+
+.debpkg_template:
+ stage: package
+ before_script:
+ - apt-get update
+ - apt-get install -y git
+ - mkdir -p build/deb/minetest/DEBIAN/
+ - cp misc/debpkg-control build/deb/minetest/DEBIAN/control
+ - cp -a artifact/minetest/usr build/deb/minetest/
+ script:
+ - 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
+ - sed -i 's/JSONCPP_PLACEHOLDER/'$JSONCPP_PKG'/g' build/deb/minetest/DEBIAN/control
+ - cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../
+ artifacts:
+ expire_in: 90 day
+ paths:
+ - ./*.deb
+
+.debpkg_install:
+ stage: deploy
+ before_script:
+ - apt-get update -qy
+ script:
+ - apt-get install -y ./*.deb
+ - minetest --version
+
+##
+## Debian
+##
+
+# Stretch
+
+build:debian-9:
+ extends: .build_template
+ image: debian:9
+
+package:debian-9:
+ extends: .debpkg_template
+ image: debian:9
+ needs:
+ - build:debian-9
+ variables:
+ JSONCPP_PKG: libjsoncpp1
+ LEVELDB_PKG: libleveldb1v5
+ JPEG_PKG: libjpeg62-turbo
+
+deploy:debian-9:
+ extends: .debpkg_install
+ image: debian:9
+ needs:
+ - package:debian-9
+
+# Buster
+
+build:debian-10:
+ extends: .build_template
+ image: debian:10
+
+package:debian-10:
+ extends: .debpkg_template
+ image: debian:10
+ needs:
+ - build:debian-10
+ variables:
+ JSONCPP_PKG: libjsoncpp1
+ LEVELDB_PKG: libleveldb1d
+ JPEG_PKG: libjpeg62-turbo
+
+deploy:debian-10:
+ extends: .debpkg_install
+ image: debian:10
+ needs:
+ - package:debian-10
+
+# Bullseye
+
+build:debian-11:
+ extends: .build_template
+ image: debian:11
+
+package:debian-11:
+ extends: .debpkg_template
+ image: debian:11
+ needs:
+ - build:debian-11
+ variables:
+ JSONCPP_PKG: libjsoncpp24
+ LEVELDB_PKG: libleveldb1d
+ JPEG_PKG: libjpeg62-turbo
+
+deploy:debian-11:
+ extends: .debpkg_install
+ image: debian:11
+ needs:
+ - package:debian-11
+
+##
+## Ubuntu
+##
+
+# Bionic
+
+build:ubuntu-18.04:
+ extends: .build_template
+ image: ubuntu:bionic
+
+package:ubuntu-18.04:
+ extends: .debpkg_template
+ image: ubuntu:bionic
+ needs:
+ - build:ubuntu-18.04
+ variables:
+ JSONCPP_PKG: libjsoncpp1
+ LEVELDB_PKG: libleveldb1v5
+ JPEG_PKG: libjpeg-turbo8
+
+deploy:ubuntu-18.04:
+ extends: .debpkg_install
+ image: ubuntu:bionic
+ needs:
+ - package:ubuntu-18.04
+
+# Focal
+
+build:ubuntu-20.04:
+ extends: .build_template
+ image: ubuntu:focal
+
+package:ubuntu-20.04:
+ extends: .debpkg_template
+ image: ubuntu:focal
+ needs:
+ - build:ubuntu-20.04
+ variables:
+ JSONCPP_PKG: libjsoncpp1
+ LEVELDB_PKG: libleveldb1d
+ JPEG_PKG: libjpeg-turbo8
+
+deploy:ubuntu-20.04:
+ extends: .debpkg_install
+ image: ubuntu:focal
+ needs:
+ - package:ubuntu-20.04
+
+##
+## Fedora
+##
+
+# Fedora 28 <-> RHEL 8
+build:fedora-28:
+ extends: .build_template
+ image: fedora:28
+ before_script:
+ - 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 libzstd-devel
+
+##
+## MinGW for Windows
+##
+
+.generic_win_template:
+ image: ubuntu:focal
+ before_script:
+ - apt-get update
+ - DEBIAN_FRONTEND=noninteractive apt-get install -y wget xz-utils unzip git cmake gettext
+ - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
+ - tar -xaf mingw.tar.xz -C /usr
+
+.build_win_template:
+ extends: .generic_win_template
+ stage: build
+ artifacts:
+ expire_in: 90 day
+ paths:
+ - minetest-*-win*/*
+
+build:win32:
+ extends: .build_win_template
+ script:
+ - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
+ - unzip -q build/build/*.zip
+ variables:
+ WIN_ARCH: "i686"
+
+build:win64:
+ extends: .build_win_template
+ script:
+ - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
+ - unzip -q build/build/*.zip
+ variables:
+ WIN_ARCH: "x86_64"
+
+##
+## Docker
+##
+
+package:docker:
+ stage: package
+ image: docker:stable
+ services:
+ - docker:dind
+ before_script:
+ - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
+ script:
+ - docker build . -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME -t ${CONTAINER_IMAGE}/server:latest
+ - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA
+ - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME
+ - docker push ${CONTAINER_IMAGE}/server:latest
+
+##
+## Gitlab Pages (Lua API documentation)
+##
+
+pages:
+ stage: deploy
+ image: python:3.8
+ before_script:
+ - pip install git+https://github.com/Python-Markdown/markdown.git
+ - pip install git+https://github.com/mkdocs/mkdocs.git
+ - pip install pygments
+ script:
+ - cd doc/mkdocs && ./build.sh
+ artifacts:
+ paths:
+ - public
+ only:
+ - master
+
+##
+## AppImage
+##
+
+package:appimage-client:
+ stage: package
+ image: appimagecrafters/appimage-builder
+ needs:
+ - build:ubuntu-18.04
+ before_script:
+ - apt-get update -y
+ - apt-get install -y git
+ # Collect files
+ - mkdir AppDir
+ - cp -a artifact/minetest/usr/ AppDir/usr/
+ - rm AppDir/usr/bin/minetestserver
+ - cp -a clientmods AppDir/usr/share/minetest
+ script:
+ - git clone $MINETEST_GAME_REPO AppDir/usr/share/minetest/games/minetest_game
+ - rm -rf AppDir/usr/share/minetest/games/minetest/.git
+ - export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
+ # Remove PrefersNonDefaultGPU property due to validation errors
+ - sed -i '/PrefersNonDefaultGPU/d' AppDir/usr/share/applications/net.minetest.minetest.desktop
+ - appimage-builder --skip-test
+ artifacts:
+ expire_in: 90 day
+ paths:
+ - ./*.AppImage
diff --git a/.luacheckrc b/.luacheckrc
new file mode 100644
index 000000000..a922bdea9
--- /dev/null
+++ b/.luacheckrc
@@ -0,0 +1,82 @@
+unused_args = false
+allow_defined_top = true
+
+ignore = {
+ "131", -- Unused global variable
+ "431", -- Shadowing an upvalue
+ "432", -- Shadowing an upvalue argument
+}
+
+read_globals = {
+ "ItemStack",
+ "INIT",
+ "DIR_DELIM",
+ "dump", "dump2",
+ "fgettext", "fgettext_ne",
+ "vector",
+ "VoxelArea",
+ "profiler",
+ "Settings",
+
+ string = {fields = {"split", "trim"}},
+ table = {fields = {"copy", "getn", "indexof", "insert_all"}},
+ math = {fields = {"hypot", "round"}},
+}
+
+globals = {
+ "core",
+ "gamedata",
+ os = { fields = { "tempfolder" } },
+ "_",
+}
+
+files["builtin/client/register.lua"] = {
+ globals = {
+ debug = {fields={"getinfo"}},
+ }
+}
+
+files["builtin/common/misc_helpers.lua"] = {
+ globals = {
+ "dump", "dump2", "table", "math", "string",
+ "fgettext", "fgettext_ne", "basic_dump", "game", -- ???
+ "file_exists", "get_last_folder", "cleanup_path", -- ???
+ },
+}
+
+files["builtin/common/vector.lua"] = {
+ globals = { "vector" },
+}
+
+files["builtin/game/voxelarea.lua"] = {
+ globals = { "VoxelArea" },
+}
+
+files["builtin/game/init.lua"] = {
+ globals = { "profiler" },
+}
+
+files["builtin/common/filterlist.lua"] = {
+ globals = {
+ "filterlist",
+ "compare_worlds", "sort_worlds_alphabetic", "sort_mod_list", -- ???
+ },
+}
+
+files["builtin/mainmenu"] = {
+ globals = {
+ "gamedata",
+ },
+
+ read_globals = {
+ "PLATFORM",
+ },
+}
+
+files["builtin/common/tests"] = {
+ read_globals = {
+ "describe",
+ "it",
+ "assert",
+ },
+}
diff --git a/.mailmap b/.mailmap
index c487460a0..76190d078 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1,33 +1,69 @@
+# 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ëlle 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 <Wuzzy@disroot.org> <wuzzy2@mail.ru>
+Wuzzy <Wuzzy@disroot.org> <Wuzzy2@mail.ru>
+Wuzzy <Wuzzy@disroot.org> <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>
+x2048 <codeforsmile@gmail.com>
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 534479efb..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: cpp
-before_install: ./util/travis/before_install.sh
-script: ./util/travis/script.sh
-sudo: required
-notifications:
- email: false
-matrix:
- fast_finish: true
- include:
- - env: PLATFORM=Win32
- compiler: gcc
- os: linux
- - env: PLATFORM=Win64
- compiler: gcc
- os: linux
- - env: PLATFORM=Unix COMPILER=clang
- compiler: clang
- os: osx
- - env: PLATFORM=Unix COMPILER=g++
- compiler: gcc
- os: linux
- - env: PLATFORM=Unix COMPILER=clang
- compiler: clang
- os: linux
- - env: PLATFORM=Unix COMPILER=g++-6
- compiler: gcc
- os: linux
-addons:
- apt:
- sources: &sources
- - ubuntu-toolchain-r-test
diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml
new file mode 100644
index 000000000..5788e246b
--- /dev/null
+++ b/AppImageBuilder.yml
@@ -0,0 +1,54 @@
+version: 1
+
+AppDir:
+ path: ./AppDir
+
+ app_info:
+ id: minetest
+ name: Minetest
+ icon: minetest
+ version: !ENV ${VERSION}
+ exec: usr/bin/minetest
+ exec_args: $@
+ runtime:
+ env:
+ APPDIR_LIBRARY_PATH: $APPDIR/usr/lib/x86_64-linux-gnu
+
+ apt:
+ arch: amd64
+ sources:
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic main universe
+ key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32'
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates main universe
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-backports main universe
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-security main universe
+
+ include:
+ - libc6
+ - libcurl3-gnutls
+ - libfreetype6
+ - libgl1
+ - libjpeg-turbo8
+ - libjsoncpp1
+ - libleveldb1v5
+ - libopenal1
+ - libpng16-16
+ - libsqlite3-0
+ - libstdc++6
+ - libvorbisfile3
+ - libx11-6
+ - libxxf86vm1
+ - zlib1g
+
+ files:
+ exclude:
+ - usr/share/man
+ - usr/share/doc/*/README.*
+ - usr/share/doc/*/changelog.*
+ - usr/share/doc/*/NEWS.*
+ - usr/share/doc/*/TODO.*
+
+AppImage:
+ update-information: None
+ sign-key: None
+ arch: x86_64
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbf6bb7fa..0235a7f2c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,31 +1,42 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 3.5)
-if(${CMAKE_VERSION} STREQUAL "2.8.2")
- # Bug http://vtk.org/Bug/view.php?id=11020
- message(WARNING "CMake/CPack version 2.8.2 will not create working .deb packages!")
+# Set policies up to 3.9 since we want to enable the IPO option
+if(${CMAKE_VERSION} VERSION_LESS 3.9)
+ cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+else()
+ cmake_policy(VERSION 3.9)
endif()
# This can be read from ${PROJECT_NAME} after project() is called
project(minetest)
set(PROJECT_NAME_CAPITALIZED "Minetest")
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
+set(GCC_MINIMUM_VERSION "5.1")
+set(CLANG_MINIMUM_VERSION "3.5")
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing
-set(VERSION_MAJOR 0)
-set(VERSION_MINOR 4)
-set(VERSION_PATCH 14)
-set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
+set(VERSION_MAJOR 5)
+set(VERSION_MINOR 6)
+set(VERSION_PATCH 1)
+set(VERSION_EXTRA "lifo" CACHE STRING "Stuff to append to version string")
# Change to false for releases
-set(DEVELOPMENT_BUILD TRUE)
+set(DEVELOPMENT_BUILD FALSE)
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
if(VERSION_EXTRA)
- set(VERSION_STRING ${VERSION_STRING}-${VERSION_EXTRA})
+ set(VERSION_STRING "${VERSION_STRING}-${VERSION_EXTRA}")
elseif(DEVELOPMENT_BUILD)
set(VERSION_STRING "${VERSION_STRING}-dev")
endif()
+if (CMAKE_BUILD_TYPE STREQUAL Debug)
+ # Append "-debug" to version string
+ set(VERSION_STRING "${VERSION_STRING}-debug")
+endif()
+
message(STATUS "*** Will build version ${VERSION_STRING} ***")
@@ -40,7 +51,8 @@ set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL
set(BUILD_CLIENT TRUE CACHE BOOL "Build client")
set(BUILD_SERVER FALSE CACHE BOOL "Build server")
-
+set(BUILD_UNITTESTS TRUE CACHE BOOL "Build unittests")
+set(BUILD_BENCHMARKS FALSE CACHE BOOL "Build benchmarks")
set(WARN_ALL TRUE CACHE BOOL "Enable -Wall for Release build")
@@ -49,13 +61,80 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type: Debug or Release" FORCE)
endif()
+set(ENABLE_UPDATE_CHECKER (NOT ${DEVELOPMENT_BUILD}) CACHE BOOL
+ "Whether to enable update checks by default")
# Included stuff
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)
+set(IRRLICHTMT_BUILD_DIR "" CACHE PATH "Path to IrrlichtMt build directory.")
+if(NOT "${IRRLICHTMT_BUILD_DIR}" STREQUAL "")
+ find_package(IrrlichtMt QUIET
+ PATHS "${IRRLICHTMT_BUILD_DIR}"
+ NO_DEFAULT_PATH
+ )
+
+ if(NOT TARGET IrrlichtMt::IrrlichtMt)
+ # find_package() searches certain subdirectories. ${PATH}/cmake is not
+ # the only one, but it is the one where IrrlichtMt is supposed to export
+ # IrrlichtMtConfig.cmake
+ message(FATAL_ERROR "Could not find IrrlichtMtConfig.cmake in ${IRRLICHTMT_BUILD_DIR}/cmake.")
+ endif()
+elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lib/irrlichtmt")
+ message(STATUS "Using user-provided IrrlichtMt at subdirectory 'lib/irrlichtmt'")
+ if(BUILD_CLIENT)
+ # tell IrrlichtMt to create a static library
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library" FORCE)
+ add_subdirectory(lib/irrlichtmt EXCLUDE_FROM_ALL)
+ unset(BUILD_SHARED_LIBS CACHE)
+
+ if(NOT TARGET IrrlichtMt)
+ message(FATAL_ERROR "IrrlichtMt project is missing a CMake target?!")
+ endif()
+ else()
+ add_library(IrrlichtMt::IrrlichtMt INTERFACE IMPORTED)
+ set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/irrlichtmt/include")
+ endif()
+else()
+ find_package(IrrlichtMt QUIET)
+ if(NOT TARGET IrrlichtMt::IrrlichtMt)
+ string(CONCAT explanation_msg
+ "The Minetest team has forked Irrlicht to make their own customizations. "
+ "It can be found here: https://github.com/minetest/irrlicht\n"
+ "For example use: git clone --depth=1 https://github.com/minetest/irrlicht lib/irrlichtmt\n")
+ if(BUILD_CLIENT)
+ message(FATAL_ERROR "IrrlichtMt is required to build the client, but it was not found.\n${explanation_msg}")
+ endif()
+
+ include(MinetestFindIrrlichtHeaders)
+ if(NOT IRRLICHT_INCLUDE_DIR)
+ message(FATAL_ERROR "IrrlichtMt headers are required to build the server, but none found.\n${explanation_msg}")
+ endif()
+ message(STATUS "Found IrrlichtMt headers: ${IRRLICHT_INCLUDE_DIR}")
+ add_library(IrrlichtMt::IrrlichtMt INTERFACE IMPORTED)
+ # Note that we can't use target_include_directories() since that doesn't work for IMPORTED targets before CMake 3.11
+ set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${IRRLICHT_INCLUDE_DIR}")
+ endif()
+endif()
+
+if(BUILD_CLIENT AND TARGET IrrlichtMt::IrrlichtMt)
+ # retrieve version somehow
+ if(NOT IrrlichtMt_VERSION)
+ get_target_property(IrrlichtMt_VERSION IrrlichtMt VERSION)
+ endif()
+ message(STATUS "Found IrrlichtMt ${IrrlichtMt_VERSION}")
+
+ set(TARGET_VER_S 1.9.0mt8)
+ string(REPLACE "mt" "." TARGET_VER ${TARGET_VER_S})
+ if(IrrlichtMt_VERSION VERSION_LESS ${TARGET_VER})
+ message(FATAL_ERROR "At least IrrlichtMt ${TARGET_VER_S} is required to build")
+ elseif(NOT DEVELOPMENT_BUILD AND IrrlichtMt_VERSION VERSION_GREATER ${TARGET_VER})
+ message(FATAL_ERROR "IrrlichtMt ${TARGET_VER_S} is required to build")
+ endif()
+endif()
# Installation
@@ -82,19 +161,20 @@ elseif(UNIX) # Linux, BSD etc
set(EXAMPLE_CONF_DIR ".")
set(MANDIR "unix/man")
set(XDG_APPS_DIR "unix/applications")
- set(APPDATADIR "unix/appdata")
+ set(APPDATADIR "unix/metainfo")
set(ICONDIR "unix/icons")
set(LOCALEDIR "locale")
else()
- set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}")
- set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
- set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}")
- set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")
+ include(GNUInstallDirs)
+ set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
+ set(BINDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
+ set(DOCDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DOCDIR}")
+ set(MANDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_MANDIR}")
set(EXAMPLE_CONF_DIR ${DOCDIR})
- set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
- set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/appdata")
- set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
- set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
+ set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/applications")
+ set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/metainfo")
+ set(ICONDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/icons")
+ set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALEDIR}")
endif()
endif()
@@ -151,29 +231,37 @@ endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/builtin" DESTINATION "${SHAREDIR}")
-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client" DESTINATION "${SHAREDIR}")
-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games" DESTINATION "${SHAREDIR}" PATTERN ".git*" EXCLUDE)
-
-if(BUILD_CLIENT)
- install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/textures/base/pack" DESTINATION "${SHAREDIR}/textures/base")
-endif()
if(RUN_IN_PLACE)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mods/mods_here.txt" DESTINATION "${SHAREDIR}/mods")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/textures/texture_packs_here.txt" DESTINATION "${SHAREDIR}/textures")
endif()
-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fonts" DESTINATION "${SHAREDIR}")
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game" DESTINATION "${SHAREDIR}/games/"
+ COMPONENT "SUBGAME_MINETEST_GAME" OPTIONAL PATTERN ".git*" EXCLUDE )
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHAREDIR}/games/"
+ COMPONENT "SUBGAME_MINIMAL" OPTIONAL PATTERN ".git*" EXCLUDE )
+
+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")
+ if(RUN_IN_PLACE)
+ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clientmods" DESTINATION "${SHAREDIR}")
+ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/client/serverlist" DESTINATION "${SHAREDIR}/client")
+ endif()
+endif()
-install(FILES "README.txt" DESTINATION "${DOCDIR}")
-install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}")
-install(FILES "doc/menu_lua_api.txt" DESTINATION "${DOCDIR}")
-install(FILES "doc/world_format.txt" DESTINATION "${DOCDIR}")
+install(FILES "README.md" DESTINATION "${DOCDIR}" COMPONENT "Docs")
+install(FILES "doc/lua_api.txt" DESTINATION "${DOCDIR}" COMPONENT "Docs")
+install(FILES "doc/client_lua_api.txt" DESTINATION "${DOCDIR}" COMPONENT "Docs")
+install(FILES "doc/menu_lua_api.txt" DESTINATION "${DOCDIR}" COMPONENT "Docs")
+install(FILES "doc/texture_packs.txt" DESTINATION "${DOCDIR}" COMPONENT "Docs")
+install(FILES "doc/world_format.txt" DESTINATION "${DOCDIR}" COMPONENT "Docs")
install(FILES "minetest.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")
if(UNIX AND NOT APPLE)
install(FILES "doc/minetest.6" "doc/minetestserver.6" DESTINATION "${MANDIR}/man6")
- install(FILES "misc/minetest.desktop" DESTINATION "${XDG_APPS_DIR}")
- install(FILES "misc/minetest.appdata.xml" DESTINATION "${APPDATADIR}")
+ install(FILES "misc/net.minetest.minetest.desktop" DESTINATION "${XDG_APPS_DIR}")
+ install(FILES "misc/net.minetest.minetest.appdata.xml" DESTINATION "${APPDATADIR}")
install(FILES "misc/minetest.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
install(FILES "misc/minetest-xorg-icon-128.png"
DESTINATION "${ICONDIR}/hicolor/128x128/apps"
@@ -185,30 +273,109 @@ if(APPLE)
install(FILES "misc/Info.plist" DESTINATION "${BUNDLE_PATH}/Contents")
endif()
+# Library pack
+find_package(GMP REQUIRED)
+find_package(Json REQUIRED)
+find_package(Lua REQUIRED)
+if(NOT USE_LUAJIT)
+ set(LUA_BIT_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/bitop)
+ set(LUA_BIT_LIBRARY bitop)
+ add_subdirectory(lib/bitop)
+endif()
+
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${GCC_MINIMUM_VERSION}")
+ 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 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.")
+ endif()
+endif()
+
+if(BUILD_BENCHMARKS)
+ add_subdirectory(lib/catch2)
+endif()
# Subdirectories
# Be sure to add all relevant definitions above this
-
add_subdirectory(src)
# CPack
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An InfiniMiner/Minecraft inspired game")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A free open-source voxel game engine with easy modding and game creation.")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VENDOR "celeron55")
set(CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>")
+include(CPackComponent)
+
+cpack_add_component(Docs
+ DISPLAY_NAME "Documentation"
+ DESCRIPTION "Documentation about Minetest and Minetest modding"
+)
+
+cpack_add_component(SUBGAME_MINETEST_GAME
+ DISPLAY_NAME "Minetest Game"
+ DESCRIPTION "The default game bundled in the Minetest engine. Mainly used as a modding base."
+ GROUP "Games"
+)
+
+cpack_add_component(SUBGAME_MINIMAL
+ DISPLAY_NAME "Development Test"
+ DESCRIPTION "A basic testing environment used for engine development and sometimes for testing mods."
+ DISABLED #DISABLED does not mean it is disabled, and is just not selected by default.
+ GROUP "Games"
+)
+
+cpack_add_component_group(Subgames
+ DESCRIPTION "Games for the Minetest engine."
+)
+
if(WIN32)
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win64")
+ # Include all dynamically linked runtime libaries such as MSVCRxxx.dll
+ include(InstallRequiredSystemLibraries)
+
+ if(RUN_IN_PLACE)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win64")
+ else()
+ set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
+ endif()
+
+ set(CPACK_GENERATOR ZIP)
+
else()
- set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
+ set(CPACK_GENERATOR WIX)
+ set(CPACK_PACKAGE_NAME "${PROJECT_NAME_CAPITALIZED}")
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY ".")
+ set(CPACK_PACKAGE_EXECUTABLES ${PROJECT_NAME} "${PROJECT_NAME_CAPITALIZED}")
+ set(CPACK_CREATE_DESKTOP_LINKS ${PROJECT_NAME})
+ set(CPACK_PACKAGING_INSTALL_PREFIX "/${PROJECT_NAME_CAPITALIZED}")
+
+ set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/misc/minetest-icon.ico")
+ # Supported languages can be found at
+ # http://wixtoolset.org/documentation/manual/v3/wixui/wixui_localization.html
+ #set(CPACK_WIX_CULTURES "ar-SA,bg-BG,ca-ES,hr-HR,cs-CZ,da-DK,nl-NL,en-US,et-EE,fi-FI,fr-FR,de-DE")
+ set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/misc/CPACK_WIX_UI_BANNER.BMP")
+ set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/misc/CPACK_WIX_UI_DIALOG.BMP")
+
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/doc/lgpl-2.1.txt")
+
+ # The correct way would be to include both x32 and x64 into one installer
+ # and install the appropriate one.
+ # CMake does not support that, so there are two separate GUID's
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(CPACK_WIX_UPGRADE_GUID "745A0FB3-5552-44CA-A587-A91C397CCC56")
+ else()
+ set(CPACK_WIX_UPGRADE_GUID "814A2E2D-2779-4BBD-9ACD-FC3BD51FBBA2")
+ endif()
endif()
-
- set(CPACK_GENERATOR ZIP)
elseif(APPLE)
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-osx")
@@ -233,4 +400,3 @@ if(DOXYGEN_FOUND)
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif()
-
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 986f60027..000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# Contributing
-
-Contributions are welcome! Here's how you can help:
-
-- [Contributing code](#code)
-- [Reporting issues](#issues)
-- [Requesting features](#feature-requests)
-- [Translating](#translations)
-- [Donating](#donations)
-
-## Code
-
-If you are planning to start some significant coding, you would benefit from asking first on [our IRC channel](http://www.minetest.net/irc/) before starting.
-
-1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository and [clone](https://help.github.com/articles/cloning-a-repository/) your fork.
-
-2. Start coding!
- - Refer to the [Lua API](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt), [Developer Wiki](http://dev.minetest.net/Main_Page) and other [documentation](https://github.com/minetest/minetest/tree/master/doc).
- - Follow the [C/C++](http://dev.minetest.net/Code_style_guidelines) and [Lua](http://dev.minetest.net/Lua_code_style_guidelines) code style guidelines.
- - Check your code works as expected and document any changes to the Lua API.
-
-3. Commit & [push](https://help.github.com/articles/pushing-to-a-remote/) your changes to a new branch (not `master`, one change per branch)
- - Commit messages should:
- - Use the present tense
- - Have a title which begins with a capital letter
- - Be descriptive. (e.g. no `Update init.lua` or `Fix a problem`)
- - Have a first line with less than *80 characters* and have a second line that is *empty*
- - Do **not** [sign your commits](https://git-scm.com/book/uz/v2/Git-Tools-Signing-Your-Work), as Minetest offers automatically built ppas over launchpad and it [would break](https://bugs.launchpad.net/bzr-git/+bug/1084403) if there were signed commits in master
-
-4. Once you are happy with your changes, submit a pull request.
- - Open the [pull-request form](https://github.com/minetest/minetest/pull/new/master)
- - Add a short description explaining briefly what you've done (or if it's a work-in-progress - what you need to do)
-
-##### A pull-request is considered merge-able when:
-
-1. It follows the [roadmap](https://forum.minetest.net/viewtopic.php?t=9177) in some way and fits the whole picture of the project.
-2. It works.
-3. It follows the code style for [C/C++](http://dev.minetest.net/Code_style_guidelines) or [Lua](http://dev.minetest.net/Lua_code_style_guidelines).
-4. The code's interfaces are well designed, regardless of other aspects that might need more work in the future.
-5. It uses protocols and formats which include the required compatibility.
-
-## Issues
-
-If you experience an issue, we would like to know the details - especially when a stable release is on the way.
-
-1. Do a quick search on GitHub to check if the issue has already been reported.
-2. Is it an issue with the Minetest *engine*? If not, report it [elsewhere](http://www.minetest.net/development/#reporting-issues).
-3. [Open an issue](https://github.com/minetest/minetest/issues/new) and describe the issue you are having - you could include:
- - Error logs (check the bottom of the `debug.txt` file)
- - Screenshots
- - Ways you have tried to solve the issue, and whether they worked or not
- - Your Minetest version and the content (subgames, mods or texture packs) you have installed
- - Your platform (e.g. Windows 10 or Ubuntu 15.04 x64)
-
-After reporting you should aim to answer questions or clarifications as this helps pinpoint the cause of the issue (if you don't do this your issue may be closed after 1 month).
-
-## Feature requests
-
-Feature requests are welcome but take a moment to see if your idea follows the [roadmap](https://forum.minetest.net/viewtopic.php?t=9177) in some way and fits the whole picture of the project. You should provide a clear explanation with as much detail as possible.
-
-## Translations
-
-Translations of Minetest are performed using Weblate. You can access the project page with a list of current languages [here](https://hosted.weblate.org/projects/minetest/minetest/).
-
-### Donations
-
-If you'd like to monetarily support Minetest development, you can find donation methods on [our website](http://www.minetest.net/development/#donate).
-
-# Maintaining
-
-*This is a concise version of the [Rules & Guidelines](http://dev.minetest.net/Category:Rules_and_Guidelines) on the developer wiki.*
-
-These notes are for those who have push access Minetest (core developers / maintainers).
-
-- See the [project organisation](http://dev.minetest.net/Organisation) for the people involved.
-
-## Reviewing pull requests
-
-Pull requests should be reviewed and, if appropriate, checked if they achieve their intended purpose. You can show that you are in the process of, or will review the pull request by commenting *"Looks good"* or something similar.
-
-**If the pull-request is not [merge-able](#a-pull-request-is-considered-merge-able-when):**
-
-Submit a comment explaining to the author what they need to change to make the pull-request merge-able.
-
-- If the author comments or makes changes to the pull-request, it can be reviewed again.
-- If no response is made from the author within 1 month (when improvements are suggested or a question is asked), it can be closed.
-
-**If the pull-request is [merge-able](#a-pull-request-is-considered-merge-able-when):**
-
-Submit a :+1: (+1) or "Looks good" comment to show you believe the pull-request should be merged. "Looks good" comments often signify that the patch might require (more) testing.
-
-- Two core developers must agree to the merge before it is carried out and both should +1 the pull request.
-- Who intends to merge the pull-request should follow the commit rules:
- - The title should follow the commit guidelines (title starts with a capital letter, present tense, descriptive).
- - Don't modify history older than 10 minutes.
- - Use rebase, not merge to get linear history:
- - `curl https://github.com/minetest/minetest/pull/1.patch | git am`
-
-## Reviewing issues and feature requests
-
-- If an issue does not get a response from its author within 1 month (when requiring more details), it can be closed.
-- When an issue is a duplicate, refer to the first ones and close the later ones.
-- Tag issues with the appropriate [labels](https://github.com/minetest/minetest/labels) for devices, platforms etc.
-
-## Releasing a new version
-
-*Refer to [dev.minetest.net/Releasing_Minetest](http://dev.minetest.net/Releasing_Minetest)*
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..3dd82e772
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,71 @@
+ARG DOCKER_IMAGE=alpine:3.14
+FROM $DOCKER_IMAGE AS builder
+
+ENV MINETEST_GAME_VERSION master
+ENV IRRLICHT_VERSION master
+
+COPY .git /usr/src/minetest/.git
+COPY CMakeLists.txt /usr/src/minetest/CMakeLists.txt
+COPY README.md /usr/src/minetest/README.md
+COPY minetest.conf.example /usr/src/minetest/minetest.conf.example
+COPY builtin /usr/src/minetest/builtin
+COPY cmake /usr/src/minetest/cmake
+COPY doc /usr/src/minetest/doc
+COPY fonts /usr/src/minetest/fonts
+COPY lib /usr/src/minetest/lib
+COPY misc /usr/src/minetest/misc
+COPY po /usr/src/minetest/po
+COPY src /usr/src/minetest/src
+COPY textures /usr/src/minetest/textures
+
+WORKDIR /usr/src/minetest
+
+RUN apk add --no-cache git build-base cmake sqlite-dev curl-dev zlib-dev zstd-dev \
+ gmp-dev jsoncpp-dev postgresql-dev ninja luajit-dev ca-certificates && \
+ git clone --depth=1 -b ${MINETEST_GAME_VERSION} https://github.com/minetest/minetest_game.git ./games/minetest_game && \
+ rm -fr ./games/minetest_game/.git
+
+WORKDIR /usr/src/
+RUN git clone --recursive https://github.com/jupp0r/prometheus-cpp/ && \
+ cd prometheus-cpp && \
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr/local \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DENABLE_TESTING=0 \
+ -GNinja && \
+ cmake --build build && \
+ cmake --install build
+
+RUN git clone --depth=1 https://github.com/minetest/irrlicht/ -b ${IRRLICHT_VERSION} && \
+ cp -r irrlicht/include /usr/include/irrlichtmt
+
+WORKDIR /usr/src/minetest
+RUN cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr/local \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SERVER=TRUE \
+ -DENABLE_PROMETHEUS=TRUE \
+ -DBUILD_UNITTESTS=FALSE \
+ -DBUILD_CLIENT=FALSE \
+ -GNinja && \
+ cmake --build build && \
+ cmake --install build
+
+ARG DOCKER_IMAGE=alpine:3.14
+FROM $DOCKER_IMAGE AS runtime
+
+RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq luajit jsoncpp zstd-libs && \
+ adduser -D minetest --uid 30000 -h /var/lib/minetest && \
+ chown -R minetest:minetest /var/lib/minetest
+
+WORKDIR /var/lib/minetest
+
+COPY --from=builder /usr/local/share/minetest /usr/local/share/minetest
+COPY --from=builder /usr/local/bin/minetestserver /usr/local/bin/minetestserver
+COPY --from=builder /usr/local/share/doc/minetest/minetest.conf.example /etc/minetest/minetest.conf
+
+USER minetest:minetest
+
+EXPOSE 30000/udp 30000/tcp
+
+CMD ["/usr/local/bin/minetestserver", "--config", "/etc/minetest/minetest.conf"]
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 000000000..1f2c6c38d
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,206 @@
+
+License of Minetest textures and sounds
+---------------------------------------
+
+This applies to textures and sounds contained in the main Minetest
+distribution.
+
+Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
+http://creativecommons.org/licenses/by-sa/3.0/
+
+textures/base/pack/refresh.png is under the Apache 2 license
+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:
+Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+ShadowNinja:
+ textures/base/pack/smoke_puff.png
+
+paramat:
+ textures/base/pack/menu_header.png
+ textures/base/pack/next_icon.png
+ textures/base/pack/prev_icon.png
+ textures/base/pack/clear.png
+ textures/base/pack/search.png
+
+rubenwardy, paramat:
+ textures/base/pack/start_icon.png
+ textures/base/pack/end_icon.png
+
+erlehmann:
+ misc/minetest-icon-24x24.png
+ misc/minetest-icon.ico
+ misc/minetest.svg
+ textures/base/pack/logo.png
+
+JRottm:
+ textures/base/pack/player_marker.png
+
+srifqi:
+ textures/base/pack/chat_hide_btn.png
+ textures/base/pack/chat_show_btn.png
+ textures/base/pack/joystick_bg.png
+ textures/base/pack/joystick_center.png
+ textures/base/pack/joystick_off.png
+ textures/base/pack/minimap_btn.png
+
+Zughy:
+ textures/base/pack/cdb_add.png
+ textures/base/pack/cdb_clear.png
+ textures/base/pack/cdb_downloading.png
+ textures/base/pack/cdb_queued.png
+ textures/base/pack/cdb_update.png
+ textures/base/pack/cdb_viewonline.png
+
+appgurueu:
+ textures/base/pack/server_incompatible.png
+
+erlehmann, Warr1024, rollerozxa:
+ textures/base/pack/no_screenshot.png
+
+kilbith:
+ textures/base/pack/server_favorite.png
+
+SmallJoker
+ textures/base/pack/server_favorite_delete.png (based on server_favorite.png)
+
+License of Minetest source code
+-------------------------------
+
+Minetest
+Copyright (C) 2010-2018 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+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.
+
+Irrlicht
+---------------
+
+This program uses IrrlichtMt, Minetest's fork of
+the Irrlicht Engine. http://irrlicht.sourceforge.net/
+
+ The Irrlicht Engine License
+
+Copyright © 2002-2005 Nikolaus Gebhardt
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute
+it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+
+JThread
+---------------
+
+This program uses the JThread library. License for JThread follows:
+
+Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+Lua
+---------------
+
+Lua is licensed under the terms of the MIT license reproduced below.
+This means that Lua is free software and can be used for both academic
+and commercial purposes at absolutely no cost.
+
+For details and rationale, see https://www.lua.org/license.html .
+
+Copyright (C) 1994-2008 Lua.org, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Fonts
+---------------
+
+Bitstream Vera Fonts Copyright:
+
+ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+ a trademark of Bitstream, Inc.
+
+Arimo - Apache License, version 2.0
+ Digitized data copyright (c) 2010-2012 Google Corporation.
+
+Cousine - Apache License, version 2.0
+ Digitized data copyright (c) 2010-2012 Google Corporation.
+
+DroidSansFallBackFull:
+
+ Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..0bc5d4b42
--- /dev/null
+++ b/README.md
@@ -0,0 +1,480 @@
+Minetest
+========
+
+![Build Status](https://github.com/minetest/minetest/workflows/build/badge.svg)
+[![Translation status](https://hosted.weblate.org/widgets/minetest/-/svg-badge.svg)](https://hosted.weblate.org/engage/minetest/?utm_source=widget)
+[![License](https://img.shields.io/badge/license-LGPLv2.1%2B-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
+
+Minetest is a free open-source voxel game engine with easy modding and game creation.
+
+Copyright (C) 2010-2022 Perttu Ahola <celeron55@gmail.com>
+and contributors (see source file comments and the version control log)
+
+In case you downloaded the source code
+--------------------------------------
+If you downloaded the Minetest Engine source code in which this file is
+contained, you probably want to download the [Minetest Game](https://github.com/minetest/minetest_game/)
+project too. See its README.txt for more information.
+
+Table of Contents
+------------------
+
+1. [Further Documentation](#further-documentation)
+2. [Default Controls](#default-controls)
+3. [Paths](#paths)
+4. [Configuration File](#configuration-file)
+5. [Command-line Options](#command-line-options)
+6. [Compiling](#compiling)
+7. [Docker](#docker)
+8. [Version Scheme](#version-scheme)
+
+
+Further documentation
+----------------------
+- 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
+
+Default controls
+----------------
+All controls are re-bindable using settings.
+Some can be changed in the key config dialog in the settings tab.
+
+| Button | Action |
+|-------------------------------|----------------------------------------------------------------|
+| Move mouse | Look around |
+| W, A, S, D | Move |
+| Space | Jump/move up |
+| Shift | Sneak/move down |
+| Q | Drop itemstack |
+| Shift + Q | Drop single item |
+| Left mouse button | Dig/punch/take item |
+| Right mouse button | Place/use |
+| Shift + right mouse button | Build (without using) |
+| I | Inventory menu |
+| Mouse wheel | Select item |
+| 0-9 | Select item |
+| Z | Zoom (needs zoom privilege) |
+| T | Chat |
+| / | Command |
+| Esc | Pause menu/abort/exit (pauses only singleplayer game) |
+| R | Enable/disable full range view |
+| + | Increase view range |
+| - | Decrease view range |
+| K | Enable/disable fly mode (needs fly privilege) |
+| P | Enable/disable pitch move mode |
+| J | Enable/disable fast mode (needs fast privilege) |
+| H | Enable/disable noclip mode (needs noclip privilege) |
+| 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 |
+| F1 | Hide/show HUD |
+| F2 | Hide/show chat |
+| F3 | Disable/enable fog |
+| F4 | Disable/enable camera update (Mapblocks are not updated anymore when disabled, disabled in release builds) |
+| F5 | Cycle through debug information screens |
+| F6 | Cycle through profiler info screens |
+| F10 | Show/hide console |
+| F12 | Take screenshot |
+
+Paths
+-----
+Locations:
+
+* `bin` - Compiled binaries
+* `share` - Distributed read-only data
+* `user` - User-created modifiable data
+
+Where each location is on each platform:
+
+* Windows .zip / RUN_IN_PLACE source:
+ * `bin` = `bin`
+ * `share` = `.`
+ * `user` = `.`
+* Windows installed:
+ * `bin` = `C:\Program Files\Minetest\bin (Depends on the install location)`
+ * `share` = `C:\Program Files\Minetest (Depends on the install location)`
+ * `user` = `%APPDATA%\Minetest`
+* Linux installed:
+ * `bin` = `/usr/bin`
+ * `share` = `/usr/share/minetest`
+ * `user` = `~/.minetest`
+* macOS:
+ * `bin` = `Contents/MacOS`
+ * `share` = `Contents/Resources`
+ * `user` = `Contents/User OR ~/Library/Application Support/minetest`
+
+Worlds can be found as separate folders in: `user/worlds/`
+
+Configuration file
+------------------
+- Default location:
+ `user/minetest.conf`
+- This file is created by closing Minetest for the first time.
+- A specific file can be specified on the command line:
+ `--config <path-to-file>`
+- A run-in-place build will look for the configuration file in
+ `location_of_exe/../minetest.conf` and also `location_of_exe/../../minetest.conf`
+
+Command-line options
+--------------------
+- Use `--help`
+
+Compiling
+---------
+### Compiling on GNU/Linux
+
+#### Dependencies
+
+| Dependency | Version | Commentary |
+|------------|---------|------------|
+| GCC | 5.1+ | or Clang 3.5+ |
+| CMake | 3.5+ | |
+| IrrlichtMt | - | Custom version of Irrlicht, see https://github.com/minetest/irrlicht |
+| Freetype | 2.0+ | |
+| SQLite3 | 3+ | |
+| Zstd | 1.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 |
+| JsonCPP | 1.0.0+ | Bundled JsonCPP is used if not present |
+
+For Debian/Ubuntu users:
+
+ sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxi-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev libluajit-5.1-dev
+
+For Fedora users:
+
+ sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXi-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel libzstd-devel
+
+For Arch users:
+
+ sudo pacman -S base-devel libcurl-gnutls cmake libxi libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses zstd
+
+For Alpine users:
+
+ sudo apk add build-base cmake libpng-dev jpeg-dev libxi-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev zstd-dev
+
+#### Download
+
+You can install Git for easily keeping your copy up to date.
+If you don’t want Git, read below on how to get the source without Git.
+This is an example for installing Git on Debian/Ubuntu:
+
+ sudo apt install git
+
+For Fedora users:
+
+ sudo dnf install git
+
+Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
+
+ git clone --depth 1 https://github.com/minetest/minetest.git
+ cd minetest
+
+Download minetest_game (otherwise only the "Development Test" game is available) using Git:
+
+ git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
+
+Download IrrlichtMt to `lib/irrlichtmt`, it will be used to satisfy the IrrlichtMt dependency that way:
+
+ git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
+
+Download source, without using Git:
+
+ wget https://github.com/minetest/minetest/archive/master.tar.gz
+ tar xf master.tar.gz
+ cd minetest-master
+
+Download minetest_game, without using Git:
+
+ cd games/
+ wget https://github.com/minetest/minetest_game/archive/master.tar.gz
+ tar xf master.tar.gz
+ mv minetest_game-master minetest_game
+ cd ..
+
+Download IrrlichtMt, without using Git:
+
+ cd lib/
+ wget https://github.com/minetest/irrlicht/archive/master.tar.gz
+ tar xf master.tar.gz
+ mv irrlicht-master irrlichtmt
+ cd ..
+
+#### Build
+
+Build a version that runs directly from the source directory:
+
+ cmake . -DRUN_IN_PLACE=TRUE
+ make -j$(nproc)
+
+Run it:
+
+ ./bin/minetest
+
+- Use `cmake . -LH` to see all CMake options and their current state.
+- If you want to install it system-wide (or are making a distribution package),
+ you will want to use `-DRUN_IN_PLACE=FALSE`.
+- You can build a bare server by specifying `-DBUILD_SERVER=TRUE`.
+- 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 compile IrrlichtMt, just the headers suffice.
+ - In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlichtmt/include`.
+
+- Minetest will use the IrrlichtMt package that is found first, given by the following order:
+ 1. Specified `IRRLICHTMT_BUILD_DIR` CMake variable
+ 2. `${PROJECT_SOURCE_DIR}/lib/irrlichtmt` (if existent)
+ 3. Installation of IrrlichtMt in the system-specific library paths
+ 4. For server builds with disabled `BUILD_CLIENT` variable, the headers from `IRRLICHT_INCLUDE_DIR` will be used.
+ - NOTE: Changing the IrrlichtMt build directory (includes system installs) requires regenerating the CMake cache (`rm CMakeCache.txt`)
+
+### CMake options
+
+General options and their default values:
+
+ BUILD_CLIENT=TRUE - Build Minetest client
+ BUILD_SERVER=FALSE - Build Minetest server
+ BUILD_UNITTESTS=TRUE - Build unittest sources
+ BUILD_BENCHMARKS=FALSE - Build benchmark sources
+ CMAKE_BUILD_TYPE=Release - Type of build (Release vs. Debug)
+ Release - Release build
+ Debug - Debug build
+ SemiDebug - Partially optimized debug build
+ RelWithDebInfo - Release build with debug information
+ MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible
+ ENABLE_CURL=ON - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
+ ENABLE_CURSES=ON - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
+ ENABLE_GETTEXT=ON - Build with Gettext; Allows using translations
+ ENABLE_GLES=OFF - Enable extra support code for OpenGL ES (requires support by IrrlichtMt)
+ ENABLE_LEVELDB=ON - Build with LevelDB; Enables use of LevelDB map backend
+ ENABLE_POSTGRESQL=ON - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended)
+ ENABLE_REDIS=ON - Build with libhiredis; Enables use of Redis map backend
+ ENABLE_SPATIAL=ON - Build with LibSpatial; Speeds up AreaStores
+ ENABLE_SOUND=ON - Build with OpenAL, libogg & libvorbis; in-game sounds
+ 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=ON - Use JsonCPP from system
+ RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory)
+ ENABLE_UPDATE_CHECKER=TRUE - Whether to enable update checks by default
+ USE_GPROF=FALSE - Enable profiling using GProf
+ VERSION_EXTRA= - Text to append to version (e.g. VERSION_EXTRA=foobar -> Minetest 0.4.9-foobar)
+ ENABLE_TOUCH=FALSE - Enable Touchscreen support (requires support by IrrlichtMt)
+
+Library specific options:
+
+ 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
+ EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h
+ EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so
+ EXTRA_DLL - Only on Windows; optional paths to additional DLLs that should be packaged
+ FREETYPE_INCLUDE_DIR_freetype2 - Directory that contains files such as ftimage.h
+ FREETYPE_INCLUDE_DIR_ft2build - Directory that contains ft2build.h
+ FREETYPE_LIBRARY - Path to libfreetype.a/libfreetype.so/freetype.lib
+ FREETYPE_DLL - Only on Windows; path to libfreetype-6.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
+ IRRLICHT_DLL - Only on Windows; path to IrrlichtMt.dll
+ IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h (usable for server build only)
+ LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h
+ LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a
+ LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll
+ PostgreSQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h
+ PostgreSQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so/libpq.lib
+ REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h
+ REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so
+ SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h
+ 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
+ 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
+ OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll
+ OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located
+ OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib
+ SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h
+ SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib
+ 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; 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
+ ZLIB_DLL - Only on Windows; path to zlib1.dll
+ ZLIB_INCLUDE_DIR - Directory that contains zlib.h
+ ZLIB_LIBRARY - Path to libz.a/libz.so/zlib.lib
+ ZSTD_DLL - Only on Windows; path to libzstd.dll
+ ZSTD_INCLUDE_DIR - Directory that contains zstd.h
+ ZSTD_LIBRARY - Path to libzstd.a/libzstd.so/ztd.lib
+
+### Compiling on Windows using MSVC
+
+### Requirements
+
+- [Visual Studio 2015 or newer](https://visualstudio.microsoft.com)
+- [CMake](https://cmake.org/download/)
+- [vcpkg](https://github.com/Microsoft/vcpkg)
+- [Git](https://git-scm.com/downloads)
+
+### Compiling and installing the dependencies
+
+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 zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp opengl-registry --triplet x64-windows
+```
+
+- **Don't forget about IrrlichtMt.** The easiest way is to clone it to `lib/irrlichtmt` as described in the Linux section.
+- `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.
+- `luajit` is optional, it replaces the integrated Lua interpreter with a faster just-in-time interpreter.
+- `gmp` and `jsoncpp` are optional, otherwise the bundled versions will be compiled
+
+There are other optional libraries, but they are not tested if they can build and link correctly.
+
+Use `--triplet` to specify the target triplet, e.g. `x64-windows` or `x86-windows`.
+
+### Compile Minetest
+
+#### a) Using the vcpkg toolchain and CMake GUI
+1. Start up the CMake GUI
+2. Select **Browse Source...** and select DIR/minetest
+3. Select **Browse Build...** and select DIR/minetest-build
+4. Select **Configure**
+5. Choose the right visual Studio version and target platform. It has to match the version of the installed dependencies
+6. Choose **Specify toolchain file for cross-compiling**
+7. Click **Next**
+8. Select the vcpkg toolchain file e.g. `D:/vcpkg/scripts/buildsystems/vcpkg.cmake`
+9. Click Finish
+10. Wait until cmake have generated the cash file
+11. If there are any errors, solve them and hit **Configure**
+12. Click **Generate**
+13. Click **Open Project**
+14. Compile Minetest inside Visual studio.
+
+#### b) Using the vcpkg toolchain and the commandline
+
+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
+cmake --build . --config Release
+```
+Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct.
+
+### Windows Installer using WiX Toolset
+
+Requirements:
+* [Visual Studio 2017](https://visualstudio.microsoft.com/)
+* [WiX Toolset](https://wixtoolset.org/)
+
+In the Visual Studio 2017 Installer select **Optional Features -> WiX Toolset**.
+
+Build the binaries as described above, but make sure you unselect `RUN_IN_PLACE`.
+
+Open the generated project file with Visual Studio. Right-click **Package** and choose **Generate**.
+It may take some minutes to generate the installer.
+
+### Compiling on MacOS
+
+#### Requirements
+- [Homebrew](https://brew.sh/)
+- [Git](https://git-scm.com/downloads)
+
+Install dependencies with homebrew:
+
+```
+brew install cmake freetype gettext gmp hiredis jpeg jsoncpp leveldb libogg libpng libvorbis luajit zstd
+```
+
+#### Download
+
+Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
+
+```bash
+git clone --depth 1 https://github.com/minetest/minetest.git
+cd minetest
+```
+
+Download minetest_game (otherwise only the "Development Test" game is available) using Git:
+
+```
+git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
+```
+
+Download Minetest's fork of Irrlicht:
+
+```
+git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
+```
+
+#### Build
+
+```bash
+mkdir build
+cd build
+
+cmake .. \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_INSTALL_PREFIX=../build/macos/ \
+ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
+
+make -j$(sysctl -n hw.logicalcpu)
+make install
+```
+
+#### Run
+
+```
+open ./build/macos/minetest.app
+```
+
+Docker
+------
+We provide Minetest server Docker images using the GitLab mirror registry.
+
+Images are built on each commit and available using the following tag scheme:
+
+* `registry.gitlab.com/minetest/minetest/server:latest` (latest build)
+* `registry.gitlab.com/minetest/minetest/server:<branch/tag>` (current branch or current tag)
+* `registry.gitlab.com/minetest/minetest/server:<commit-id>` (current commit id)
+
+If you want to test it on a Docker server you can easily run:
+
+ sudo docker run registry.gitlab.com/minetest/minetest/server:<docker tag>
+
+If you want to use it in a production environment you should use volumes bound to the Docker host
+to persist data and modify the configuration:
+
+ sudo docker create -v /home/minetest/data/:/var/lib/minetest/ -v /home/minetest/conf/:/etc/minetest/ registry.gitlab.com/minetest/minetest/server:master
+
+Data will be written to `/home/minetest/data` on the host, and configuration will be read from `/home/minetest/conf/minetest.conf`.
+
+**Note:** If you don't understand the previous commands please read the official Docker documentation before use.
+
+You can also host your Minetest server inside a Kubernetes cluster. See our example implementation in [`misc/kubernetes.yml`](misc/kubernetes.yml).
+
+
+Version scheme
+--------------
+We use `major.minor.patch` since 5.0.0-dev. Prior to that we used `0.major.minor`.
+
+- Major is incremented when the release contains breaking changes, all other
+numbers are set to 0.
+- Minor is incremented when the release contains new non-breaking features,
+patch is set to 0.
+- Patch is incremented when the release only contains bugfixes and very
+minor/trivial features considered necessary.
+
+Since 5.0.0-dev and 0.4.17-dev, the dev notation refers to the next release,
+i.e.: 5.0.0-dev is the development version leading to 5.0.0.
+Prior to that we used `previous_version-dev`.
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 5d4d15263..000000000
--- a/README.txt
+++ /dev/null
@@ -1,562 +0,0 @@
-Minetest
-========
-
-An InfiniMiner/Minecraft inspired game.
-
-Copyright (c) 2010-2013 Perttu Ahola <celeron55@gmail.com>
-and contributors (see source file comments and the version control log)
-
-In case you downloaded the source code:
----------------------------------------
-If you downloaded the Minetest Engine source code in which this file is
-contained, you probably want to download the minetest_game project too:
- https://github.com/minetest/minetest_game/
-See the README.txt in it.
-
-Further documentation
-----------------------
-- Website: http://minetest.net/
-- Wiki: http://wiki.minetest.net/
-- Developer wiki: http://dev.minetest.net/
-- Forum: http://forum.minetest.net/
-- Github: https://github.com/minetest/minetest/
-- doc/ directory of source distribution
-
-This game is not finished
---------------------------
-- Don't expect it to work as well as a finished game will.
-- Please report any bugs. When doing that, debug.txt is useful.
-
-Default controls
------------------
-- Move mouse: Look around
-- W, A, S, D: Move
-- Space: Jump/move up
-- Shift: Sneak/move down
-- Q: Drop itemstack
-- Shift + Q: Drop single item
-- Left mouse button: Dig/punch/take item
-- Right mouse button: Place/use
-- Shift + right mouse button: Build (without using)
-- I: Inventory menu
-- Mouse wheel: Select item
-- 0-9: Select item
-- Z: Zoom (needs zoom privilege)
-- T: Chat
-- /: Commad
-
-- Esc: Pause menu/abort/exit (pauses only singleplayer game)
-- R: Enable/disable full range view
-- +: Increase view range
-- -: Decrease view range
-- K: Enable/disable fly mode (needs fly privilege)
-- J: Enable/disable fast mode (needs fast privilege)
-- H: Enable/disable noclip mode (needs noclip privilege)
-
-- F1: Hide/show HUD
-- F2: Hide/show chat
-- F3: Disable/enable fog
-- F4: Disable/enable camera update (Mapblocks are not updated anymore when disabled, disabled in release builds)
-- F5: Cycle through debug info screens
-- F6: Cycle through profiler info screens
-- F7: Cycle through camera modes
-- F8: Toggle cinematic mode
-- F9: Cycle through minimap modes
-- Shift + F9: Change minimap orientation
-- F10: Show/hide console
-- F12: Take screenshot
-- P: Write stack traces into debug.txt
-
-Most controls are settable in the configuration file, see the section below.
-
-Paths
-------
-$bin - Compiled binaries
-$share - Distributed read-only data
-$user - User-created modifiable data
-
-Windows .zip / RUN_IN_PLACE source:
-$bin = bin
-$share = .
-$user = .
-
-Linux installed:
-$bin = /usr/bin
-$share = /usr/share/minetest
-$user = ~/.minetest
-
-OS X:
-$bin = Contents/MacOS
-$share = Contents/Resources
-$user = Contents/User OR ~/Library/Application Support/minetest
-
-World directory
-----------------
-- Worlds can be found as separate folders in:
- $user/worlds/
-
-Configuration file:
--------------------
-- Default location:
- $user/minetest.conf
-- It is created by Minetest when it is ran the first time.
-- A specific file can be specified on the command line:
- --config <path-to-file>
-
-Command-line options:
----------------------
-- Use --help
-
-Compiling on GNU/Linux:
------------------------
-
-Install dependencies. Here's an example for Debian/Ubuntu:
-$ sudo apt-get 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
-
-For Fedora users:
-$ sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl* openal* libvorbis* 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
-
-You can install git for easily keeping your copy up to date.
-If you dont want git, read below on how to get the source without git.
-This is an example for installing git on Debian/Ubuntu:
-$ sudo apt-get install git
-
-For Fedora users:
-$ sudo dnf install git
-
-Download source (this is the URL to the latest of source repository, which might not work at all times) using git:
-$ git clone --depth 1 https://github.com/minetest/minetest.git
-$ cd minetest
-
-Download minetest_game (otherwise only the "Minimal development test" game is available) using git:
-$ git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
-
-Download source, without using git:
-$ wget https://github.com/minetest/minetest/archive/master.tar.gz
-$ tar xf master.tar.gz
-$ cd minetest-master
-
-Download minetest_game, without using git:
-$ cd games/
-$ wget https://github.com/minetest/minetest_game/archive/master.tar.gz
-$ tar xf master.tar.gz
-$ mv minetest_game-master minetest_game
-$ cd ..
-
-Build a version that runs directly from the source directory:
-$ cmake . -DRUN_IN_PLACE=TRUE
-$ make -j <number of processors>
-
-Run it:
-$ ./bin/minetest
-
-- Use cmake . -LH to see all CMake options and their current state
-- If you want to install it system-wide (or are making a distribution package),
- you will want to use -DRUN_IN_PLACE=FALSE
-- You can build a bare server by specifying -DBUILD_SERVER=TRUE
-- 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
-
-CMake options
--------------
-General options:
-
-BUILD_CLIENT - Build Minetest client
-BUILD_SERVER - Build Minetest server
-CMAKE_BUILD_TYPE - Type of build (Release vs. Debug)
- Release - Release build
- Debug - Debug build
- SemiDebug - Partially optimized debug build
- RelWithDebInfo - Release build with Debug information
- MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible
-ENABLE_CURL - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
-ENABLE_CURSES - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
-ENABLE_FREETYPE - Build with FreeType2; Allows using TTF fonts
-ENABLE_GETTEXT - Build with Gettext; Allows using translations
-ENABLE_GLES - Search for Open GLES headers & libraries and use them
-ENABLE_LEVELDB - Build with LevelDB; Enables use of LevelDB map backend
-ENABLE_POSTGRESQL - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater required)
-ENABLE_REDIS - Build with libhiredis; Enables use of Redis map backend
-ENABLE_SPATIAL - Build with LibSpatial; Speeds up AreaStores
-ENABLE_SOUND - Build with OpenAL, libogg & libvorbis; in-game Sounds
-ENABLE_LUAJIT - Build with LuaJIT (much faster than non-JIT Lua)
-ENABLE_SYSTEM_GMP - Use GMP from system (much faster than bundled mini-gmp)
-RUN_IN_PLACE - Create a portable install (worlds, settings etc. in current directory)
-USE_GPROF - Enable profiling using GProf
-VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> Minetest 0.4.9-foobar)
-
-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
-EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h
-EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so
-FREETYPE_INCLUDE_DIR_freetype2 - Only if building with Freetype2; directory that contains an freetype directory with files such as ftimage.h in it
-FREETYPE_INCLUDE_DIR_ft2build - Only if building with Freetype2; directory that contains ft2build.h
-FREETYPE_LIBRARY - Only if building with Freetype2; path to libfreetype.a/libfreetype.so/freetype.lib
-FREETYPE_DLL - Only if building with Freetype2 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_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
-IRRLICHT_DLL - Only on Windows; path to Irrlicht.dll
-IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h
-IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib
-LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h
-LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a
-LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll
-POSTGRESQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h
-POSTGRESQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so
-REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h
-REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so
-SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h
-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
-OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll
-OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located
-OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib
-OPENGLES2_INCLUDE_DIR - Only if building with GLES; directory that contains gl2.h
-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_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
-ZLIB_DLL - Only on Windows; path to zlib1.dll
-ZLIBWAPI_DLL - Only on Windows; path to zlibwapi.dll
-ZLIB_INCLUDE_DIR - Directory that contains zlib.h
-ZLIB_LIBRARY - Path to libz.a/libz.so/zlibwapi.lib
-
-Compiling on Windows:
----------------------
-- This section is outdated. In addition to what is described here:
- - In addition to minetest, you need to download minetest_game.
- - If you wish to have sound support, you need libogg, libvorbis and libopenal
-
-- You need:
- * CMake:
- http://www.cmake.org/cmake/resources/software.html
- * MinGW or Visual Studio
- http://www.mingw.org/
- http://msdn.microsoft.com/en-us/vstudio/default
- * Irrlicht SDK 1.7:
- http://irrlicht.sourceforge.net/downloads.html
- * Zlib headers (zlib125.zip)
- http://www.winimage.com/zLibDll/index.html
- * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
- http://www.winimage.com/zLibDll/index.html
- * SQLite3 headers and library
- https://www.sqlite.org/download.html
- * Optional: gettext library and tools:
- http://gnuwin32.sourceforge.net/downlinks/gettext.php
- - This is used for other UI languages. Feel free to leave it out.
- * And, of course, Minetest:
- http://minetest.net/download
-- Steps:
- - Select a directory called DIR hereafter in which you will operate.
- - Make sure you have CMake and a compiler installed.
- - Download all the other stuff to DIR and extract them into there.
- ("extract here", not "extract to packagename/")
- NOTE: zlib125dll.zip needs to be extracted into zlib125dll
- NOTE: You need to extract sqlite3.h & sqlite3ext.h from sqlite3 source
- and sqlite3.dll & sqlite3.def from sqlite3 precompiled binaries
- into "sqlite3" directory, and generate sqlite3.lib using command
- "LIB /DEF:sqlite3.def /OUT:sqlite3.lib"
- - All those packages contain a nice base directory in them, which
- should end up being the direct subdirectories of DIR.
- - You will end up with a directory structure like this (+=dir, -=file):
- -----------------
- + DIR
- - zlib-1.2.5.tar.gz
- - zlib125dll.zip
- - irrlicht-1.8.3.zip
- - sqlite-amalgamation-3130000.zip (SQLite3 headers)
- - sqlite-dll-win32-x86-3130000.zip (SQLite3 library for 32bit system)
- - 110214175330.zip (or whatever, this is the minetest source)
- + zlib-1.2.5
- - zlib.h
- + win32
- ...
- + zlib125dll
- - readme.txt
- + dll32
- ...
- + irrlicht-1.8.3
- + lib
- + include
- ...
- + sqlite3
- sqlite3.h
- sqlite3ext.h
- sqlite3.lib
- sqlite3.dll
- + gettext (optional)
- +bin
- +include
- +lib
- + minetest
- + src
- + doc
- - CMakeLists.txt
- ...
- -----------------
- - Start up the CMake GUI
- - Select "Browse Source..." and select DIR/minetest
- - Now, if using MSVC:
- - Select "Browse Build..." and select DIR/minetest-build
- - Else if using MinGW:
- - Select "Browse Build..." and select DIR/minetest
- - Select "Configure"
- - Select your compiler
- - It will warn about missing stuff, ignore that at this point. (later don't)
- - Make sure the configuration is as follows
- (note that the versions may differ for you):
- -----------------
- BUILD_CLIENT [X]
- BUILD_SERVER [ ]
- CMAKE_BUILD_TYPE Release
- CMAKE_INSTALL_PREFIX DIR/minetest-install
- IRRLICHT_SOURCE_DIR DIR/irrlicht-1.8.3
- RUN_IN_PLACE [X]
- WARN_ALL [ ]
- ZLIB_DLL DIR/zlib125dll/dll32/zlibwapi.dll
- ZLIB_INCLUDE_DIR DIR/zlib-1.2.5
- ZLIB_LIBRARIES DIR/zlib125dll/dll32/zlibwapi.lib
- GETTEXT_BIN_DIR DIR/gettext/bin
- GETTEXT_INCLUDE_DIR DIR/gettext/include
- GETTEXT_LIBRARIES DIR/gettext/lib/intl.lib
- GETTEXT_MSGFMT DIR/gettext/bin/msgfmt
- -----------------
- - If CMake complains it couldn't find SQLITE3, choose "Advanced" box on the
- right top corner, then specify the location of SQLITE3_INCLUDE_DIR and
- SQLITE3_LIBRARY manually.
- - If you want to build 64-bit minetest, you will need to build 64-bit version
- of irrlicht engine manually, as only 32-bit pre-built library is provided.
- - Hit "Configure"
- - Hit "Configure" once again 8)
- - If something is still coloured red, you have a problem.
- - Hit "Generate"
- If using MSVC:
- - Open the generated minetest.sln
- - The project defaults to the "Debug" configuration. Make very sure to
- select "Release", unless you want to debug some stuff (it's slower
- and might not even work at all)
- - Build the ALL_BUILD project
- - Build the INSTALL project
- - You should now have a working game with the executable in
- DIR/minetest-install/bin/minetest.exe
- - Additionally you may create a zip package by building the PACKAGE
- project.
- If using MinGW:
- - Using the command line, browse to the build directory and run 'make'
- (or mingw32-make or whatever it happens to be)
- - You may need to copy some of the downloaded DLLs into bin/, see what
- running the produced executable tells you it doesn't have.
- - You should now have a working game with the executable in
- DIR/minetest/bin/minetest.exe
-
-Windows releases of minetest are built using a bat script like this:
---------------------------------------------------------------------
-
-set sourcedir=%CD%
-set installpath="C:\tmp\minetest_install"
-set irrlichtpath="C:\tmp\irrlicht-1.7.2"
-
-set builddir=%sourcedir%\bvc10
-mkdir %builddir%
-pushd %builddir%
-cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=TRUE -DCMAKE_INSTALL_PREFIX=%installpath%
-if %errorlevel% neq 0 goto fail
-"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release
-if %errorlevel% neq 0 goto fail
-"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release
-if %errorlevel% neq 0 goto fail
-"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release
-if %errorlevel% neq 0 goto fail
-popd
-echo Finished.
-exit /b 0
-
-:fail
-popd
-echo Failed.
-exit /b 1
-
-License of Minetest textures and sounds
----------------------------------------
-
-This applies to textures and sounds contained in the main Minetest
-distribution.
-
-Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
-http://creativecommons.org/licenses/by-sa/3.0/
-
-Authors of media files
------------------------
-Everything not listed in here:
-Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
-
-ShadowNinja:
- textures/base/pack/smoke_puff.png
-
-Paramat:
- textures/base/pack/menu_header.png
-
-erlehmann:
- misc/minetest-icon-24x24.png
- misc/minetest-icon.ico
- misc/minetest.svg
- textures/base/pack/logo.png
-
-License of Minetest source code
--------------------------------
-
-Minetest
-Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
-
-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.
-
-Irrlicht
----------------
-
-This program uses the Irrlicht Engine. http://irrlicht.sourceforge.net/
-
- The Irrlicht Engine License
-
-Copyright © 2002-2005 Nikolaus Gebhardt
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute
-it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
- must not claim that you wrote the original software. If you use
- this software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source
- distribution.
-
-
-JThread
----------------
-
-This program uses the JThread library. License for JThread follows:
-
-Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
-Lua
----------------
-
-Lua is licensed under the terms of the MIT license reproduced below.
-This means that Lua is free software and can be used for both academic
-and commercial purposes at absolutely no cost.
-
-For details and rationale, see http://www.lua.org/license.html .
-
-Copyright (C) 1994-2008 Lua.org, PUC-Rio.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Fonts
----------------
-
-DejaVu Sans Mono:
-
- Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
- Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
-
-Bitstream Vera Fonts Copyright:
-
- Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
- a trademark of Bitstream, Inc.
-
-Arev Fonts Copyright:
-
- Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
-
-Liberation Fonts Copyright:
-
- Copyright (c) 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark of Red Hat, Inc.
-
-DroidSansFallback:
-
- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 000000000..e0613f8b3
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,11 @@
+*.iml
+.externalNativeBuild
+.gradle
+app/build
+app/release
+app/src/main/assets
+build
+local.properties
+native/.*
+native/build
+native/deps
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 000000000..ce895edd1
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,116 @@
+apply plugin: 'com.android.application'
+android {
+ compileSdkVersion 30
+ buildToolsVersion '30.0.3'
+ ndkVersion "$ndk_version"
+ defaultConfig {
+ applicationId 'net.minetest.minetest'
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionName "${versionMajor}.${versionMinor}.${versionPatch}"
+ versionCode project.versionCode
+ }
+
+ // load properties
+ Properties props = new Properties()
+ def propfile = file('../local.properties')
+ if (propfile.exists())
+ props.load(new FileInputStream(propfile))
+
+ if (props.getProperty('keystore') != null) {
+ signingConfigs {
+ release {
+ storeFile file(props['keystore'])
+ storePassword props['keystore.password']
+ keyAlias props['key']
+ keyPassword props['key.password']
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled true
+ signingConfig signingConfigs.release
+ }
+ }
+ }
+
+ // for multiple APKs
+ splits {
+ abi {
+ enable true
+ reset()
+ include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+task prepareAssets() {
+ def assetsFolder = "build/assets"
+ def projRoot = "../.."
+ def gameToCopy = "minetest_game"
+
+ copy {
+ from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder
+ }
+ copy {
+ from "${projRoot}/doc/lgpl-2.1.txt" into "${assetsFolder}"
+ }
+ copy {
+ from "${projRoot}/builtin" into "${assetsFolder}/builtin"
+ }
+ copy {
+ from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders"
+ }
+ copy {
+ from "../native/deps/armeabi-v7a/Irrlicht/Shaders" into "${assetsFolder}/client/shaders/Irrlicht"
+ }
+ copy {
+ from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts"
+ }
+ copy {
+ from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}"
+ }
+ fileTree("${projRoot}/po").include("**/*.po").forEach { poFile ->
+ def moPath = "${assetsFolder}/locale/${poFile.parentFile.name}/LC_MESSAGES/"
+ file(moPath).mkdirs()
+ exec {
+ commandLine 'msgfmt', '-o', "${moPath}/minetest.mo", poFile
+ }
+ }
+ copy {
+ from "${projRoot}/textures" into "${assetsFolder}/textures"
+ }
+
+ file("${assetsFolder}/.nomedia").text = "";
+
+ task zipAssets(type: Zip) {
+ archiveName "Minetest.zip"
+ from "${assetsFolder}"
+ destinationDir file("src/main/assets")
+ }
+}
+
+preBuild.dependsOn zipAssets
+
+// Map for the version code that gives each ABI a value.
+import com.android.build.OutputFile
+
+def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1]
+android.applicationVariants.all { variant ->
+ variant.outputs.each {
+ output ->
+ def abiName = output.getFilter(OutputFile.ABI)
+ output.versionCodeOverride = abiCodes.get(abiName, 0) + variant.versionCode
+ }
+}
+
+dependencies {
+ implementation project(':native')
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..11c868622
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="net.minetest.minetest"
+ android:installLocation="auto">
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+ <!--
+ `android:requestLegacyExternalStorage="true"` is workaround for using `/sdcard`
+ instead of the `getFilesDir()` patch for assets. Check link below for more information:
+ https://developer.android.com/training/data-storage/compatibility
+ -->
+
+ <application
+ android:allowBackup="false"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/label"
+ android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="false"
+ tools:ignore="UnusedAttribute">
+
+ <meta-data
+ android:name="android.max_aspect"
+ android:value="3.0" />
+
+ <activity
+ android:name=".MainActivity"
+ android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+ android:maxAspectRatio="3.0"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@style/AppTheme"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <activity
+ android:name=".GameActivity"
+ android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenSize|smallestScreenSize"
+ android:hardwareAccelerated="true"
+ android:launchMode="singleTask"
+ android:maxAspectRatio="3.0"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@style/AppTheme"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="Minetest" />
+ </activity>
+
+ <service
+ android:name=".UnzipService"
+ android:enabled="true"
+ android:exported="false" />
+
+ <provider
+ android:name="androidx.core.content.FileProvider"
+ android:authorities="net.minetest.minetest.fileprovider"
+ android:grantUriPermissions="true"
+ android:exported="false">
+ <meta-data
+ android:name="android.support.FILE_PROVIDER_PATHS"
+ android:resource="@xml/filepaths" />
+ </provider>
+
+</application>
+
+</manifest>
diff --git a/android/app/src/main/java/net/minetest/minetest/CustomEditText.java b/android/app/src/main/java/net/minetest/minetest/CustomEditText.java
new file mode 100644
index 000000000..8d0a503d0
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/CustomEditText.java
@@ -0,0 +1,45 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+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.
+*/
+
+package net.minetest.minetest;
+
+import android.content.Context;
+import android.view.KeyEvent;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.appcompat.widget.AppCompatEditText;
+
+import java.util.Objects;
+
+public class CustomEditText extends AppCompatEditText {
+ public CustomEditText(Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean onKeyPreIme(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ InputMethodManager mgr = (InputMethodManager)
+ getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+ Objects.requireNonNull(mgr).hideSoftInputFromWindow(this.getWindowToken(), 0);
+ }
+ return false;
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/GameActivity.java b/android/app/src/main/java/net/minetest/minetest/GameActivity.java
new file mode 100644
index 000000000..f5e9fd6d0
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/GameActivity.java
@@ -0,0 +1,207 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+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.
+*/
+
+package net.minetest.minetest;
+
+import android.app.NativeActivity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.InputType;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+
+import androidx.annotation.Keep;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.FileProvider;
+
+import java.io.File;
+import java.util.Objects;
+
+// Native code finds these methods by name (see porting_android.cpp).
+// This annotation prevents the minifier/Proguard from mangling them.
+@Keep
+public class GameActivity extends NativeActivity {
+ static {
+ System.loadLibrary("c++_shared");
+ System.loadLibrary("Minetest");
+ }
+
+ private int messageReturnCode = -1;
+ private String messageReturnValue = "";
+
+ public static native void putMessageBoxResult(String text);
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ }
+
+ private void makeFullScreen() {
+ if (Build.VERSION.SDK_INT >= 19)
+ this.getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+ }
+
+ @Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+ if (hasFocus)
+ makeFullScreen();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ makeFullScreen();
+ }
+
+ @Override
+ public void onBackPressed() {
+ // Ignore the back press so Minetest can handle it
+ }
+
+ public void showDialog(String acceptButton, String hint, String current, int editType) {
+ runOnUiThread(() -> showDialogUI(hint, current, editType));
+ }
+
+ private void showDialogUI(String hint, String current, int editType) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ LinearLayout container = new LinearLayout(this);
+ container.setOrientation(LinearLayout.VERTICAL);
+ builder.setView(container);
+ AlertDialog alertDialog = builder.create();
+ EditText editText;
+ // For multi-line, do not close the dialog after pressing back button
+ if (editType == 1) {
+ editText = new EditText(this);
+ } else {
+ editText = new CustomEditText(this);
+ }
+ container.addView(editText);
+ editText.setMaxLines(8);
+ editText.requestFocus();
+ editText.setHint(hint);
+ editText.setText(current);
+ final InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
+ Objects.requireNonNull(imm).toggleSoftInput(InputMethodManager.SHOW_FORCED,
+ InputMethodManager.HIDE_IMPLICIT_ONLY);
+ if (editType == 1)
+ editText.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_FLAG_MULTI_LINE);
+ else if (editType == 3)
+ editText.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ else
+ editText.setInputType(InputType.TYPE_CLASS_TEXT);
+ editText.setSelection(editText.getText().length());
+ editText.setOnKeyListener((view, keyCode, event) -> {
+ // For multi-line, do not submit the text after pressing Enter key
+ if (keyCode == KeyEvent.KEYCODE_ENTER && editType != 1) {
+ imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
+ messageReturnCode = 0;
+ messageReturnValue = editText.getText().toString();
+ alertDialog.dismiss();
+ return true;
+ }
+ return false;
+ });
+ // For multi-line, add Done button since Enter key does not submit text
+ if (editType == 1) {
+ Button doneButton = new Button(this);
+ container.addView(doneButton);
+ doneButton.setText(R.string.ime_dialog_done);
+ doneButton.setOnClickListener((view -> {
+ imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
+ messageReturnCode = 0;
+ messageReturnValue = editText.getText().toString();
+ alertDialog.dismiss();
+ }));
+ }
+ alertDialog.show();
+ alertDialog.setOnCancelListener(dialog -> {
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
+ messageReturnValue = current;
+ messageReturnCode = -1;
+ });
+ }
+
+ public int getDialogState() {
+ return messageReturnCode;
+ }
+
+ public String getDialogValue() {
+ messageReturnCode = -1;
+ return messageReturnValue;
+ }
+
+ public float getDensity() {
+ return getResources().getDisplayMetrics().density;
+ }
+
+ public int getDisplayHeight() {
+ return getResources().getDisplayMetrics().heightPixels;
+ }
+
+ public int getDisplayWidth() {
+ return getResources().getDisplayMetrics().widthPixels;
+ }
+
+ public void openURI(String uri) {
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
+ startActivity(browserIntent);
+ }
+
+ public String getUserDataPath() {
+ return Utils.getUserDataDirectory(this).getAbsolutePath();
+ }
+
+ public String getCachePath() {
+ return Utils.getCacheDirectory(this).getAbsolutePath();
+ }
+
+ public void shareFile(String path) {
+ File file = new File(path);
+ if (!file.exists()) {
+ Log.e("GameActivity", "File " + file.getAbsolutePath() + " doesn't exist");
+ return;
+ }
+
+ Uri fileUri = FileProvider.getUriForFile(this, "net.minetest.minetest.fileprovider", file);
+
+ Intent intent = new Intent(Intent.ACTION_SEND, fileUri);
+ intent.setDataAndType(fileUri, getContentResolver().getType(fileUri));
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ intent.putExtra(Intent.EXTRA_STREAM, fileUri);
+
+ Intent shareIntent = Intent.createChooser(intent, null);
+ startActivity(shareIntent);
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/android/app/src/main/java/net/minetest/minetest/MainActivity.java
new file mode 100644
index 000000000..b6567b4b7
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/MainActivity.java
@@ -0,0 +1,185 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+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.
+*/
+
+package net.minetest.minetest;
+
+import android.Manifest;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static net.minetest.minetest.UnzipService.*;
+
+public class MainActivity extends AppCompatActivity {
+ private final static int versionCode = BuildConfig.VERSION_CODE;
+ private final static int PERMISSIONS = 1;
+ private static final String[] REQUIRED_SDK_PERMISSIONS =
+ new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
+ private static final String SETTINGS = "MinetestSettings";
+ private static final String TAG_VERSION_CODE = "versionCode";
+
+ private ProgressBar mProgressBar;
+ private TextView mTextView;
+ private SharedPreferences sharedPreferences;
+
+ private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ int progress = 0;
+ @StringRes int message = 0;
+ if (intent != null) {
+ progress = intent.getIntExtra(ACTION_PROGRESS, 0);
+ message = intent.getIntExtra(ACTION_PROGRESS_MESSAGE, 0);
+ }
+
+ if (progress == FAILURE) {
+ Toast.makeText(MainActivity.this, intent.getStringExtra(ACTION_FAILURE), Toast.LENGTH_LONG).show();
+ finish();
+ } else if (progress == SUCCESS) {
+ startNative();
+ } else {
+ if (mProgressBar != null) {
+ mProgressBar.setVisibility(View.VISIBLE);
+ if (progress == INDETERMINATE) {
+ mProgressBar.setIndeterminate(true);
+ } else {
+ mProgressBar.setIndeterminate(false);
+ mProgressBar.setProgress(progress);
+ }
+ }
+ mTextView.setVisibility(View.VISIBLE);
+ if (message != 0)
+ mTextView.setText(message);
+ }
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ IntentFilter filter = new IntentFilter(ACTION_UPDATE);
+ registerReceiver(myReceiver, filter);
+ mProgressBar = findViewById(R.id.progressBar);
+ mTextView = findViewById(R.id.textView);
+ sharedPreferences = getSharedPreferences(SETTINGS, Context.MODE_PRIVATE);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
+ Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
+ checkPermission();
+ else
+ checkAppVersion();
+ }
+
+ private void checkPermission() {
+ final List<String> missingPermissions = new ArrayList<>();
+ for (final String permission : REQUIRED_SDK_PERMISSIONS) {
+ final int result = ContextCompat.checkSelfPermission(this, permission);
+ if (result != PackageManager.PERMISSION_GRANTED)
+ missingPermissions.add(permission);
+ }
+ if (!missingPermissions.isEmpty()) {
+ final String[] permissions = missingPermissions
+ .toArray(new String[0]);
+ ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
+ } else {
+ final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
+ Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
+ onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS, grantResults);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ @NonNull String[] permissions, @NonNull int[] grantResults) {
+ if (requestCode == PERMISSIONS) {
+ for (int grantResult : grantResults) {
+ if (grantResult != PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+ }
+ checkAppVersion();
+ }
+ }
+
+ private void checkAppVersion() {
+ if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+ Toast.makeText(this, R.string.no_external_storage, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+
+ if (UnzipService.getIsRunning()) {
+ mProgressBar.setVisibility(View.VISIBLE);
+ mProgressBar.setIndeterminate(true);
+ mTextView.setVisibility(View.VISIBLE);
+ } else if (sharedPreferences.getInt(TAG_VERSION_CODE, 0) == versionCode &&
+ Utils.isInstallValid(this)) {
+ startNative();
+ } else {
+ mProgressBar.setVisibility(View.VISIBLE);
+ mProgressBar.setIndeterminate(true);
+ mTextView.setVisibility(View.VISIBLE);
+
+ Intent intent = new Intent(this, UnzipService.class);
+ startService(intent);
+ }
+ }
+
+ private void startNative() {
+ sharedPreferences.edit().putInt(TAG_VERSION_CODE, versionCode).apply();
+ Intent intent = new Intent(this, GameActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(intent);
+ }
+
+ @Override
+ public void onBackPressed() {
+ // Prevent abrupt interruption when copy game files from assets
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unregisterReceiver(myReceiver);
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/android/app/src/main/java/net/minetest/minetest/UnzipService.java
new file mode 100644
index 000000000..a61a49139
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/UnzipService.java
@@ -0,0 +1,259 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+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.
+*/
+
+package net.minetest.minetest;
+
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Environment;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.StringRes;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+
+public class UnzipService extends IntentService {
+ public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE";
+ public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS";
+ public static final String ACTION_PROGRESS_MESSAGE = "net.minetest.minetest.PROGRESS_MESSAGE";
+ public static final String ACTION_FAILURE = "net.minetest.minetest.FAILURE";
+ public static final int SUCCESS = -1;
+ public static final int FAILURE = -2;
+ public static final int INDETERMINATE = -3;
+ private final int id = 1;
+ private NotificationManager mNotifyManager;
+ private boolean isSuccess = true;
+ private String failureMessage;
+
+ private static boolean isRunning = false;
+ public static synchronized boolean getIsRunning() {
+ return isRunning;
+ }
+ private static synchronized void setIsRunning(boolean v) {
+ isRunning = v;
+ }
+
+ public UnzipService() {
+ super("net.minetest.minetest.UnzipService");
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ Notification.Builder notificationBuilder = createNotification();
+ final File zipFile = new File(getCacheDir(), "Minetest.zip");
+ try {
+ setIsRunning(true);
+ File userDataDirectory = Utils.getUserDataDirectory(this);
+ if (userDataDirectory == null) {
+ throw new IOException("Unable to find user data directory");
+ }
+
+ try (InputStream in = this.getAssets().open(zipFile.getName())) {
+ try (OutputStream out = new FileOutputStream(zipFile)) {
+ int readLen;
+ byte[] readBuffer = new byte[16384];
+ while ((readLen = in.read(readBuffer)) != -1) {
+ out.write(readBuffer, 0, readLen);
+ }
+ }
+ }
+
+ migrate(notificationBuilder, userDataDirectory);
+ unzip(notificationBuilder, zipFile, userDataDirectory);
+ } catch (IOException e) {
+ isSuccess = false;
+ failureMessage = e.getLocalizedMessage();
+ } finally {
+ setIsRunning(false);
+ zipFile.delete();
+ }
+ }
+
+ private Notification.Builder createNotification() {
+ String name = "net.minetest.minetest";
+ String channelId = "Minetest channel";
+ String description = "notifications from Minetest";
+ Notification.Builder builder;
+ if (mNotifyManager == null)
+ mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ int importance = NotificationManager.IMPORTANCE_LOW;
+ NotificationChannel mChannel = null;
+ if (mNotifyManager != null)
+ mChannel = mNotifyManager.getNotificationChannel(channelId);
+ if (mChannel == null) {
+ mChannel = new NotificationChannel(channelId, name, importance);
+ mChannel.setDescription(description);
+ // Configure the notification channel, NO SOUND
+ mChannel.setSound(null, null);
+ mChannel.enableLights(false);
+ mChannel.enableVibration(false);
+ mNotifyManager.createNotificationChannel(mChannel);
+ }
+ builder = new Notification.Builder(this, channelId);
+ } else {
+ builder = new Notification.Builder(this);
+ }
+
+ Intent notificationIntent = new Intent(this, MainActivity.class);
+ notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
+ | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ PendingIntent intent = PendingIntent.getActivity(this, 0,
+ notificationIntent, 0);
+
+ builder.setContentTitle(getString(R.string.notification_title))
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentText(getString(R.string.notification_description))
+ .setContentIntent(intent)
+ .setOngoing(true)
+ .setProgress(0, 0, true);
+
+ mNotifyManager.notify(id, builder.build());
+ return builder;
+ }
+
+ private void unzip(Notification.Builder notificationBuilder, File zipFile, File userDataDirectory) throws IOException {
+ int per = 0;
+
+ int size;
+ try (ZipFile zipSize = new ZipFile(zipFile)) {
+ size = zipSize.size();
+ }
+
+ int readLen;
+ byte[] readBuffer = new byte[16384];
+ try (FileInputStream fileInputStream = new FileInputStream(zipFile);
+ ZipInputStream zipInputStream = new ZipInputStream(fileInputStream)) {
+ ZipEntry ze;
+ while ((ze = zipInputStream.getNextEntry()) != null) {
+ if (ze.isDirectory()) {
+ ++per;
+ Utils.createDirs(userDataDirectory, ze.getName());
+ continue;
+ }
+ publishProgress(notificationBuilder, R.string.loading, 100 * ++per / size);
+ try (OutputStream outputStream = new FileOutputStream(
+ new File(userDataDirectory, ze.getName()))) {
+ while ((readLen = zipInputStream.read(readBuffer)) != -1) {
+ outputStream.write(readBuffer, 0, readLen);
+ }
+ }
+ }
+ }
+ }
+
+ void moveFileOrDir(@NonNull File src, @NonNull File dst) throws IOException {
+ try {
+ Process p = new ProcessBuilder("/system/bin/mv",
+ src.getAbsolutePath(), dst.getAbsolutePath()).start();
+ int exitcode = p.waitFor();
+ if (exitcode != 0)
+ throw new IOException("Move failed with exit code " + exitcode);
+ } catch (InterruptedException e) {
+ throw new IOException("Move operation interrupted");
+ }
+ }
+
+ boolean recursivelyDeleteDirectory(@NonNull File loc) {
+ try {
+ Process p = new ProcessBuilder("/system/bin/rm", "-rf",
+ loc.getAbsolutePath()).start();
+ return p.waitFor() == 0;
+ } catch (IOException | InterruptedException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Migrates user data from deprecated external storage to app scoped storage
+ */
+ private void migrate(Notification.Builder notificationBuilder, File newLocation) throws IOException {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ return;
+ }
+
+ File oldLocation = new File(Environment.getExternalStorageDirectory(), "Minetest");
+ if (!oldLocation.isDirectory())
+ return;
+
+ publishProgress(notificationBuilder, R.string.migrating, 0);
+ newLocation.mkdir();
+
+ String[] dirs = new String[] { "worlds", "games", "mods", "textures", "client" };
+ for (int i = 0; i < dirs.length; i++) {
+ publishProgress(notificationBuilder, R.string.migrating, 100 * i / dirs.length);
+ File dir = new File(oldLocation, dirs[i]), dir2 = new File(newLocation, dirs[i]);
+ if (dir.isDirectory() && !dir2.isDirectory()) {
+ moveFileOrDir(dir, dir2);
+ }
+ }
+
+ for (String filename : new String[] { "minetest.conf" }) {
+ File file = new File(oldLocation, filename), file2 = new File(newLocation, filename);
+ if (file.isFile() && !file2.isFile()) {
+ moveFileOrDir(file, file2);
+ }
+ }
+
+ recursivelyDeleteDirectory(oldLocation);
+ }
+
+ private void publishProgress(@Nullable Notification.Builder notificationBuilder, @StringRes int message, int progress) {
+ Intent intentUpdate = new Intent(ACTION_UPDATE);
+ intentUpdate.putExtra(ACTION_PROGRESS, progress);
+ intentUpdate.putExtra(ACTION_PROGRESS_MESSAGE, message);
+ if (!isSuccess)
+ intentUpdate.putExtra(ACTION_FAILURE, failureMessage);
+ sendBroadcast(intentUpdate);
+
+ if (notificationBuilder != null) {
+ notificationBuilder.setContentText(getString(message));
+ if (progress == INDETERMINATE) {
+ notificationBuilder.setProgress(100, 50, true);
+ } else {
+ notificationBuilder.setProgress(100, progress, false);
+ }
+ mNotifyManager.notify(id, notificationBuilder.build());
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mNotifyManager.cancel(id);
+ publishProgress(null, R.string.loading, isSuccess ? SUCCESS : FAILURE);
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/Utils.java b/android/app/src/main/java/net/minetest/minetest/Utils.java
new file mode 100644
index 000000000..b2553c844
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/Utils.java
@@ -0,0 +1,39 @@
+package net.minetest.minetest;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import java.io.File;
+
+public class Utils {
+ public static @NonNull File createDirs(File root, String dir) {
+ File f = new File(root, dir);
+ if (!f.isDirectory())
+ f.mkdirs();
+
+ return f;
+ }
+
+ public static @Nullable File getUserDataDirectory(Context context) {
+ File extDir = context.getExternalFilesDir(null);
+ if (extDir == null) {
+ return null;
+ }
+
+ return createDirs(extDir, "Minetest");
+ }
+
+ public static @Nullable File getCacheDirectory(Context context) {
+ return context.getCacheDir();
+ }
+
+ public static boolean isInstallValid(Context context) {
+ File userDataDirectory = getUserDataDirectory(context);
+ return userDataDirectory != null && userDataDirectory.isDirectory() &&
+ new File(userDataDirectory, "games").isDirectory() &&
+ new File(userDataDirectory, "builtin").isDirectory() &&
+ new File(userDataDirectory, "client").isDirectory() &&
+ new File(userDataDirectory, "textures").isDirectory();
+ }
+}
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
new file mode 100644
index 000000000..43bd6089e
--- /dev/null
+++ b/android/app/src/main/res/drawable/background.png
Binary files differ
diff --git a/android/app/src/main/res/drawable/bg.xml b/android/app/src/main/res/drawable/bg.xml
new file mode 100644
index 000000000..903335ed9
--- /dev/null
+++ b/android/app/src/main/res/drawable/bg.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/background"
+ android:tileMode="repeat" />
diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 000000000..93508c3cb
--- /dev/null
+++ b/android/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,33 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/activity_main"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/bg">
+
+ <ProgressBar
+ android:id="@+id/progressBar"
+ style="@style/CustomProgressBar"
+ android:layout_width="match_parent"
+ android:layout_height="30dp"
+ android:layout_centerInParent="true"
+ android:layout_marginLeft="90dp"
+ android:layout_marginRight="90dp"
+ android:indeterminate="false"
+ android:max="100"
+ android:visibility="gone"
+ tools:visibility="visible" />
+
+ <TextView
+ android:id="@+id/textView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/progressBar"
+ android:layout_centerInParent="true"
+ android:background="@android:color/transparent"
+ android:text="@string/loading"
+ android:textColor="#FEFEFE"
+ android:visibility="gone"
+ tools:visibility="visible" />
+
+</RelativeLayout>
diff --git a/android/app/src/main/res/mipmap/ic_launcher.png b/android/app/src/main/res/mipmap/ic_launcher.png
new file mode 100644
index 000000000..88a83782c
--- /dev/null
+++ b/android/app/src/main/res/mipmap/ic_launcher.png
Binary files differ
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
new file mode 100644
index 000000000..99f948c99
--- /dev/null
+++ b/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="label">Minetest</string>
+ <string name="loading">Loading&#8230;</string>
+ <string name="migrating">Migrating save data from old install&#8230; (this may take a while)</string>
+ <string name="not_granted">Required permission wasn\'t granted, Minetest can\'t run without it</string>
+ <string name="notification_title">Loading Minetest</string>
+ <string name="notification_description">Less than 1 minute&#8230;</string>
+ <string name="ime_dialog_done">Done</string>
+ <string name="no_external_storage">External storage isn\'t available. If you use an SDCard, please reinsert it. Otherwise, try restarting your phone or contacting the Minetest developers</string>
+
+</resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..291a4eaf1
--- /dev/null
+++ b/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:tools="http://schemas.android.com/tools">
+
+ <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
+ <item name="windowActionBar">false</item>
+ <item name="android:windowFullscreen">true</item>
+ <item name="android:windowBackground">@drawable/bg</item>
+ <item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">shortEdges</item>
+ </style>
+
+ <style name="CustomProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
+ <item name="android:indeterminateOnly">false</item>
+ </style>
+
+</resources>
diff --git a/android/app/src/main/res/xml/filepaths.xml b/android/app/src/main/res/xml/filepaths.xml
new file mode 100644
index 000000000..2fff06908
--- /dev/null
+++ b/android/app/src/main/res/xml/filepaths.xml
@@ -0,0 +1,3 @@
+<paths>
+ <external-files-path path="Minetest/" name="minetest" />
+</paths>
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 000000000..8e7a8a964
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,37 @@
+// 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", 6) // Version Minor
+project.ext.set("versionPatch", 0) // Version Patch
+project.ext.set("versionExtra", "") // Version Extra
+project.ext.set("versionCode", 42) // Android Version Code
+project.ext.set("developmentBuild", 0) // Whether it is a development build, or a release
+// 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
+
+buildscript {
+ ext.ndk_version = '23.2.8568313'
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.0.3'
+ classpath 'de.undercouch:gradle-download-task:4.1.1'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+ delete 'native/deps'
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 000000000..53b475cf9
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,11 @@
+<#if isLowMemory>
+org.gradle.jvmargs=-Xmx4G -XX:MaxPermSize=2G -XX:+HeapDumpOnOutOfMemoryError
+<#else>
+org.gradle.jvmargs=-Xmx16G -XX:MaxPermSize=8G -XX:+HeapDumpOnOutOfMemoryError
+</#if>
+org.gradle.daemon=true
+org.gradle.parallel=true
+org.gradle.parallel.threads=8
+org.gradle.configureondemand=true
+android.enableJetifier=true
+android.useAndroidX=true
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..5c2d1cf01
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..8ad73a75c
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
diff --git a/android/gradlew b/android/gradlew
new file mode 100755
index 000000000..25e0c1148
--- /dev/null
+++ b/android/gradlew
@@ -0,0 +1,188 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ command -v java >/dev/null || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
new file mode 100644
index 000000000..9618d8d96
--- /dev/null
+++ b/android/gradlew.bat
@@ -0,0 +1,100 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android/icons/aux1_btn.svg b/android/icons/aux1_btn.svg
new file mode 100644
index 000000000..e0ee97c0c
--- /dev/null
+++ b/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/android/icons/camera_btn.svg b/android/icons/camera_btn.svg
new file mode 100644
index 000000000..a91a7fcf8
--- /dev/null
+++ b/android/icons/camera_btn.svg
@@ -0,0 +1,108 @@
+<?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="camera_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/camera_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.56808712"
+ inkscape:cx="108.02318"
+ inkscape:cy="100.37635"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.52916666"
+ spacingy="0.52916666"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5.70848799;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 67.733332,254.66665 c 0,0 -8.668881,0 -18.300771,-3.15268 -9.631892,-3.1527 -18.2943,-9.47798 -24.078829,-22.06889 5.706713,-9.81112 13.792733,-18.56809 24.089264,-22.0987 9.587884,-3.28767 18.290339,-3.12291 18.290339,-3.12291 0,0 7.735344,-0.0794 18.31234,3.12292 9.690806,2.93407 18.313585,9.42827 24.067265,22.09869 -5.76759,12.59091 -14.445437,18.91619 -24.0777,22.06889 -9.63227,3.15268 -18.301908,3.15268 -18.301908,3.15268 z"
+ id="path58-3-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscscsc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.73025268;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 64.488929,217.53903 c -0.857939,0.17659 0.965211,0.45252 1.127737,0.80919 3.74151,2.22182 4.135021,8.10158 0.722172,10.79555 -2.788479,2.49816 -7.570549,1.85517 -9.647324,-1.24231 -0.478813,6.23671 4.305402,12.62817 10.72756,13.07655 5.379142,0.53291 10.304075,-3.82096 11.146917,-9.02134 1.316631,-6.22759 -2.756791,-13.29903 -9.184051,-14.59275 -1.613453,-0.33844 -3.308229,-0.28143 -4.893011,0.17511 z"
+ id="path4487"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4489"
+ cx="68.000587"
+ cy="229.40236"
+ rx="24.328558"
+ ry="24.538925" />
+ </g>
+</svg>
diff --git a/android/icons/chat_btn.svg b/android/icons/chat_btn.svg
new file mode 100644
index 000000000..41dc6f8c7
--- /dev/null
+++ b/android/icons/chat_btn.svg
@@ -0,0 +1,96 @@
+<?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="chat_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="-49.76592"
+ inkscape:cy="230.35684"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.099995,186.93332 H 97.36666 l 12.70001,13.36842 v 44.56141 l -12.095255,13.02565 -13.304754,13.71119 5e-6,-16.93334 H 38.1 l -12.7,-12.7 -5e-6,-41.66491 z"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ </g>
+</svg>
diff --git a/android/icons/chat_hide_btn.svg b/android/icons/chat_hide_btn.svg
new file mode 100644
index 000000000..6647b3097
--- /dev/null
+++ b/android/icons/chat_hide_btn.svg
@@ -0,0 +1,139 @@
+<?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="chat_hide_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_hide_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="122.83767"
+ inkscape:cy="254.28074"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="8"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:22.67716599;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 352,96.000006 144,96 96,146.52539 V 304 l 24,24.00001 m 88,24 L 320,352 v 64 L 370.28516,364.17773 416,314.94727 V 146.52539"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,199.63332 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 144,272 v 32 l 16,10e-6 32,-32 z m 128,0 -32,32 h 48 v -32 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 256,208.00001 224,208 v 32 m 112,-32 -32,32 h 64 v -32 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 304,144 v 16.00001 l 16,-16 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,216.56665 h 16.933333 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-2-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433332,233.49999 h 16.933333 v 8.46667 H 80.433332 v -8.46667"
+ id="path4737-2-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.283335,267.36666 4.23333,4.23333 88.900005,-88.9 -4.23333,-4.23333 z"
+ id="path4499"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/chat_show_btn.svg b/android/icons/chat_show_btn.svg
new file mode 100644
index 000000000..fce9de996
--- /dev/null
+++ b/android/icons/chat_show_btn.svg
@@ -0,0 +1,133 @@
+<?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="chat_show_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_show_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-52.637496"
+ inkscape:cy="236.47723"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6.15586996;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.099995,186.93332 H 97.36666 l 12.70001,13.36842 v 44.56141 l -12.095255,13.02565 -13.304754,13.71119 5e-6,-16.93334 H 38.1 l -12.7,-12.7 -5e-6,-41.66491 z"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,199.63332 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.30048177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,233.49998 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.30048177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 59.266666,216.56665 h 38.099999 v 8.46667 H 59.266666 v -8.46667"
+ id="path4737-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433331,199.63332 h 16.933334 v 8.46667 H 80.433331 v -8.46667"
+ id="path4737-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,216.56665 h 16.933333 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-2-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433332,233.49999 h 16.933333 v 8.46667 H 80.433332 v -8.46667"
+ id="path4737-2-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.8897638;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 332.249,369.02277 c -0.0402,-18.48612 -0.4849,-21.66096 -3.48875,-24.9094 -3.91749,-4.23646 1.11742,-4.01917 -93.12942,-4.01917 h -86.6347 l -20.5311,-20.54025 -20.53109,-20.54025 0.0344,-73.92404 0.0344,-73.92403 20.50131,-21.579 20.50132,-21.57899 106.90272,-0.0281 106.90273,-0.0281 20.77585,21.85532 20.77584,21.85531 v 79.11261 79.1126 l -24.59489,26.35352 c -13.5272,14.49442 -29.74434,31.65707 -36.0381,38.13922 l -11.44321,11.78571 -0.0373,-17.14286 z m -43.95792,-81.07142 v -16.07143 l -72.32143,-0.18197 -72.32143,-0.18198 v 16.43538 16.43537 l 72.32143,-0.18197 72.32143,-0.18198 z m 80,0 v -16.07143 l -32.32143,-0.18585 -32.32143,-0.18585 v 16.44313 16.44312 l 32.32143,-0.18585 32.32143,-0.18585 z M 208.64822,224.02277 v -16.07142 h -32.5 -32.5 v 16.07142 16.07143 h 32.5 32.5 z m 160,0 v -16.07142 h -72.5 -72.5 v 16.07142 16.07143 h 72.5 72.5 z M 288.29108,160.0942 v -16.07143 l -72.32143,-0.18197 -72.32143,-0.18197 v 16.43537 16.43537 l 72.32143,-0.18197 72.32143,-0.18197 z m 80,0 v -16.07143 l -32.32143,-0.18585 -32.32143,-0.18585 v 16.44313 16.44313 l 32.32143,-0.18585 32.32143,-0.18585 z"
+ id="path5484"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)" />
+ </g>
+</svg>
diff --git a/android/icons/checkbox_tick.svg b/android/icons/checkbox_tick.svg
new file mode 100644
index 000000000..6b727bb52
--- /dev/null
+++ b/android/icons/checkbox_tick.svg
@@ -0,0 +1,93 @@
+<?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="checkbox_tick.svg">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-28.833943"
+ inkscape:cy="228.57143"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.1254902" />
+ </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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:#1a1a1a;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 42.333333,284.29999 4.2333333,246.19999 21.166666,229.26665 42.333333,250.43332 114.3,178.46665 131.23333,195.39999 Z"
+ id="path14"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+</svg>
diff --git a/android/icons/debug_btn.svg b/android/icons/debug_btn.svg
new file mode 100644
index 000000000..2c37f142a
--- /dev/null
+++ b/android/icons/debug_btn.svg
@@ -0,0 +1,344 @@
+<?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="debug_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/debug_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path4687"
+ 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="path4690"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4692"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4694"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-3">
+ <path
+ id="path4756"
+ 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-6"
+ height="8">
+ <path
+ id="path4759"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4761"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4763"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-7">
+ <path
+ id="path4920"
+ 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-5"
+ height="8">
+ <path
+ id="path4923"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4925"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4927"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-35">
+ <path
+ id="path4984"
+ 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-62"
+ height="8">
+ <path
+ id="path4987"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4989"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4991"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-9">
+ <path
+ id="path5044"
+ 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-1"
+ height="8">
+ <path
+ id="path5047"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path5049"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path5051"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.61928482"
+ inkscape:cx="-121.31078"
+ inkscape:cy="141.55076"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ 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-global="true"
+ inkscape:snap-grids="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="4.2333333"
+ spacingy="4.2333333"
+ empspacing="1"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <g
+ id="g4960"
+ transform="matrix(0.356623,0,0,0.356623,38.15173,-196.45162)"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g4934"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ id="g4940"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 39.984833,1063.9015 -3.428448,0.3376 -1.443251,2.4866 -1.853336,4.4442 -0.931739,3.4444 -0.307197,2.2939 -0.003,1.0665 0.191273,1.4737 -0.201415,2.8328 -0.908554,1.5085 -8.44071,1.6795 -1.41862,-1.0448 -1.269369,-2.5402 -0.388347,-1.436 -0.410078,-0.9825 -1.16214,-2.004 -2.177924,-2.8242 -3.413958,-3.398 -2.283698,-1.7447 -3.2980381,0.9999 -3.0372074,1.6258 -0.3825491,2.8474 -0.013043,4.8166 0.4593482,3.5372 0.5941108,2.2373 0.4057338,0.9868 0.7404643,1.2882 0.8984102,2.6938 -0.2637272,1.7417 -7.1554054,4.7819 -1.7098778,-0.4231 -2.146042,-1.862 -0.9056565,-1.1752 -0.7564036,-0.7521 -1.8417418,-1.407 -3.0922714,-1.7751 -4.452928,-1.8345 -2.779276,-0.7361 -2.663353,2.1852 -2.186616,2.6648 0.739015,2.7778 1.831599,4.4529 1.777983,3.0937 1.404129,1.8389 0.752056,0.7564 1.176629,0.9085 1.862028,2.1446 0.423122,1.7114 -4.780413,7.1554 -1.741758,0.2622 -2.693782,-0.8984 -1.289654,-0.7404 -0.985354,-0.4058 -2.238781,-0.5941 -3.53713,-0.4579 -4.816639,0.01 -2.848832,0.3825 -1.622935,3.0401 -1.002742,3.2966 1.746104,2.2852 3.396572,3.4125 2.824197,2.1779 2.004036,1.1636 0.983904,0.4101 1.434559,0.3869 2.540184,1.2693 1.047662,1.4172 -1.680897,8.4422 -1.50846,0.91 -2.832891,0.1999 -1.475133,-0.1898 h -1.063603 l -2.296743,0.3058 -3.441491,0.9317 -4.447133,1.8533 -2.485119,1.4447 -0.337629,3.427 0.337629,3.43 2.485119,1.4432 4.447133,1.8533 3.441491,0.9318 2.296743,0.3072 h 1.063603 l 1.475133,-0.1913 2.832891,0.2 1.50846,0.91 1.680897,8.4421 -1.047662,1.4187 -2.540184,1.2693 -1.434559,0.3869 -0.983904,0.4101 -2.004036,1.1636 -2.824197,2.175 -3.396572,3.414 -1.746104,2.2851 1.002742,3.2981 1.622935,3.0386 2.848832,0.3811 4.816639,0.012 3.53713,-0.4579 2.238781,-0.5927 0.985354,-0.4072 1.289654,-0.739 2.693782,-0.8984 1.741758,0.2608 4.780413,7.1569 -0.423122,1.7099 -1.862028,2.1446 -1.176629,0.9085 -0.752056,0.7564 -1.404129,1.8389 -1.777983,3.0922 -1.831599,4.4559 -0.739015,2.7763 2.186616,2.6648 2.663353,2.1852 2.779276,-0.7361 4.452928,-1.8345 3.0922714,-1.7751 1.8417418,-1.4056 0.7564036,-0.752 0.9056565,-1.1781 2.146042,-1.862 1.7098778,-0.4231 7.1554054,4.7833 0.2637272,1.7417 -0.8984102,2.6938 -0.7404643,1.2882 -0.4057338,0.9854 -0.5941108,2.2402 -0.4593482,3.5371 0.013043,4.8167 0.3825491,2.8473 3.0372074,1.6244 3.2980381,0.9999 2.283698,-1.7432 3.413958,-3.3995 2.177924,-2.8242 1.16214,-2.004 0.410078,-0.9839 0.388347,-1.4332 1.269369,-2.5416 1.41862,-1.0447 8.44071,1.678 0.908554,1.5099 0.201415,2.8314 -0.191273,1.4751 0.003,1.0665 0.307197,2.2953 0.931739,3.443 1.853336,4.4456 1.443251,2.4852 3.428448,0.339 3.429902,-0.339 1.443252,-2.4852 1.853336,-4.4456 0.928839,-3.443 0.30865,-2.2953 0.003,-1.0665 -0.189826,-1.4751 0.198521,-2.8314 0.911455,-1.5099 8.44071,-1.678 1.41862,1.0447 1.269369,2.5416 0.386893,1.4332 0.410085,0.9839 1.163587,2.004 2.177917,2.8242 3.412511,3.3995 2.285152,1.7432 3.296588,-0.9999 3.038654,-1.6244 0.382553,-2.8473 0.01016,-4.8167 -0.456447,-3.5371 -0.594117,-2.2402 -0.40573,-0.9854 -0.740467,-1.2882 -0.898412,-2.6938 0.263728,-1.7417 7.153958,-4.7833 1.711327,0.4231 2.144596,1.862 0.907101,1.1781 0.756403,0.752 1.840293,1.4056 3.093726,1.7751 4.452927,1.8345 2.77638,0.7361 2.664803,-2.1852 2.18517,-2.6648 -0.73612,-2.7763 -1.8345,-4.4559 -1.775089,-3.0922 -1.405577,-1.8389 -0.752055,-0.7564 -1.17663,-0.9085 -1.860578,-2.1446 -0.424575,-1.7099 4.781869,-7.1569 1.741753,-0.2608 2.693782,0.8984 1.28966,0.739 0.98535,0.4072 2.23879,0.5927 3.53713,0.4579 4.81663,-0.012 2.84738,-0.3811 v 0.01 l 1.62439,-3.0386 0.99984,-3.2995 -1.74321,-2.2822 -3.39801,-3.414 -2.8242,-2.1779 -2.00404,-1.1622 -0.98245,-0.41 -1.43601,-0.3898 -2.54163,-1.2694 -1.04477,-1.4172 1.67945,-8.4421 1.50846,-0.9071 2.83434,-0.2015 1.47224,0.1913 h 1.0665 l 2.29529,-0.3086 3.44294,-0.9303 4.44569,-1.8534 2.48656,-1.4432 0.33763,-3.4299 -0.33763,-3.4299 -2.48656,-1.4404 -4.44569,-1.8548 -3.44294,-0.9302 -2.29529,-0.3087 h -1.0665 l -1.47224,0.1913 -2.83434,-0.2014 -1.50846,-0.9086 -1.67945,-8.4407 1.04477,-1.4186 2.54163,-1.2694 1.43601,-0.3883 0.98245,-0.4101 2.00404,-1.1621 2.8242,-2.178 3.39801,-3.4139 1.74321,-2.2837 -0.99984,-3.2981 -1.62439,-3.0401 -2.84738,-0.3811 -4.81663,-0.012 -3.53713,0.4594 -2.23879,0.5941 -0.98535,0.4057 -1.28966,0.7405 -2.693782,0.8984 -1.741753,-0.2637 -4.781869,-7.1554 0.424575,-1.7099 1.860578,-2.146 1.17663,-0.9071 0.752055,-0.755 1.405577,-1.8417 1.775089,-3.0923 1.8345,-4.4529 0.73612,-2.7793 -2.18517,-2.6648 -2.664803,-2.1852 -2.77638,0.739 -4.452927,1.8316 -3.093726,1.778 -1.840293,1.4041 -0.756403,0.7521 -0.907101,1.1766 -2.144596,1.8621 -1.711327,0.4231 -7.153958,-4.7804 -0.263728,-1.7432 0.898412,-2.6924 0.740467,-1.2896 0.40573,-0.9854 0.594117,-2.2388 0.456447,-3.5371 -0.01016,-4.8166 -0.382553,-2.8503 -3.038654,-1.6229 -3.296588,-1.0013 -2.285152,1.7461 -3.412511,3.3965 -2.177917,2.8242 -1.163587,2.0041 -0.410085,0.9839 -0.386893,1.4331 -1.269369,2.5416 -1.41862,1.0477 -8.442156,-1.6809 -0.910009,-1.5099 -0.198521,-2.8315 0.189826,-1.4751 -0.003,-1.0636 -0.30865,-2.2982 -0.928839,-3.44 -1.853336,-4.4486 -1.443252,-2.4837 z m -0.240543,40.0198 c 25.773221,-10e-5 46.666641,20.855 46.666634,46.5812 0,25.7262 -20.89342,46.5813 -46.666634,46.5811 -25.773213,2e-4 -46.6666339,-20.8549 -46.6666309,-46.5811 -6.7e-6,-25.7262 20.8934179,-46.5813 46.6666309,-46.5812 z"
+ id="path4936"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscsc" />
+ </g>
+ </g>
+ <g
+ id="g5020"
+ transform="matrix(0.35552611,-0.02794902,0.02794902,0.35552611,64.796165,-192.13622)"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g5000"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="rotate(-7.20199,-42.477168,1116.3894)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 333.99609,122.4375 -2.92968,0.28906 -1.03125,1.17188 -2.8418,5.72656 -0.76563,3.80664 0.0859,1.37109 1.43164,4.2461 -0.94922,3.36328 -7.95117,3.29492 -3.05078,-1.70898 -1.99219,-4.01367 -0.90625,-1.0293 -3.23437,-2.15039 -6.0586,-2.04102 -1.55664,-0.0996 -2.27734,1.86914 -1.86719,2.27539 0.0977,1.55664 2.04297,6.06055 2.14843,3.23242 1.0293,0.90821 4.01563,1.99023 1.70703,3.05078 -3.29297,7.95117 -3.36523,0.94922 -4.2461,-1.42969 -1.36914,-0.0879 -3.80664,0.76563 -5.72852,2.8418 -1.16992,1.03125 -0.28906,2.93164 0.28906,2.92968 1.16992,1.03125 5.72852,2.8418 3.80664,0.76563 1.36914,-0.0859 4.2461,-1.43164 3.36523,0.94922 3.29297,7.95117 -1.70703,3.05078 -4.01563,1.99023 -1.0293,0.90821 -2.14843,3.23242 -2.04297,6.06055 -0.0977,1.55664 1.86719,2.27734 2.27734,1.86719 1.55664,-0.0977 6.0586,-2.04101 3.23437,-2.15039 0.90625,-1.0293 1.99219,-4.01563 3.05078,-1.70703 7.95117,3.29297 0.94922,3.36524 -1.43164,4.24609 -0.0859,1.36914 0.76563,3.80664 2.8418,5.72852 1.03125,1.17187 2.92968,0.28711 2.93164,-0.28711 1.03125,-1.17187 2.8418,-5.72852 0.76563,-3.80664 -0.0859,-1.36914 -1.43164,-4.24609 0.94922,-3.36524 7.95117,-3.29297 3.05078,1.70703 1.99219,4.01563 0.90625,1.0293 3.23437,2.15039 6.0586,2.04101 1.55664,0.0977 v 0.002 l 2.27734,-1.86914 1.86719,-2.27539 -0.0977,-1.55664 -2.04297,-6.06055 -2.14843,-3.23437 -1.0293,-0.90625 -4.01563,-1.99024 -1.70703,-3.05078 3.29297,-7.95117 3.36524,-0.94922 4.24609,1.42969 1.36914,0.0879 3.80664,-0.76758 5.72852,-2.83984 1.16992,-1.03321 0.28906,-2.92968 -0.28906,-2.92969 -1.16992,-1.03125 -5.72852,-2.8418 -3.80664,-0.76562 -1.36914,0.0859 -4.24609,1.43165 -3.36524,-0.94922 -3.29297,-7.95117 1.70703,-3.05079 4.01563,-1.99218 1.0293,-0.90625 2.14843,-3.23438 2.04297,-6.05859 0.0977,-1.55664 -1.86719,-2.27735 -2.27734,-1.86718 -1.55664,0.0996 -6.0586,2.04102 -3.23437,2.14844 -0.90625,1.03125 L 352,144 l -3.05078,1.70703 -7.95117,-3.29297 -0.94922,-3.36523 1.43164,-4.2461 0.0859,-1.36914 -0.76563,-3.80664 -2.8418,-5.72851 -1.03125,-1.17188 z m 0,36.78516 2.35743,0.24804 2.25586,0.73242 2.05273,1.1836 1.76172,1.58594 1.39258,1.91796 0.96484,2.16602 0.49219,2.31836 v 2.37109 l -0.49219,2.31836 -0.96484,2.16602 -1.39258,1.91797 -1.76172,1.58594 -2.05273,1.18359 -2.25586,0.73437 -2.35743,0.2461 -2.35742,-0.2461 -2.2539,-0.73437 -2.05274,-1.18359 -1.76172,-1.58594 -1.39258,-1.91797 -0.96484,-2.16602 -0.49219,-2.31836 V 169.375 l 0.49219,-2.31836 0.96484,-2.16602 1.39258,-1.91796 1.76172,-1.58594 2.05274,-1.1836 2.2539,-0.73242 z"
+ transform="translate(-333.99702,951.95909)"
+ id="path4996"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g5002"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ id="g5080"
+ transform="matrix(0.34754475,0.07995379,-0.07995379,0.34754475,170.06814,-138.86251)"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g5060"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="rotate(7.7315343,-53.927495,1106.153)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 286.00195,248.30078 -2.95117,0.70899 -2.80469,1.16211 -0.71093,2.08007 -0.68946,5.7168 0.33399,3.74023 0.47851,1.54883 0.29102,0.33399 2.10156,4.01758 -0.1914,2.79882 -6.9629,5.0586 -2.7207,-0.6836 -3.17187,-3.23828 -0.22657,-0.38086 -1.32617,-0.93359 -3.45312,-1.47266 -5.65039,-1.11133 -2.19922,0.0332 -1.97071,2.30859 -1.58593,2.58789 0.64648,2.10156 2.80274,5.03125 2.46875,2.82813 1.29687,0.97266 0.43359,0.0996 4.06055,2.01367 1.49024,2.37695 -2.65821,8.18555 -2.60547,1.04492 -4.46875,-0.75586 -0.4082,-0.17383 -1.61914,0.0254 -3.66016,0.83594 -5.22461,2.42383 -1.75976,1.31836 -0.23828,3.02734 0.23828,3.02539 1.75976,1.31836 5.22461,2.42383 3.66016,0.83789 1.61914,0.0234 0.4082,-0.17383 4.46875,-0.75586 2.60547,1.04492 2.65821,8.18555 -1.49024,2.37695 -4.06055,2.01563 -0.43359,0.0976 -1.29687,0.97266 -2.46875,2.82812 -2.80274,5.03321 -0.64648,2.09961 1.58593,2.58789 1.97071,2.30859 2.19922,0.0332 5.65039,-1.10937 3.45312,-1.47461 1.32617,-0.93164 0.22657,-0.38281 3.17187,-3.23829 2.7207,-0.68359 6.9629,5.05859 0.1914,2.79883 -2.10156,4.01758 -0.29102,0.33399 -0.47851,1.54882 -0.33399,3.74024 0.68946,5.7168 0.71093,2.08007 2.80469,1.16211 2.95117,0.70899 1.79883,-1.26563 3.91797,-4.2207 1.92773,-3.22266 0.5254,-1.53125 -0.041,-0.44336 0.66211,-4.48437 1.79883,-2.15235 h 8.60742 l 1.79883,2.15235 0.66211,4.48437 -0.0391,0.44336 0.52344,1.53125 1.92774,3.22266 3.91796,4.2207 1.79883,1.26563 2.95117,-0.70899 2.80469,-1.16211 0.71094,-2.08007 0.68945,-5.7168 -0.33398,-3.74024 -0.47656,-1.54882 -0.29297,-0.33399 -2.09961,-4.01758 0.18945,-2.79883 6.96289,-5.05859 2.7207,0.68359 3.17188,3.23829 0.22851,0.38281 1.32422,0.93164 3.45313,1.47461 5.65234,1.10937 2.19727,-0.0332 1.9707,-2.30859 1.58594,-2.58789 -0.64649,-2.09961 -2.80273,-5.03321 -2.46875,-2.82812 -1.29687,-0.97266 -0.4336,-0.0976 -4.05859,-2.01563 -1.49219,-2.37695 2.66016,-8.18555 2.60351,-1.04492 4.46875,0.75586 0.4082,0.17383 1.6211,-0.0234 3.66016,-0.83789 5.2246,-2.42383 1.75782,-1.31836 0.23828,-3.02539 -0.23828,-3.02734 -1.75782,-1.31836 -5.2246,-2.42383 -3.66016,-0.83594 -1.6211,-0.0254 -0.4082,0.17383 -4.46875,0.75586 -2.60351,-1.04492 L 336,288 l 1.49219,-2.37695 4.05859,-2.01367 0.4336,-0.0996 1.29687,-0.97266 2.46875,-2.82813 2.80273,-5.03125 0.64649,-2.10156 -1.58594,-2.58789 -1.9707,-2.30859 -2.19727,-0.0332 -5.65234,1.11133 -3.45313,1.47266 -1.32422,0.93359 -0.22851,0.38086 -3.17188,3.23828 -2.7207,0.6836 -6.96289,-5.0586 -0.18945,-2.79882 2.09961,-4.01758 0.29297,-0.33399 0.47656,-1.54883 0.33398,-3.74023 -0.68945,-5.7168 -0.71094,-2.08007 -2.80469,-1.16211 -2.95117,-0.70899 -1.79883,1.26563 -3.91796,4.2207 -1.92774,3.22266 -0.52344,1.53125 0.0391,0.44336 -0.66211,4.48437 -1.79883,2.15234 h -8.60742 l -1.79883,-2.15234 -0.66211,-4.48437 0.041,-0.44336 -0.5254,-1.53125 -1.92773,-3.22266 -3.91797,-4.2207 z m 14.89453,44.29102 2.35743,0.24804 2.2539,0.73243 2.05274,1.18554 1.76172,1.58594 1.39257,1.91797 0.96485,2.16601 0.49219,2.31836 v 2.36914 l -0.49219,2.31836 -0.96485,2.16602 -1.39257,1.91797 -1.76172,1.58594 -2.05274,1.18554 -2.2539,0.73242 -2.35743,0.24805 -2.35742,-0.24805 -2.25586,-0.73242 -2.05273,-1.18554 -1.76172,-1.58594 -1.39258,-1.91797 -0.96484,-2.16602 -0.49219,-2.31836 v -2.36914 l 0.49219,-2.31836 0.96484,-2.16601 1.39258,-1.91797 1.76172,-1.58594 2.05273,-1.18554 2.25586,-0.73243 z"
+ transform="translate(-300.89576,818.58899)"
+ id="path5056"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g5062"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/android/icons/down.svg b/android/icons/down.svg
new file mode 100644
index 000000000..190e7e875
--- /dev/null
+++ b/android/icons/down.svg
@@ -0,0 +1,542 @@
+<?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="down.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/down.png"
+ inkscape:export-xdpi="48.000004"
+ inkscape:export-ydpi="48.000004">
+ <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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.49497475"
+ inkscape:cx="-237.64887"
+ inkscape:cy="241.15373"
+ 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-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" />
+ <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> <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.018648,43.065371 V 56.520637 L 67.733324,92.401356 118.44801,56.520637 V 43.065371 Z"
+ id="path5426"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/drop_btn.svg b/android/icons/drop_btn.svg
new file mode 100644
index 000000000..7cb0e8532
--- /dev/null
+++ b/android/icons/drop_btn.svg
@@ -0,0 +1,173 @@
+<?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="drop_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/drop_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>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.49497475"
+ inkscape:cx="-435.15132"
+ inkscape:cy="209.28829"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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:0.50196078;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 21.166666,29.761616 21.166667,-7.055555 21.166666,7.055555 -21.166666,8.338385 z"
+ id="path4693"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.25098039;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 21.166666,30.40303 v 26.939394 l 21.166667,7.69697 V 38.099999 Z"
+ id="path4699"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.0627451;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 42.333333,38.099999 v 26.939395 l 21.166666,-7.69697 V 30.40303 Z"
+ id="path4701"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 110.06667,110.06667 H 67.733332"
+ id="path4727"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 88.899999,97.366665 0,-16.933331 C 89.263773,55.921256 75.773505,47.130445 55.033333,46.566666"
+ id="path4729"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 101.6,84.666667 -12.700001,12.699998 -12.7,-12.699998"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/fast_btn.svg b/android/icons/fast_btn.svg
new file mode 100644
index 000000000..1436596b7
--- /dev/null
+++ b/android/icons/fast_btn.svg
@@ -0,0 +1,190 @@
+<?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="fast_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/fast_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>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-123.33594"
+ inkscape:cy="234.93088"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 52.349702,78.770237 c 8.223364,2.478851 17.933206,1.627099 22.678571,-5.85863 L 86.367558,52.311904"
+ id="path4630"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 99.195826,95.244627 C 95.407287,83.585464 90.120793,78.524425 79.752975,74.045534 L 90.856024,53.96555"
+ id="path4632"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 64.539433,56.942114 c 4.52339,-7.945233 16.596076,-10.248496 24.001489,-4.535715 6.443481,4.79704 18.068938,2.827548 22.314838,-3.012345"
+ id="path4495"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <ellipse
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.947;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4496"
+ cx="95.061012"
+ cy="40.783634"
+ rx="6.9582553"
+ ry="7.1472435" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 47.624999,35.454168 1.058334,-1.5875 h 29.633333 l -0.921774,1.663097 z"
+ id="path4509"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 21.030106,52.841071 1.058334,-1.5875 h 29.633333 l -0.921774,1.663097 z"
+ id="path4509-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 29.496773,69.774404 1.058334,-1.5875 H 60.18844 l -0.921774,1.663097 z"
+ id="path4509-56"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 18.91344,88.824411 1.058334,-1.5875 h 29.633333 l -0.921774,1.66309 z"
+ id="path4509-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/android/icons/fly_btn.svg b/android/icons/fly_btn.svg
new file mode 100644
index 000000000..d203842d4
--- /dev/null
+++ b/android/icons/fly_btn.svg
@@ -0,0 +1,168 @@
+<?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="fly_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/fly_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>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="53.55965"
+ inkscape:cy="198.9488"
+ 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="false"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-to-guides="false">
+ <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:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593108 109.83886,56.716287 83.057927,68.798408 75.262818,96.914386 71.580388,74.83947 44.799461,86.921586 25.670229,38.593108"
+ id="path4666"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593106 71.580388,74.839464"
+ id="path4668"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593106 83.057927,68.798404"
+ id="path4670"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 75.262817,96.914386 60.102847,80.880526"
+ id="path4672"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/android/icons/gear_icon.svg b/android/icons/gear_icon.svg
new file mode 100644
index 000000000..b44685ade
--- /dev/null
+++ b/android/icons/gear_icon.svg
@@ -0,0 +1,194 @@
+<?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="gear_icon.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/gear_icon.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path4687"
+ 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="path4690"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4692"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4694"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-3">
+ <path
+ id="path4756"
+ 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-6"
+ height="8">
+ <path
+ id="path4759"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4761"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4763"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.5"
+ inkscape:cx="-308.644"
+ inkscape:cy="171.10144"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ 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-page="true"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-object-midpoints="true"
+ inkscape:snap-to-guides="false"
+ inkscape:showpageshadow="false"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:object-nodes="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="2.1166666"
+ spacingy="2.1166666"
+ empspacing="2"
+ 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:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <g
+ id="g4792"
+ transform="matrix(0.68725287,0,0,0.65623884,67.477909,-509.24679)"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g4772"
+ inkscape:label="OpenJsCad"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 256,80.943359 -8.28125,0.72461 -3.63477,5.410156 -5.61328,12.685547 -2.28906,9.259768 -0.35156,5.1875 0.0937,0.86133 0.70703,2.44726 0.60547,9.80664 -2.66602,5.47461 -21.5957,5.78711 -5.04492,-3.40625 -4.37696,-8.79687 -0.61132,-2.47071 -0.35157,-0.79297 -2.89648,-4.31836 -6.60938,-6.87304 -11.20507,-8.17969 -5.84961,-2.86719 -7.53516,3.51367 -6.80859,4.76954 -0.44336,6.50195 1.48047,13.79297 2.64453,9.16406 2.28906,4.66992 0.51172,0.69922 1.83398,1.76563 5.42774,8.18945 0.42773,6.07422 -15.81054,15.81445 -6.07032,-0.42773 -8.18945,-5.42969 -1.76367,-1.83399 -0.69922,-0.51171 -4.66992,-2.28907 -9.15821,-2.64843 -13.79297,-1.47852 -6.5,0.44141 -4.76757,6.8125 -3.51367,7.53515 2.86914,5.85157 8.17382,11.20703 6.87305,6.61132 4.31641,2.90039 0.79297,0.34961 2.4707,0.61133 8.79492,4.37696 3.4043,5.04687 -5.78516,21.60156 -5.47265,2.66602 -9.80469,-0.60547 -2.44727,-0.70703 -0.85937,-0.0918 -5.1875,0.35156 -9.257816,2.28907 -12.68164,5.61523 -5.408203,3.63281 -0.72461,8.28516 0.72461,8.28516 5.408203,3.63281 12.68164,5.61523 9.257816,2.28907 5.1875,0.35156 0.85937,-0.0918 2.44727,-0.70703 9.80469,-0.60547 5.47265,2.66602 5.78516,21.60156 -3.4043,5.04687 -8.79492,4.37696 -2.4707,0.61133 -0.79297,0.34961 -4.31641,2.90039 -6.87305,6.61132 -8.17382,11.20703 -2.86914,5.85157 3.51367,7.53515 4.76757,6.8125 6.5,0.44141 13.79297,-1.47852 9.15821,-2.64843 4.66992,-2.28907 0.69922,-0.50976 1.76367,-1.83594 8.18945,-5.42969 6.07032,-0.42773 15.81054,15.81445 -0.42773,6.07422 -5.42774,8.18945 -1.83398,1.76563 -0.51172,0.69922 -2.28906,4.66992 -2.64453,9.16406 -1.48047,13.79297 0.44336,6.50195 6.80859,4.76758 7.53516,3.51758 5.84961,-2.86914 11.20507,-8.17969 6.60938,-6.87304 2.89648,-4.31836 0.35157,-0.79297 0.61132,-2.47071 4.37696,-8.79687 5.04492,-3.40625 21.5957,5.78711 2.66602,5.47461 -0.60547,9.80664 -0.70703,2.44726 -0.0937,0.85938 0.35156,5.18945 2.28906,9.25977 5.61328,12.68555 3.63477,5.41015 8.28125,0.72461 8.28125,-0.72461 3.63477,-5.41015 5.61328,-12.68555 2.28906,-9.25977 0.35156,-5.18945 -0.0937,-0.85938 -0.70703,-2.44726 -0.60547,-9.80664 2.66602,-5.47461 21.5957,-5.78711 5.04492,3.40625 4.37696,8.79687 0.61132,2.47071 0.35157,0.79297 2.89648,4.31836 6.60938,6.87304 11.20507,8.17969 5.84961,2.86914 7.53516,-3.51758 6.80859,-4.76758 0.44336,-6.50195 -1.48047,-13.79297 -2.64453,-9.16406 -2.28906,-4.66992 -0.51172,-0.69922 -1.83398,-1.76563 -5.42774,-8.18945 -0.42773,-6.07422 15.81054,-15.81445 6.07032,0.42773 8.18945,5.42969 1.76367,1.83594 0.69922,0.50976 4.66992,2.28907 9.15821,2.64843 13.79297,1.47852 6.5,-0.44141 v -0.002 l 4.76757,-6.81055 3.51367,-7.53711 -2.86914,-5.85156 -8.17382,-11.20508 -6.87305,-6.61328 -4.31641,-2.89843 -0.79297,-0.34961 -2.4707,-0.61133 -8.79492,-4.37891 -3.4043,-5.04492 5.78516,-21.60352 5.47265,-2.66797 9.80469,0.60938 2.44727,0.70703 0.85937,0.0918 5.1875,-0.35156 9.25782,-2.28907 12.68164,-5.61718 5.4082,-3.63282 0.72461,-8.28515 -0.72461,-8.28321 -5.4082,-3.63476 -12.68164,-5.61524 -9.25782,-2.28711 -5.1875,-0.35351 -0.85937,0.0937 -2.44727,0.70508 -9.80469,0.60937 -5.47265,-2.66797 -5.78516,-21.59961 3.4043,-5.04882 8.79492,-4.37696 2.4707,-0.61133 0.79297,-0.35156 4.31641,-2.89844 6.87305,-6.61132 8.17382,-11.20703 2.86914,-5.85157 -3.51367,-7.53711 -4.76757,-6.81054 -6.5,-0.44336 -13.79297,1.48047 -9.15821,2.64648 -4.66992,2.28906 -0.69922,0.51172 -1.76367,1.83594 -8.18945,5.42773 -6.07032,0.42774 -15.81054,-15.81446 0.42773,-6.07226 5.42774,-8.18945 1.83398,-1.76563 0.51172,-0.69922 2.28906,-4.67187 2.64453,-9.16016 1.48047,-13.79492 -0.44336,-6.50195 -6.80859,-4.76954 -7.53516,-3.51562 -5.84961,2.87109 -11.20507,8.17578 -6.60938,6.875 -2.89648,4.31836 -0.35157,0.79102 -0.61132,2.47266 -4.37696,8.79687 -5.04492,3.4082 -21.5957,-5.79101 -2.66602,-5.47266 0.60547,-9.80664 0.70703,-2.44726 0.0937,-0.85938 -0.35156,-5.19141 -2.28906,-9.259761 -5.61328,-12.683594 -3.63477,-5.412109 z m 0,97.111331 A 77.946197,77.946197 0 0 1 333.94531,256 77.946197,77.946197 0 0 1 256,333.94531 77.946197,77.946197 0 0 1 178.05469,256 77.946197,77.946197 0 0 1 256,178.05469 Z"
+ transform="matrix(0.38495268,0,0,0.40318156,-98.176247,1022.1341)"
+ id="path4768"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g4774"
+ inkscape:label="0"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/android/icons/inventory_btn.svg b/android/icons/inventory_btn.svg
new file mode 100644
index 000000000..ee3dc3c17
--- /dev/null
+++ b/android/icons/inventory_btn.svg
@@ -0,0 +1,509 @@
+<?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="inventory_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/inventory_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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="51.254762"
+ inkscape:cy="221.96083"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <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" />
+ <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> <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028"
+ width="21.166668"
+ height="21.166664"
+ x="27.516666"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-1"
+ width="21.166668"
+ height="21.166664"
+ x="27.516665"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6-7"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2-8"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-5"
+ width="21.166668"
+ height="21.166664"
+ x="27.516666"
+ y="86.783333" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6-74"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="86.783333" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2-1"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="86.783333" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_bg.svg b/android/icons/joystick_bg.svg
new file mode 100644
index 000000000..d8836b358
--- /dev/null
+++ b/android/icons/joystick_bg.svg
@@ -0,0 +1,876 @@
+<?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="joystick_bg.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_bg.png"
+ inkscape:export-xdpi="144.00002"
+ inkscape:export-ydpi="144.00002">
+ <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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <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="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ 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="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ 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="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ 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="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ 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="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ 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="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="142.53646"
+ inkscape:cy="181.89104"
+ 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: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" />
+ <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> <circle
+ style="fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:1.99994016;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898"
+ cx="67.733498"
+ cy="67.73317"
+ r="66.733528" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_center.svg b/android/icons/joystick_center.svg
new file mode 100644
index 000000000..17202290a
--- /dev/null
+++ b/android/icons/joystick_center.svg
@@ -0,0 +1,877 @@
+<?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="joystick_center.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_center.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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <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="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ 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="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ 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="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ 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="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ 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="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ 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="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="170.02349"
+ inkscape:cy="266.32864"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="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" />
+ <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> <ellipse
+ style="display:inline;fill:#ffffff;fill-opacity:0.31372549;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.62745098"
+ id="path5898-8"
+ cx="67.733505"
+ cy="67.73317"
+ rx="64.816437"
+ ry="64.816429" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_off.svg b/android/icons/joystick_off.svg
new file mode 100644
index 000000000..58e1acf22
--- /dev/null
+++ b/android/icons/joystick_off.svg
@@ -0,0 +1,882 @@
+<?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="joystick_off.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_off.png"
+ inkscape:export-xdpi="96.000008"
+ inkscape:export-ydpi="96.000008">
+ <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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <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="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ 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="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ 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="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ 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="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ 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="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ 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="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.1361742"
+ inkscape:cx="47.851245"
+ inkscape:cy="254.8605"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="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" />
+ <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> <circle
+ style="fill:none;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:1.99994016;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898"
+ cx="67.731476"
+ cy="67.735199"
+ r="66.733528" />
+ <circle
+ style="display:inline;fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898-8"
+ cx="68.06868"
+ cy="67.452492"
+ r="22.219723" />
+ </g>
+</svg>
diff --git a/android/icons/jump_btn.svg b/android/icons/jump_btn.svg
new file mode 100644
index 000000000..882c49ed7
--- /dev/null
+++ b/android/icons/jump_btn.svg
@@ -0,0 +1,547 @@
+<?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="jump_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/jump_btn.png"
+ inkscape:export-xdpi="48.000004"
+ inkscape:export-ydpi="48.000004">
+ <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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="128.02635"
+ inkscape:cy="237.11312"
+ 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-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="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <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" />
+ <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> <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.018648,92.401289 V 78.946023 L 67.733324,43.065304 118.44801,78.946023 v 13.455266 z"
+ id="path5426"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/minimap_btn.svg b/android/icons/minimap_btn.svg
new file mode 100644
index 000000000..deda32717
--- /dev/null
+++ b/android/icons/minimap_btn.svg
@@ -0,0 +1,159 @@
+<?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="minimap_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/minimap_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>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.56808711"
+ inkscape:cx="140.1995"
+ inkscape:cy="242.801"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.4,25.400001 52.859457,36.945456 V 110.06667 L 25.4,98.521213 Z"
+ id="path4857"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 82.607193,25.496213 110.06667,37.041668 V 110.16289 L 82.607192,98.617425 Z"
+ id="path4857-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 52.859457,36.900035 82.607203,25.400001 V 98.233546 L 52.859457,109.73359 Z"
+ id="path4857-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/android/icons/noclip_btn.svg b/android/icons/noclip_btn.svg
new file mode 100644
index 000000000..a816edfc7
--- /dev/null
+++ b/android/icons/noclip_btn.svg
@@ -0,0 +1,173 @@
+<?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="noclip_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/noclip_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>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="166.57784"
+ inkscape:cy="222.80905"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 20.760344,79.838021 c 8.223364,2.478851 17.933206,1.627099 22.678571,-5.85863 L 54.7782,53.379688"
+ id="path4630"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 67.606468,96.312411 C 63.817929,84.653248 58.531435,79.592209 48.163617,75.113318 L 59.266666,55.033334"
+ id="path4632"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 32.950075,58.009898 c 4.52339,-7.945233 16.596076,-10.248496 24.001489,-4.535715 6.443481,4.79704 18.068938,2.827548 22.314838,-3.012345"
+ id="path4495"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <ellipse
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.94658476;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4496"
+ cx="63.471653"
+ cy="41.851418"
+ rx="6.9582553"
+ ry="7.1472435" />
+ <rect
+ style="fill:#ffffff;fill-opacity:0.25098041;stroke:#ffffff;stroke-width:1.668;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4645"
+ width="71.966667"
+ height="76.199997"
+ x="41.166401"
+ y="29.295174" />
+ </g>
+</svg>
diff --git a/android/icons/rangeview_btn.svg b/android/icons/rangeview_btn.svg
new file mode 100644
index 000000000..f9319e0b5
--- /dev/null
+++ b/android/icons/rangeview_btn.svg
@@ -0,0 +1,456 @@
+<?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="rangeview_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/rangeview_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" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="166.63539"
+ inkscape:cy="248.08632"
+ inkscape:document-units="mm"
+ inkscape:current-layer="svg8"
+ 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="false">
+ <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;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 150.08631,391.94585 C 127.2399,389.49917 105.94293,375.91818 94.0332,356.20102 86.417382,343.59265 83.080086,330.51463 83.588961,315.27269 c 0.288383,-8.63772 1.22906,-14.19631 3.585813,-21.18907 0.744516,-2.20907 10.578738,-22.66466 21.853826,-45.45687 11.27509,-22.79221 22.70752,-45.91291 25.4054,-51.37934 5.65921,-11.46666 7.92364,-14.85355 13.47663,-20.15687 9.3888,-8.96668 21.0224,-13.60185 34.10046,-13.58663 15.57027,0.0181 29.17184,6.54335 38.91458,18.66892 4.42466,5.50682 7.71172,12.24131 9.40778,19.27457 l 1.32267,5.48487 1.89404,7.6e-4 c 1.80502,7.5e-4 1.89404,-0.0773 1.89404,-1.66087 0,-2.38449 1.37433,-7.32366 2.62141,-9.42102 4.34092,-7.30059 13.17739,-11.60831 20.98951,-10.23223 8.90426,1.56845 16.14022,8.89813 17.09233,17.31369 l 0.3384,2.99108 h 1.90437 1.90437 l 0.82037,-3.6618 c 1.97195,-8.80199 6.717,-17.42698 13.15423,-23.91027 6.44087,-6.48695 14.23724,-11.09036 22.74482,-13.4298 3.44476,-0.94724 5.34406,-1.11181 12.87945,-1.11592 8.2237,-0.004 9.15393,0.0921 13.36642,1.38764 11.19974,3.4445 21.27498,10.65667 27.47414,19.66684 2.43995,3.54634 51.82554,103.72263 53.56888,108.66187 4.86293,13.77773 5.3328,30.48234 1.25486,44.6126 -7.75149,26.85937 -29.41571,46.87461 -57.03616,52.69485 -7.41065,1.56158 -20.20927,1.68497 -27.769,0.2677 -10.44443,-1.95808 -21.29618,-6.51537 -29.79851,-12.51414 -5.61285,-3.96011 -13.68691,-11.97138 -17.55818,-17.42164 -5.93008,-8.3488 -10.31705,-18.5166 -12.57558,-29.14677 -0.9513,-4.47749 -1.12676,-7.36003 -1.388,-22.80306 l -0.29904,-17.67767 -1.72317,-3.17794 c -1.98763,-3.66567 -6.54416,-8.1288 -10.17974,-9.97108 -3.00155,-1.521 -7.96438,-2.74331 -11.17947,-2.75342 -9.0329,-0.0284 -18.18038,5.63658 -22.00735,13.62902 l -1.57171,3.28243 -0.0408,14.1427 c -0.0539,18.69996 -0.78106,24.89804 -4.07384,34.72632 -2.2638,6.75698 -4.66197,11.60267 -8.86796,17.91843 -11.87929,17.83801 -31.39221,29.77252 -52.98796,32.40855 -4.28534,0.52308 -12.49549,0.62647 -16.41498,0.20673 z m 17.51181,-12.02116 c 24.5782,-3.98628 44.48858,-21.86418 50.90845,-45.71164 7.03076,-26.11666 -3.52165,-54.08171 -26.00322,-68.91142 -18.6353,-12.29256 -42.96948,-13.7508 -62.79635,-3.7631 -6.56442,3.3068 -10.82228,6.4025 -16.2475,11.81283 -12.18826,12.1548 -18.426507,27.20212 -18.426507,44.44671 0,16.25308 5.718027,30.90801 16.717117,42.84489 8.79197,9.54157 22.47266,17.01469 34.80066,19.00997 2.08344,0.33719 4.129,0.67988 4.54569,0.76152 2.33806,0.45809 12.52096,0.15587 16.50166,-0.48976 z m 199.67098,-0.46635 c 21.74737,-4.70543 39.22231,-19.90775 46.64822,-40.58158 4.67986,-13.02877 4.67986,-29.12861 0,-42.15737 -9.00601,-25.07287 -32.72555,-41.79925 -59.27512,-41.79925 -29.97234,0 -55.28352,20.70748 -61.73156,50.50356 -0.78837,3.64299 -1.03837,6.62229 -1.03837,12.37437 0,8.49596 0.94045,14.06163 3.61188,21.37559 7.82601,21.42637 26.67144,37.08767 49.05652,40.76791 5.46425,0.89835 17.52859,0.64186 22.72843,-0.48323 z M 237.11052,255.93654 c 2.061,-5.80288 9.76676,-11.6013 16.44795,-12.37673 8.46341,-0.98229 17.00015,3.70335 20.60499,11.30963 1.35941,2.86835 1.5302,3.0277 3.27087,3.05174 l 1.83657,0.0254 0.37277,-13.91749 c 0.20502,-7.65462 0.25259,-14.81346 0.10571,-15.90854 -0.81263,-6.05855 -6.90622,-13.74979 -13.24302,-16.71514 -12.19154,-5.70511 -26.74913,-0.60024 -32.61887,11.43837 -1.71657,3.52062 -1.72459,3.57069 -1.90176,11.8693 -0.0979,4.58356 -0.0177,11.79984 0.17822,16.03617 l 0.35614,7.70241 h 1.84858 c 1.76097,0 1.89091,-0.11919 2.74185,-2.51507 z"
+ id="path7617"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 226.35138,166.86581 c -8.68374,-8.45091 -19.24579,-14.06812 -31.56582,-16.78764 -1.94455,-0.42924 -6.62953,-0.91183 -10.41107,-1.07243 l -6.87554,-0.29199 3.79476,-8.23483 c 4.15041,-9.00661 6.33398,-12.02822 10.83115,-14.98806 5.73143,-3.77218 12.11755,-5.07486 18.37716,-3.74869 6.79635,1.43989 12.12205,4.97666 15.80992,10.49928 3.65897,5.47936 4.06888,7.72634 4.43093,24.289 0.17485,7.99863 0.22458,14.53663 0.11051,14.52888 -0.11408,-0.008 -2.13997,-1.89483 -4.502,-4.19352 z"
+ id="path7619"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 281.04946,156.67874 c 0.29695,-15.67547 0.53041,-17.35662 3.11733,-22.44879 1.64145,-3.23106 6.08971,-7.81924 9.49653,-9.79523 1.32451,-0.76823 4.2792,-1.87338 6.56599,-2.45589 3.62852,-0.92429 4.68255,-0.99503 8.28005,-0.55573 6.90922,0.84371 13.7575,4.77525 17.28082,9.92078 1.38217,2.01854 8.14389,16.19869 8.14389,17.07872 0,0.2351 -2.10238,0.42837 -4.67196,0.42949 -8.99282,0.004 -18.25222,2.12274 -26.55807,6.0773 -7.17709,3.41713 -11.63607,6.48677 -17.19557,11.83773 l -4.73649,4.55883 z"
+ id="path7621"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ id="g7475"
+ inkscape:label="0"
+ transform="matrix(0.14221997,0,0,0.14221997,-31.981034,55.479631)"
+ style="stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round">
+ <path
+ id="path7425"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 394.42769,131.14785 a 142.37722,142.37722 0 1 0 266.38087,69.95976"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7433"
+ style="fill:none;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
+ d="M 658.56907,-59.664378 A 115.98533,115.98533 0 0 0 548.79351,-108.70519 m 108.73351,-11.03878 1.04205,60.079592 m -1.04205,-60.079592 a 49.685709,49.685709 0 0 0 -92.6985,-23.81259 m 0,0 -16.03501,34.85137" />
+ <path
+ id="path7435"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 660.1707,35.074784 0.45347,54.803856"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7437"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 474.48909,-30.517229 387.62757,144.87909"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7439"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 659.19164,-5.530313 A 96.39108,96.39108 0 0 0 474.48909,-30.517229"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7441"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 740.97478,202.17383 A 142.37722,142.37722 0 1 0 1007.3517,131.14785"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7449"
+ style="fill:none;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
+ d="m 852.98584,-108.70519 a 115.98533,115.98533 0 0 0 -109.77556,49.040812 m 1.04205,-60.079592 -1.04205,60.079592 m 93.74055,-83.892182 a 49.685709,49.685709 0 0 0 -92.6985,23.81259 m 92.6985,-23.81259 16.03501,34.85137" />
+ <path
+ id="path7451"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 741.61776,33.973249 -0.4549,54.976979"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7453"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 927.29026,-30.517229 1014.1518,144.87909"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7455"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 927.29026,-30.517229 A 96.39108,96.39108 0 0 0 742.8897,-7.745832"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7457"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 741.16286,88.950228 A 41.867624,41.867624 0 0 0 660.62417,89.87864"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7459"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 740.61905,154.67245 a 41.867624,41.867624 0 0 0 -79.45215,0.79683"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7461"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 742.8897,-7.745832 a 41.867624,41.867624 0 1 0 -83.69806,2.215519"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7463"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 741.61776,33.973249 A 41.867624,41.867624 0 0 0 660.1707,35.074784"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7465"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 660.80856,201.10761 0.35834,-45.63833"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7467"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 740.97478,202.17383 -0.35573,-47.50138"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7471"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 631.81717,201.10761 a 113.38583,113.38583 0 1 0 -226.77166,0 113.38583,113.38583 0 1 0 226.77166,0 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7473"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 997.9874,201.10761 a 113.38583,113.38583 0 1 0 -226.77166,0 113.38583,113.38583 0 1 0 226.77166,0 z"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ id="path7469"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="m 70.34536,79.242709 a 2.6876219,2.6876219 0 1 0 -5.375243,0 2.6876219,2.6876219 0 1 0 5.375243,0 z"
+ inkscape:connector-curvature="0" />
+</svg>
diff --git a/android/icons/rare_controls.svg b/android/icons/rare_controls.svg
new file mode 100644
index 000000000..c9991ec7a
--- /dev/null
+++ b/android/icons/rare_controls.svg
@@ -0,0 +1,521 @@
+<?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="256"
+ height="512"
+ viewBox="0 0 67.73333 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="rare_controls.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/rare_controls.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"
+ k3="0"
+ k4="0" />
+ <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"
+ 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"
+ k3="0"
+ k4="0" />
+ <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"
+ 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"
+ k3="0"
+ k4="0" />
+ <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"
+ 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"
+ refX="0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000;stroke-width:0.5"
+ d="M 3,-3 -3,3 M 0,-5 V 5"
+ inkscape:connector-curvature="0" />
+ </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"
+ k3="0"
+ k4="0" />
+ <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"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-59.862018"
+ inkscape:cy="260.34663"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <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="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <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" />
+ <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> <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9"
+ width="25.4"
+ height="25.400003"
+ x="21.166666"
+ y="101.6" />
+ <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9-7"
+ width="25.4"
+ height="25.400003"
+ x="21.166666"
+ y="55.033333" />
+ <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9-5"
+ width="25.4"
+ height="25.400003"
+ x="21.166664"
+ y="8.4666681" />
+ </g>
+</svg>
diff --git a/android/icons/zoom.svg b/android/icons/zoom.svg
new file mode 100644
index 000000000..ea8dec3c5
--- /dev/null
+++ b/android/icons/zoom.svg
@@ -0,0 +1,599 @@
+<?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="zoom.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/zoom.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>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4664">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4650" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4652" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(255,0,0)"
+ result="flood1"
+ id="feFlood4654" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4656" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4658" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4660" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4662" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="142.16849"
+ inkscape:cy="213.87961"
+ 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="true"
+ inkscape:snap-page="true"
+ showguides="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="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <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" />
+ <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> <ellipse
+ style="display:inline;fill:none;fill-opacity:0.31372549;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4672"
+ cx="56.858261"
+ cy="57.228764"
+ rx="27.848776"
+ ry="27.594934" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 71.702072,80.367223 80.697906,71.427111 110.06667,101.6 l -8.73126,8.9401 z"
+ id="path4689"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/keystore-minetest.jks b/android/keystore-minetest.jks
new file mode 100644
index 000000000..8fce68bbb
--- /dev/null
+++ b/android/keystore-minetest.jks
Binary files differ
diff --git a/android/native/build.gradle b/android/native/build.gradle
new file mode 100644
index 000000000..90e4fe2e7
--- /dev/null
+++ b/android/native/build.gradle
@@ -0,0 +1,69 @@
+apply plugin: 'com.android.library'
+apply plugin: 'de.undercouch.download'
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion '30.0.3'
+ ndkVersion "$ndk_version"
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ externalNativeBuild {
+ ndkBuild {
+ arguments '-j' + Runtime.getRuntime().availableProcessors(),
+ "versionMajor=${versionMajor}",
+ "versionMinor=${versionMinor}",
+ "versionPatch=${versionPatch}",
+ "versionExtra=${versionExtra}",
+ "developmentBuild=${developmentBuild}"
+ }
+ }
+ }
+
+ externalNativeBuild {
+ ndkBuild {
+ path file('jni/Android.mk')
+ }
+ }
+
+ // supported architectures
+ splits {
+ abi {
+ enable true
+ reset()
+ include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
+ }
+ }
+
+ buildTypes {
+ release {
+ externalNativeBuild {
+ ndkBuild {
+ arguments 'NDEBUG=1'
+ }
+ }
+
+ ndk {
+ debugSymbolLevel 'SYMBOL_TABLE'
+ }
+ }
+ }
+}
+
+// get precompiled deps
+task downloadDeps(type: Download) {
+ src 'https://github.com/minetest/minetest_android_deps/releases/download/latest/deps.zip'
+ dest new File(buildDir, 'deps.zip')
+ overwrite false
+}
+
+task getDeps(dependsOn: downloadDeps, type: Copy) {
+ def deps = new File(buildDir.parent, 'deps')
+ if (!deps.exists()) {
+ deps.mkdir()
+ from zipTree(downloadDeps.dest)
+ into deps
+ }
+}
+
+preBuild.dependsOn getDeps
diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk
new file mode 100644
index 000000000..cd9326d4a
--- /dev/null
+++ b/android/native/jni/Android.mk
@@ -0,0 +1,301 @@
+LOCAL_PATH := $(call my-dir)/..
+
+#LOCAL_ADDRESS_SANITIZER:=true
+#USE_BUILTIN_LUA:=true
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Curl
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libcurl.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libmbedcrypto
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedcrypto.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libmbedtls
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedtls.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libmbedx509
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedx509.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Freetype
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Freetype/libfreetype.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Iconv
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Iconv/libiconv.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libcharset
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Iconv/libcharset.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Irrlicht
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libIrrlichtMt.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Irrlicht-libpng
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libpng.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Irrlicht-libjpeg
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libjpeg.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+ifndef USE_BUILTIN_LUA
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := LuaJIT
+LOCAL_SRC_FILES := deps/$(APP_ABI)/LuaJIT/libluajit.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+endif
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := OpenAL
+LOCAL_SRC_FILES := deps/$(APP_ABI)/OpenAL-Soft/libopenal.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Gettext
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Gettext/libintl.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := SQLite3
+LOCAL_SRC_FILES := deps/$(APP_ABI)/SQLite/libsqlite3.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Vorbis
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libvorbis.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libvorbisfile
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libvorbisfile.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libogg
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libogg.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Zstd
+LOCAL_SRC_FILES := deps/$(APP_ABI)/Zstd/libzstd.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Minetest
+
+LOCAL_CFLAGS += \
+ -DJSONCPP_NO_LOCALE_SUPPORT \
+ -DHAVE_TOUCHSCREENGUI \
+ -DENABLE_GLES=1 \
+ -DUSE_CURL=1 \
+ -DUSE_SOUND=1 \
+ -DUSE_LEVELDB=0 \
+ -DUSE_GETTEXT=1 \
+ -DVERSION_MAJOR=${versionMajor} \
+ -DVERSION_MINOR=${versionMinor} \
+ -DVERSION_PATCH=${versionPatch} \
+ -DVERSION_EXTRA=${versionExtra} \
+ -DDEVELOPMENT_BUILD=${developmentBuild} \
+ $(GPROF_DEF)
+
+ifdef USE_BUILTIN_LUA
+ LOCAL_CFLAGS += -DUSE_LUAJIT=0
+else
+ LOCAL_CFLAGS += -DUSE_LUAJIT=1
+endif
+
+ifdef NDEBUG
+ LOCAL_CFLAGS += -DNDEBUG=1
+endif
+
+ifdef GPROF
+ GPROF_DEF := -DGPROF
+ PROFILER_LIBS := android-ndk-profiler
+ LOCAL_CFLAGS += -pg
+endif
+
+LOCAL_C_INCLUDES := \
+ ../../src \
+ ../../src/script \
+ ../../lib/gmp \
+ ../../lib/jsoncpp \
+ deps/$(APP_ABI)/Curl/include \
+ deps/$(APP_ABI)/Freetype/include/freetype2 \
+ deps/$(APP_ABI)/Irrlicht/include \
+ deps/$(APP_ABI)/Gettext/include \
+ deps/$(APP_ABI)/Iconv/include \
+ deps/$(APP_ABI)/OpenAL-Soft/include \
+ deps/$(APP_ABI)/SQLite/include \
+ deps/$(APP_ABI)/Vorbis/include \
+ deps/$(APP_ABI)/Zstd/include
+
+ifdef USE_BUILTIN_LUA
+ LOCAL_C_INCLUDES += \
+ ../../lib/lua/src \
+ ../../lib/bitop
+else
+ LOCAL_C_INCLUDES += deps/$(APP_ABI)/LuaJIT/include
+endif
+
+LOCAL_SRC_FILES := \
+ $(wildcard ../../src/client/*.cpp) \
+ $(wildcard ../../src/client/*/*.cpp) \
+ $(wildcard ../../src/content/*.cpp) \
+ ../../src/database/database.cpp \
+ ../../src/database/database-dummy.cpp \
+ ../../src/database/database-files.cpp \
+ ../../src/database/database-sqlite3.cpp \
+ $(wildcard ../../src/gui/*.cpp) \
+ $(wildcard ../../src/irrlicht_changes/*.cpp) \
+ $(wildcard ../../src/mapgen/*.cpp) \
+ $(wildcard ../../src/network/*.cpp) \
+ $(wildcard ../../src/script/*.cpp) \
+ $(wildcard ../../src/script/*/*.cpp) \
+ $(wildcard ../../src/server/*.cpp) \
+ $(wildcard ../../src/threading/*.cpp) \
+ $(wildcard ../../src/util/*.c) \
+ $(wildcard ../../src/util/*.cpp) \
+ ../../src/ban.cpp \
+ ../../src/chat.cpp \
+ ../../src/clientiface.cpp \
+ ../../src/collision.cpp \
+ ../../src/content_mapnode.cpp \
+ ../../src/content_nodemeta.cpp \
+ ../../src/convert_json.cpp \
+ ../../src/craftdef.cpp \
+ ../../src/debug.cpp \
+ ../../src/defaultsettings.cpp \
+ ../../src/emerge.cpp \
+ ../../src/environment.cpp \
+ ../../src/face_position_cache.cpp \
+ ../../src/filesys.cpp \
+ ../../src/gettext.cpp \
+ ../../src/httpfetch.cpp \
+ ../../src/hud.cpp \
+ ../../src/inventory.cpp \
+ ../../src/inventorymanager.cpp \
+ ../../src/itemdef.cpp \
+ ../../src/itemstackmetadata.cpp \
+ ../../src/light.cpp \
+ ../../src/log.cpp \
+ ../../src/main.cpp \
+ ../../src/map.cpp \
+ ../../src/map_settings_manager.cpp \
+ ../../src/mapblock.cpp \
+ ../../src/mapnode.cpp \
+ ../../src/mapsector.cpp \
+ ../../src/metadata.cpp \
+ ../../src/modchannels.cpp \
+ ../../src/nameidmapping.cpp \
+ ../../src/nodedef.cpp \
+ ../../src/nodemetadata.cpp \
+ ../../src/nodetimer.cpp \
+ ../../src/noise.cpp \
+ ../../src/objdef.cpp \
+ ../../src/object_properties.cpp \
+ ../../src/particles.cpp \
+ ../../src/pathfinder.cpp \
+ ../../src/player.cpp \
+ ../../src/porting.cpp \
+ ../../src/porting_android.cpp \
+ ../../src/profiler.cpp \
+ ../../src/raycast.cpp \
+ ../../src/reflowscan.cpp \
+ ../../src/remoteplayer.cpp \
+ ../../src/rollback.cpp \
+ ../../src/rollback_interface.cpp \
+ ../../src/serialization.cpp \
+ ../../src/server.cpp \
+ ../../src/serverenvironment.cpp \
+ ../../src/serverlist.cpp \
+ ../../src/settings.cpp \
+ ../../src/staticobject.cpp \
+ ../../src/texture_override.cpp \
+ ../../src/tileanimation.cpp \
+ ../../src/tool.cpp \
+ ../../src/translation.cpp \
+ ../../src/version.cpp \
+ ../../src/voxel.cpp \
+ ../../src/voxelalgorithms.cpp
+
+# Built-in Lua
+ifdef USE_BUILTIN_LUA
+ LOCAL_SRC_FILES += \
+ ../../lib/lua/src/lapi.c \
+ ../../lib/lua/src/lauxlib.c \
+ ../../lib/lua/src/lbaselib.c \
+ ../../lib/lua/src/lcode.c \
+ ../../lib/lua/src/ldblib.c \
+ ../../lib/lua/src/ldebug.c \
+ ../../lib/lua/src/ldo.c \
+ ../../lib/lua/src/ldump.c \
+ ../../lib/lua/src/lfunc.c \
+ ../../lib/lua/src/lgc.c \
+ ../../lib/lua/src/linit.c \
+ ../../lib/lua/src/liolib.c \
+ ../../lib/lua/src/llex.c \
+ ../../lib/lua/src/lmathlib.c \
+ ../../lib/lua/src/lmem.c \
+ ../../lib/lua/src/loadlib.c \
+ ../../lib/lua/src/lobject.c \
+ ../../lib/lua/src/lopcodes.c \
+ ../../lib/lua/src/loslib.c \
+ ../../lib/lua/src/lparser.c \
+ ../../lib/lua/src/lstate.c \
+ ../../lib/lua/src/lstring.c \
+ ../../lib/lua/src/lstrlib.c \
+ ../../lib/lua/src/ltable.c \
+ ../../lib/lua/src/ltablib.c \
+ ../../lib/lua/src/ltm.c \
+ ../../lib/lua/src/lundump.c \
+ ../../lib/lua/src/lvm.c \
+ ../../lib/lua/src/lzio.c \
+ ../../lib/bitop/bit.c
+endif
+
+# GMP
+LOCAL_SRC_FILES += ../../lib/gmp/mini-gmp.c
+
+# JSONCPP
+LOCAL_SRC_FILES += ../../lib/jsoncpp/jsoncpp.cpp
+
+LOCAL_STATIC_LIBRARIES += \
+ Curl libmbedcrypto libmbedtls libmbedx509 \
+ Freetype \
+ Iconv libcharset \
+ Irrlicht Irrlicht-libpng Irrlicht-libjpeg \
+ OpenAL \
+ Gettext \
+ SQLite3 \
+ Vorbis libvorbisfile libogg \
+ Zstd
+ifndef USE_BUILTIN_LUA
+ LOCAL_STATIC_LIBRARIES += LuaJIT
+endif
+LOCAL_STATIC_LIBRARIES += android_native_app_glue $(PROFILER_LIBS)
+
+LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES -lz
+
+include $(BUILD_SHARED_LIBRARY)
+
+ifdef GPROF
+$(call import-module,android-ndk-profiler)
+endif
+$(call import-module,android/native_app_glue)
diff --git a/android/native/jni/Application.mk b/android/native/jni/Application.mk
new file mode 100644
index 000000000..9d9596137
--- /dev/null
+++ b/android/native/jni/Application.mk
@@ -0,0 +1,32 @@
+APP_PLATFORM := ${APP_PLATFORM}
+APP_ABI := ${TARGET_ABI}
+APP_STL := c++_shared
+NDK_TOOLCHAIN_VERSION := clang
+APP_SHORT_COMMANDS := true
+APP_MODULES := Minetest
+
+APP_CPPFLAGS := -O2 -fvisibility=hidden
+
+ifeq ($(APP_ABI),armeabi-v7a)
+APP_CPPFLAGS += -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
+endif
+
+ifeq ($(APP_ABI),x86)
+APP_CPPFLAGS += -mssse3 -mfpmath=sse -funroll-loops
+endif
+
+ifndef NDEBUG
+APP_CPPFLAGS := -g -Og -fno-omit-frame-pointer
+endif
+
+APP_CFLAGS := $(APP_CPPFLAGS) -Wno-inconsistent-missing-override -Wno-parentheses-equality
+APP_CXXFLAGS := $(APP_CPPFLAGS) -fexceptions -frtti -std=gnu++14
+APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
+
+ifeq ($(APP_ABI),arm64-v8a)
+APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections
+endif
+
+ifndef NDEBUG
+APP_LDFLAGS :=
+endif
diff --git a/android/native/src/main/AndroidManifest.xml b/android/native/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..19451c7fd
--- /dev/null
+++ b/android/native/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+<manifest package="net.minetest" />
diff --git a/build/android/settings.gradle b/android/settings.gradle
index a6e60c439..b048fca7c 100644
--- a/build/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,2 +1,2 @@
rootProject.name = "Minetest"
-
+include ':app', ':native'
diff --git a/build/android/Makefile b/build/android/Makefile
deleted file mode 100644
index 380296993..000000000
--- a/build/android/Makefile
+++ /dev/null
@@ -1,834 +0,0 @@
-# build options
-
-OS := $(shell uname)
-
-# compile with GPROF
-# GPROF = 1
-
-# build for build platform
-APP_PLATFORM = android-9
-
-ANDR_ROOT = $(shell pwd)
-PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..)
-APP_ROOT = $(ANDR_ROOT)/src/main
-
-GAMES_TO_COPY = minetest_game
-MODS_TO_COPY =
-
-
-VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
- grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ')
-VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
- grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ')
-VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
- grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ')
-
-################################################################################
-# toolchain config for arm new processors
-################################################################################
-TARGET_HOST = arm-linux
-TARGET_ABI = armeabi-v7a
-TARGET_LIBDIR = armeabi-v7a
-TARGET_TOOLCHAIN = arm-linux-androideabi-
-TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3
-TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
-TARGET_ARCH = armv7
-CROSS_PREFIX = arm-linux-androideabi-
-COMPILER_VERSION = 4.9
-HAVE_LEVELDB = 1
-
-################################################################################
-# toolchain config for little endian mips
-################################################################################
-#TARGET_HOST = mipsel-linux
-#TARGET_ABI = mips
-#TARGET_LIBDIR = mips
-#TARGET_TOOLCHAIN = mipsel-linux-android-
-#TARGET_ARCH = mips32
-#CROSS_PREFIX = mipsel-linux-android-
-#COMPILER_VERSION = 4.9
-#HAVE_LEVELDB = 0
-
-################################################################################
-# toolchain config for x86
-################################################################################
-#TARGET_HOST = x86-linux
-#TARGET_ABI = x86
-#TARGET_LIBDIR = x86
-#TARGET_TOOLCHAIN = x86-
-#CROSS_PREFIX = i686-linux-android-
-#TARGET_ARCH = x86
-#COMPILER_VERSION = 4.9
-#HAVE_LEVELDB = 1
-
-################################################################################
-ASSETS_TIMESTAMP = deps/assets_timestamp
-
-LEVELDB_DIR = $(ANDR_ROOT)/deps/leveldb/
-LEVELDB_LIB = $(LEVELDB_DIR)libleveldb.a
-LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp
-LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp
-LEVELDB_URL_GIT = https://github.com/google/leveldb
-LEVELDB_COMMIT = 2d0320a458d0e6a20fff46d5f80b18bfdcce7018
-
-OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft/
-OPENAL_LIB = $(OPENAL_DIR)libs/$(TARGET_ABI)/libopenal.so
-OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp
-OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp
-OPENAL_URL_GIT = https://github.com/apportable/openal-soft
-
-OGG_DIR = $(ANDR_ROOT)/deps/libvorbis-libogg-android/
-OGG_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
-VORBIS_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
-OGG_TIMESTAMP = $(OGG_DIR)timestamp
-OGG_TIMESTAMP_INT = $(ANDR_ROOT)/deps/ogg_timestamp
-OGG_URL_GIT = https://github.com/vincentjames501/libvorbis-libogg-android
-
-IRRLICHT_REVISION = 5122
-IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht/
-IRRLICHT_LIB = $(IRRLICHT_DIR)lib/Android/libIrrlicht.a
-IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)timestamp
-IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp
-IRRLICHT_URL_SVN = https://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION)
-
-OPENSSL_VERSION = 1.0.2h
-OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION)
-OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/
-OPENSSL_LIB = $(OPENSSL_DIR)/libssl.so.1.0.0
-OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp
-OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp
-OPENSSL_URL = https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz
-
-CURL_VERSION = 7.48.0
-CURL_DIR = $(ANDR_ROOT)/deps/curl-$(CURL_VERSION)
-CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a
-CURL_TIMESTAMP = $(CURL_DIR)/timestamp
-CURL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/curl_timestamp
-CURL_URL_HTTP = https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2
-
-GMP_VERSION = 6.1.0
-GMP_DIR = $(ANDR_ROOT)/deps/gmp-$(GMP_VERSION)
-GMP_LIB = $(GMP_DIR)/usr/lib/libgmp.so
-GMP_TIMESTAMP = $(GMP_DIR)/timestamp
-GMP_TIMESTAMP_INT = $(ANDR_ROOT)/deps/gmp_timestamp
-GMP_URL_HTTP = https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2
-
-FREETYPE_DIR = $(ANDR_ROOT)/deps/freetype2-android/
-FREETYPE_LIB = $(FREETYPE_DIR)/Android/obj/local/$(TARGET_ABI)/libfreetype2-static.a
-FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp
-FREETYPE_TIMESTAMP_INT = $(ANDR_ROOT)/deps/freetype_timestamp
-FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android
-
-ICONV_VERSION = 1.14
-ICONV_DIR = $(ANDR_ROOT)/deps/libiconv/
-ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so
-ICONV_TIMESTAMP = $(ICONV_DIR)timestamp
-ICONV_TIMESTAMP_INT = $(ANDR_ROOT)/deps/iconv_timestamp
-ICONV_URL_HTTP = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz
-
-SQLITE3_FOLDER = sqlite-amalgamation-3120200
-SQLITE3_URL = https://www.sqlite.org/2016/$(SQLITE3_FOLDER).zip
-
-ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
-ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
-NDK_MODULE_PATH = $(ANDROID_NDK)/toolchains
-
-#use interim target variable to switch leveldb on or off
-ifeq ($(HAVE_LEVELDB),1)
- LEVELDB_TARGET = $(LEVELDB_LIB)
-endif
-
-.PHONY : debug release reconfig delconfig \
- leveldb_download clean_leveldb leveldb\
- irrlicht_download clean_irrlicht irrlicht \
- clean_assets assets sqlite3_download \
- freetype_download clean_freetype freetype \
- apk clean_apk \
- clean_all clean prep_srcdir \
- install_debug install_release envpaths all \
- $(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \
- $(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \
- $(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \
- $(OPENSSL_TIMESTAMP) \
- $(ANDR_ROOT)/jni/src/android_version.h \
- $(ANDR_ROOT)/jni/src/android_version_githash.h
-
-debug : local.properties
- export NDEBUG=; \
- export BUILD_TYPE=debug; \
- $(MAKE) apk
-
-all : debug release
-
-release : local.properties
- @export NDEBUG=1; \
- export BUILD_TYPE=release; \
- $(MAKE) apk
-
-reconfig: delconfig
- @$(MAKE) local.properties
-
-delconfig:
- $(RM) local.properties
-
-local.properties:
- @echo "Please specify path of ANDROID NDK"; \
- echo "e.g. $$HOME/Android/ndk-r11c/"; \
- read ANDROID_NDK ; \
- if [ ! -d $$ANDROID_NDK ] ; then \
- echo "$$ANDROID_NDK is not a valid folder"; \
- exit 1; \
- fi; \
- echo "ndk.dir = $$ANDROID_NDK" > local.properties; \
- echo "Please specify path of ANDROID SDK"; \
- echo "e.g. $$HOME/Android/sdk/"; \
- read SDKFLDR ; \
- if [ ! -d $$SDKFLDR ] ; then \
- echo "$$SDKFLDR is not a valid folder"; \
- exit 1; \
- fi; \
- echo "sdk.dir = $$SDKFLDR" >> local.properties;
-
-
-$(OPENAL_TIMESTAMP) : openal_download
- @LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${OPENAL_TIMESTAMP}; \
- fi
-
-openal_download :
- @if [ ! -d ${OPENAL_DIR} ] ; then \
- echo "openal sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd ${ANDR_ROOT}/deps ; \
- git clone ${OPENAL_URL_GIT} || exit 1; \
- fi
-
-openal : $(OPENAL_LIB)
-
-$(OPENAL_LIB): $(OPENAL_TIMESTAMP)
- + @REFRESH=0; \
- if [ ! -e ${OPENAL_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${OPENAL_TIMESTAMP} -nt ${OPENAL_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- echo "changed timestamp for openal detected building..."; \
- cd ${OPENAL_DIR}; \
- ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \
- NDK_MODULE_PATH=${NDK_MODULE_PATH} APP_ABI=${TARGET_ABI} \
- TARGET_ARCH_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- touch ${OPENAL_TIMESTAMP}; \
- touch ${OPENAL_TIMESTAMP_INT}; \
- else \
- echo "nothing to be done for openal"; \
- fi
-
-clean_openal :
- $(RM) -rf ${OPENAL_DIR}
-
-$(OGG_TIMESTAMP) : ogg_download
- @LAST_MODIF=$$(find ${OGG_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${OGG_TIMESTAMP}; \
- fi
-
-ogg_download :
- @if [ ! -d ${OGG_DIR} ] ; then \
- echo "ogg sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd ${ANDR_ROOT}/deps ; \
- git clone ${OGG_URL_GIT}|| exit 1; \
- cd libvorbis-libogg-android ; \
- patch -p1 < ${ANDR_ROOT}/patches/libvorbis-libogg-fpu.patch || exit 1; \
- sed -i 's-:-?-' jni/Application.mk; \
- fi
-
-ogg : $(OGG_LIB)
-
-$(OGG_LIB): $(OGG_TIMESTAMP)
- + @REFRESH=0; \
- if [ ! -e ${OGG_TIMESTAMP_INT} ] ; then \
- echo "${OGG_TIMESTAMP_INT} doesn't exist"; \
- REFRESH=1; \
- fi; \
- if [ ${OGG_TIMESTAMP} -nt ${OGG_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- echo "changed timestamp for ogg detected building..."; \
- cd ${OGG_DIR}; \
- ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \
- NDK_MODULE_PATH=${NDK_MODULE_PATH} \
- APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- touch ${OGG_TIMESTAMP}; \
- touch ${OGG_TIMESTAMP_INT}; \
- else \
- echo "nothing to be done for libogg/libvorbis"; \
- fi
-
-clean_ogg :
- $(RM) -rf ${OGG_DIR}
-
-$(OPENSSL_TIMESTAMP) : openssl_download
- @LAST_MODIF=$$(find ${OPENSSL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${OPENSSL_TIMESTAMP}; \
- fi
-
-openssl_download :
- @if [ ! -d ${OPENSSL_DIR} ] ; then \
- echo "openssl sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd ${ANDR_ROOT}/deps ; \
- wget ${OPENSSL_URL} || exit 1; \
- tar -xzf ${OPENSSL_BASEDIR}.tar.gz; \
- cd ${OPENSSL_BASEDIR}; \
- patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch; \
- fi
-
-openssl : $(OPENSSL_LIB)
-
-$(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) $(GMP_LIB)
- @REFRESH=0; \
- if [ ! -e ${OPENSSL_TIMESTAMP_INT} ] ; then \
- echo "${OPENSSL_TIMESTAMP_INT} doesn't exist"; \
- REFRESH=1; \
- fi; \
- if [ ${OPENSSL_TIMESTAMP} -nt ${OPENSSL_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- echo "changed timestamp for openssl detected building..."; \
- cd ${OPENSSL_DIR}; \
- ln -s ${OPENSSL_DIR} ../openssl; \
- export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-openssl; \
- ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
- --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
- --install-dir=$${TOOLCHAIN}; \
- export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
- CC=${CROSS_PREFIX}gcc ./Configure enable-gmp -DL_ENDIAN -I${GMP_DIR} -L${GMP_DIR}/usr/lib android-${TARGET_ARCH};\
- CC=${CROSS_PREFIX}gcc ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend; \
- CC=${CROSS_PREFIX}gcc ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make build_libs; \
- touch ${OPENSSL_TIMESTAMP}; \
- touch ${OPENSSL_TIMESTAMP_INT}; \
- $(RM) -rf $${TOOLCHAIN}; \
- else \
- echo "nothing to be done for openssl"; \
- fi
-
-clean_openssl :
- $(RM) -rf ${OPENSSL_DIR}; \
- $(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz; \
- $(RM) -rf $(ANDR_ROOT)/deps/openssl
-
-$(LEVELDB_TIMESTAMP) : leveldb_download
- @LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${LEVELDB_TIMESTAMP}; \
- fi
-
-leveldb_download :
- @if [ ! -d ${LEVELDB_DIR} ] ; then \
- echo "leveldb sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd ${ANDR_ROOT}/deps ; \
- git clone ${LEVELDB_URL_GIT} || exit 1; \
- cd ${LEVELDB_DIR} || exit 1; \
- git checkout ${LEVELDB_COMMIT} || exit 1; \
- fi
-
-leveldb : $(LEVELDB_LIB)
-
-$(LEVELDB_LIB): $(LEVELDB_TIMESTAMP)
- @REFRESH=0; \
- if [ ! -e ${LEVELDB_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${LEVELDB_TIMESTAMP} -nt ${LEVELDB_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- echo "changed timestamp for leveldb detected building..."; \
- cd deps/leveldb; \
- export CROSS_PREFIX=${CROSS_PREFIX}; \
- export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb; \
- ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
- --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
- --install-dir=$${TOOLCHAIN}; \
- export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
- export CC=${CROSS_PREFIX}gcc; \
- export CXX=${CROSS_PREFIX}g++; \
- export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \
- export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \
- export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}"; \
- export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
- $(MAKE) || exit 1; \
- touch ${LEVELDB_TIMESTAMP}; \
- touch ${LEVELDB_TIMESTAMP_INT}; \
- $(RM) -rf $${TOOLCHAIN}; \
- else \
- echo "nothing to be done for leveldb"; \
- fi
-
-clean_leveldb :
- $(RM) -rf deps/leveldb
-
-$(FREETYPE_TIMESTAMP) : freetype_download
- @LAST_MODIF=$$(find ${FREETYPE_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${FREETYPE_TIMESTAMP}; \
- fi
-
-freetype_download :
- @if [ ! -d ${FREETYPE_DIR} ] ; then \
- echo "freetype sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd deps; \
- git clone ${FREETYPE_URL_GIT} || exit 1; \
- fi
-
-freetype : $(FREETYPE_LIB)
-
-$(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
- + @REFRESH=0; \
- if [ ! -e ${FREETYPE_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -e ${FREETYPE_LIB} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${FREETYPE_TIMESTAMP} -nt ${FREETYPE_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${FREETYPE_DIR}; \
- echo "changed timestamp for freetype detected building..."; \
- cd ${FREETYPE_DIR}/Android/jni; \
- ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \
- NDK_MODULE_PATH=${NDK_MODULE_PATH} \
- APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- touch ${FREETYPE_TIMESTAMP}; \
- touch ${FREETYPE_TIMESTAMP_INT}; \
- else \
- echo "nothing to be done for freetype"; \
- fi
-
-clean_freetype :
- $(RM) -rf ${FREETYPE_DIR}
-
-$(ICONV_TIMESTAMP) : iconv_download
- @LAST_MODIF=$$(find ${ICONV_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${ICONV_TIMESTAMP}; \
- fi
-
-iconv_download :
- @if [ ! -d ${ICONV_DIR} ] ; then \
- echo "iconv sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd ${ANDR_ROOT}/deps; \
- wget ${ICONV_URL_HTTP} || exit 1; \
- tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \
- rm libiconv-${ICONV_VERSION}.tar.gz; \
- ln -s libiconv-${ICONV_VERSION} libiconv; \
- cd ${ICONV_DIR}; \
- patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch; \
- patch -p1 < ${ANDR_ROOT}/patches/libiconv_stdio.patch; \
- fi
-
-iconv : $(ICONV_LIB)
-
-$(ICONV_LIB) : $(ICONV_TIMESTAMP)
- @REFRESH=0; \
- if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -e ${ICONV_LIB} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${ICONV_DIR}; \
- echo "changed timestamp for iconv detected building..."; \
- cd ${ICONV_DIR}; \
- \
- export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \
- ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
- --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
- --install-dir=$${TOOLCHAIN}; \
- export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
- export CC=${CROSS_PREFIX}gcc; \
- export CXX=${CROSS_PREFIX}g++; \
- export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
- ./configure --host=${TARGET_HOST} || exit 1; \
- sed -i 's/LIBICONV_VERSION_INFO) /LIBICONV_VERSION_INFO) -avoid-version /g' lib/Makefile; \
- grep "iconv_LDFLAGS" src/Makefile; \
- $(MAKE) -s || exit 1; \
- touch ${ICONV_TIMESTAMP}; \
- touch ${ICONV_TIMESTAMP_INT}; \
- rm -rf ${TOOLCHAIN}; \
- else \
- echo "nothing to be done for iconv"; \
- fi
-
-clean_iconv :
- $(RM) -rf ${ICONV_DIR}
-
-#Note: Texturehack patch is required for gpu's not supporting color format
-# correctly. Known bad GPU:
-# -geforce on emulator
-# -Vivante Corporation GC1000 core (e.g. Galaxy Tab 3)
-
-irrlicht_download :
- @if [ ! -d "deps/irrlicht" ] ; then \
- echo "irrlicht sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd deps; \
- svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1; \
- cd irrlicht; \
- patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1; \
- patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
- patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \
- fi
-
-$(IRRLICHT_TIMESTAMP) : irrlicht_download
- @LAST_MODIF=$$(find ${IRRLICHT_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${IRRLICHT_TIMESTAMP}; \
- fi
-
-irrlicht : $(IRRLICHT_LIB)
-
-$(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB)
- + @REFRESH=0; \
- if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -e ${IRRLICHT_LIB} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${IRRLICHT_DIR}; \
- echo "changed timestamp for irrlicht detected building..."; \
- cd deps/irrlicht/source/Irrlicht/Android; \
- ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \
- NDK_MODULE_PATH=${NDK_MODULE_PATH} \
- APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- touch ${IRRLICHT_TIMESTAMP}; \
- touch ${IRRLICHT_TIMESTAMP_INT}; \
- else \
- echo "nothing to be done for irrlicht"; \
- fi
-
-clean_irrlicht :
- $(RM) -rf deps/irrlicht
-
-$(CURL_TIMESTAMP) : curl_download
- @LAST_MODIF=$$(find ${CURL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${CURL_TIMESTAMP}; \
- fi
-
-curl_download :
- @if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then \
- echo "curl sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd deps; \
- wget ${CURL_URL_HTTP} || exit 1; \
- tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1; \
- rm curl-${CURL_VERSION}.tar.bz2; \
- ln -s curl-${CURL_VERSION} curl; \
- fi
-
-curl : $(CURL_LIB)
-
-$(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB)
- @REFRESH=0; \
- if [ ! -e ${CURL_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -e ${CURL_LIB} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${CURL_TIMESTAMP} -nt ${CURL_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${CURL_DIR}; \
- echo "changed timestamp for curl detected building..."; \
- cd deps/curl-${CURL_VERSION}; \
- export CROSS_PREFIX=${CROSS_PREFIX}; \
- export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl; \
- ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
- --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
- --install-dir=$${TOOLCHAIN}; \
- export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
- export CC=${CROSS_PREFIX}gcc; \
- export CXX=${CROSS_PREFIX}g++; \
- export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
- export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \
- export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \
- export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}"; \
- ./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl; \
- $(MAKE) -s || exit 1; \
- touch ${CURL_TIMESTAMP}; \
- touch ${CURL_TIMESTAMP_INT}; \
- $(RM) -rf $${TOOLCHAIN}; \
- else \
- echo "nothing to be done for curl"; \
- fi
-
-clean_curl :
- $(RM) -rf deps/curl-${CURL_VERSION} \
- $(RM) -f deps/curl
-
-$(GMP_TIMESTAMP) : gmp_download
- @LAST_MODIF=$$(find ${GMP_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${GMP_TIMESTAMP}; \
- fi
-
-gmp_download :
- @if [ ! -d "${GMP_DIR}" ] ; then \
- echo "gmp sources missing, downloading..."; \
- mkdir -p ${ANDR_ROOT}/deps; \
- cd deps; \
- wget ${GMP_URL_HTTP} || exit 1; \
- tar -xjf gmp-${GMP_VERSION}.tar.bz2 || exit 1; \
- rm gmp-${GMP_VERSION}.tar.bz2; \
- ln -s gmp-${GMP_VERSION} gmp; \
- fi
-
-gmp : $(GMP_LIB)
-
-$(GMP_LIB): $(GMP_TIMESTAMP)
- @REFRESH=0; \
- if [ ! -e ${GMP_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -e ${GMP_LIB} ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${GMP_TIMESTAMP} -nt ${GMP_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${GMP_DIR}; \
- echo "changed timestamp for gmp detected building..."; \
- cd deps/gmp-${GMP_VERSION}; \
- export CROSS_PREFIX=${CROSS_PREFIX}; \
- export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp; \
- ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
- --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
- --install-dir=$${TOOLCHAIN}; \
- export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
- export CC=${CROSS_PREFIX}gcc; \
- export CXX=${CROSS_PREFIX}g++; \
- export LIBGMP_LDFLAGS="-avoid-version"; \
- export LIBGMPXX_LDFLAGS="-avoid-version"; \
- ./configure --disable-static --host=${TARGET_HOST} --prefix=/usr; \
- $(MAKE) install DESTDIR=/${GMP_DIR} || exit 1; \
- touch ${GMP_TIMESTAMP}; \
- touch ${GMP_TIMESTAMP_INT}; \
- $(RM) -rf $${TOOLCHAIN}; \
- else \
- echo "nothing to be done for gmp"; \
- fi
-
-clean_gmp:
- $(RM) -rf deps/gmp-${GMP_VERSION} \
- $(RM) -f deps/gmp
-
-sqlite3_download: deps/${SQLITE3_FOLDER}/sqlite3.c
-
-deps/${SQLITE3_FOLDER}/sqlite3.c :
- cd deps; \
- wget ${SQLITE3_URL}; \
- unzip ${SQLITE3_FOLDER}.zip; \
- ln -s ${SQLITE3_FOLDER} sqlite
-
-clean_sqlite3:
- cd deps && $(RM) -rf ${SQLITE3_FOLDER} && $(RM) -f ${SQLITE3_FOLDER}.zip && \
- $(RM) -f sqlite
-
-$(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
- @mkdir -p ${ANDR_ROOT}/deps; \
- for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do \
- LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then \
- touch ${PROJ_ROOT}/${DIRNAME}/timestamp; \
- touch ${ASSETS_TIMESTAMP}; \
- echo ${DIRNAME} changed $$LAST_MODIF; \
- fi; \
- done; \
- LAST_MODIF=$$(find ${IRRLICHT_DIR}/media -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
- if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
- touch ${IRRLICHT_DIR}/media/timestamp; \
- touch ${ASSETS_TIMESTAMP}; \
- fi; \
- if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \
- echo "conf changed"; \
- touch ${ASSETS_TIMESTAMP}; \
- fi; \
- if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then \
- touch ${ASSETS_TIMESTAMP}; \
- fi; \
- if [ ! -e $(ASSETS_TIMESTAMP) ] ; then \
- touch $(ASSETS_TIMESTAMP); \
- fi
-
-assets : $(ASSETS_TIMESTAMP)
- @REFRESH=0; \
- if [ ! -e ${ASSETS_TIMESTAMP}.old ] ; then \
- REFRESH=1; \
- fi; \
- if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then \
- REFRESH=1; \
- fi; \
- if [ ! -d ${APP_ROOT}/assets ] ; then \
- REFRESH=1; \
- fi; \
- if [ $$REFRESH -ne 0 ] ; then \
- echo "assets changed, refreshing..."; \
- $(MAKE) clean_assets; \
- mkdir -p ${APP_ROOT}/assets/Minetest; \
- cp ${PROJ_ROOT}/minetest.conf.example ${APP_ROOT}/assets/Minetest; \
- cp ${PROJ_ROOT}/README.txt ${APP_ROOT}/assets/Minetest; \
- cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/Minetest; \
- mkdir -p ${APP_ROOT}/assets/Minetest/client; \
- cp -r ${PROJ_ROOT}/client/shaders ${APP_ROOT}/assets/Minetest/client; \
- cp ${PROJ_ROOT}/doc/lgpl-2.1.txt ${APP_ROOT}/assets/Minetest/LICENSE.txt; \
- mkdir -p ${APP_ROOT}/assets/Minetest/fonts; \
- cp -r ${PROJ_ROOT}/fonts/*.ttf ${APP_ROOT}/assets/Minetest/fonts/; \
- mkdir -p ${APP_ROOT}/assets/Minetest/games; \
- for game in ${GAMES_TO_COPY}; do \
- cp -r ${PROJ_ROOT}/games/$$game ${APP_ROOT}/assets/Minetest/games/; \
- done; \
- mkdir -p ${APP_ROOT}/assets/Minetest/mods; \
- for mod in ${MODS_TO_COPY}; do \
- cp -r ${PROJ_ROOT}/mods/$$mod ${APP_ROOT}/assets/Minetest/mods/; \
- done; \
- cp -r ${PROJ_ROOT}/po ${APP_ROOT}/assets/Minetest; \
- cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/Minetest; \
- mkdir -p ${APP_ROOT}/assets/Minetest/media; \
- cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media; \
- cd ${APP_ROOT}/assets || exit 1; \
- find . -name "timestamp" -exec rm {} \; ; \
- find . -name "*.blend" -exec rm {} \; ; \
- find . -name "*~" -exec rm {} \; ; \
- find . -type d -path "*.git" -exec rm -rf {} \; ; \
- find . -type d -path "*.svn" -exec rm -rf {} \; ; \
- find . -type f -path "*.gitignore" -exec rm -rf {} \; ; \
- ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \
- find -L Minetest > filelist.txt; \
- cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old; \
- else \
- echo "nothing to be done for assets"; \
- fi
-
-clean_assets :
- @$(RM) -r assets
-
-apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET) \
- $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h \
- $(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download
- + @${ANDROID_NDK}/ndk-build NDK_MODULE_PATH=${NDK_MODULE_PATH} \
- GPROF=${GPROF} APP_ABI=${TARGET_ABI} HAVE_LEVELDB=${HAVE_LEVELDB} \
- APP_PLATFORM=${APP_PLATFORM} \
- TARGET_LIBDIR=${TARGET_LIBDIR} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- if [ ! -e ${APP_ROOT}/jniLibs ]; then \
- ln -s ${ANDR_ROOT}/libs ${APP_ROOT}/jniLibs || exit 1; \
- fi; \
- export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" && \
- export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') && \
- gradle assemble$$BUILD_TYPE_C && \
- echo "APK stored at: build/outputs/apk/Minetest-$$BUILD_TYPE.apk" && \
- echo "You can install it with \`make install_$$BUILD_TYPE\`"
-
-# These Intentionally doesn't depend on their respective build steps,
-# because it takes a while to verify that everything's up-to-date.
-install_debug:
- ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-debug.apk
-
-install_release:
- ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-release.apk
-
-prep_srcdir :
- @if [ ! -e ${ANDR_ROOT}/jni/src ]; then \
- ln -s ${PROJ_ROOT}/src ${ANDR_ROOT}/jni/src; \
- fi
-
-clean_apk :
- gradle clean
-
-clean_all :
- @$(MAKE) clean_apk; \
- $(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl \
- clean_openssl clean_openal clean_ogg clean_gmp; \
- sleep 1; \
- $(RM) -r gen libs obj deps bin Debug and_env
-
-$(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir
- @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h; \
- export VERSION_FILE_NEW=$${VERSION_FILE}.new; \
- { \
- echo "#ifndef ANDROID_MT_VERSION_GITHASH_H"; \
- echo "#define ANDROID_MT_VERSION_GITHASH_H"; \
- export GITHASH=$$(git rev-parse --short=8 HEAD); \
- export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"; \
- echo "#define VERSION_GITHASH \"$$VERSION_STR-$$GITHASH-Android\""; \
- echo "#endif"; \
- } > "$${VERSION_FILE_NEW}"; \
- if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then \
- echo "android_version_githash.h changed, updating..."; \
- mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}"; \
- else \
- rm "$${VERSION_FILE_NEW}"; \
- fi
-
-
-$(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir
- @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h; \
- export VERSION_FILE_NEW=$${VERSION_FILE}.new; \
- { \
- echo "#ifndef ANDROID_MT_VERSION_H"; \
- echo "#define ANDROID_MT_VERSION_H"; \
- echo "#define VERSION_MAJOR ${VERSION_MAJOR}"; \
- echo "#define VERSION_MINOR ${VERSION_MINOR}"; \
- echo "#define VERSION_PATCH ${VERSION_PATCH}"; \
- echo "#define VERSION_STRING STR(VERSION_MAJOR) \".\" STR(VERSION_MINOR) \
- \".\" STR(VERSION_PATCH)"; \
- echo "#endif"; \
- } > $${VERSION_FILE_NEW}; \
- if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then \
- echo "android_version.h changed, updating..."; \
- mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}"; \
- else \
- rm "$${VERSION_FILE_NEW}"; \
- fi
-
-clean : clean_apk clean_assets
-
diff --git a/build/android/build.gradle b/build/android/build.gradle
deleted file mode 100644
index e0a0a186a..000000000
--- a/build/android/build.gradle
+++ /dev/null
@@ -1,49 +0,0 @@
-buildscript {
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath "com.android.tools.build:gradle:1.5.0"
- }
-}
-
-apply plugin: "com.android.application"
-
-android {
- compileSdkVersion 23
- buildToolsVersion "23.0.3"
-
- defaultConfig {
- versionCode 15
- versionName "${System.env.VERSION_STR}.${versionCode}"
- minSdkVersion 9
- targetSdkVersion 9
- applicationId "net.minetest.minetest"
- manifestPlaceholders = [ package: "net.minetest.minetest", project: project.name ]
- }
-
- lintOptions {
- disable "OldTargetApi", "GoogleAppIndexingWarning"
- }
-
- Properties props = new Properties()
- props.load(new FileInputStream(file("local.properties")))
-
- if (props.getProperty("keystore") != null) {
- signingConfigs {
- release {
- storeFile file(props["keystore"])
- storePassword props["keystore.password"]
- keyAlias props["key"]
- keyPassword props["key.password"]
- }
- }
-
- buildTypes {
- release {
- signingConfig signingConfigs.release
- }
- }
- }
-}
-
diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk
deleted file mode 100644
index 651fa318e..000000000
--- a/build/android/jni/Android.mk
+++ /dev/null
@@ -1,382 +0,0 @@
-LOCAL_PATH := $(call my-dir)/..
-
-#LOCAL_ADDRESS_SANITIZER:=true
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Irrlicht
-LOCAL_SRC_FILES := deps/irrlicht/lib/Android/libIrrlicht.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-ifeq ($(HAVE_LEVELDB), 1)
- include $(CLEAR_VARS)
- LOCAL_MODULE := LevelDB
- LOCAL_SRC_FILES := deps/leveldb/libleveldb.a
- include $(PREBUILT_STATIC_LIBRARY)
-endif
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := curl
-LOCAL_SRC_FILES := deps/curl/lib/.libs/libcurl.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := freetype
-LOCAL_SRC_FILES := deps/freetype2-android/Android/obj/local/$(TARGET_ARCH_ABI)/libfreetype2-static.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := iconv
-LOCAL_SRC_FILES := deps/libiconv/lib/.libs/libiconv.so
-include $(PREBUILT_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := openal
-LOCAL_SRC_FILES := deps/openal-soft/libs/$(TARGET_LIBDIR)/libopenal.so
-include $(PREBUILT_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := ogg
-LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libogg.so
-include $(PREBUILT_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := vorbis
-LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libvorbis.so
-include $(PREBUILT_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := gmp
-LOCAL_SRC_FILES := deps/gmp/usr/lib/libgmp.so
-include $(PREBUILT_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := ssl
-LOCAL_SRC_FILES := deps/openssl/libssl.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := crypto
-LOCAL_SRC_FILES := deps/openssl/libcrypto.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := minetest
-
-LOCAL_CPP_FEATURES += exceptions
-
-ifdef GPROF
-GPROF_DEF=-DGPROF
-endif
-
-LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \
- -DHAVE_TOUCHSCREENGUI \
- -DUSE_CURL=1 \
- -DUSE_SOUND=1 \
- -DUSE_FREETYPE=1 \
- -DUSE_LEVELDB=$(HAVE_LEVELDB) \
- $(GPROF_DEF) \
- -pipe -fstrict-aliasing
-
-ifndef NDEBUG
-LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer
-else
-LOCAL_CFLAGS += -O3
-endif
-
-ifdef GPROF
-PROFILER_LIBS := android-ndk-profiler
-LOCAL_CFLAGS += -pg
-endif
-
-# LOCAL_CFLAGS += -fsanitize=address
-# LOCAL_LDFLAGS += -fsanitize=address
-
-ifeq ($(TARGET_ARCH_ABI),x86)
-LOCAL_CFLAGS += -fno-stack-protector
-endif
-
-LOCAL_C_INCLUDES := \
- jni/src \
- jni/src/script \
- jni/src/lua/src \
- jni/src/jsoncpp \
- jni/src/cguittfont \
- deps/irrlicht/include \
- deps/libiconv/include \
- deps/freetype2-android/include \
- deps/curl/include \
- deps/openal-soft/jni/OpenAL/include \
- deps/libvorbis-libogg-android/jni/include \
- deps/gmp/usr/include \
- deps/leveldb/include \
- deps/sqlite/
-
-LOCAL_SRC_FILES := \
- jni/src/ban.cpp \
- jni/src/camera.cpp \
- jni/src/cavegen.cpp \
- jni/src/chat.cpp \
- jni/src/client.cpp \
- jni/src/clientiface.cpp \
- jni/src/clientmap.cpp \
- jni/src/clientmedia.cpp \
- jni/src/clientobject.cpp \
- jni/src/clouds.cpp \
- jni/src/collision.cpp \
- jni/src/content_abm.cpp \
- jni/src/content_cao.cpp \
- jni/src/content_cso.cpp \
- jni/src/content_mapblock.cpp \
- jni/src/content_mapnode.cpp \
- jni/src/content_nodemeta.cpp \
- jni/src/content_sao.cpp \
- jni/src/convert_json.cpp \
- jni/src/craftdef.cpp \
- jni/src/database-dummy.cpp \
- jni/src/database-sqlite3.cpp \
- jni/src/database.cpp \
- jni/src/debug.cpp \
- jni/src/defaultsettings.cpp \
- jni/src/drawscene.cpp \
- jni/src/dungeongen.cpp \
- jni/src/emerge.cpp \
- jni/src/environment.cpp \
- jni/src/filecache.cpp \
- jni/src/filesys.cpp \
- jni/src/fontengine.cpp \
- jni/src/game.cpp \
- jni/src/genericobject.cpp \
- jni/src/gettext.cpp \
- jni/src/guiChatConsole.cpp \
- jni/src/guiEngine.cpp \
- jni/src/guiFileSelectMenu.cpp \
- jni/src/guiFormSpecMenu.cpp \
- jni/src/guiKeyChangeMenu.cpp \
- jni/src/guiPasswordChange.cpp \
- jni/src/guiTable.cpp \
- jni/src/guiscalingfilter.cpp \
- jni/src/guiVolumeChange.cpp \
- jni/src/httpfetch.cpp \
- jni/src/hud.cpp \
- jni/src/imagefilters.cpp \
- jni/src/intlGUIEditBox.cpp \
- jni/src/inventory.cpp \
- jni/src/inventorymanager.cpp \
- jni/src/itemdef.cpp \
- jni/src/keycode.cpp \
- jni/src/light.cpp \
- jni/src/localplayer.cpp \
- jni/src/log.cpp \
- jni/src/main.cpp \
- jni/src/map.cpp \
- jni/src/map_settings_manager.cpp \
- jni/src/mapblock.cpp \
- jni/src/mapblock_mesh.cpp \
- jni/src/mapgen.cpp \
- jni/src/mapgen_flat.cpp \
- jni/src/mapgen_fractal.cpp \
- jni/src/mapgen_singlenode.cpp \
- jni/src/mapgen_v5.cpp \
- jni/src/mapgen_v6.cpp \
- jni/src/mapgen_v7.cpp \
- jni/src/mapgen_valleys.cpp \
- jni/src/mapnode.cpp \
- jni/src/mapsector.cpp \
- jni/src/mesh.cpp \
- jni/src/mg_biome.cpp \
- jni/src/mg_decoration.cpp \
- jni/src/mg_ore.cpp \
- jni/src/mg_schematic.cpp \
- jni/src/minimap.cpp \
- jni/src/mods.cpp \
- jni/src/nameidmapping.cpp \
- jni/src/nodedef.cpp \
- jni/src/nodemetadata.cpp \
- jni/src/nodetimer.cpp \
- jni/src/noise.cpp \
- jni/src/objdef.cpp \
- jni/src/object_properties.cpp \
- jni/src/particles.cpp \
- jni/src/pathfinder.cpp \
- jni/src/player.cpp \
- jni/src/porting_android.cpp \
- jni/src/porting.cpp \
- jni/src/profiler.cpp \
- jni/src/quicktune.cpp \
- jni/src/remoteplayer.cpp \
- jni/src/rollback.cpp \
- jni/src/rollback_interface.cpp \
- jni/src/serialization.cpp \
- jni/src/server.cpp \
- jni/src/serverlist.cpp \
- jni/src/serverobject.cpp \
- jni/src/shader.cpp \
- jni/src/sky.cpp \
- jni/src/socket.cpp \
- jni/src/sound.cpp \
- jni/src/sound_openal.cpp \
- jni/src/staticobject.cpp \
- jni/src/subgame.cpp \
- jni/src/tool.cpp \
- jni/src/treegen.cpp \
- jni/src/version.cpp \
- jni/src/voxel.cpp \
- jni/src/voxelalgorithms.cpp \
- jni/src/util/areastore.cpp \
- jni/src/util/auth.cpp \
- jni/src/util/base64.cpp \
- jni/src/util/directiontables.cpp \
- jni/src/util/enriched_string.cpp \
- jni/src/util/numeric.cpp \
- jni/src/util/pointedthing.cpp \
- jni/src/util/serialize.cpp \
- jni/src/util/sha1.cpp \
- jni/src/util/string.cpp \
- jni/src/util/srp.cpp \
- jni/src/util/timetaker.cpp \
- jni/src/unittest/test.cpp \
- jni/src/unittest/test_collision.cpp \
- jni/src/unittest/test_compression.cpp \
- jni/src/unittest/test_connection.cpp \
- jni/src/unittest/test_filepath.cpp \
- jni/src/unittest/test_inventory.cpp \
- jni/src/unittest/test_map_settings_manager.cpp \
- jni/src/unittest/test_mapnode.cpp \
- jni/src/unittest/test_nodedef.cpp \
- jni/src/unittest/test_noderesolver.cpp \
- jni/src/unittest/test_noise.cpp \
- jni/src/unittest/test_objdef.cpp \
- jni/src/unittest/test_profiler.cpp \
- jni/src/unittest/test_random.cpp \
- jni/src/unittest/test_schematic.cpp \
- jni/src/unittest/test_serialization.cpp \
- jni/src/unittest/test_settings.cpp \
- jni/src/unittest/test_socket.cpp \
- jni/src/unittest/test_utilities.cpp \
- jni/src/unittest/test_voxelalgorithms.cpp \
- jni/src/unittest/test_voxelmanipulator.cpp \
- jni/src/touchscreengui.cpp \
- jni/src/database-leveldb.cpp \
- jni/src/settings.cpp \
- jni/src/wieldmesh.cpp \
- jni/src/client/clientlauncher.cpp \
- jni/src/client/tile.cpp \
- jni/src/client/joystick_controller.cpp \
- jni/src/irrlicht_changes/static_text.cpp
-
-# intentionally kept out (we already build openssl itself): jni/src/util/sha256.c
-
-# Network
-LOCAL_SRC_FILES += \
- jni/src/network/connection.cpp \
- jni/src/network/networkpacket.cpp \
- jni/src/network/clientopcodes.cpp \
- jni/src/network/clientpackethandler.cpp \
- jni/src/network/serveropcodes.cpp \
- jni/src/network/serverpackethandler.cpp \
-
-# lua api
-LOCAL_SRC_FILES += \
- jni/src/script/common/c_content.cpp \
- jni/src/script/common/c_converter.cpp \
- jni/src/script/common/c_internal.cpp \
- jni/src/script/common/c_types.cpp \
- jni/src/script/cpp_api/s_async.cpp \
- jni/src/script/cpp_api/s_base.cpp \
- jni/src/script/cpp_api/s_entity.cpp \
- jni/src/script/cpp_api/s_env.cpp \
- jni/src/script/cpp_api/s_inventory.cpp \
- jni/src/script/cpp_api/s_item.cpp \
- jni/src/script/cpp_api/s_mainmenu.cpp \
- jni/src/script/cpp_api/s_node.cpp \
- jni/src/script/cpp_api/s_nodemeta.cpp \
- jni/src/script/cpp_api/s_player.cpp \
- jni/src/script/cpp_api/s_security.cpp \
- jni/src/script/cpp_api/s_server.cpp \
- jni/src/script/lua_api/l_areastore.cpp \
- jni/src/script/lua_api/l_base.cpp \
- jni/src/script/lua_api/l_craft.cpp \
- jni/src/script/lua_api/l_env.cpp \
- jni/src/script/lua_api/l_inventory.cpp \
- jni/src/script/lua_api/l_item.cpp \
- jni/src/script/lua_api/l_mainmenu.cpp \
- jni/src/script/lua_api/l_mapgen.cpp \
- jni/src/script/lua_api/l_nodemeta.cpp \
- jni/src/script/lua_api/l_nodetimer.cpp \
- jni/src/script/lua_api/l_noise.cpp \
- jni/src/script/lua_api/l_object.cpp \
- jni/src/script/lua_api/l_particles.cpp \
- jni/src/script/lua_api/l_rollback.cpp \
- jni/src/script/lua_api/l_server.cpp \
- jni/src/script/lua_api/l_settings.cpp \
- jni/src/script/lua_api/l_http.cpp \
- jni/src/script/lua_api/l_util.cpp \
- jni/src/script/lua_api/l_vmanip.cpp \
- jni/src/script/scripting_game.cpp \
- jni/src/script/scripting_mainmenu.cpp
-
-#freetype2 support
-LOCAL_SRC_FILES += jni/src/cguittfont/xCGUITTFont.cpp
-
-# Lua
-LOCAL_SRC_FILES += \
- jni/src/lua/src/lapi.c \
- jni/src/lua/src/lauxlib.c \
- jni/src/lua/src/lbaselib.c \
- jni/src/lua/src/lcode.c \
- jni/src/lua/src/ldblib.c \
- jni/src/lua/src/ldebug.c \
- jni/src/lua/src/ldo.c \
- jni/src/lua/src/ldump.c \
- jni/src/lua/src/lfunc.c \
- jni/src/lua/src/lgc.c \
- jni/src/lua/src/linit.c \
- jni/src/lua/src/liolib.c \
- jni/src/lua/src/llex.c \
- jni/src/lua/src/lmathlib.c \
- jni/src/lua/src/lmem.c \
- jni/src/lua/src/loadlib.c \
- jni/src/lua/src/lobject.c \
- jni/src/lua/src/lopcodes.c \
- jni/src/lua/src/loslib.c \
- jni/src/lua/src/lparser.c \
- jni/src/lua/src/lstate.c \
- jni/src/lua/src/lstring.c \
- jni/src/lua/src/lstrlib.c \
- jni/src/lua/src/ltable.c \
- jni/src/lua/src/ltablib.c \
- jni/src/lua/src/ltm.c \
- jni/src/lua/src/lundump.c \
- jni/src/lua/src/lvm.c \
- jni/src/lua/src/lzio.c \
- jni/src/lua/src/print.c
-
-# SQLite3
-LOCAL_SRC_FILES += deps/sqlite/sqlite3.c
-
-# Threading
-LOCAL_SRC_FILES += \
- jni/src/threading/event.cpp \
- jni/src/threading/mutex.cpp \
- jni/src/threading/semaphore.cpp \
- jni/src/threading/thread.cpp
-
-# JSONCPP
-LOCAL_SRC_FILES += jni/src/jsoncpp/json/jsoncpp.cpp
-
-LOCAL_SHARED_LIBRARIES := iconv openal ogg vorbis gmp
-LOCAL_STATIC_LIBRARIES := Irrlicht freetype curl ssl crypto android_native_app_glue $(PROFILER_LIBS)
-
-ifeq ($(HAVE_LEVELDB), 1)
- LOCAL_STATIC_LIBRARIES += LevelDB
-endif
-LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid
-
-include $(BUILD_SHARED_LIBRARY)
-
-# at the end of Android.mk
-ifdef GPROF
-$(call import-module,android-ndk-profiler)
-endif
-$(call import-module,android/native_app_glue)
-
diff --git a/build/android/jni/Application.mk b/build/android/jni/Application.mk
deleted file mode 100644
index 53467059a..000000000
--- a/build/android/jni/Application.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-# NDK_TOOLCHAIN_VERSION := clang3.8
-
-APP_PLATFORM := android-9
-APP_MODULES := minetest
-APP_STL := gnustl_static
-
-APP_CPPFLAGS += -fexceptions
-APP_GNUSTL_FORCE_CPP_FEATURES := rtti
-
diff --git a/build/android/patches/irrlicht-back_button.patch b/build/android/patches/irrlicht-back_button.patch
deleted file mode 100644
index e17b81347..000000000
--- a/build/android/patches/irrlicht-back_button.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig 2015-08-29 15:43:09.000000000 +0300
-+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2016-05-13 21:36:22.880388505 +0300
-@@ -486,7 +486,7 @@
- event.KeyInput.Char = 0;
- }
-
-- device->postEventFromUser(event);
-+ status = device->postEventFromUser(event);
- }
- break;
- default:
-@@ -543,7 +543,7 @@
- KeyMap[1] = KEY_LBUTTON; // AKEYCODE_SOFT_LEFT
- KeyMap[2] = KEY_RBUTTON; // AKEYCODE_SOFT_RIGHT
- KeyMap[3] = KEY_HOME; // AKEYCODE_HOME
-- KeyMap[4] = KEY_BACK; // AKEYCODE_BACK
-+ KeyMap[4] = KEY_CANCEL; // AKEYCODE_BACK
- KeyMap[5] = KEY_UNKNOWN; // AKEYCODE_CALL
- KeyMap[6] = KEY_UNKNOWN; // AKEYCODE_ENDCALL
- KeyMap[7] = KEY_KEY_0; // AKEYCODE_0
diff --git a/build/android/patches/irrlicht-texturehack.patch b/build/android/patches/irrlicht-texturehack.patch
deleted file mode 100644
index a458ede72..000000000
--- a/build/android/patches/irrlicht-texturehack.patch
+++ /dev/null
@@ -1,240 +0,0 @@
---- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-22 17:01:13.266568869 +0200
-+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-22 17:03:59.298572810 +0200
-@@ -366,112 +366,140 @@
- void(*convert)(const void*, s32, void*) = 0;
- getFormatParameters(ColorFormat, InternalFormat, filtering, PixelFormat, PixelType, convert);
-
-- // make sure we don't change the internal format of existing images
-- if (!newTexture)
-- InternalFormat = oldInternalFormat;
--
-- Driver->setActiveTexture(0, this);
--
-- if (Driver->testGLError())
-- os::Printer::log("Could not bind Texture", ELL_ERROR);
--
-- // mipmap handling for main texture
-- if (!level && newTexture)
-- {
-- // auto generate if possible and no mipmap data is given
-- if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE))
-- {
-- if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
-- glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
-- else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY))
-- glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST);
-- else
-- glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
-+ bool retry = false;
-+
-+ do {
-+ if (retry) {
-+ InternalFormat = GL_RGBA;
-+ PixelFormat = GL_RGBA;
-+ convert = CColorConverter::convert_A8R8G8B8toA8B8G8R8;
-+ }
-+ // make sure we don't change the internal format of existing images
-+ if (!newTexture)
-+ InternalFormat = oldInternalFormat;
-
-- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
-- AutomaticMipmapUpdate=true;
-- }
-+ Driver->setActiveTexture(0, this);
-
-- // enable bilinear filter without mipmaps
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
-- }
-+ if (Driver->testGLError())
-+ os::Printer::log("Could not bind Texture", ELL_ERROR);
-
-- // now get image data and upload to GPU
-+ // mipmap handling for main texture
-+ if (!level && newTexture)
-+ {
-+ // auto generate if possible and no mipmap data is given
-+ if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE))
-+ {
-+ if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
-+ glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
-+ else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY))
-+ glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST);
-+ else
-+ glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
-+
-+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
-+ AutomaticMipmapUpdate=true;
-+ }
-+
-+ // enable bilinear filter without mipmaps
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
-+ }
-
-- u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height);
-+ // now get image data and upload to GPU
-
-- void* source = image->lock();
-+ u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height);
-
-- IImage* tmpImage = 0;
-+ void* source = image->lock();
-
-- if (convert)
-- {
-- tmpImage = new CImage(image->getColorFormat(), image->getDimension());
-- void* dest = tmpImage->lock();
-- convert(source, image->getDimension().getArea(), dest);
-- image->unlock();
-- source = dest;
-- }
-+ IImage* tmpImage = 0;
-
-- if (newTexture)
-- {
-- if (IsCompressed)
-+ if (convert)
- {
-- glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width,
-- image->getDimension().Height, 0, compressedImageSize, source);
-+ tmpImage = new CImage(image->getColorFormat(), image->getDimension());
-+ void* dest = tmpImage->lock();
-+ convert(source, image->getDimension().getArea(), dest);
-+ image->unlock();
-+ source = dest;
- }
-- else
-- glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width,
-- image->getDimension().Height, 0, PixelFormat, PixelType, source);
-- }
-- else
-- {
-- if (IsCompressed)
-+
-+ if (newTexture)
- {
-- glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
-- image->getDimension().Height, PixelFormat, compressedImageSize, source);
-+ if (IsCompressed)
-+ {
-+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width,
-+ image->getDimension().Height, 0, compressedImageSize, source);
-+ }
-+ else
-+ glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width,
-+ image->getDimension().Height, 0, PixelFormat, PixelType, source);
- }
- else
-- glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
-- image->getDimension().Height, PixelFormat, PixelType, source);
-- }
--
-- if (convert)
-- {
-- tmpImage->unlock();
-- tmpImage->drop();
-- }
-- else
-- image->unlock();
--
-- if (!level && newTexture)
-- {
-- if (IsCompressed && !mipmapData)
- {
-- if (image->hasMipMaps())
-- mipmapData = static_cast<u8*>(image->lock())+compressedImageSize;
-+ if (IsCompressed)
-+ {
-+ glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
-+ image->getDimension().Height, PixelFormat, compressedImageSize, source);
-+ }
- else
-- HasMipMaps = false;
-+ glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
-+ image->getDimension().Height, PixelFormat, PixelType, source);
- }
-
-- regenerateMipMapLevels(mipmapData);
--
-- if (HasMipMaps) // might have changed in regenerateMipMapLevels
-+ if (convert)
- {
-- // enable bilinear mipmap filter
-- GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST;
--
-- if (filtering != GL_LINEAR)
-- filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST;
-+ tmpImage->unlock();
-+ tmpImage->drop();
-+ }
-+ else
-+ image->unlock();
-+
-+ if (glGetError() != GL_NO_ERROR) {
-+ static bool warned = false;
-+ if ((!retry) && (ColorFormat == ECF_A8R8G8B8)) {
-+
-+ if (!warned) {
-+ os::Printer::log("Your driver claims to support GL_BGRA but fails on trying to upload a texture, converting to GL_RGBA and trying again", ELL_ERROR);
-+ warned = true;
-+ }
-+ }
-+ else if (retry) {
-+ os::Printer::log("Neither uploading texture as GL_BGRA nor, converted one using GL_RGBA succeeded", ELL_ERROR);
-+ }
-+ retry = !retry;
-+ continue;
-+ } else {
-+ retry = false;
-+ }
-
-- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps);
-- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
-+ if (!level && newTexture)
-+ {
-+ if (IsCompressed && !mipmapData)
-+ {
-+ if (image->hasMipMaps())
-+ mipmapData = static_cast<u8*>(image->lock())+compressedImageSize;
-+ else
-+ HasMipMaps = false;
-+ }
-+
-+ regenerateMipMapLevels(mipmapData);
-+
-+ if (HasMipMaps) // might have changed in regenerateMipMapLevels
-+ {
-+ // enable bilinear mipmap filter
-+ GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST;
-+
-+ if (filtering != GL_LINEAR)
-+ filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST;
-+
-+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps);
-+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
-+ }
- }
-- }
-
-- if (Driver->testGLError())
-- os::Printer::log("Could not glTexImage2D", ELL_ERROR);
-+ if (Driver->testGLError())
-+ os::Printer::log("Could not glTexImage2D", ELL_ERROR);
-+ }
-+ while(retry);
- }
-
-
---- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-25 00:28:50.820501856 +0200
-+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-25 00:08:37.712544692 +0200
-@@ -422,6 +422,9 @@
- source = dest;
- }
-
-+ //clear old error
-+ glGetError();
-+
- if (newTexture)
- {
- if (IsCompressed)
diff --git a/build/android/patches/irrlicht-touchcount.patch b/build/android/patches/irrlicht-touchcount.patch
deleted file mode 100644
index d4e4b9c3e..000000000
--- a/build/android/patches/irrlicht-touchcount.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- irrlicht.orig/include/IEventReceiver.h 2014-06-03 19:43:50.433713133 +0200
-+++ irrlicht/include/IEventReceiver.h 2014-06-03 19:44:36.993711489 +0200
-@@ -375,6 +375,9 @@
- // Y position of simple touch.
- s32 Y;
-
-+ // number of current touches
-+ s32 touchedCount;
-+
- //! Type of touch event.
- ETOUCH_INPUT_EVENT Event;
- };
---- irrlicht.orig/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:43:50.505713130 +0200
-+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:45:37.265709359 +0200
-@@ -315,6 +315,7 @@
- event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, i);
- event.TouchInput.X = AMotionEvent_getX(androidEvent, i);
- event.TouchInput.Y = AMotionEvent_getY(androidEvent, i);
-+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent);
-
- device->postEventFromUser(event);
- }
-@@ -326,6 +327,7 @@
- event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, pointerIndex);
- event.TouchInput.X = AMotionEvent_getX(androidEvent, pointerIndex);
- event.TouchInput.Y = AMotionEvent_getY(androidEvent, pointerIndex);
-+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent);
-
- device->postEventFromUser(event);
- }
diff --git a/build/android/patches/libiconv_android.patch b/build/android/patches/libiconv_android.patch
deleted file mode 100644
index 4eca0a4ef..000000000
--- a/build/android/patches/libiconv_android.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- a/libcharset/lib/localcharset.c 2015-06-10 11:55:25.933870724 +0200
-+++ b/libcharset/lib/localcharset.c 2015-06-10 11:55:39.578063493 +0200
-@@ -47,7 +47,7 @@
-
- #if !defined WIN32_NATIVE
- # include <unistd.h>
--# if HAVE_LANGINFO_CODESET
-+# if HAVE_LANGINFO_CODESET && !(defined __ANDROID__)
- # include <langinfo.h>
- # else
- # if 0 /* see comment below */
-@@ -124,7 +124,7 @@ get_charset_aliases (void)
- cp = charset_aliases;
- if (cp == NULL)
- {
--#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
-+#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__ || defined __ANDROID__)
- const char *dir;
- const char *base = "charset.alias";
- char *file_name;
-@@ -338,6 +338,9 @@ get_charset_aliases (void)
- "CP54936" "\0" "GB18030" "\0"
- "CP65001" "\0" "UTF-8" "\0";
- # endif
-+# if defined __ANDROID__
-+ cp = "*" "\0" "UTF-8" "\0";
-+# endif
- #endif
-
- charset_aliases = cp;
-@@ -361,7 +364,7 @@ locale_charset (void)
- const char *codeset;
- const char *aliases;
-
--#if !(defined WIN32_NATIVE || defined OS2)
-+#if !(defined WIN32_NATIVE || defined OS2 || defined __ANDROID__)
-
- # if HAVE_LANGINFO_CODESET
-
diff --git a/build/android/patches/libiconv_stdio.patch b/build/android/patches/libiconv_stdio.patch
deleted file mode 100644
index 9fa50f79a..000000000
--- a/build/android/patches/libiconv_stdio.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/srclib/stdio.in.h 2011-08-07 15:42:06.000000000 +0200
-+++ b/srclib/stdio.in.h 2015-06-10 09:27:58.129056262 +0200
-@@ -695,8 +696,9 @@ _GL_CXXALIASWARN (gets);
- /* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
--_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-+/*_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");*/
-+#define gets(a) fgets( a, sizeof(*(a)), stdin)
- #endif
-
-
-#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
diff --git a/build/android/patches/libvorbis-libogg-fpu.patch b/build/android/patches/libvorbis-libogg-fpu.patch
deleted file mode 100644
index 52ab397ac..000000000
--- a/build/android/patches/libvorbis-libogg-fpu.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- libvorbis-libogg-android/jni/libvorbis-jni/Android.mk.orig 2014-06-17 19:22:50.621559073 +0200
-+++ libvorbis-libogg-android/jni/libvorbis-jni/Android.mk 2014-06-17 19:38:20.641581140 +0200
-@@ -4,9 +4,6 @@
-
- LOCAL_MODULE := vorbis-jni
- LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -fsigned-char
--ifeq ($(TARGET_ARCH),arm)
-- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp
--endif
-
- LOCAL_SHARED_LIBRARIES := libogg libvorbis
-
---- libvorbis-libogg-android/jni/libvorbis/Android.mk.orig 2014-06-17 19:22:39.077558797 +0200
-+++ libvorbis-libogg-android/jni/libvorbis/Android.mk 2014-06-17 19:38:52.121581887 +0200
-@@ -4,9 +4,6 @@
-
- LOCAL_MODULE := libvorbis
- LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -ffast-math -fsigned-char
--ifeq ($(TARGET_ARCH),arm)
-- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp
--endif
- LOCAL_SHARED_LIBRARIES := libogg
-
- LOCAL_SRC_FILES := \
---- libvorbis-libogg-android/jni/libogg/Android.mk.orig 2014-06-17 19:22:33.965558675 +0200
-+++ libvorbis-libogg-android/jni/libogg/Android.mk 2014-06-17 19:38:25.337581252 +0200
-@@ -4,10 +4,6 @@
-
- LOCAL_MODULE := libogg
- LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -ffast-math -fsigned-char
--ifeq ($(TARGET_ARCH),arm)
-- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp
--endif
--
-
- LOCAL_SRC_FILES := \
- bitwise.c \
diff --git a/build/android/patches/openssl_arch.patch b/build/android/patches/openssl_arch.patch
deleted file mode 100644
index d15e2b137..000000000
--- a/build/android/patches/openssl_arch.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- openssl-1.0.2e.orig/Configure 2015-12-03 15:04:23.000000000 +0100
-+++ openssl-1.0.2e/Configure 2015-12-14 21:01:40.351265968 +0100
-@@ -464,8 +464,10 @@
- # Android: linux-* but without pointers to headers and libs.
- "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"android-arm","gcc:-march=armv4 -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- "android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- "android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"android-mips32","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-
- #### *BSD [do see comment about ${BSDthreads} above!]
- "BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/build/android/src/debug/AndroidManifest.xml b/build/android/src/debug/AndroidManifest.xml
deleted file mode 100644
index a3815b9f8..000000000
--- a/build/android/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
- <uses-permission android:name="android.permission.SET_DEBUG_APP" />
-</manifest>
diff --git a/build/android/src/main/AndroidManifest.xml b/build/android/src/main/AndroidManifest.xml
deleted file mode 100644
index df218fb33..000000000
--- a/build/android/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="net.minetest.minetest"
- android:installLocation="auto">
- <uses-feature android:glEsVersion="0x00010000" android:required="true"/>
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <application android:icon="@drawable/irr_icon"
- android:label="${project}"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:allowBackup="true">
- <activity android:name=".MtNativeActivity"
- android:label="${project}"
- android:launchMode="singleTask"
- android:configChanges="orientation|keyboard|keyboardHidden|navigation"
- android:screenOrientation="sensorLandscape"
- android:clearTaskOnLaunch="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <meta-data android:name="android.app.lib_name" android:value="minetest" />
- </activity>
- <activity android:name=".MinetestTextEntry"
- android:theme="@style/Theme.Transparent"
- android:excludeFromRecents="true">
- </activity>
- <activity android:name=".MinetestAssetCopy"
- android:theme="@style/Theme.Transparent"
- android:excludeFromRecents="true">
- </activity>
- </application>
-</manifest>
diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
deleted file mode 100644
index eb92acb63..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
+++ /dev/null
@@ -1,416 +0,0 @@
-package net.minetest.minetest;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.Vector;
-import java.util.Iterator;
-import java.lang.Object;
-
-import android.app.Activity;
-import android.content.res.AssetFileDescriptor;
-
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Environment;
-import android.util.Log;
-import android.view.Display;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.graphics.Rect;
-import android.graphics.Paint;
-import android.text.TextPaint;
-
-public class MinetestAssetCopy extends Activity
-{
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.assetcopy);
-
- m_ProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
- m_Filename = (TextView) findViewById(R.id.textView1);
-
- Display display = getWindowManager().getDefaultDisplay();
- m_ProgressBar.getLayoutParams().width = (int) (display.getWidth() * 0.8);
- m_ProgressBar.invalidate();
-
- /* check if there's already a copy in progress and reuse in case it is*/
- MinetestAssetCopy prevActivity =
- (MinetestAssetCopy) getLastNonConfigurationInstance();
- if(prevActivity!= null) {
- m_AssetCopy = prevActivity.m_AssetCopy;
- }
- else {
- m_AssetCopy = new copyAssetTask();
- m_AssetCopy.execute();
- }
- }
-
- /* preserve asset copy background task to prevent restart of copying */
- /* this way of doing it is not recommended for latest android version */
- /* but the recommended way isn't available on android 2.x */
- public Object onRetainNonConfigurationInstance()
- {
- return this;
- }
-
- ProgressBar m_ProgressBar;
- TextView m_Filename;
-
- copyAssetTask m_AssetCopy;
-
- private class copyAssetTask extends AsyncTask<String, Integer, String>
- {
- private long getFullSize(String filename)
- {
- long size = 0;
- try {
- InputStream src = getAssets().open(filename);
- byte[] buf = new byte[4096];
-
- int len = 0;
- while ((len = src.read(buf)) > 0)
- {
- size += len;
- }
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return size;
- }
-
- @Override
- protected String doInBackground(String... files)
- {
- m_foldernames = new Vector<String>();
- m_filenames = new Vector<String>();
- m_tocopy = new Vector<String>();
- m_asset_size_unknown = new Vector<String>();
- String baseDir =
- Environment.getExternalStorageDirectory().getAbsolutePath()
- + "/";
-
-
- // prepare temp folder
- File TempFolder = new File(baseDir + "Minetest/tmp/");
-
- if (!TempFolder.exists())
- {
- TempFolder.mkdir();
- }
- else {
- File[] todel = TempFolder.listFiles();
-
- for(int i=0; i < todel.length; i++)
- {
- Log.v("MinetestAssetCopy","deleting: " + todel[i].getAbsolutePath());
- todel[i].delete();
- }
- }
-
- // add a .nomedia file
- try {
- OutputStream dst = new FileOutputStream(baseDir + "Minetest/.nomedia");
- dst.close();
- } catch (IOException e) {
- Log.e("MinetestAssetCopy","Failed to create .nomedia file");
- e.printStackTrace();
- }
-
-
- // build lists from prepared data
- BuildFolderList();
- BuildFileList();
-
- // scan filelist
- ProcessFileList();
-
- // doing work
- m_copy_started = true;
- m_ProgressBar.setMax(m_tocopy.size());
-
- for (int i = 0; i < m_tocopy.size(); i++)
- {
- try
- {
- String filename = m_tocopy.get(i);
- publishProgress(i);
-
- boolean asset_size_unknown = false;
- long filesize = -1;
-
- if (m_asset_size_unknown.contains(filename))
- {
- File testme = new File(baseDir + "/" + filename);
-
- if(testme.exists())
- {
- filesize = testme.length();
- }
- asset_size_unknown = true;
- }
-
- InputStream src;
- try
- {
- src = getAssets().open(filename);
- } catch (IOException e) {
- Log.e("MinetestAssetCopy","Copying file: " + filename + " FAILED (not in assets)");
- e.printStackTrace();
- continue;
- }
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1*1024];
- int len = src.read(buf, 0, 1024);
-
- /* following handling is crazy but we need to deal with */
- /* compressed assets.Flash chips limited livetime due to */
- /* write operations, we can't allow large files to destroy */
- /* users flash. */
- if (asset_size_unknown)
- {
- if ( (len > 0) && (len < buf.length) && (len == filesize))
- {
- src.close();
- continue;
- }
-
- if (len == buf.length)
- {
- src.close();
- long size = getFullSize(filename);
- if ( size == filesize)
- {
- continue;
- }
- src = getAssets().open(filename);
- len = src.read(buf, 0, 1024);
- }
- }
- if (len > 0)
- {
- int total_filesize = 0;
- OutputStream dst;
- try
- {
- dst = new FileOutputStream(baseDir + "/" + filename);
- } catch (IOException e) {
- Log.e("MinetestAssetCopy","Copying file: " + baseDir +
- "/" + filename + " FAILED (couldn't open output file)");
- e.printStackTrace();
- src.close();
- continue;
- }
- dst.write(buf, 0, len);
- total_filesize += len;
-
- while ((len = src.read(buf)) > 0)
- {
- dst.write(buf, 0, len);
- total_filesize += len;
- }
-
- dst.close();
- Log.v("MinetestAssetCopy","Copied file: " +
- m_tocopy.get(i) + " (" + total_filesize +
- " bytes)");
- }
- else if (len < 0)
- {
- Log.e("MinetestAssetCopy","Copying file: " +
- m_tocopy.get(i) + " failed, size < 0");
- }
- src.close();
- }
- catch (IOException e)
- {
- Log.e("MinetestAssetCopy","Copying file: " +
- m_tocopy.get(i) + " failed");
- e.printStackTrace();
- }
- }
- return "";
- }
-
-
- /**
- * update progress bar
- */
- protected void onProgressUpdate(Integer... progress)
- {
-
- if (m_copy_started)
- {
- boolean shortened = false;
- String todisplay = m_tocopy.get(progress[0]);
- m_ProgressBar.setProgress(progress[0]);
- m_Filename.setText(todisplay);
- }
- else
- {
- boolean shortened = false;
- String todisplay = m_Foldername;
- String full_text = "scanning " + todisplay + " ...";
- m_Filename.setText(full_text);
- }
- }
-
- /**
- * check al files and folders in filelist
- */
- protected void ProcessFileList()
- {
- String FlashBaseDir =
- Environment.getExternalStorageDirectory().getAbsolutePath();
-
- Iterator itr = m_filenames.iterator();
-
- while (itr.hasNext())
- {
- String current_path = (String) itr.next();
- String FlashPath = FlashBaseDir + "/" + current_path;
-
- if (isAssetFolder(current_path))
- {
- /* store information and update gui */
- m_Foldername = current_path;
- publishProgress(0);
-
- /* open file in order to check if it's a folder */
- File current_folder = new File(FlashPath);
- if (!current_folder.exists())
- {
- if (!current_folder.mkdirs())
- {
- Log.e("MinetestAssetCopy","\t failed create folder: " +
- FlashPath);
- }
- else
- {
- Log.v("MinetestAssetCopy","\t created folder: " +
- FlashPath);
- }
- }
-
- continue;
- }
-
- /* if it's not a folder it's most likely a file */
- boolean refresh = true;
-
- File testme = new File(FlashPath);
-
- long asset_filesize = -1;
- long stored_filesize = -1;
-
- if (testme.exists())
- {
- try
- {
- AssetFileDescriptor fd = getAssets().openFd(current_path);
- asset_filesize = fd.getLength();
- fd.close();
- }
- catch (IOException e)
- {
- refresh = true;
- m_asset_size_unknown.add(current_path);
- Log.e("MinetestAssetCopy","Failed to open asset file \"" +
- FlashPath + "\" for size check");
- }
-
- stored_filesize = testme.length();
-
- if (asset_filesize == stored_filesize)
- {
- refresh = false;
- }
-
- }
-
- if (refresh)
- {
- m_tocopy.add(current_path);
- }
- }
- }
-
- /**
- * read list of folders prepared on package build
- */
- protected void BuildFolderList()
- {
- try
- {
- InputStream is = getAssets().open("index.txt");
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-
- String line = reader.readLine();
- while (line != null)
- {
- m_foldernames.add(line);
- line = reader.readLine();
- }
- is.close();
- } catch (IOException e1)
- {
- Log.e("MinetestAssetCopy","Error on processing index.txt");
- e1.printStackTrace();
- }
- }
-
- /**
- * read list of asset files prepared on package build
- */
- protected void BuildFileList()
- {
- long entrycount = 0;
- try
- {
- InputStream is = getAssets().open("filelist.txt");
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-
- String line = reader.readLine();
- while (line != null)
- {
- m_filenames.add(line);
- line = reader.readLine();
- entrycount ++;
- }
- is.close();
- }
- catch (IOException e1)
- {
- Log.e("MinetestAssetCopy","Error on processing filelist.txt");
- e1.printStackTrace();
- }
- }
-
- protected void onPostExecute (String result)
- {
- finish();
- }
-
- protected boolean isAssetFolder(String path)
- {
- return m_foldernames.contains(path);
- }
-
- boolean m_copy_started = false;
- String m_Foldername = "media";
- Vector<String> m_foldernames;
- Vector<String> m_filenames;
- Vector<String> m_tocopy;
- Vector<String> m_asset_size_unknown;
- }
-}
diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
deleted file mode 100644
index 68dc73274..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package net.minetest.minetest;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.InputType;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnKeyListener;
-import android.widget.EditText;
-
-public class MinetestTextEntry extends Activity {
- public AlertDialog mTextInputDialog;
- public EditText mTextInputWidget;
-
- private final int MultiLineTextInput = 1;
- private final int SingleLineTextInput = 2;
- private final int SingleLinePasswordInput = 3;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Bundle b = getIntent().getExtras();
- String acceptButton = b.getString("EnterButton");
- String hint = b.getString("hint");
- String current = b.getString("current");
- int editType = b.getInt("editType");
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- mTextInputWidget = new EditText(this);
- mTextInputWidget.setHint(hint);
- mTextInputWidget.setText(current);
- mTextInputWidget.setMinWidth(300);
- if (editType == SingleLinePasswordInput) {
- mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT |
- InputType.TYPE_TEXT_VARIATION_PASSWORD);
- }
- else {
- mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT);
- }
-
-
- builder.setView(mTextInputWidget);
-
- if (editType == MultiLineTextInput) {
- builder.setPositiveButton(acceptButton, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton)
- { pushResult(mTextInputWidget.getText().toString()); }
- });
- }
-
- builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- cancelDialog();
- }
- });
-
- mTextInputWidget.setOnKeyListener(new OnKeyListener() {
- @Override
- public boolean onKey(View view, int KeyCode, KeyEvent event) {
- if ( KeyCode == KeyEvent.KEYCODE_ENTER){
-
- pushResult(mTextInputWidget.getText().toString());
- return true;
- }
- return false;
- }
- });
-
- mTextInputDialog = builder.create();
- mTextInputDialog.show();
- }
-
- public void pushResult(String text) {
- Intent resultData = new Intent();
- resultData.putExtra("text", text);
- setResult(Activity.RESULT_OK,resultData);
- mTextInputDialog.dismiss();
- finish();
- }
-
- public void cancelDialog() {
- setResult(Activity.RESULT_CANCELED);
- mTextInputDialog.dismiss();
- finish();
- }
-}
diff --git a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
deleted file mode 100644
index 159521a50..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package net.minetest.minetest;
-
-import android.app.NativeActivity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.WindowManager;
-
-public class MtNativeActivity extends NativeActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- m_MessagReturnCode = -1;
- m_MessageReturnValue = "";
-
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- }
-
- public void copyAssets() {
- Intent intent = new Intent(this, MinetestAssetCopy.class);
- startActivity(intent);
- }
-
- public void showDialog(String acceptButton, String hint, String current,
- int editType) {
-
- Intent intent = new Intent(this, MinetestTextEntry.class);
- Bundle params = new Bundle();
- params.putString("acceptButton", acceptButton);
- params.putString("hint", hint);
- params.putString("current", current);
- params.putInt("editType", editType);
- intent.putExtras(params);
- startActivityForResult(intent, 101);
- m_MessageReturnValue = "";
- m_MessagReturnCode = -1;
- }
-
- public static native void putMessageBoxResult(String text);
-
- /* ugly code to workaround putMessageBoxResult not beeing found */
- public int getDialogState() {
- return m_MessagReturnCode;
- }
-
- public String getDialogValue() {
- m_MessagReturnCode = -1;
- return m_MessageReturnValue;
- }
-
- public float getDensity() {
- return getResources().getDisplayMetrics().density;
- }
-
- public int getDisplayWidth() {
- return getResources().getDisplayMetrics().widthPixels;
- }
-
- public int getDisplayHeight() {
- return getResources().getDisplayMetrics().heightPixels;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data) {
- if (requestCode == 101) {
- if (resultCode == RESULT_OK) {
- String text = data.getStringExtra("text");
- m_MessagReturnCode = 0;
- m_MessageReturnValue = text;
- }
- else {
- m_MessagReturnCode = 1;
- }
- }
- }
-
- static {
- System.loadLibrary("openal");
- System.loadLibrary("ogg");
- System.loadLibrary("vorbis");
- System.loadLibrary("ssl");
- System.loadLibrary("crypto");
- System.loadLibrary("gmp");
- System.loadLibrary("iconv");
-
- // We don't have to load libminetest.so ourselves,
- // but if we do, we get nicer logcat errors when
- // loading fails.
- System.loadLibrary("minetest");
- }
-
- private int m_MessagReturnCode;
- private String m_MessageReturnValue;
-}
diff --git a/build/android/src/main/res/drawable-hdpi/irr_icon.png b/build/android/src/main/res/drawable-hdpi/irr_icon.png
deleted file mode 100644
index 0b6861a0d..000000000
--- a/build/android/src/main/res/drawable-hdpi/irr_icon.png
+++ /dev/null
Binary files differ
diff --git a/build/android/src/main/res/drawable-ldpi/irr_icon.png b/build/android/src/main/res/drawable-ldpi/irr_icon.png
deleted file mode 100644
index b8c5d0177..000000000
--- a/build/android/src/main/res/drawable-ldpi/irr_icon.png
+++ /dev/null
Binary files differ
diff --git a/build/android/src/main/res/drawable-mdpi/irr_icon.png b/build/android/src/main/res/drawable-mdpi/irr_icon.png
deleted file mode 100644
index 951a7f8c1..000000000
--- a/build/android/src/main/res/drawable-mdpi/irr_icon.png
+++ /dev/null
Binary files differ
diff --git a/build/android/src/main/res/drawable-xhdpi/irr_icon.png b/build/android/src/main/res/drawable-xhdpi/irr_icon.png
deleted file mode 100644
index 2ec528ef7..000000000
--- a/build/android/src/main/res/drawable-xhdpi/irr_icon.png
+++ /dev/null
Binary files differ
diff --git a/build/android/src/main/res/layout/assetcopy.xml b/build/android/src/main/res/layout/assetcopy.xml
deleted file mode 100644
index 1fcfffd65..000000000
--- a/build/android/src/main/res/layout/assetcopy.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
-
- <ProgressBar
- android:id="@+id/progressBar1"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical" />
-
- <TextView
- android:id="@+id/textView1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ellipsize="middle"
- android:singleLine="true"
- android:layout_gravity="center_horizontal"
- android:text="@string/preparing_media"
- android:textAppearance="?android:attr/textAppearanceSmall" />
-
-</LinearLayout>
diff --git a/build/android/src/main/res/values/strings.xml b/build/android/src/main/res/values/strings.xml
deleted file mode 100644
index b407a77c6..000000000
--- a/build/android/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="preparing_media">Preparing media...</string>
-</resources>
-
diff --git a/build/android/src/main/res/values/styles.xml b/build/android/src/main/res/values/styles.xml
deleted file mode 100644
index 25b8df5a3..000000000
--- a/build/android/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <style name="Theme.Transparent" parent="android:Theme">
- <item name="android:windowIsTranslucent">true</item>
- <item name="android:windowBackground">@android:color/transparent</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:backgroundDimEnabled">false</item>
- </style>
-</resources> \ No newline at end of file
diff --git a/builtin/async/game.lua b/builtin/async/game.lua
new file mode 100644
index 000000000..6512f0706
--- /dev/null
+++ b/builtin/async/game.lua
@@ -0,0 +1,59 @@
+core.log("info", "Initializing asynchronous environment (game)")
+
+local function pack2(...)
+ return {n=select('#', ...), ...}
+end
+
+-- Entrypoint to run async jobs, called by C++
+function core.job_processor(func, params)
+ local retval = pack2(func(unpack(params, 1, params.n)))
+
+ return retval
+end
+
+-- Import a bunch of individual files from builtin/game/
+local gamepath = core.get_builtin_path() .. "game" .. DIR_DELIM
+
+dofile(gamepath .. "constants.lua")
+dofile(gamepath .. "item_s.lua")
+dofile(gamepath .. "misc_s.lua")
+dofile(gamepath .. "features.lua")
+dofile(gamepath .. "voxelarea.lua")
+
+-- Transfer of globals
+do
+ local all = assert(core.transferred_globals)
+ core.transferred_globals = nil
+
+ all.registered_nodes = {}
+ all.registered_craftitems = {}
+ all.registered_tools = {}
+ for k, v in pairs(all.registered_items) do
+ -- Disable further modification
+ setmetatable(v, {__newindex = {}})
+ -- Reassemble the other tables
+ if v.type == "node" then
+ all.registered_nodes[k] = v
+ elseif v.type == "craftitem" then
+ all.registered_craftitems[k] = v
+ elseif v.type == "tool" then
+ all.registered_tools[k] = v
+ end
+ end
+
+ for k, v in pairs(all) do
+ core[k] = v
+ end
+end
+
+-- For tables that are indexed by item name:
+-- If table[X] does not exist, default to table[core.registered_aliases[X]]
+local alias_metatable = {
+ __index = function(t, name)
+ return rawget(t, core.registered_aliases[name])
+ end
+}
+setmetatable(core.registered_items, alias_metatable)
+setmetatable(core.registered_nodes, alias_metatable)
+setmetatable(core.registered_craftitems, alias_metatable)
+setmetatable(core.registered_tools, alias_metatable)
diff --git a/builtin/async/init.lua b/builtin/async/init.lua
deleted file mode 100644
index 1b2549685..000000000
--- a/builtin/async/init.lua
+++ /dev/null
@@ -1,17 +0,0 @@
-
-core.log("info", "Initializing Asynchronous environment")
-
-function core.job_processor(serialized_func, serialized_param)
- local func = loadstring(serialized_func)
- local param = core.deserialize(serialized_param)
- local retval = nil
-
- if type(func) == "function" then
- retval = core.serialize(func(param))
- else
- core.log("error", "ASYNC WORKER: Unable to deserialize function")
- end
-
- return retval or core.serialize(nil)
-end
-
diff --git a/builtin/async/mainmenu.lua b/builtin/async/mainmenu.lua
new file mode 100644
index 000000000..0e9c222d1
--- /dev/null
+++ b/builtin/async/mainmenu.lua
@@ -0,0 +1,9 @@
+core.log("info", "Initializing asynchronous environment")
+
+function core.job_processor(func, serialized_param)
+ local param = core.deserialize(serialized_param)
+
+ local retval = core.serialize(func(param))
+
+ return retval or core.serialize(nil)
+end
diff --git a/builtin/client/chatcommands.lua b/builtin/client/chatcommands.lua
new file mode 100644
index 000000000..a563a6627
--- /dev/null
+++ b/builtin/client/chatcommands.lua
@@ -0,0 +1,74 @@
+-- Minetest: builtin/client/chatcommands.lua
+
+core.register_on_sending_chat_message(function(message)
+ if message:sub(1,2) == ".." then
+ return false
+ end
+
+ local first_char = message:sub(1,1)
+ if first_char == "/" or first_char == "." then
+ core.display_chat_message(core.gettext("Issued command: ") .. message)
+ end
+
+ if first_char ~= "." then
+ return false
+ end
+
+ local cmd, param = string.match(message, "^%.([^ ]+) *(.*)")
+ param = param or ""
+
+ if not cmd then
+ core.display_chat_message("-!- " .. core.gettext("Empty command."))
+ return true
+ end
+
+ -- Run core.registered_on_chatcommand callbacks.
+ if core.run_callbacks(core.registered_on_chatcommand, 5, cmd, param) then
+ return true
+ end
+
+ local cmd_def = core.registered_chatcommands[cmd]
+ if cmd_def then
+ core.set_last_run_mod(cmd_def.mod_origin)
+ local _, result = cmd_def.func(param)
+ if result then
+ core.display_chat_message(result)
+ end
+ else
+ core.display_chat_message("-!- " .. core.gettext("Invalid command: ") .. cmd)
+ end
+
+ return true
+end)
+
+core.register_chatcommand("list_players", {
+ description = core.gettext("List online players"),
+ func = function(param)
+ local player_names = core.get_player_names()
+ if not player_names then
+ return false, core.gettext("This command is disabled by server.")
+ end
+
+ local players = table.concat(player_names, ", ")
+ return true, core.gettext("Online players: ") .. players
+ end
+})
+
+core.register_chatcommand("disconnect", {
+ description = core.gettext("Exit to main menu"),
+ func = function(param)
+ core.disconnect()
+ end,
+})
+
+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.")
+ end,
+})
+
+function core.run_server_chatcommand(cmd, param)
+ core.send_chat_message("/" .. cmd .. " " .. param)
+end
diff --git a/builtin/client/death_formspec.lua b/builtin/client/death_formspec.lua
new file mode 100644
index 000000000..c25c799ab
--- /dev/null
+++ b/builtin/client/death_formspec.lua
@@ -0,0 +1,15 @@
+-- CSM death formspec. Only used when clientside modding is enabled, otherwise
+-- handled by the engine.
+
+core.register_on_death(function()
+ 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") .."]"
+ core.show_formspec("bultin:death", formspec)
+end)
+
+core.register_on_formspec_input(function(formname, fields)
+ if formname == "bultin:death" then
+ core.send_respawn()
+ end
+end)
diff --git a/builtin/client/init.lua b/builtin/client/init.lua
new file mode 100644
index 000000000..3719a90ee
--- /dev/null
+++ b/builtin/client/init.lua
@@ -0,0 +1,12 @@
+-- Minetest: builtin/client/init.lua
+local scriptpath = core.get_builtin_path()
+local clientpath = scriptpath.."client"..DIR_DELIM
+local commonpath = scriptpath.."common"..DIR_DELIM
+
+dofile(clientpath .. "register.lua")
+dofile(commonpath .. "after.lua")
+dofile(commonpath .. "mod_storage.lua")
+dofile(commonpath .. "chatcommands.lua")
+dofile(clientpath .. "chatcommands.lua")
+dofile(clientpath .. "death_formspec.lua")
+dofile(clientpath .. "misc.lua")
diff --git a/builtin/client/misc.lua b/builtin/client/misc.lua
new file mode 100644
index 000000000..80e0f2904
--- /dev/null
+++ b/builtin/client/misc.lua
@@ -0,0 +1,7 @@
+function core.setting_get_pos(name)
+ local value = core.settings:get(name)
+ if not value then
+ return nil
+ end
+ return core.string_to_pos(value)
+end
diff --git a/builtin/client/register.lua b/builtin/client/register.lua
new file mode 100644
index 000000000..61db4a30b
--- /dev/null
+++ b/builtin/client/register.lua
@@ -0,0 +1,83 @@
+core.callback_origins = {}
+
+local getinfo = debug.getinfo
+debug.getinfo = nil
+
+--- Runs given callbacks.
+--
+-- Note: this function is also called from C++
+-- @tparam table callbacks a table with registered callbacks, like `core.registered_on_*`
+-- @tparam number mode a RunCallbacksMode, as defined in src/script/common/c_internal.h
+-- @param ... arguments for the callback
+-- @return depends on mode
+function core.run_callbacks(callbacks, mode, ...)
+ assert(type(callbacks) == "table")
+ local cb_len = #callbacks
+ if cb_len == 0 then
+ if mode == 2 or mode == 3 then
+ return true
+ elseif mode == 4 or mode == 5 then
+ return false
+ end
+ end
+ local ret
+ for i = 1, cb_len do
+ local cb_ret = callbacks[i](...)
+
+ if mode == 0 and i == 1 or mode == 1 and i == cb_len then
+ ret = cb_ret
+ elseif mode == 2 then
+ if not cb_ret or i == 1 then
+ ret = cb_ret
+ end
+ elseif mode == 3 then
+ if cb_ret then
+ return cb_ret
+ end
+ ret = cb_ret
+ elseif mode == 4 then
+ if (cb_ret and not ret) or i == 1 then
+ ret = cb_ret
+ end
+ elseif mode == 5 and cb_ret then
+ return cb_ret
+ end
+ end
+ return ret
+end
+
+--
+-- Callback registration
+--
+
+local function make_registration()
+ local t = {}
+ local registerfunc = function(func)
+ t[#t + 1] = func
+ core.callback_origins[func] = {
+ mod = core.get_current_modname() or "??",
+ name = getinfo(1, "n").name or "??"
+ }
+ --local origin = core.callback_origins[func]
+ --print(origin.name .. ": " .. origin.mod .. " registering cbk " .. tostring(func))
+ end
+ return t, registerfunc
+end
+
+core.registered_globalsteps, core.register_globalstep = make_registration()
+core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration()
+core.registered_on_shutdown, core.register_on_shutdown = make_registration()
+core.registered_on_receiving_chat_message, core.register_on_receiving_chat_message = make_registration()
+core.registered_on_sending_chat_message, core.register_on_sending_chat_message = make_registration()
+core.registered_on_chatcommand, core.register_on_chatcommand = make_registration()
+core.registered_on_death, core.register_on_death = make_registration()
+core.registered_on_hp_modification, core.register_on_hp_modification = make_registration()
+core.registered_on_damage_taken, core.register_on_damage_taken = make_registration()
+core.registered_on_formspec_input, core.register_on_formspec_input = make_registration()
+core.registered_on_dignode, core.register_on_dignode = make_registration()
+core.registered_on_punchnode, core.register_on_punchnode = make_registration()
+core.registered_on_placenode, core.register_on_placenode = make_registration()
+core.registered_on_item_use, core.register_on_item_use = make_registration()
+core.registered_on_modchannel_message, core.register_on_modchannel_message = make_registration()
+core.registered_on_modchannel_signal, core.register_on_modchannel_signal = make_registration()
+core.registered_on_inventory_open, core.register_on_inventory_open = make_registration()
diff --git a/builtin/common/after.lua b/builtin/common/after.lua
new file mode 100644
index 000000000..bce262537
--- /dev/null
+++ b/builtin/common/after.lua
@@ -0,0 +1,50 @@
+local jobs = {}
+local time = 0.0
+local time_next = math.huge
+
+core.register_globalstep(function(dtime)
+ time = time + dtime
+
+ if time < time_next then
+ return
+ end
+
+ time_next = math.huge
+
+ -- Iterate backwards so that we miss any new timers added by
+ -- a timer callback.
+ for i = #jobs, 1, -1 do
+ local job = jobs[i]
+ if time >= job.expire then
+ core.set_last_run_mod(job.mod_origin)
+ job.func(unpack(job.arg))
+ local jobs_l = #jobs
+ jobs[i] = jobs[jobs_l]
+ jobs[jobs_l] = nil
+ elseif job.expire < time_next then
+ time_next = job.expire
+ end
+ end
+end)
+
+function core.after(after, func, ...)
+ assert(tonumber(after) and type(func) == "function",
+ "Invalid minetest.after invocation")
+ local expire = time + after
+ local new_job = {
+ func = func,
+ expire = expire,
+ arg = {...},
+ mod_origin = core.get_last_run_mod(),
+ }
+
+ jobs[#jobs + 1] = new_job
+ time_next = math.min(time_next, expire)
+
+ return {
+ cancel = function()
+ new_job.func = function() end
+ new_job.args = {}
+ end
+ }
+end
diff --git a/builtin/common/chatcommands.lua b/builtin/common/chatcommands.lua
new file mode 100644
index 000000000..7c3da0601
--- /dev/null
+++ b/builtin/common/chatcommands.lua
@@ -0,0 +1,178 @@
+-- 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 = {}
+
+-- Interpret the parameters of a command, separating options and arguments.
+-- Input: command, param
+-- command: name of command
+-- param: parameters of command
+-- Returns: opts, args
+-- opts is a string of option letters, or false on error
+-- args is an array with the non-option arguments in order, or an error message
+-- Example: for this command line:
+-- /command a b -cd e f -g
+-- the function would receive:
+-- a b -cd e f -g
+-- and it would return:
+-- "cdg", {"a", "b", "e", "f"}
+-- Negative numbers are taken as arguments. Long options (--option) are
+-- currently rejected as reserved.
+local function getopts(command, param)
+ local opts = ""
+ local args = {}
+ for match in param:gmatch("%S+") do
+ if match:byte(1) == 45 then -- 45 = '-'
+ local second = match:byte(2)
+ if second == 45 then
+ return false, S("Invalid parameters (see /help @1).", command)
+ elseif second and (second < 48 or second > 57) then -- 48 = '0', 57 = '9'
+ opts = opts .. match:sub(2)
+ else
+ -- numeric, add it to args
+ args[#args + 1] = match
+ end
+ else
+ args[#args + 1] = match
+ end
+ end
+ return opts, args
+end
+
+function core.register_chatcommand(cmd, def)
+ def = def or {}
+ def.params = def.params or ""
+ def.description = def.description or ""
+ def.privs = def.privs or {}
+ def.mod_origin = core.get_current_modname() or "??"
+ core.registered_chatcommands[cmd] = def
+end
+
+function core.unregister_chatcommand(name)
+ if core.registered_chatcommands[name] then
+ core.registered_chatcommands[name] = nil
+ else
+ core.log("warning", "Not unregistering chatcommand " ..name..
+ " because it doesn't exist.")
+ end
+end
+
+function core.override_chatcommand(name, redefinition)
+ local chatcommand = core.registered_chatcommands[name]
+ assert(chatcommand, "Attempt to override non-existent chatcommand "..name)
+ for k, v in pairs(redefinition) do
+ rawset(chatcommand, k, v)
+ end
+ core.registered_chatcommands[name] = chatcommand
+end
+
+local function format_help_line(cmd, def)
+ local cmd_marker = INIT == "client" and "." or "/"
+ local msg = core.colorize("#00ffff", cmd_marker .. cmd)
+ if def.params and def.params ~= "" then
+ msg = msg .. " " .. def.params
+ end
+ if def.description and def.description ~= "" then
+ msg = msg .. ": " .. def.description
+ end
+ return msg
+end
+
+local function do_help_cmd(name, param)
+ local opts, args = getopts("help", param)
+ if not opts then
+ return false, args
+ end
+ if #args > 1 then
+ return false, S("Too many arguments, try using just /help <command>")
+ end
+ local use_gui = INIT ~= "client" and core.get_player_by_name(name)
+ use_gui = use_gui and not opts:find("t")
+
+ if #args == 0 and not use_gui then
+ local cmds = {}
+ for cmd, def in pairs(core.registered_chatcommands) do
+ if INIT == "client" or core.check_player_privs(name, def.privs) then
+ cmds[#cmds + 1] = cmd
+ end
+ end
+ table.sort(cmds)
+ 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 #args == 0 or (args[1] == "all" and use_gui) then
+ core.show_general_help_formspec(name)
+ return true
+ elseif args[1] == "all" then
+ local cmds = {}
+ for cmd, def in pairs(core.registered_chatcommands) do
+ if INIT == "client" or core.check_player_privs(name, def.privs) then
+ cmds[#cmds + 1] = format_help_line(cmd, def)
+ end
+ end
+ table.sort(cmds)
+ 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 args[1] == "privs" then
+ if use_gui then
+ core.show_privs_help_formspec(name)
+ return true
+ end
+ local privs = {}
+ for priv, def in pairs(core.registered_privileges) do
+ privs[#privs + 1] = priv .. ": " .. def.description
+ end
+ table.sort(privs)
+ return true, S("Available privileges:").."\n"..table.concat(privs, "\n")
+ else
+ local cmd = args[1]
+ local def = core.registered_chatcommands[cmd]
+ if not def then
+ 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
+ end
+end
+
+if INIT == "client" then
+ core.register_chatcommand("help", {
+ 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 = S("[all | privs | <cmd>] [-t]"),
+ description = S("Get help for commands or list privileges (-t: output in chat)"),
+ func = do_help_cmd,
+ })
+end
diff --git a/builtin/common/filterlist.lua b/builtin/common/filterlist.lua
index 2a62362e3..e30379f2f 100644
--- a/builtin/common/filterlist.lua
+++ b/builtin/common/filterlist.lua
@@ -47,17 +47,17 @@ function filterlist.create(raw_fct,compare_fct,uid_match_fct,filter_fct,fetch_pa
assert((raw_fct ~= nil) and (type(raw_fct) == "function"))
assert((compare_fct ~= nil) and (type(compare_fct) == "function"))
-
+
local self = {}
-
+
self.m_raw_list_fct = raw_fct
self.m_compare_fct = compare_fct
self.m_filter_fct = filter_fct
self.m_uid_match_fct = uid_match_fct
-
+
self.m_filtercriteria = nil
self.m_fetch_param = fetch_param
-
+
self.m_sortmode = "none"
self.m_sort_list = {}
@@ -79,7 +79,7 @@ function filterlist.create(raw_fct,compare_fct,uid_match_fct,filter_fct,fetch_pa
self.refresh = filterlist.refresh
filterlist.process(self)
-
+
return self
end
@@ -128,49 +128,49 @@ function filterlist.get_raw_element(self,idx)
if type(idx) ~= "number" then
idx = tonumber(idx)
end
-
+
if idx ~= nil and idx > 0 and idx <= #self.m_raw_list then
return self.m_raw_list[idx]
end
-
+
return nil
end
--------------------------------------------------------------------------------
function filterlist.get_raw_index(self,listindex)
assert(self.m_processed_list ~= nil)
-
+
if listindex ~= nil and listindex > 0 and
listindex <= #self.m_processed_list then
local entry = self.m_processed_list[listindex]
-
+
for i,v in ipairs(self.m_raw_list) do
-
+
if self.m_compare_fct(v,entry) then
return i
end
end
end
-
+
return 0
end
--------------------------------------------------------------------------------
function filterlist.get_current_index(self,listindex)
assert(self.m_processed_list ~= nil)
-
+
if listindex ~= nil and listindex > 0 and
listindex <= #self.m_raw_list then
local entry = self.m_raw_list[listindex]
-
+
for i,v in ipairs(self.m_processed_list) do
-
+
if self.m_compare_fct(v,entry) then
return i
end
end
end
-
+
return 0
end
@@ -183,23 +183,23 @@ function filterlist.process(self)
self.m_processed_list = self.m_raw_list
return
end
-
+
self.m_processed_list = {}
-
+
for k,v in pairs(self.m_raw_list) do
if self.m_filtercriteria == nil or
self.m_filter_fct(v,self.m_filtercriteria) then
self.m_processed_list[#self.m_processed_list + 1] = v
end
end
-
+
if self.m_sortmode == "none" then
return
end
-
+
if self.m_sort_list[self.m_sortmode] ~= nil and
type(self.m_sort_list[self.m_sortmode]) == "function" then
-
+
self.m_sort_list[self.m_sortmode](self)
end
end
@@ -209,7 +209,7 @@ function filterlist.size(self)
if self.m_processed_list == nil then
return 0
end
-
+
return #self.m_processed_list
end
@@ -233,8 +233,8 @@ function filterlist.raw_index_by_uid(self, uid)
elementidx = i
end
end
-
-
+
+
-- If there are more elements than one with same name uid can't decide which
-- one is meant. self shouldn't be possible but just for sure.
if elementcount > 1 then
@@ -250,15 +250,14 @@ end
--------------------------------------------------------------------------------
function compare_worlds(world1,world2)
-
if world1.path ~= world2.path then
return false
end
-
+
if world1.name ~= world2.name then
return false
end
-
+
if world1.gameid ~= world2.gameid then
return false
end
@@ -288,8 +287,11 @@ function sort_mod_list(self)
table.sort(self.m_processed_list, function(a, b)
-- Show game mods at bottom
- if a.typ ~= b.typ then
- return b.typ == "game_mod"
+ if a.type ~= b.type or a.loc ~= b.loc then
+ if b.type == "game" then
+ return a.loc ~= "game"
+ end
+ return b.loc == "game"
end
-- If in same or no modpack, sort by name
if a.modpack == b.modpack then
@@ -305,7 +307,7 @@ function sort_mod_list(self)
elseif b.name == a.modpack then
return false
end
-
+
local name_a = a.modpack or a.name
local name_b = b.modpack or b.name
if name_a:lower() == name_b:lower() then
diff --git a/builtin/common/information_formspecs.lua b/builtin/common/information_formspecs.lua
new file mode 100644
index 000000000..1445a017c
--- /dev/null
+++ b/builtin/common/information_formspecs.lua
@@ -0,0 +1,136 @@
+local COLOR_BLUE = "#7AF"
+local COLOR_GREEN = "#7F7"
+local COLOR_GRAY = "#BBB"
+
+local LIST_FORMSPEC = [[
+ size[13,6.5]
+ label[0,-0.1;%s]
+ tablecolumns[color;tree;text;text]
+ table[0,0.5;12.8,5.5;list;%s;0]
+ button_exit[5,6;3,1;quit;%s]
+ ]]
+
+local LIST_FORMSPEC_DESCRIPTION = [[
+ size[13,7.5]
+ label[0,-0.1;%s]
+ tablecolumns[color;tree;text;text]
+ table[0,0.5;12.8,4.8;list;%s;%i]
+ box[0,5.5;12.8,1.5;#000]
+ textarea[0.3,5.5;13.05,1.9;;;%s]
+ button_exit[5,7;3,1;quit;%s]
+ ]]
+
+local F = core.formspec_escape
+local S = core.get_translator("__builtin")
+
+
+-- CHAT COMMANDS FORMSPEC
+
+local mod_cmds = {}
+
+local function load_mod_command_tree()
+ mod_cmds = {}
+
+ for name, def in pairs(core.registered_chatcommands) do
+ mod_cmds[def.mod_origin] = mod_cmds[def.mod_origin] or {}
+ local cmds = mod_cmds[def.mod_origin]
+
+ -- Could be simplified, but avoid the priv checks whenever possible
+ cmds[#cmds + 1] = { name, def }
+ end
+ local sorted_mod_cmds = {}
+ for modname, cmds in pairs(mod_cmds) do
+ table.sort(cmds, function(a, b) return a[1] < b[1] end)
+ sorted_mod_cmds[#sorted_mod_cmds + 1] = { modname, cmds }
+ end
+ table.sort(sorted_mod_cmds, function(a, b) return a[1] < b[1] end)
+ mod_cmds = sorted_mod_cmds
+end
+
+core.after(0, load_mod_command_tree)
+
+local function build_chatcommands_formspec(name, sel, copy)
+ local rows = {}
+ rows[1] = "#FFF,0,"..F(S("Command"))..","..F(S("Parameters"))
+
+ 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.")
+
+ local privs = core.get_player_privs(name)
+ for i, data in ipairs(mod_cmds) do
+ rows[#rows + 1] = COLOR_BLUE .. ",0," .. F(data[1]) .. ","
+ for j, cmds in ipairs(data[2]) do
+ local has_priv = privs[cmds[2].privs]
+ rows[#rows + 1] = ("%s,1,%s,%s"):format(
+ has_priv and COLOR_GREEN or COLOR_GRAY,
+ cmds[1], F(cmds[2].params))
+ if sel == #rows then
+ description = cmds[2].description
+ if copy then
+ core.chat_send_player(name, S("Command: @1 @2",
+ core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params))
+ end
+ end
+ end
+ end
+
+ return LIST_FORMSPEC_DESCRIPTION:format(
+ F(S("Available commands: (see also: /help <cmd>)")),
+ table.concat(rows, ","), sel or 0,
+ F(description), F(S("Close"))
+ )
+end
+
+
+-- PRIVILEGES FORMSPEC
+
+local function build_privs_formspec(name)
+ local privs = {}
+ for priv_name, def in pairs(core.registered_privileges) do
+ privs[#privs + 1] = { priv_name, def }
+ end
+ table.sort(privs, function(a, b) return a[1] < b[1] end)
+
+ local rows = {}
+ 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], F(data[2].description))
+ end
+
+ return LIST_FORMSPEC:format(
+ F(S("Available privileges:")),
+ table.concat(rows, ","),
+ F(S("Close"))
+ )
+end
+
+
+-- DETAILED CHAT COMMAND INFORMATION
+
+core.register_on_player_receive_fields(function(player, formname, fields)
+ if formname ~= "__builtin:help_cmds" or fields.quit then
+ return
+ end
+
+ 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",
+ build_chatcommands_formspec(name, event.row, event.type == "DCL"))
+ end
+end)
+
+function core.show_general_help_formspec(name)
+ core.show_formspec(name, "__builtin:help_cmds",
+ build_chatcommands_formspec(name))
+end
+
+function core.show_privs_help_formspec(name)
+ core.show_formspec(name, "__builtin:help_privs",
+ build_privs_formspec(name))
+end
diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua
index c2dc7514d..467f18804 100644
--- a/builtin/common/misc_helpers.lua
+++ b/builtin/common/misc_helpers.lua
@@ -5,7 +5,7 @@
local string_sub, string_find = string.sub, string.find
--------------------------------------------------------------------------------
-function basic_dump(o)
+local function basic_dump(o)
local tp = type(o)
if tp == "number" then
return tostring(o)
@@ -20,6 +20,8 @@ function basic_dump(o)
-- dump's output is intended for humans.
--elseif tp == "function" then
-- return string.format("loadstring(%q)", string.dump(o))
+ elseif tp == "userdata" then
+ return tostring(o)
else
return string.format("<%s>", tp)
end
@@ -120,9 +122,15 @@ end
-- The dumped and level arguments are internal-only.
function dump(o, indent, nested, level)
- if type(o) ~= "table" then
+ local t = type(o)
+ if not level and t == "userdata" then
+ -- when userdata (e.g. player) is passed directly, print its metatable:
+ return "userdata metatable: " .. dump(getmetatable(o))
+ end
+ if t ~= "table" then
return basic_dump(o)
end
+
-- Contains table -> true/nil of currently nested tables
nested = nested or {}
if nested[o] then
@@ -131,10 +139,11 @@ function dump(o, indent, nested, level)
nested[o] = true
indent = indent or "\t"
level = level or 1
- local t = {}
+
+ local ret = {}
local dumped_indexes = {}
for i, v in ipairs(o) do
- t[#t + 1] = dump(v, indent, nested, level + 1)
+ ret[#ret + 1] = dump(v, indent, nested, level + 1)
dumped_indexes[i] = true
end
for k, v in pairs(o) do
@@ -143,7 +152,7 @@ function dump(o, indent, nested, level)
k = "["..dump(k, indent, nested, level + 1).."]"
end
v = dump(v, indent, nested, level + 1)
- t[#t + 1] = k.." = "..v
+ ret[#ret + 1] = k.." = "..v
end
end
nested[o] = nil
@@ -152,18 +161,18 @@ function dump(o, indent, nested, level)
local end_indent_str = "\n"..string.rep(indent, level - 1)
return string.format("{%s%s%s}",
indent_str,
- table.concat(t, ","..indent_str),
+ table.concat(ret, ","..indent_str),
end_indent_str)
end
- return "{"..table.concat(t, ", ").."}"
+ return "{"..table.concat(ret, ", ").."}"
end
--------------------------------------------------------------------------------
function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
delim = delim or ","
- max_splits = max_splits or -1
+ max_splits = max_splits or -2
local items = {}
- local pos, len, seplen = 1, #str, #delim
+ local pos, len = 1, #str
local plain = not sep_is_pattern
max_splits = max_splits + 1
repeat
@@ -193,37 +202,14 @@ function table.indexof(list, val)
return -1
end
-assert(table.indexof({"foo", "bar"}, "foo") == 1)
-assert(table.indexof({"foo", "bar"}, "baz") == -1)
-
---------------------------------------------------------------------------------
-function file_exists(filename)
- local f = io.open(filename, "r")
- if f == nil then
- return false
- else
- f:close()
- return true
- end
-end
-
--------------------------------------------------------------------------------
function string:trim()
- return (self:gsub("^%s*(.-)%s*$", "%1"))
+ return self:match("^%s*(.-)%s*$")
end
-assert(string.trim("\n \t\tfoo bar\t ") == "foo bar")
-
--------------------------------------------------------------------------------
function math.hypot(x, y)
- local t
- x = math.abs(x)
- y = math.abs(y)
- t = math.min(x, y)
- x = math.max(x, y)
- if x == 0 then return 0 end
- t = t / x
- return x * math.sqrt(1 + t * t)
+ return math.sqrt(x * x + y * y)
end
--------------------------------------------------------------------------------
@@ -238,128 +224,62 @@ function math.sign(x, tolerance)
end
--------------------------------------------------------------------------------
-function get_last_folder(text,count)
- local parts = text:split(DIR_DELIM)
-
- if count == nil then
- return parts[#parts]
+function math.factorial(x)
+ assert(x % 1 == 0 and x >= 0, "factorial expects a non-negative integer")
+ if x >= 171 then
+ -- 171! is greater than the biggest double, no need to calculate
+ return math.huge
end
-
- local retval = ""
- for i=1,count,1 do
- retval = retval .. parts[#parts - (count-i)] .. DIR_DELIM
+ local v = 1
+ for k = 2, x do
+ v = v * k
end
-
- return retval
+ return v
end
---------------------------------------------------------------------------------
-function cleanup_path(temppath)
- local parts = temppath:split("-")
- temppath = ""
- for i=1,#parts,1 do
- if temppath ~= "" then
- temppath = temppath .. "_"
- end
- temppath = temppath .. parts[i]
- end
-
- parts = temppath:split(".")
- temppath = ""
- for i=1,#parts,1 do
- if temppath ~= "" then
- temppath = temppath .. "_"
- end
- temppath = temppath .. parts[i]
- end
-
- parts = temppath:split("'")
- temppath = ""
- for i=1,#parts,1 do
- if temppath ~= "" then
- temppath = temppath .. ""
- end
- temppath = temppath .. parts[i]
- end
-
- parts = temppath:split(" ")
- temppath = ""
- for i=1,#parts,1 do
- if temppath ~= "" then
- temppath = temppath
- end
- temppath = temppath .. parts[i]
+function math.round(x)
+ if x >= 0 then
+ return math.floor(x + 0.5)
end
-
- return temppath
+ return math.ceil(x - 0.5)
end
+local formspec_escapes = {
+ ["\\"] = "\\\\",
+ ["["] = "\\[",
+ ["]"] = "\\]",
+ [";"] = "\\;",
+ [","] = "\\,"
+}
function core.formspec_escape(text)
- if text ~= nil then
- text = string.gsub(text,"\\","\\\\")
- text = string.gsub(text,"%]","\\]")
- text = string.gsub(text,"%[","\\[")
- text = string.gsub(text,";","\\;")
- text = string.gsub(text,",","\\,")
- end
- return text
+ -- Use explicit character set instead of dot here because it doubles the performance
+ return text and string.gsub(text, "[\\%[%];,]", formspec_escapes)
end
-function core.splittext(text,charlimit)
- local retval = {}
-
- local current_idx = 1
-
- local start,stop = string_find(text, " ", current_idx)
- local nl_start,nl_stop = string_find(text, "\n", current_idx)
- local gotnewline = false
- if nl_start ~= nil and (start == nil or nl_start < start) then
- start = nl_start
- stop = nl_stop
- gotnewline = true
+function core.wrap_text(text, max_length, as_table)
+ local result = {}
+ local line = {}
+ if #text <= max_length then
+ return as_table and {text} or text
end
- local last_line = ""
- while start ~= nil do
- if string.len(last_line) + (stop-start) > charlimit then
- retval[#retval + 1] = last_line
- last_line = ""
- end
-
- if last_line ~= "" then
- last_line = last_line .. " "
- end
- last_line = last_line .. string_sub(text, current_idx, stop - 1)
-
- if gotnewline then
- retval[#retval + 1] = last_line
- last_line = ""
- gotnewline = false
- end
- current_idx = stop+1
-
- start,stop = string_find(text, " ", current_idx)
- nl_start,nl_stop = string_find(text, "\n", current_idx)
-
- if nl_start ~= nil and (start == nil or nl_start < start) then
- start = nl_start
- stop = nl_stop
- gotnewline = true
+ local line_length = 0
+ for word in text:gmatch("%S+") do
+ if line_length > 0 and line_length + #word + 1 >= max_length then
+ -- word wouldn't fit on current line, move to next line
+ table.insert(result, table.concat(line, " "))
+ line = {word}
+ line_length = #word
+ else
+ table.insert(line, word)
+ line_length = line_length + 1 + #word
end
end
- --add last part of text
- if string.len(last_line) + (string.len(text) - current_idx) > charlimit then
- retval[#retval + 1] = last_line
- retval[#retval + 1] = string_sub(text, current_idx)
- else
- last_line = last_line .. " " .. string_sub(text, current_idx)
- retval[#retval + 1] = last_line
- end
-
- return retval
+ table.insert(result, table.concat(line, " "))
+ return as_table and result or table.concat(result, "\n")
end
--------------------------------------------------------------------------------
@@ -369,7 +289,7 @@ if INIT == "game" then
local dirs2 = {20, 23, 22, 21}
function core.rotate_and_place(itemstack, placer, pointed_thing,
- infinitestacks, orient_flags)
+ infinitestacks, orient_flags, prevent_after_place)
orient_flags = orient_flags or {}
local unode = core.get_node_or_nil(pointed_thing.under)
@@ -377,42 +297,22 @@ if INIT == "game" then
return
end
local undef = core.registered_nodes[unode.name]
- if undef and undef.on_rightclick then
- undef.on_rightclick(pointed_thing.under, unode, placer,
+ local sneaking = placer and placer:get_player_control().sneak
+ if undef and undef.on_rightclick and not sneaking then
+ return undef.on_rightclick(pointed_thing.under, unode, placer,
itemstack, pointed_thing)
- return
end
- local fdir = core.dir_to_facedir(placer:get_look_dir())
- local wield_name = itemstack:get_name()
+ local fdir = placer and core.dir_to_facedir(placer:get_look_dir()) or 0
local above = pointed_thing.above
local under = pointed_thing.under
local iswall = (above.y == under.y)
local isceiling = not iswall and (above.y < under.y)
- local anode = core.get_node_or_nil(above)
- if not anode then
- return
- end
- local pos = pointed_thing.above
- local node = anode
if undef and undef.buildable_to then
- pos = pointed_thing.under
- node = unode
iswall = false
end
- if core.is_protected(pos, placer:get_player_name()) then
- core.record_protection_violation(pos,
- placer:get_player_name())
- return
- end
-
- local ndef = core.registered_nodes[node.name]
- if not ndef or not ndef.buildable_to then
- return
- end
-
if orient_flags.force_floor then
iswall = false
isceiling = false
@@ -426,31 +326,25 @@ if INIT == "game" then
iswall = not iswall
end
+ local param2 = fdir
if iswall then
- core.set_node(pos, {name = wield_name,
- param2 = dirs1[fdir + 1]})
+ param2 = dirs1[fdir + 1]
elseif isceiling then
if orient_flags.force_facedir then
- core.set_node(pos, {name = wield_name,
- param2 = 20})
+ param2 = 20
else
- core.set_node(pos, {name = wield_name,
- param2 = dirs2[fdir + 1]})
+ param2 = dirs2[fdir + 1]
end
else -- place right side up
if orient_flags.force_facedir then
- core.set_node(pos, {name = wield_name,
- param2 = 0})
- else
- core.set_node(pos, {name = wield_name,
- param2 = fdir})
+ param2 = 0
end
end
- if not infinitestacks then
- itemstack:take_item()
- return itemstack
- end
+ local old_itemstack = ItemStack(itemstack)
+ local new_itemstack = core.item_place_node(itemstack, placer,
+ pointed_thing, param2, prevent_after_place)
+ return infinitestacks and old_itemstack or new_itemstack
end
@@ -458,13 +352,12 @@ if INIT == "game" then
--Wrapper for rotate_and_place() to check for sneak and assume Creative mode
--implies infinite stacks when performing a 6d rotation.
--------------------------------------------------------------------------------
-
-
core.rotate_node = function(itemstack, placer, pointed_thing)
- core.rotate_and_place(itemstack, placer, pointed_thing,
- core.setting_getbool("creative_mode"),
- {invert_wall = placer:get_player_control().sneak})
- return itemstack
+ local name = placer and placer:get_player_name() or ""
+ local invert_wall = placer and placer:get_player_control().sneak or false
+ return core.rotate_and_place(itemstack, placer, pointed_thing,
+ core.is_creative_enabled(name),
+ {invert_wall = invert_wall}, true)
end
end
@@ -511,6 +404,12 @@ function core.explode_scrollbar_event(evt)
end
--------------------------------------------------------------------------------
+function core.rgba(r, g, b, a)
+ return a and string.format("#%02X%02X%02X%02X", r, g, b, a) or
+ string.format("#%02X%02X%02X", r, g, b)
+end
+
+--------------------------------------------------------------------------------
function core.pos_to_string(pos, decimal_places)
local x = pos.x
local y = pos.y
@@ -529,59 +428,50 @@ function core.string_to_pos(value)
return nil
end
- local p = {}
- p.x, p.y, p.z = string.match(value, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
- if p.x and p.y and p.z then
- p.x = tonumber(p.x)
- p.y = tonumber(p.y)
- p.z = tonumber(p.z)
- return p
- end
- local p = {}
- p.x, p.y, p.z = string.match(value, "^%( *([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+) *%)$")
- if p.x and p.y and p.z then
- p.x = tonumber(p.x)
- p.y = tonumber(p.y)
- p.z = tonumber(p.z)
- return p
+ value = value:match("^%((.-)%)$") or value -- strip parentheses
+
+ local x, y, z = value:trim():match("^([%d.-]+)[,%s]%s*([%d.-]+)[,%s]%s*([%d.-]+)$")
+ if x and y and z then
+ x = tonumber(x)
+ y = tonumber(y)
+ z = tonumber(z)
+ return vector.new(x, y, z)
end
+
return nil
end
-assert(core.string_to_pos("10.0, 5, -2").x == 10)
-assert(core.string_to_pos("( 10.0, 5, -2)").z == -2)
-assert(core.string_to_pos("asd, 5, -2)") == nil)
--------------------------------------------------------------------------------
-function core.string_to_area(value)
- local p1, p2 = unpack(value:split(") ("))
- if p1 == nil or p2 == nil then
- return nil
- end
- p1 = core.string_to_pos(p1 .. ")")
- p2 = core.string_to_pos("(" .. p2)
- if p1 == nil or p2 == nil then
- return nil
+do
+ local rel_num_cap = "(~?-?%d*%.?%d*)" -- may be overly permissive as this will be tonumber'ed anyways
+ local num_delim = "[,%s]%s*"
+ local pattern = "^" .. table.concat({rel_num_cap, rel_num_cap, rel_num_cap}, num_delim) .. "$"
+
+ local function parse_area_string(pos, relative_to)
+ local pp = {}
+ pp.x, pp.y, pp.z = pos:trim():match(pattern)
+ return core.parse_coordinates(pp.x, pp.y, pp.z, relative_to)
end
- return p1, p2
-end
+ function core.string_to_area(value, relative_to)
+ local p1, p2 = value:match("^%((.-)%)%s*%((.-)%)$")
+ if not p1 then
+ return
+ end
-local function test_string_to_area()
- local p1, p2 = core.string_to_area("(10.0, 5, -2) ( 30.2, 4, -12.53)")
- assert(p1.x == 10.0 and p1.y == 5 and p1.z == -2)
- assert(p2.x == 30.2 and p2.y == 4 and p2.z == -12.53)
+ p1 = parse_area_string(p1, relative_to)
+ p2 = parse_area_string(p2, relative_to)
- p1, p2 = core.string_to_area("(10.0, 5, -2 30.2, 4, -12.53")
- assert(p1 == nil and p2 == nil)
+ if p1 == nil or p2 == nil then
+ return
+ end
- p1, p2 = core.string_to_area("(10.0, 5,) -2 fgdf2, 4, -12.53")
- assert(p1 == nil and p2 == nil)
+ return p1, p2
+ end
end
-test_string_to_area()
-
--------------------------------------------------------------------------------
function table.copy(t, seen)
local n = {}
@@ -593,12 +483,45 @@ function table.copy(t, seen)
end
return n
end
+
+
+function table.insert_all(t, other)
+ for i=1, #other do
+ t[#t + 1] = other[i]
+ end
+ return t
+end
+
+
+function table.key_value_swap(t)
+ local ti = {}
+ for k,v in pairs(t) do
+ ti[v] = k
+ end
+ return ti
+end
+
+
+function table.shuffle(t, from, to, random)
+ from = from or 1
+ to = to or #t
+ random = random or math.random
+ local n = to - from + 1
+ while n > 1 do
+ local r = from + n-1
+ local l = from + random(0, n-1)
+ t[l], t[r] = t[r], t[l]
+ n = n-1
+ end
+end
+
+
--------------------------------------------------------------------------------
-- mainmenu only functions
--------------------------------------------------------------------------------
if INIT == "mainmenu" then
function core.get_game(index)
- local games = game.get_games()
+ local games = core.get_games()
if index > 0 and index <= #games then
return games[index]
@@ -606,7 +529,9 @@ if INIT == "mainmenu" then
return nil
end
+end
+if core.gettext then -- for client and mainmenu
function fgettext_ne(text, ...)
text = core.gettext(text)
local arg = {n=select('#', ...), ...}
@@ -637,3 +562,209 @@ if INIT == "mainmenu" then
end
end
+local ESCAPE_CHAR = string.char(0x1b)
+
+function core.get_color_escape_sequence(color)
+ return ESCAPE_CHAR .. "(c@" .. color .. ")"
+end
+
+function core.get_background_escape_sequence(color)
+ return ESCAPE_CHAR .. "(b@" .. color .. ")"
+end
+
+function core.colorize(color, message)
+ local lines = tostring(message):split("\n", true)
+ local color_code = core.get_color_escape_sequence(color)
+
+ for i, line in ipairs(lines) do
+ lines[i] = color_code .. line
+ end
+
+ return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff")
+end
+
+
+function core.strip_foreground_colors(str)
+ return (str:gsub(ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
+end
+
+function core.strip_background_colors(str)
+ return (str:gsub(ESCAPE_CHAR .. "%(b@[^)]+%)", ""))
+end
+
+function core.strip_colors(str)
+ return (str:gsub(ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
+end
+
+function core.translate(textdomain, str, ...)
+ local start_seq
+ if textdomain == "" then
+ start_seq = ESCAPE_CHAR .. "T"
+ else
+ start_seq = ESCAPE_CHAR .. "(T@" .. textdomain .. ")"
+ end
+ local arg = {n=select('#', ...), ...}
+ local end_seq = ESCAPE_CHAR .. "E"
+ local arg_index = 1
+ local translated = str:gsub("@(.)", function(matched)
+ local c = string.byte(matched)
+ if string.byte("1") <= c and c <= string.byte("9") then
+ local a = c - string.byte("0")
+ if a ~= arg_index then
+ error("Escape sequences in string given to core.translate " ..
+ "are not in the correct order: got @" .. matched ..
+ "but expected @" .. tostring(arg_index))
+ end
+ if a > arg.n then
+ error("Not enough arguments provided to core.translate")
+ end
+ arg_index = arg_index + 1
+ return ESCAPE_CHAR .. "F" .. arg[a] .. ESCAPE_CHAR .. "E"
+ elseif matched == "n" then
+ return "\n"
+ else
+ return matched
+ end
+ end)
+ if arg_index < arg.n + 1 then
+ error("Too many arguments provided to core.translate")
+ end
+ return start_seq .. translated .. end_seq
+end
+
+function core.get_translator(textdomain)
+ return function(str, ...) return core.translate(textdomain or "", str, ...) end
+end
+
+--------------------------------------------------------------------------------
+-- Returns the exact coordinate of a pointed surface
+--------------------------------------------------------------------------------
+function core.pointed_thing_to_face_pos(placer, pointed_thing)
+ -- Avoid crash in some situations when player is inside a node, causing
+ -- 'above' to equal 'under'.
+ if vector.equals(pointed_thing.above, pointed_thing.under) then
+ return pointed_thing.under
+ end
+
+ local eye_height = placer:get_properties().eye_height
+ local eye_offset_first = placer:get_eye_offset()
+ local node_pos = pointed_thing.under
+ local camera_pos = placer:get_pos()
+ local pos_off = vector.multiply(
+ vector.subtract(pointed_thing.above, node_pos), 0.5)
+ local look_dir = placer:get_look_dir()
+ local offset, nc
+ local oc = {}
+
+ for c, v in pairs(pos_off) do
+ if nc or v == 0 then
+ oc[#oc + 1] = c
+ else
+ offset = v
+ nc = c
+ end
+ end
+
+ local fine_pos = {[nc] = node_pos[nc] + offset}
+ camera_pos.y = camera_pos.y + eye_height + eye_offset_first.y / 10
+ local f = (node_pos[nc] + offset - camera_pos[nc]) / look_dir[nc]
+
+ for i = 1, #oc do
+ fine_pos[oc[i]] = camera_pos[oc[i]] + look_dir[oc[i]] * f
+ end
+ return fine_pos
+end
+
+function core.string_to_privs(str, delim)
+ assert(type(str) == "string")
+ delim = delim or ','
+ local privs = {}
+ for _, priv in pairs(string.split(str, delim)) do
+ privs[priv:trim()] = true
+ end
+ return privs
+end
+
+function core.privs_to_string(privs, delim)
+ assert(type(privs) == "table")
+ delim = delim or ','
+ local list = {}
+ for priv, bool in pairs(privs) do
+ if bool then
+ list[#list + 1] = priv
+ end
+ end
+ return table.concat(list, delim)
+end
+
+function core.is_nan(number)
+ return number ~= number
+end
+
+--[[ Helper function for parsing an optionally relative number
+of a chat command parameter, using the chat command tilde notation.
+
+Parameters:
+* arg: String snippet containing the number; possible values:
+ * "<number>": return as number
+ * "~<number>": return relative_to + <number>
+ * "~": return relative_to
+ * Anything else will return `nil`
+* relative_to: Number to which the `arg` number might be relative to
+
+Returns:
+A number or `nil`, depending on `arg.
+
+Examples:
+* `core.parse_relative_number("5", 10)` returns 5
+* `core.parse_relative_number("~5", 10)` returns 15
+* `core.parse_relative_number("~", 10)` returns 10
+]]
+function core.parse_relative_number(arg, relative_to)
+ if not arg then
+ return nil
+ elseif arg == "~" then
+ return relative_to
+ elseif string.sub(arg, 1, 1) == "~" then
+ local number = tonumber(string.sub(arg, 2))
+ if not number then
+ return nil
+ end
+ if core.is_nan(number) or number == math.huge or number == -math.huge then
+ return nil
+ end
+ return relative_to + number
+ else
+ local number = tonumber(arg)
+ if core.is_nan(number) or number == math.huge or number == -math.huge then
+ return nil
+ end
+ return number
+ end
+end
+
+--[[ Helper function to parse coordinates that might be relative
+to another position; supports chat command tilde notation.
+Intended to be used in chat command parameter parsing.
+
+Parameters:
+* x, y, z: Parsed x, y, and z coordinates as strings
+* relative_to: Position to which to compare the position
+
+Syntax of x, y and z:
+* "<number>": return as number
+* "~<number>": return <number> + player position on this axis
+* "~": return player position on this axis
+
+Returns: a vector or nil for invalid input or if player does not exist
+]]
+function core.parse_coordinates(x, y, z, relative_to)
+ if not relative_to then
+ x, y, z = tonumber(x), tonumber(y), tonumber(z)
+ return x and y and z and { x = x, y = y, z = z }
+ end
+ local rx = core.parse_relative_number(x, relative_to.x)
+ local ry = core.parse_relative_number(y, relative_to.y)
+ local rz = core.parse_relative_number(z, relative_to.z)
+ return rx and ry and rz and { x = rx, y = ry, z = rz }
+end
diff --git a/builtin/common/mod_storage.lua b/builtin/common/mod_storage.lua
new file mode 100644
index 000000000..7ccf62900
--- /dev/null
+++ b/builtin/common/mod_storage.lua
@@ -0,0 +1,19 @@
+-- Modify core.get_mod_storage to return the storage for the current mod.
+
+local get_current_modname = core.get_current_modname
+
+local old_get_mod_storage = core.get_mod_storage
+
+local storages = setmetatable({}, {
+ __mode = "v", -- values are weak references (can be garbage-collected)
+ __index = function(self, modname)
+ local storage = old_get_mod_storage(modname)
+ self[modname] = storage
+ return storage
+ end,
+})
+
+function core.get_mod_storage()
+ local modname = get_current_modname()
+ return modname and storages[modname]
+end
diff --git a/builtin/common/serialize.lua b/builtin/common/serialize.lua
index b2165648e..afa63b362 100644
--- a/builtin/common/serialize.lua
+++ b/builtin/common/serialize.lua
@@ -1,217 +1,238 @@
--- Lua module to serialize values as Lua code.
--- From: https://github.com/fab13n/metalua/blob/no-dll/src/lib/serialize.lua
+-- From: https://github.com/appgurueu/modlib/blob/master/luon.lua
-- License: MIT
--- @copyright 2006-2997 Fabien Fleutot <metalua@gmail.com>
--- @author Fabien Fleutot <metalua@gmail.com>
--- @author ShadowNinja <shadowninja@minetest.net>
---------------------------------------------------------------------------------
---- Serialize an object into a source code string. This string, when passed as
--- an argument to deserialize(), returns an object structurally identical to
--- the original one. The following are currently supported:
--- * Booleans, numbers, strings, and nil.
--- * Functions; uses interpreter-dependent (and sometimes platform-dependent) bytecode!
--- * Tables; they can cantain multiple references and can be recursive, but metatables aren't saved.
--- This works in two phases:
--- 1. Recursively find and record multiple references and recursion.
--- 2. Recursively dump the value into a string.
--- @param x Value to serialize (nil is allowed).
--- @return load()able string containing the value.
-function core.serialize(x)
- local local_index = 1 -- Top index of the "_" local table in the dump
- -- table->nil/1/2 set of tables seen.
- -- nil = not seen, 1 = seen once, 2 = seen multiple times.
- local seen = {}
+local next, rawget, pairs, pcall, error, type, setfenv, loadstring
+ = next, rawget, pairs, pcall, error, type, setfenv, loadstring
- -- nest_points are places where a table appears within itself, directly
- -- or not. For instance, all of these chunks create nest points in
- -- table x: "x = {}; x[x] = 1", "x = {}; x[1] = x",
- -- "x = {}; x[1] = {y = {x}}".
- -- To handle those, two tables are used by mark_nest_point:
- -- * nested - Transient set of tables being currently traversed.
- -- Used for detecting nested tables.
- -- * nest_points - parent->{key=value, ...} table cantaining the nested
- -- keys and values in the parent. They're all dumped after all the
- -- other table operations have been performed.
- --
- -- mark_nest_point(p, k, v) fills nest_points with information required
- -- to remember that key/value (k, v) creates a nest point in table
- -- parent. It also marks "parent" and the nested item(s) as occuring
- -- multiple times, since several references to it will be required in
- -- order to patch the nest points.
- local nest_points = {}
- local nested = {}
- local function mark_nest_point(parent, k, v)
- local nk, nv = nested[k], nested[v]
- local np = nest_points[parent]
- if not np then
- np = {}
- nest_points[parent] = np
- end
- np[k] = v
- seen[parent] = 2
- if nk then seen[k] = 2 end
- if nv then seen[v] = 2 end
- end
+local table_concat, string_dump, string_format, string_match, math_huge
+ = table.concat, string.dump, string.format, string.match, math.huge
- -- First phase, list the tables and functions which appear more than
- -- once in x.
- local function mark_multiple_occurences(x)
- local tp = type(x)
- if tp ~= "table" and tp ~= "function" then
- -- No identity (comparison is done by value, not by instance)
+-- Recursively counts occurences of objects (non-primitives including strings) in a table.
+local function count_objects(value)
+ local counts = {}
+ if value == nil then
+ -- Early return for nil; tables can't contain nil
+ return counts
+ end
+ local function count_values(val)
+ local type_ = type(val)
+ if type_ == "boolean" or type_ == "number" then
return
end
- if seen[x] == 1 then
- seen[x] = 2
- elseif seen[x] ~= 2 then
- seen[x] = 1
- end
-
- if tp == "table" then
- nested[x] = true
- for k, v in pairs(x) do
- if nested[k] or nested[v] then
- mark_nest_point(x, k, v)
- else
- mark_multiple_occurences(k)
- mark_multiple_occurences(v)
+ local count = counts[val]
+ counts[val] = (count or 0) + 1
+ if type_ == "table" then
+ if not count then
+ for k, v in pairs(val) do
+ count_values(k)
+ count_values(v)
end
end
- nested[x] = nil
+ elseif type_ ~= "string" and type_ ~= "function" then
+ error("unsupported type: " .. type_)
end
end
+ count_values(value)
+ return counts
+end
- local dumped = {} -- object->varname set
- local local_defs = {} -- Dumped local definitions as source code lines
+-- Build a "set" of Lua keywords. These can't be used as short key names.
+-- See https://www.lua.org/manual/5.1/manual.html#2.1
+local keywords = {}
+for _, keyword in pairs({
+ "and", "break", "do", "else", "elseif",
+ "end", "false", "for", "function", "if",
+ "in", "local", "nil", "not", "or",
+ "repeat", "return", "then", "true", "until", "while",
+ "goto" -- LuaJIT, Lua 5.2+
+}) do
+ keywords[keyword] = true
+end
- -- Mutually recursive local functions:
- local dump_val, dump_or_ref_val
+local function quote(string)
+ return string_format("%q", string)
+end
- -- If x occurs multiple times, dump the local variable rather than
- -- the value. If it's the first time it's dumped, also dump the
- -- content in local_defs.
- function dump_or_ref_val(x)
- if seen[x] ~= 2 then
- return dump_val(x)
- end
- local var = dumped[x]
- if var then -- Already referenced
- return var
+local function dump_func(func)
+ return string_format("loadstring(%q)", string_dump(func))
+end
+
+-- Serializes Lua nil, booleans, numbers, strings, tables and even functions
+-- Tables are referenced by reference, strings are referenced by value. Supports circular tables.
+local function serialize(value, write)
+ local reference, refnum = "1", 1
+ -- [object] = reference
+ local references = {}
+ -- Circular tables that must be filled using `table[key] = value` statements
+ local to_fill = {}
+ for object, count in pairs(count_objects(value)) do
+ local type_ = type(object)
+ -- Object must appear more than once. If it is a string, the reference has to be shorter than the string.
+ if count >= 2 and (type_ ~= "string" or #reference + 5 < #object) then
+ if refnum == 1 then
+ write"local _={};" -- initialize reference table
+ end
+ write"_["
+ write(reference)
+ write("]=")
+ if type_ == "table" then
+ write("{}")
+ elseif type_ == "function" then
+ write(dump_func(object))
+ elseif type_ == "string" then
+ write(quote(object))
+ end
+ write(";")
+ references[object] = reference
+ if type_ == "table" then
+ to_fill[object] = reference
+ end
+ refnum = refnum + 1
+ reference = ("%d"):format(refnum)
end
- -- First occurence, create and register reference
- local val = dump_val(x)
- local i = local_index
- local_index = local_index + 1
- var = "_["..i.."]"
- local_defs[#local_defs + 1] = var.." = "..val
- dumped[x] = var
- return var
end
-
- -- Second phase. Dump the object; subparts occuring multiple times
- -- are dumped in local variables which can be referenced multiple
- -- times. Care is taken to dump local vars in a sensible order.
- function dump_val(x)
- local tp = type(x)
- if x == nil then return "nil"
- elseif tp == "string" then return string.format("%q", x)
- elseif tp == "boolean" then return x and "true" or "false"
- elseif tp == "function" then
- return string.format("loadstring(%q)", string.dump(x))
- elseif tp == "number" then
- -- Serialize integers with string.format to prevent
- -- scientific notation, which doesn't preserve
- -- precision and breaks things like node position
- -- hashes. Serialize floats normally.
- if math.floor(x) == x then
- return string.format("%d", x)
+ -- Used to decide whether we should do "key=..."
+ local function use_short_key(key)
+ return not references[key] and type(key) == "string" and (not keywords[key]) and string_match(key, "^[%a_][%a%d_]*$")
+ end
+ local function dump(value)
+ -- Primitive types
+ if value == nil then
+ return write("nil")
+ end
+ if value == true then
+ return write("true")
+ end
+ if value == false then
+ return write("false")
+ end
+ local type_ = type(value)
+ if type_ == "number" then
+ if value ~= value then -- nan
+ return write"0/0"
+ elseif value == math_huge then
+ return write"1/0"
+ elseif value == -math_huge then
+ return write"-1/0"
else
- return tostring(x)
+ return write(string_format("%.17g", value))
end
- elseif tp == "table" then
- local vals = {}
- local idx_dumped = {}
- local np = nest_points[x]
- for i, v in ipairs(x) do
- if not np or not np[i] then
- vals[#vals + 1] = dump_or_ref_val(v)
- end
- idx_dumped[i] = true
+ end
+ -- Reference types: table, function and string
+ local ref = references[value]
+ if ref then
+ write"_["
+ write(ref)
+ return write"]"
+ end
+ if type_ == "string" then
+ return write(quote(value))
+ end
+ if type_ == "function" then
+ return write(dump_func(value))
+ end
+ if type_ == "table" then
+ write("{")
+ -- First write list keys:
+ -- Don't use the table length #value here as it may horribly fail
+ -- for tables which use large integers as keys in the hash part;
+ -- stop at the first "hole" (nil value) instead
+ local len = 0
+ local first = true -- whether this is the first entry, which may not have a leading comma
+ while true do
+ local v = rawget(value, len + 1) -- use rawget to avoid metatables like the vector metatable
+ if v == nil then break end
+ if first then first = false else write(",") end
+ dump(v)
+ len = len + 1
end
- for k, v in pairs(x) do
- if (not np or not np[k]) and
- not idx_dumped[k] then
- vals[#vals + 1] = "["..dump_or_ref_val(k).."] = "
- ..dump_or_ref_val(v)
+ -- Now write map keys ([key] = value)
+ for k, v in next, value do
+ -- We have written all non-float keys in [1, len] already
+ if type(k) ~= "number" or k % 1 ~= 0 or k < 1 or k > len then
+ if first then first = false else write(",") end
+ if use_short_key(k) then
+ write(k)
+ else
+ write("[")
+ dump(k)
+ write("]")
+ end
+ write("=")
+ dump(v)
end
end
- return "{"..table.concat(vals, ", ").."}"
- else
- error("Can't serialize data of type "..tp)
+ write("}")
+ return
end
end
-
- local function dump_nest_points()
- for parent, vals in pairs(nest_points) do
- for k, v in pairs(vals) do
- local_defs[#local_defs + 1] = dump_or_ref_val(parent)
- .."["..dump_or_ref_val(k).."] = "
- ..dump_or_ref_val(v)
+ -- Write the statements to fill circular tables
+ for table, ref in pairs(to_fill) do
+ for k, v in pairs(table) do
+ write("_[")
+ write(ref)
+ write("]")
+ if use_short_key(k) then
+ write(".")
+ write(k)
+ else
+ write("[")
+ dump(k)
+ write("]")
end
+ write("=")
+ dump(v)
+ write(";")
end
end
-
- mark_multiple_occurences(x)
- local top_level = dump_or_ref_val(x)
- dump_nest_points()
-
- if next(local_defs) then
- return "local _ = {}\n"
- ..table.concat(local_defs, "\n")
- .."\nreturn "..top_level
- else
- return "return "..top_level
- end
+ write("return ")
+ dump(value)
end
--- Deserialization
-
-local env = {
- loadstring = loadstring,
-}
+function core.serialize(value)
+ local rope = {}
+ serialize(value, function(text)
+ -- Faster than table.insert(rope, text) on PUC Lua 5.1
+ rope[#rope + 1] = text
+ end)
+ return table_concat(rope)
+end
-local safe_env = {
- loadstring = function() end,
-}
+local function dummy_func() end
function core.deserialize(str, safe)
- if str:byte(1) == 0x1B then
- return nil, "Bytecode prohibited"
+ -- Backwards compatibility
+ if str == nil then
+ core.log("deprecated", "minetest.deserialize called with nil (expected string).")
+ return nil, "Invalid type: Expected a string, got nil"
end
- local f, err = loadstring(str)
- if not f then return nil, err end
- setfenv(f, safe and safe_env or env)
+ local t = type(str)
+ if t ~= "string" then
+ error(("minetest.deserialize called with %s (expected string)."):format(t))
+ end
+
+ local func, err = loadstring(str)
+ if not func then return nil, err end
- local good, data = pcall(f)
- if good then
- return data
+ -- math.huge was serialized to inf and NaNs to nan by Lua in Minetest 5.6, so we have to support this here
+ local env = {inf = math_huge, nan = 0/0}
+ if safe then
+ env.loadstring = dummy_func
else
- return nil, data
+ env.loadstring = function(str, ...)
+ local func, err = loadstring(str, ...)
+ if func then
+ setfenv(func, env)
+ return func
+ end
+ return nil, err
+ end
+ end
+ setfenv(func, env)
+ local success, value_or_err = pcall(func)
+ if success then
+ return value_or_err
end
+ return nil, value_or_err
end
-
-
--- Unit tests
-local test_in = {cat={sound="nyan", speed=400}, dog={sound="woof"}}
-local test_out = core.deserialize(core.serialize(test_in))
-
-assert(test_in.cat.sound == test_out.cat.sound)
-assert(test_in.cat.speed == test_out.cat.speed)
-assert(test_in.dog.sound == test_out.dog.sound)
-
-test_in = {escape_chars="\n\r\t\v\\\"\'", non_european="θשׁ٩∂"}
-test_out = core.deserialize(core.serialize(test_in))
-assert(test_in.escape_chars == test_out.escape_chars)
-assert(test_in.non_european == test_out.non_european)
-
diff --git a/builtin/common/strict.lua b/builtin/common/strict.lua
index 23ba3d727..936ebb37b 100644
--- a/builtin/common/strict.lua
+++ b/builtin/common/strict.lua
@@ -1,8 +1,4 @@
-
--- Always warn when creating a global variable, even outside of a function.
--- This ignores mod namespaces (variables with the same name as the current mod).
-local WARN_INIT = false
-
+local getinfo, rawget, rawset = debug.getinfo, rawget, rawset
function core.global_exists(name)
if type(name) ~= "string" then
@@ -18,39 +14,33 @@ local declared = {}
local warned = {}
function meta:__newindex(name, value)
- local info = debug.getinfo(2, "Sl")
+ if declared[name] then
+ return
+ end
+ local info = getinfo(2, "Sl")
local desc = ("%s:%d"):format(info.short_src, info.currentline)
- if not declared[name] then
- local warn_key = ("%s\0%d\0%s"):format(info.source,
- info.currentline, name)
- if not warned[warn_key] and info.what ~= "main" and
- info.what ~= "C" then
- core.log("warning", ("Assignment to undeclared "..
- "global %q inside a function at %s.")
+ local warn_key = ("%s\0%d\0%s"):format(info.source, info.currentline, name)
+ if not warned[warn_key] and info.what ~= "main" and info.what ~= "C" then
+ core.log("warning", ("Assignment to undeclared global %q inside a function at %s.")
:format(name, desc))
- warned[warn_key] = true
- end
- declared[name] = true
- end
- -- Ignore mod namespaces
- if WARN_INIT and name ~= core.get_current_modname() then
- core.log("warning", ("Global variable %q created at %s.")
- :format(name, desc))
+ warned[warn_key] = true
end
rawset(self, name, value)
+ declared[name] = true
end
function meta:__index(name)
- local info = debug.getinfo(2, "Sl")
+ if declared[name] then
+ return
+ end
+ local info = getinfo(2, "Sl")
local warn_key = ("%s\0%d\0%s"):format(info.source, info.currentline, name)
- if not declared[name] and not warned[warn_key] and info.what ~= "C" then
+ if not warned[warn_key] and info.what ~= "C" then
core.log("warning", ("Undeclared global variable %q accessed at %s:%s")
:format(name, info.short_src, info.currentline))
warned[warn_key] = true
end
- return rawget(self, name)
end
setmetatable(_G, meta)
-
diff --git a/builtin/common/tests/misc_helpers_spec.lua b/builtin/common/tests/misc_helpers_spec.lua
new file mode 100644
index 000000000..7d046d5b7
--- /dev/null
+++ b/builtin/common/tests/misc_helpers_spec.lua
@@ -0,0 +1,173 @@
+_G.core = {}
+_G.vector = {metatable = {}}
+dofile("builtin/common/vector.lua")
+dofile("builtin/common/misc_helpers.lua")
+
+describe("string", function()
+ it("trim()", function()
+ assert.equal("foo bar", string.trim("\n \t\tfoo bar\t "))
+ end)
+
+ describe("split()", function()
+ it("removes empty", function()
+ assert.same({ "hello" }, string.split("hello"))
+ assert.same({ "hello", "world" }, string.split("hello,world"))
+ assert.same({ "hello", "world" }, string.split("hello,world,,,"))
+ assert.same({ "hello", "world" }, string.split(",,,hello,world"))
+ assert.same({ "hello", "world", "2" }, string.split("hello,,,world,2"))
+ assert.same({ "hello ", " world" }, string.split("hello :| world", ":|"))
+ end)
+
+ it("keeps empty", function()
+ assert.same({ "hello" }, string.split("hello", ",", true))
+ assert.same({ "hello", "world" }, string.split("hello,world", ",", true))
+ assert.same({ "hello", "world", "" }, string.split("hello,world,", ",", true))
+ assert.same({ "hello", "", "", "world", "2" }, string.split("hello,,,world,2", ",", true))
+ assert.same({ "", "", "hello", "world", "2" }, string.split(",,hello,world,2", ",", true))
+ assert.same({ "hello ", " world | :" }, string.split("hello :| world | :", ":|"))
+ end)
+
+ it("max_splits", function()
+ assert.same({ "one" }, string.split("one", ",", true, 2))
+ assert.same({ "one,two,three,four" }, string.split("one,two,three,four", ",", true, 0))
+ assert.same({ "one", "two", "three,four" }, string.split("one,two,three,four", ",", true, 2))
+ assert.same({ "one", "", "two,three,four" }, string.split("one,,two,three,four", ",", true, 2))
+ assert.same({ "one", "two", "three,four" }, string.split("one,,,,,,two,three,four", ",", false, 2))
+ end)
+
+ it("pattern", function()
+ assert.same({ "one", "two" }, string.split("one,two", ",", false, -1, true))
+ assert.same({ "one", "two", "three" }, string.split("one2two3three", "%d", false, -1, true))
+ end)
+ end)
+end)
+
+describe("privs", function()
+ it("from string", function()
+ assert.same({ a = true, b = true }, core.string_to_privs("a,b"))
+ end)
+
+ it("to string", function()
+ assert.equal("one", core.privs_to_string({ one=true }))
+
+ local ret = core.privs_to_string({ a=true, b=true })
+ assert(ret == "a,b" or ret == "b,a")
+ end)
+end)
+
+describe("pos", function()
+ it("from string", function()
+ assert.equal(vector.new(10, 5.1, -2), core.string_to_pos("10.0, 5.1, -2"))
+ assert.equal(vector.new(10, 5.1, -2), core.string_to_pos("( 10.0, 5.1, -2)"))
+ assert.is_nil(core.string_to_pos("asd, 5, -2)"))
+ end)
+
+ it("to string", function()
+ assert.equal("(10.1,5.2,-2.3)", core.pos_to_string({ x = 10.1, y = 5.2, z = -2.3}))
+ end)
+end)
+
+describe("area parsing", function()
+ describe("valid inputs", function()
+ it("accepts absolute numbers", function()
+ local p1, p2 = core.string_to_area("(10.0, 5, -2) ( 30.2 4 -12.53)")
+ assert(p1.x == 10 and p1.y == 5 and p1.z == -2)
+ assert(p2.x == 30.2 and p2.y == 4 and p2.z == -12.53)
+ end)
+
+ it("accepts relative numbers", function()
+ local p1, p2 = core.string_to_area("(1,2,3) (~5,~-5,~)", {x=10,y=10,z=10})
+ assert(type(p1) == "table" and type(p2) == "table")
+ assert(p1.x == 1 and p1.y == 2 and p1.z == 3)
+ assert(p2.x == 15 and p2.y == 5 and p2.z == 10)
+
+ p1, p2 = core.string_to_area("(1 2 3) (~5 ~-5 ~)", {x=10,y=10,z=10})
+ assert(type(p1) == "table" and type(p2) == "table")
+ assert(p1.x == 1 and p1.y == 2 and p1.z == 3)
+ assert(p2.x == 15 and p2.y == 5 and p2.z == 10)
+ end)
+ end)
+ describe("invalid inputs", function()
+ it("rejects too few numbers", function()
+ local p1, p2 = core.string_to_area("(1,1) (1,1,1,1)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+ end)
+
+ it("rejects too many numbers", function()
+ local p1, p2 = core.string_to_area("(1,1,1,1) (1,1,1,1)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+ end)
+
+ it("rejects nan & inf", function()
+ local p1, p2 = core.string_to_area("(1,1,1) (1,1,nan)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(1,1,1) (1,1,~nan)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(1,1,1) (1,~nan,1)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(1,1,1) (1,1,inf)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(1,1,1) (1,1,~inf)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(1,1,1) (1,~inf,1)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(nan,nan,nan) (nan,nan,nan)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(nan,nan,nan) (nan,nan,nan)")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(inf,inf,inf) (-inf,-inf,-inf)", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(inf,inf,inf) (-inf,-inf,-inf)")
+ assert(p1 == nil and p2 == nil)
+ end)
+
+ it("rejects words", function()
+ local p1, p2 = core.string_to_area("bananas", {x=1,y=1,z=1})
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("bananas", "foobar")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("bananas")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(bananas,bananas,bananas)")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(bananas,bananas,bananas) (bananas,bananas,bananas)")
+ assert(p1 == nil and p2 == nil)
+ end)
+
+ it("requires parenthesis & valid numbers", function()
+ local p1, p2 = core.string_to_area("(10.0, 5, -2 30.2, 4, -12.53")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(10.0, 5,) -2 fgdf2, 4, -12.53")
+ assert(p1 == nil and p2 == nil)
+ end)
+ end)
+end)
+
+describe("table", function()
+ it("indexof()", function()
+ assert.equal(1, table.indexof({"foo", "bar"}, "foo"))
+ assert.equal(-1, table.indexof({"foo", "bar"}, "baz"))
+ end)
+end)
+
+describe("formspec_escape", function()
+ it("escapes", function()
+ assert.equal(nil, core.formspec_escape(nil))
+ assert.equal("", core.formspec_escape(""))
+ assert.equal("\\[Hello\\\\\\[", core.formspec_escape("[Hello\\["))
+ end)
+end)
diff --git a/builtin/common/tests/serialize_spec.lua b/builtin/common/tests/serialize_spec.lua
new file mode 100644
index 000000000..340e226ee
--- /dev/null
+++ b/builtin/common/tests/serialize_spec.lua
@@ -0,0 +1,189 @@
+_G.core = {}
+_G.vector = {metatable = {}}
+
+_G.setfenv = require 'busted.compatibility'.setfenv
+
+dofile("builtin/common/serialize.lua")
+dofile("builtin/common/vector.lua")
+
+-- Supports circular tables; does not support table keys
+-- Correctly checks whether a mapping of references ("same") exists
+-- Is significantly more efficient than assert.same
+local function assert_same(a, b, same)
+ same = same or {}
+ if same[a] or same[b] then
+ assert(same[a] == b and same[b] == a)
+ return
+ end
+ if a == b then
+ return
+ end
+ if type(a) ~= "table" or type(b) ~= "table" then
+ assert(a == b)
+ return
+ end
+ same[a] = b
+ same[b] = a
+ local count = 0
+ for k, v in pairs(a) do
+ count = count + 1
+ assert(type(k) ~= "table")
+ assert_same(v, b[k], same)
+ end
+ for _ in pairs(b) do
+ count = count - 1
+ end
+ assert(count == 0)
+end
+
+local x, y = {}, {}
+local t1, t2 = {x, x, y, y}, {x, y, x, y}
+assert.same(t1, t2) -- will succeed because it only checks whether the depths match
+assert(not pcall(assert_same, t1, t2)) -- will correctly fail because it checks whether the refs match
+
+describe("serialize", function()
+ local function assert_preserves(value)
+ local preserved_value = core.deserialize(core.serialize(value))
+ assert_same(value, preserved_value)
+ end
+ it("works", function()
+ assert_preserves({cat={sound="nyan", speed=400}, dog={sound="woof"}})
+ end)
+
+ it("handles characters", function()
+ assert_preserves({escape_chars="\n\r\t\v\\\"\'", non_european="θשׁ٩∂"})
+ end)
+
+ it("handles NaN & infinities", function()
+ local nan = core.deserialize(core.serialize(0/0))
+ assert(nan ~= nan)
+ assert_preserves(math.huge)
+ assert_preserves(-math.huge)
+ end)
+
+ it("handles precise numbers", function()
+ assert_preserves(0.2695949158945771)
+ end)
+
+ it("handles big integers", function()
+ assert_preserves(269594915894577)
+ end)
+
+ it("handles recursive structures", function()
+ local test_in = { hello = "world" }
+ test_in.foo = test_in
+ assert_preserves(test_in)
+ end)
+
+ it("handles cross-referencing structures", function()
+ local test_in = {
+ foo = {
+ baz = {
+ {}
+ },
+ },
+ bar = {
+ baz = {},
+ },
+ }
+
+ test_in.foo.baz[1].foo = test_in.foo
+ test_in.foo.baz[1].bar = test_in.bar
+ test_in.bar.baz[1] = test_in.foo.baz[1]
+
+ assert_preserves(test_in)
+ end)
+
+ it("strips functions in safe mode", function()
+ local test_in = {
+ func = function(a, b)
+ error("test")
+ end,
+ foo = "bar"
+ }
+ setfenv(test_in.func, _G)
+
+ local str = core.serialize(test_in)
+ assert.not_nil(str:find("loadstring"))
+
+ local test_out = core.deserialize(str, true)
+ assert.is_nil(test_out.func)
+ assert.equals(test_out.foo, "bar")
+ end)
+
+ it("vectors work", function()
+ local v = vector.new(1, 2, 3)
+ assert_preserves({v})
+ assert_preserves(v)
+
+ -- abuse
+ v = vector.new(1, 2, 3)
+ v.a = "bla"
+ assert_preserves(v)
+ end)
+
+ it("handles keywords as keys", function()
+ assert_preserves({["and"] = "keyword", ["for"] = "keyword"})
+ end)
+
+ describe("fuzzing", function()
+ local atomics = {true, false, math.huge, -math.huge} -- no NaN or nil
+ local function atomic()
+ return atomics[math.random(1, #atomics)]
+ end
+ local function num()
+ local sign = math.random() < 0.5 and -1 or 1
+ -- HACK math.random(a, b) requires a, b & b - a to fit within a 32-bit int
+ -- Use two random calls to generate a random number from 0 - 2^50 as lower & upper 25 bits
+ local val = math.random(0, 2^25) * 2^25 + math.random(0, 2^25 - 1)
+ local exp = math.random() < 0.5 and 1 or 2^(math.random(-120, 120))
+ return sign * val * exp
+ end
+ local function charcodes(count)
+ if count == 0 then return end
+ return math.random(0, 0xFF), charcodes(count - 1)
+ end
+ local function str()
+ return string.char(charcodes(math.random(0, 100)))
+ end
+ local primitives = {atomic, num, str}
+ local function primitive()
+ return primitives[math.random(1, #primitives)]()
+ end
+ local function tab(max_actions)
+ local root = {}
+ local tables = {root}
+ local function random_table()
+ return tables[math.random(1, #tables)]
+ end
+ for _ = 1, math.random(1, max_actions) do
+ local tab = random_table()
+ local value
+ if math.random() < 0.5 then
+ if math.random() < 0.5 then
+ value = random_table()
+ else
+ value = {}
+ table.insert(tables, value)
+ end
+ else
+ value = primitive()
+ end
+ tab[math.random() < 0.5 and (#tab + 1) or primitive()] = value
+ end
+ return root
+ end
+ it("primitives work", function()
+ for _ = 1, 1e3 do
+ assert_preserves(primitive())
+ end
+ end)
+ it("tables work", function()
+ for _ = 1, 100 do
+ local fuzzed_table = tab(1e3)
+ assert_same(fuzzed_table, table.copy(fuzzed_table))
+ assert_preserves(fuzzed_table)
+ end
+ end)
+ end)
+end)
diff --git a/builtin/common/tests/vector_spec.lua b/builtin/common/tests/vector_spec.lua
new file mode 100644
index 000000000..6a0b81a89
--- /dev/null
+++ b/builtin/common/tests/vector_spec.lua
@@ -0,0 +1,465 @@
+_G.vector = {metatable = {}}
+dofile("builtin/common/vector.lua")
+
+describe("vector", function()
+ describe("new()", function()
+ it("constructs", function()
+ assert.same({x = 0, y = 0, z = 0}, vector.new())
+ assert.same({x = 1, y = 2, z = 3}, vector.new(1, 2, 3))
+ assert.same({x = 3, y = 2, z = 1}, vector.new({x = 3, y = 2, z = 1}))
+
+ assert.is_true(vector.check(vector.new()))
+ assert.is_true(vector.check(vector.new(1, 2, 3)))
+ assert.is_true(vector.check(vector.new({x = 3, y = 2, z = 1})))
+
+ local input = vector.new({ x = 3, y = 2, z = 1 })
+ local output = vector.new(input)
+ assert.same(input, output)
+ assert.equal(input, output)
+ assert.is_false(rawequal(input, output))
+ assert.equal(input, input:new())
+ end)
+
+ it("throws on invalid input", function()
+ assert.has.errors(function()
+ vector.new({ x = 3 })
+ end)
+
+ assert.has.errors(function()
+ vector.new({ d = 3 })
+ end)
+ end)
+ end)
+
+ it("zero()", function()
+ assert.same({x = 0, y = 0, z = 0}, vector.zero())
+ assert.same(vector.new(), vector.zero())
+ assert.equal(vector.new(), vector.zero())
+ assert.is_true(vector.check(vector.zero()))
+ end)
+
+ it("copy()", function()
+ local v = vector.new(1, 2, 3)
+ assert.same(v, vector.copy(v))
+ assert.same(vector.new(v), vector.copy(v))
+ assert.equal(vector.new(v), vector.copy(v))
+ assert.is_true(vector.check(vector.copy(v)))
+ end)
+
+ it("indexes", function()
+ local some_vector = vector.new(24, 42, 13)
+ assert.equal(24, some_vector[1])
+ assert.equal(24, some_vector.x)
+ assert.equal(42, some_vector[2])
+ assert.equal(42, some_vector.y)
+ assert.equal(13, some_vector[3])
+ assert.equal(13, some_vector.z)
+
+ some_vector[1] = 100
+ assert.equal(100, some_vector.x)
+ some_vector.x = 101
+ assert.equal(101, some_vector[1])
+
+ some_vector[2] = 100
+ assert.equal(100, some_vector.y)
+ some_vector.y = 102
+ assert.equal(102, some_vector[2])
+
+ some_vector[3] = 100
+ assert.equal(100, some_vector.z)
+ some_vector.z = 103
+ assert.equal(103, some_vector[3])
+ end)
+
+ it("direction()", function()
+ local a = vector.new(1, 0, 0)
+ local b = vector.new(1, 42, 0)
+ assert.equal(vector.new(0, 1, 0), vector.direction(a, b))
+ assert.equal(vector.new(0, 1, 0), a:direction(b))
+ end)
+
+ it("distance()", function()
+ local a = vector.new(1, 0, 0)
+ local b = vector.new(3, 42, 9)
+ assert.is_true(math.abs(43 - vector.distance(a, b)) < 1.0e-12)
+ assert.is_true(math.abs(43 - a:distance(b)) < 1.0e-12)
+ assert.equal(0, vector.distance(a, a))
+ assert.equal(0, b:distance(b))
+ end)
+
+ it("length()", function()
+ local a = vector.new(0, 0, -23)
+ assert.equal(0, vector.length(vector.new()))
+ assert.equal(23, vector.length(a))
+ assert.equal(23, a:length())
+ end)
+
+ it("normalize()", function()
+ local a = vector.new(0, 0, -23)
+ assert.equal(vector.new(0, 0, -1), vector.normalize(a))
+ assert.equal(vector.new(0, 0, -1), a:normalize())
+ assert.equal(vector.new(), vector.normalize(vector.new()))
+ end)
+
+ it("floor()", function()
+ local a = vector.new(0.1, 0.9, -0.5)
+ assert.equal(vector.new(0, 0, -1), vector.floor(a))
+ assert.equal(vector.new(0, 0, -1), a:floor())
+ end)
+
+ it("round()", function()
+ local a = vector.new(0.1, 0.9, -0.5)
+ assert.equal(vector.new(0, 1, -1), vector.round(a))
+ assert.equal(vector.new(0, 1, -1), a:round())
+ end)
+
+ it("apply()", function()
+ local i = 0
+ local f = function(x)
+ i = i + 1
+ return x + i
+ end
+ local a = vector.new(0.1, 0.9, -0.5)
+ assert.equal(vector.new(1, 1, 0), vector.apply(a, math.ceil))
+ assert.equal(vector.new(1, 1, 0), a:apply(math.ceil))
+ assert.equal(vector.new(0.1, 0.9, 0.5), vector.apply(a, math.abs))
+ assert.equal(vector.new(0.1, 0.9, 0.5), a:apply(math.abs))
+ assert.equal(vector.new(1.1, 2.9, 2.5), vector.apply(a, f))
+ assert.equal(vector.new(4.1, 5.9, 5.5), a:apply(f))
+ end)
+
+ it("combine()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(3, 2, 1)
+ assert.equal(vector.add(a, b), vector.combine(a, b, function(x, y) return x + y end))
+ assert.equal(vector.new(3, 2, 3), vector.combine(a, b, math.max))
+ assert.equal(vector.new(1, 2, 1), vector.combine(a, b, math.min))
+ end)
+
+ it("equals()", function()
+ local function assertE(a, b)
+ assert.is_true(vector.equals(a, b))
+ end
+ local function assertNE(a, b)
+ assert.is_false(vector.equals(a, b))
+ end
+
+ assertE({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
+ assertE({x = -1, y = 0, z = 1}, {x = -1, y = 0, z = 1})
+ assertE({x = -1, y = 0, z = 1}, vector.new(-1, 0, 1))
+ local a = {x = 2, y = 4, z = -10}
+ assertE(a, a)
+ assertNE({x = -1, y = 0, z = 1}, a)
+
+ assert.equal(vector.new(1, 2, 3), vector.new(1, 2, 3))
+ assert.is_true(vector.new(1, 2, 3):equals(vector.new(1, 2, 3)))
+ assert.not_equal(vector.new(1, 2, 3), vector.new(1, 2, 4))
+ assert.is_true(vector.new(1, 2, 3) == vector.new(1, 2, 3))
+ assert.is_false(vector.new(1, 2, 3) == vector.new(1, 3, 3))
+ end)
+
+ it("metatable is same", function()
+ local a = vector.new()
+ local b = vector.new(1, 2, 3)
+
+ assert.equal(true, vector.check(a))
+ assert.equal(true, vector.check(b))
+
+ assert.equal(vector.metatable, getmetatable(a))
+ assert.equal(vector.metatable, getmetatable(b))
+ assert.equal(vector.metatable, a.metatable)
+ end)
+
+ it("sort()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(0.5, 232, -2)
+ local sorted = {vector.new(0.5, 2, -2), vector.new(1, 232, 3)}
+ assert.same(sorted, {vector.sort(a, b)})
+ assert.same(sorted, {a:sort(b)})
+ end)
+
+ it("angle()", function()
+ assert.equal(math.pi, vector.angle(vector.new(-1, -2, -3), vector.new(1, 2, 3)))
+ assert.equal(math.pi/2, vector.new(0, 1, 0):angle(vector.new(1, 0, 0)))
+ end)
+
+ it("dot()", function()
+ assert.equal(-14, vector.dot(vector.new(-1, -2, -3), vector.new(1, 2, 3)))
+ assert.equal(0, vector.new():dot(vector.new(1, 2, 3)))
+ end)
+
+ it("cross()", function()
+ local a = vector.new(-1, -2, 0)
+ local b = vector.new(1, 2, 3)
+ assert.equal(vector.new(-6, 3, 0), vector.cross(a, b))
+ assert.equal(vector.new(-6, 3, 0), a:cross(b))
+ end)
+
+ it("offset()", function()
+ assert.same({x = 41, y = 52, z = 63}, vector.offset(vector.new(1, 2, 3), 40, 50, 60))
+ assert.equal(vector.new(41, 52, 63), vector.offset(vector.new(1, 2, 3), 40, 50, 60))
+ assert.equal(vector.new(41, 52, 63), vector.new(1, 2, 3):offset(40, 50, 60))
+ end)
+
+ it("is()", function()
+ local some_table1 = {foo = 13, [42] = 1, "bar", 2}
+ local some_table2 = {1, 2, 3}
+ local some_table3 = {x = 1, 2, 3}
+ local some_table4 = {1, 2, z = 3}
+ local old = {x = 1, y = 2, z = 3}
+ local real = vector.new(1, 2, 3)
+
+ assert.is_false(vector.check(nil))
+ assert.is_false(vector.check(1))
+ assert.is_false(vector.check(true))
+ assert.is_false(vector.check("foo"))
+ assert.is_false(vector.check(some_table1))
+ assert.is_false(vector.check(some_table2))
+ assert.is_false(vector.check(some_table3))
+ assert.is_false(vector.check(some_table4))
+ assert.is_false(vector.check(old))
+ assert.is_true(vector.check(real))
+ assert.is_true(real:check())
+ end)
+
+ it("global pairs", function()
+ local out = {}
+ local vec = vector.new(10, 20, 30)
+ for k, v in pairs(vec) do
+ out[k] = v
+ end
+ assert.same({x = 10, y = 20, z = 30}, out)
+ end)
+
+ it("abusing works", function()
+ local v = vector.new(1, 2, 3)
+ v.a = 1
+ assert.equal(1, v.a)
+
+ local a_is_there = false
+ for key, value in pairs(v) do
+ if key == "a" then
+ a_is_there = true
+ assert.equal(value, 1)
+ break
+ end
+ end
+ assert.is_true(a_is_there)
+ end)
+
+ it("add()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(1, 4, 3)
+ local c = vector.new(2, 6, 6)
+ assert.equal(c, vector.add(a, {x = 1, y = 4, z = 3}))
+ assert.equal(c, vector.add(a, b))
+ assert.equal(c, a:add(b))
+ assert.equal(c, a + b)
+ assert.equal(c, b + a)
+ end)
+
+ it("subtract()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(2, 4, 3)
+ local c = vector.new(-1, -2, 0)
+ assert.equal(c, vector.subtract(a, {x = 2, y = 4, z = 3}))
+ assert.equal(c, vector.subtract(a, b))
+ assert.equal(c, a:subtract(b))
+ assert.equal(c, a - b)
+ assert.equal(c, -b + a)
+ end)
+
+ it("multiply()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(2, 4, 3)
+ local c = vector.new(2, 8, 9)
+ local s = 2
+ local d = vector.new(2, 4, 6)
+ assert.equal(c, vector.multiply(a, {x = 2, y = 4, z = 3}))
+ assert.equal(c, vector.multiply(a, b))
+ assert.equal(d, vector.multiply(a, s))
+ assert.equal(d, a:multiply(s))
+ assert.equal(d, a * s)
+ assert.equal(d, s * a)
+ assert.equal(-a, -1 * a)
+ end)
+
+ it("divide()", function()
+ local a = vector.new(1, 2, 3)
+ local b = vector.new(2, 4, 3)
+ local c = vector.new(0.5, 0.5, 1)
+ local s = 2
+ local d = vector.new(0.5, 1, 1.5)
+ assert.equal(c, vector.divide(a, {x = 2, y = 4, z = 3}))
+ assert.equal(c, vector.divide(a, b))
+ assert.equal(d, vector.divide(a, s))
+ assert.equal(d, a:divide(s))
+ assert.equal(d, a / s)
+ assert.equal(d, 1/s * a)
+ assert.equal(-a, a / -1)
+ end)
+
+ it("to_string()", function()
+ local v = vector.new(1, 2, 3.14)
+ assert.same("(1, 2, 3.14)", vector.to_string(v))
+ assert.same("(1, 2, 3.14)", v:to_string())
+ assert.same("(1, 2, 3.14)", tostring(v))
+ end)
+
+ it("from_string()", function()
+ local v = vector.new(1, 2, 3.14)
+ assert.is_true(vector.check(vector.from_string("(1, 2, 3.14)")))
+ assert.same({v, 13}, {vector.from_string("(1, 2, 3.14)")})
+ assert.same({v, 12}, {vector.from_string("(1,2 ,3.14)")})
+ assert.same({v, 12}, {vector.from_string("(1,2,3.14,)")})
+ assert.same({v, 11}, {vector.from_string("(1 2 3.14)")})
+ assert.same({v, 15}, {vector.from_string("( 1, 2, 3.14 )")})
+ assert.same({v, 15}, {vector.from_string(" ( 1, 2, 3.14) ")})
+ assert.same({vector.new(), 8}, {vector.from_string("(0,0,0) ( 1, 2, 3.14) ")})
+ assert.same({v, 22}, {vector.from_string("(0,0,0) ( 1, 2, 3.14) ", 8)})
+ assert.same({v, 22}, {vector.from_string("(0,0,0) ( 1, 2, 3.14) ", 9)})
+ assert.same(nil, vector.from_string("nothing"))
+ end)
+
+ -- This function is needed because of floating point imprecision.
+ local function almost_equal(a, b)
+ if type(a) == "number" then
+ return math.abs(a - b) < 0.00000000001
+ end
+ return vector.distance(a, b) < 0.000000000001
+ end
+
+ describe("rotate_around_axis()", function()
+ it("rotates", function()
+ assert.True(almost_equal({x = -1, y = 0, z = 0},
+ vector.rotate_around_axis({x = 1, y = 0, z = 0}, {x = 0, y = 1, z = 0}, math.pi)))
+ assert.True(almost_equal({x = 0, y = 1, z = 0},
+ vector.rotate_around_axis({x = 0, y = 0, z = 1}, {x = 1, y = 0, z = 0}, math.pi / 2)))
+ assert.True(almost_equal({x = 4, y = 1, z = 1},
+ vector.rotate_around_axis({x = 4, y = 1, z = 1}, {x = 4, y = 1, z = 1}, math.pi / 6)))
+ end)
+ it("keeps distance to axis", function()
+ local rotate1 = {x = 1, y = 3, z = 1}
+ local axis1 = {x = 1, y = 3, z = 2}
+ local rotated1 = vector.rotate_around_axis(rotate1, axis1, math.pi / 13)
+ assert.True(almost_equal(vector.distance(axis1, rotate1), vector.distance(axis1, rotated1)))
+ local rotate2 = {x = 1, y = 1, z = 3}
+ local axis2 = {x = 2, y = 6, z = 100}
+ local rotated2 = vector.rotate_around_axis(rotate2, axis2, math.pi / 23)
+ assert.True(almost_equal(vector.distance(axis2, rotate2), vector.distance(axis2, rotated2)))
+ local rotate3 = {x = 1, y = -1, z = 3}
+ local axis3 = {x = 2, y = 6, z = 100}
+ local rotated3 = vector.rotate_around_axis(rotate3, axis3, math.pi / 2)
+ assert.True(almost_equal(vector.distance(axis3, rotate3), vector.distance(axis3, rotated3)))
+ end)
+ it("rotates back", function()
+ local rotate1 = {x = 1, y = 3, z = 1}
+ local axis1 = {x = 1, y = 3, z = 2}
+ local rotated1 = vector.rotate_around_axis(rotate1, axis1, math.pi / 13)
+ rotated1 = vector.rotate_around_axis(rotated1, axis1, -math.pi / 13)
+ assert.True(almost_equal(rotate1, rotated1))
+ local rotate2 = {x = 1, y = 1, z = 3}
+ local axis2 = {x = 2, y = 6, z = 100}
+ local rotated2 = vector.rotate_around_axis(rotate2, axis2, math.pi / 23)
+ rotated2 = vector.rotate_around_axis(rotated2, axis2, -math.pi / 23)
+ assert.True(almost_equal(rotate2, rotated2))
+ local rotate3 = {x = 1, y = -1, z = 3}
+ local axis3 = {x = 2, y = 6, z = 100}
+ local rotated3 = vector.rotate_around_axis(rotate3, axis3, math.pi / 2)
+ rotated3 = vector.rotate_around_axis(rotated3, axis3, -math.pi / 2)
+ assert.True(almost_equal(rotate3, rotated3))
+ end)
+ it("is right handed", function()
+ local v_before1 = {x = 0, y = 1, z = -1}
+ local v_after1 = vector.rotate_around_axis(v_before1, {x = 1, y = 0, z = 0}, math.pi / 4)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after1, v_before1)), {x = 1, y = 0, z = 0}))
+
+ local v_before2 = {x = 0, y = 3, z = 4}
+ local v_after2 = vector.rotate_around_axis(v_before2, {x = 1, y = 0, z = 0}, 2 * math.pi / 5)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after2, v_before2)), {x = 1, y = 0, z = 0}))
+
+ local v_before3 = {x = 1, y = 0, z = -1}
+ local v_after3 = vector.rotate_around_axis(v_before3, {x = 0, y = 1, z = 0}, math.pi / 4)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after3, v_before3)), {x = 0, y = 1, z = 0}))
+
+ local v_before4 = {x = 3, y = 0, z = 4}
+ local v_after4 = vector.rotate_around_axis(v_before4, {x = 0, y = 1, z = 0}, 2 * math.pi / 5)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after4, v_before4)), {x = 0, y = 1, z = 0}))
+
+ local v_before5 = {x = 1, y = -1, z = 0}
+ local v_after5 = vector.rotate_around_axis(v_before5, {x = 0, y = 0, z = 1}, math.pi / 4)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after5, v_before5)), {x = 0, y = 0, z = 1}))
+
+ local v_before6 = {x = 3, y = 4, z = 0}
+ local v_after6 = vector.rotate_around_axis(v_before6, {x = 0, y = 0, z = 1}, 2 * math.pi / 5)
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after6, v_before6)), {x = 0, y = 0, z = 1}))
+ end)
+ end)
+
+ describe("rotate()", function()
+ it("rotates", function()
+ assert.True(almost_equal({x = -1, y = 0, z = 0},
+ vector.rotate({x = 1, y = 0, z = 0}, {x = 0, y = math.pi, z = 0})))
+ assert.True(almost_equal({x = 0, y = -1, z = 0},
+ vector.rotate({x = 1, y = 0, z = 0}, {x = 0, y = 0, z = math.pi / 2})))
+ assert.True(almost_equal({x = 1, y = 0, z = 0},
+ vector.rotate({x = 1, y = 0, z = 0}, {x = math.pi / 123, y = 0, z = 0})))
+ end)
+ it("is counterclockwise", function()
+ local v_before1 = {x = 0, y = 1, z = -1}
+ local v_after1 = vector.rotate(v_before1, {x = math.pi / 4, y = 0, z = 0})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after1, v_before1)), {x = 1, y = 0, z = 0}))
+
+ local v_before2 = {x = 0, y = 3, z = 4}
+ local v_after2 = vector.rotate(v_before2, {x = 2 * math.pi / 5, y = 0, z = 0})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after2, v_before2)), {x = 1, y = 0, z = 0}))
+
+ local v_before3 = {x = 1, y = 0, z = -1}
+ local v_after3 = vector.rotate(v_before3, {x = 0, y = math.pi / 4, z = 0})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after3, v_before3)), {x = 0, y = 1, z = 0}))
+
+ local v_before4 = {x = 3, y = 0, z = 4}
+ local v_after4 = vector.rotate(v_before4, {x = 0, y = 2 * math.pi / 5, z = 0})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after4, v_before4)), {x = 0, y = 1, z = 0}))
+
+ local v_before5 = {x = 1, y = -1, z = 0}
+ local v_after5 = vector.rotate(v_before5, {x = 0, y = 0, z = math.pi / 4})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after5, v_before5)), {x = 0, y = 0, z = 1}))
+
+ local v_before6 = {x = 3, y = 4, z = 0}
+ local v_after6 = vector.rotate(v_before6, {x = 0, y = 0, z = 2 * math.pi / 5})
+ assert.True(almost_equal(vector.normalize(vector.cross(v_after6, v_before6)), {x = 0, y = 0, z = 1}))
+ end)
+ end)
+
+ it("dir_to_rotation()", function()
+ -- Comparing rotations (pitch, yaw, roll) is hard because of certain ambiguities,
+ -- e.g. (pi, 0, pi) looks exactly the same as (0, pi, 0)
+ -- So instead we convert the rotation back to vectors and compare these.
+ local function forward_at_rot(rot)
+ return vector.rotate(vector.new(0, 0, 1), rot)
+ end
+ local function up_at_rot(rot)
+ return vector.rotate(vector.new(0, 1, 0), rot)
+ end
+ local rot1 = vector.dir_to_rotation({x = 1, y = 0, z = 0}, {x = 0, y = 1, z = 0})
+ assert.True(almost_equal({x = 1, y = 0, z = 0}, forward_at_rot(rot1)))
+ assert.True(almost_equal({x = 0, y = 1, z = 0}, up_at_rot(rot1)))
+ local rot2 = vector.dir_to_rotation({x = 1, y = 1, z = 0}, {x = 0, y = 0, z = 1})
+ assert.True(almost_equal({x = 1/math.sqrt(2), y = 1/math.sqrt(2), z = 0}, forward_at_rot(rot2)))
+ assert.True(almost_equal({x = 0, y = 0, z = 1}, up_at_rot(rot2)))
+ for i = 1, 1000 do
+ local rand_vec = vector.new(math.random(), math.random(), math.random())
+ if vector.length(rand_vec) ~= 0 then
+ local rot_1 = vector.dir_to_rotation(rand_vec)
+ local rot_2 = {
+ x = math.atan2(rand_vec.y, math.sqrt(rand_vec.z * rand_vec.z + rand_vec.x * rand_vec.x)),
+ y = -math.atan2(rand_vec.x, rand_vec.z),
+ z = 0
+ }
+ assert.True(almost_equal(rot_1, rot_2))
+ end
+ end
+
+ end)
+end)
diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua
index 90ba3cc8b..a08472e32 100644
--- a/builtin/common/vector.lua
+++ b/builtin/common/vector.lua
@@ -1,140 +1,368 @@
+--[[
+Vector helpers
+Note: The vector.*-functions must be able to accept old vectors that had no metatables
+]]
-vector = {}
+-- localize functions
+local setmetatable = setmetatable
+
+-- vector.metatable is set by C++.
+local metatable = vector.metatable
+
+local xyz = {"x", "y", "z"}
+
+-- only called when rawget(v, key) returns nil
+function metatable.__index(v, key)
+ return rawget(v, xyz[key]) or vector[key]
+end
+
+-- only called when rawget(v, key) returns nil
+function metatable.__newindex(v, key, value)
+ rawset(v, xyz[key] or key, value)
+end
+
+-- constructors
+
+local function fast_new(x, y, z)
+ return setmetatable({x = x, y = y, z = z}, metatable)
+end
function vector.new(a, b, c)
+ if a and b and c then
+ return fast_new(a, b, c)
+ end
+
+ -- deprecated, use vector.copy and vector.zero directly
if type(a) == "table" then
- assert(a.x and a.y and a.z, "Invalid vector passed to vector.new()")
- return {x=a.x, y=a.y, z=a.z}
- elseif a then
- assert(b and c, "Invalid arguments for vector.new()")
- return {x=a, y=b, z=c}
+ return vector.copy(a)
+ else
+ assert(not a, "Invalid arguments for vector.new()")
+ return vector.zero()
+ end
+end
+
+function vector.zero()
+ return fast_new(0, 0, 0)
+end
+
+function vector.copy(v)
+ assert(v.x and v.y and v.z, "Invalid vector passed to vector.copy()")
+ return fast_new(v.x, v.y, v.z)
+end
+
+function vector.from_string(s, init)
+ local x, y, z, np = string.match(s, "^%s*%(%s*([^%s,]+)%s*[,%s]%s*([^%s,]+)%s*[,%s]" ..
+ "%s*([^%s,]+)%s*[,%s]?%s*%)()", init)
+ x = tonumber(x)
+ y = tonumber(y)
+ z = tonumber(z)
+ if not (x and y and z) then
+ return nil
end
- return {x=0, y=0, z=0}
+ return fast_new(x, y, z), np
+end
+
+function vector.to_string(v)
+ return string.format("(%g, %g, %g)", v.x, v.y, v.z)
end
+metatable.__tostring = vector.to_string
function vector.equals(a, b)
return a.x == b.x and
a.y == b.y and
a.z == b.z
end
+metatable.__eq = vector.equals
+
+-- unary operations
function vector.length(v)
- return math.hypot(v.x, math.hypot(v.y, v.z))
+ return math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z)
end
+-- Note: we can not use __len because it is already used for primitive table length
function vector.normalize(v)
local len = vector.length(v)
if len == 0 then
- return {x=0, y=0, z=0}
+ return fast_new(0, 0, 0)
else
return vector.divide(v, len)
end
end
function vector.floor(v)
- return {
- x = math.floor(v.x),
- y = math.floor(v.y),
- z = math.floor(v.z)
- }
+ return vector.apply(v, math.floor)
end
function vector.round(v)
- return {
- x = math.floor(v.x + 0.5),
- y = math.floor(v.y + 0.5),
- z = math.floor(v.z + 0.5)
- }
+ return fast_new(
+ math.round(v.x),
+ math.round(v.y),
+ math.round(v.z)
+ )
end
function vector.apply(v, func)
- return {
- x = func(v.x),
- y = func(v.y),
- z = func(v.z)
- }
+ return fast_new(
+ func(v.x),
+ func(v.y),
+ func(v.z)
+ )
+end
+
+function vector.combine(a, b, func)
+ return fast_new(
+ func(a.x, b.x),
+ func(a.y, b.y),
+ func(a.z, b.z)
+ )
end
function vector.distance(a, b)
local x = a.x - b.x
local y = a.y - b.y
local z = a.z - b.z
- return math.hypot(x, math.hypot(y, z))
+ return math.sqrt(x * x + y * y + z * z)
end
function vector.direction(pos1, pos2)
- local x_raw = pos2.x - pos1.x
- local y_raw = pos2.y - pos1.y
- local z_raw = pos2.z - pos1.z
- local x_abs = math.abs(x_raw)
- local y_abs = math.abs(y_raw)
- local z_abs = math.abs(z_raw)
- if x_abs >= y_abs and
- x_abs >= z_abs then
- y_raw = y_raw * (1 / x_abs)
- z_raw = z_raw * (1 / x_abs)
- x_raw = x_raw / x_abs
- end
- if y_abs >= x_abs and
- y_abs >= z_abs then
- x_raw = x_raw * (1 / y_abs)
- z_raw = z_raw * (1 / y_abs)
- y_raw = y_raw / y_abs
- end
- if z_abs >= y_abs and
- z_abs >= x_abs then
- x_raw = x_raw * (1 / z_abs)
- y_raw = y_raw * (1 / z_abs)
- z_raw = z_raw / z_abs
- end
- return {x=x_raw, y=y_raw, z=z_raw}
+ return vector.subtract(pos2, pos1):normalize()
end
+function vector.angle(a, b)
+ local dotp = vector.dot(a, b)
+ local cp = vector.cross(a, b)
+ local crossplen = vector.length(cp)
+ return math.atan2(crossplen, dotp)
+end
+
+function vector.dot(a, b)
+ return a.x * b.x + a.y * b.y + a.z * b.z
+end
+
+function vector.cross(a, b)
+ return fast_new(
+ a.y * b.z - a.z * b.y,
+ a.z * b.x - a.x * b.z,
+ a.x * b.y - a.y * b.x
+ )
+end
+
+function metatable.__unm(v)
+ return fast_new(-v.x, -v.y, -v.z)
+end
+
+-- add, sub, mul, div operations
function vector.add(a, b)
if type(b) == "table" then
- return {x = a.x + b.x,
- y = a.y + b.y,
- z = a.z + b.z}
+ return fast_new(
+ a.x + b.x,
+ a.y + b.y,
+ a.z + b.z
+ )
else
- return {x = a.x + b,
- y = a.y + b,
- z = a.z + b}
+ return fast_new(
+ a.x + b,
+ a.y + b,
+ a.z + b
+ )
end
end
+function metatable.__add(a, b)
+ return fast_new(
+ a.x + b.x,
+ a.y + b.y,
+ a.z + b.z
+ )
+end
function vector.subtract(a, b)
if type(b) == "table" then
- return {x = a.x - b.x,
- y = a.y - b.y,
- z = a.z - b.z}
+ return fast_new(
+ a.x - b.x,
+ a.y - b.y,
+ a.z - b.z
+ )
else
- return {x = a.x - b,
- y = a.y - b,
- z = a.z - b}
+ return fast_new(
+ a.x - b,
+ a.y - b,
+ a.z - b
+ )
end
end
+function metatable.__sub(a, b)
+ return fast_new(
+ a.x - b.x,
+ a.y - b.y,
+ a.z - b.z
+ )
+end
function vector.multiply(a, b)
if type(b) == "table" then
- return {x = a.x * b.x,
- y = a.y * b.y,
- z = a.z * b.z}
+ return fast_new(
+ a.x * b.x,
+ a.y * b.y,
+ a.z * b.z
+ )
else
- return {x = a.x * b,
- y = a.y * b,
- z = a.z * b}
+ return fast_new(
+ a.x * b,
+ a.y * b,
+ a.z * b
+ )
+ end
+end
+function metatable.__mul(a, b)
+ if type(a) == "table" then
+ return fast_new(
+ a.x * b,
+ a.y * b,
+ a.z * b
+ )
+ else
+ return fast_new(
+ a * b.x,
+ a * b.y,
+ a * b.z
+ )
end
end
function vector.divide(a, b)
if type(b) == "table" then
- return {x = a.x / b.x,
- y = a.y / b.y,
- z = a.z / b.z}
+ return fast_new(
+ a.x / b.x,
+ a.y / b.y,
+ a.z / b.z
+ )
else
- return {x = a.x / b,
- y = a.y / b,
- z = a.z / b}
+ return fast_new(
+ a.x / b,
+ a.y / b,
+ a.z / b
+ )
+ end
+end
+function metatable.__div(a, b)
+ -- scalar/vector makes no sense
+ return fast_new(
+ a.x / b,
+ a.y / b,
+ a.z / b
+ )
+end
+
+-- misc stuff
+
+function vector.offset(v, x, y, z)
+ return fast_new(
+ v.x + x,
+ v.y + y,
+ v.z + z
+ )
+end
+
+function vector.sort(a, b)
+ return fast_new(math.min(a.x, b.x), math.min(a.y, b.y), math.min(a.z, b.z)),
+ fast_new(math.max(a.x, b.x), math.max(a.y, b.y), math.max(a.z, b.z))
+end
+
+function vector.check(v)
+ return getmetatable(v) == metatable
+end
+
+local function sin(x)
+ if x % math.pi == 0 then
+ return 0
+ else
+ return math.sin(x)
+ end
+end
+
+local function cos(x)
+ if x % math.pi == math.pi / 2 then
+ return 0
+ else
+ return math.cos(x)
+ end
+end
+
+function vector.rotate_around_axis(v, axis, angle)
+ local cosangle = cos(angle)
+ local sinangle = sin(angle)
+ axis = vector.normalize(axis)
+ -- https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
+ local dot_axis = vector.multiply(axis, vector.dot(axis, v))
+ local cross = vector.cross(v, axis)
+ return vector.new(
+ cross.x * sinangle + (v.x - dot_axis.x) * cosangle + dot_axis.x,
+ cross.y * sinangle + (v.y - dot_axis.y) * cosangle + dot_axis.y,
+ cross.z * sinangle + (v.z - dot_axis.z) * cosangle + dot_axis.z
+ )
+end
+
+function vector.rotate(v, rot)
+ local sinpitch = sin(-rot.x)
+ local sinyaw = sin(-rot.y)
+ local sinroll = sin(-rot.z)
+ local cospitch = cos(rot.x)
+ local cosyaw = cos(rot.y)
+ local cosroll = math.cos(rot.z)
+ -- Rotation matrix that applies yaw, pitch and roll
+ local matrix = {
+ {
+ sinyaw * sinpitch * sinroll + cosyaw * cosroll,
+ sinyaw * sinpitch * cosroll - cosyaw * sinroll,
+ sinyaw * cospitch,
+ },
+ {
+ cospitch * sinroll,
+ cospitch * cosroll,
+ -sinpitch,
+ },
+ {
+ cosyaw * sinpitch * sinroll - sinyaw * cosroll,
+ cosyaw * sinpitch * cosroll + sinyaw * sinroll,
+ cosyaw * cospitch,
+ },
+ }
+ -- Compute matrix multiplication: `matrix` * `v`
+ return vector.new(
+ matrix[1][1] * v.x + matrix[1][2] * v.y + matrix[1][3] * v.z,
+ matrix[2][1] * v.x + matrix[2][2] * v.y + matrix[2][3] * v.z,
+ matrix[3][1] * v.x + matrix[3][2] * v.y + matrix[3][3] * v.z
+ )
+end
+
+function vector.dir_to_rotation(forward, up)
+ forward = vector.normalize(forward)
+ local rot = vector.new(math.asin(forward.y), -math.atan2(forward.x, forward.z), 0)
+ if not up then
+ return rot
+ end
+ assert(vector.dot(forward, up) < 0.000001,
+ "Invalid vectors passed to vector.dir_to_rotation().")
+ up = vector.normalize(up)
+ -- Calculate vector pointing up with roll = 0, just based on forward vector.
+ local forwup = vector.rotate(vector.new(0, 1, 0), rot)
+ -- 'forwup' and 'up' are now in a plane with 'forward' as normal.
+ -- The angle between them is the absolute of the roll value we're looking for.
+ rot.z = vector.angle(forwup, up)
+
+ -- Since vector.angle never returns a negative value or a value greater
+ -- than math.pi, rot.z has to be inverted sometimes.
+ -- To determine wether this is the case, we rotate the up vector back around
+ -- the forward vector and check if it worked out.
+ local back = vector.rotate_around_axis(up, forward, -rot.z)
+
+ -- We don't use vector.equals for this because of floating point imprecision.
+ if (back.x - forwup.x) * (back.x - forwup.x) +
+ (back.y - forwup.y) * (back.y - forwup.y) +
+ (back.z - forwup.z) * (back.z - forwup.z) > 0.0000001 then
+ rot.z = -rot.z
end
+ return rot
end
diff --git a/builtin/fstk/dialog.lua b/builtin/fstk/dialog.lua
index df887f413..ea57df1d2 100644
--- a/builtin/fstk/dialog.lua
+++ b/builtin/fstk/dialog.lua
@@ -67,3 +67,22 @@ function dialog_create(name,get_formspec,buttonhandler,eventhandler)
ui.add(self)
return self
end
+
+function messagebox(name, message)
+ return dialog_create(name,
+ function()
+ return ([[
+ formspec_version[3]
+ size[8,3]
+ textarea[0.375,0.375;7.25,1.2;;;%s]
+ button[3,1.825;2,0.8;ok;%s]
+ ]]):format(message, fgettext("OK"))
+ end,
+ function(this, fields)
+ if fields.ok then
+ this:delete()
+ return true
+ end
+ end,
+ nil)
+end
diff --git a/builtin/fstk/tabview.lua b/builtin/fstk/tabview.lua
index 72551afd7..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
@@ -167,7 +151,7 @@ local function switch_to_tab(self, index)
self.current_tab = self.tablist[index].name
if (self.autosave_tab) then
- core.setting_set(self.name .. "_LAST",self.current_tab)
+ core.settings:set(self.name .. "_LAST",self.current_tab)
end
-- call for tab to enter
diff --git a/builtin/fstk/ui.lua b/builtin/fstk/ui.lua
index 3ac0386ca..13f9cbec2 100644
--- a/builtin/fstk/ui.lua
+++ b/builtin/fstk/ui.lua
@@ -18,6 +18,8 @@
ui = {}
ui.childlist = {}
ui.default = nil
+-- Whether fstk is currently showing its own formspec instead of active ui elements.
+ui.overridden = false
--------------------------------------------------------------------------------
function ui.add(child)
@@ -54,52 +56,44 @@ end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-local function wordwrap_quickhack(str)
- local res = ""
- local ar = str:split("\n")
- for i = 1, #ar do
- local text = ar[i]
- -- Hack to add word wrapping.
- -- TODO: Add engine support for wrapping in formspecs
- while #text > 80 do
- if res ~= "" then
- res = res .. ","
- end
- res = res .. core.formspec_escape(string.sub(text, 1, 79))
- text = string.sub(text, 80, #text)
- end
- if res ~= "" then
- res = res .. ","
- end
- res = res .. core.formspec_escape(text)
- end
- return res
-end
-
---------------------------------------------------------------------------------
function ui.update()
- local formspec = ""
+ ui.overridden = false
+ local formspec = {}
-- handle errors
if gamedata ~= nil and gamedata.reconnect_requested then
- formspec = wordwrap_quickhack(gamedata.errormessage or "")
- formspec = "size[12,5]" ..
- "label[0.5,0;" .. fgettext("The server has requested a reconnect:") ..
- "]textlist[0.2,0.8;11.5,3.5;;" .. formspec ..
- "]button[6,4.6;3,0.5;btn_reconnect_no;" .. fgettext("Main menu") .. "]" ..
- "button[3,4.6;3,0.5;btn_reconnect_yes;" .. fgettext("Reconnect") .. "]"
+ local error_message = core.formspec_escape(
+ gamedata.errormessage or fgettext("<none available>"))
+ formspec = {
+ "size[14,8]",
+ "real_coordinates[true]",
+ "set_focus[btn_reconnect_yes;true]",
+ "box[0.5,1.2;13,5;#000]",
+ ("textarea[0.5,1.2;13,5;;%s;%s]"):format(
+ fgettext("The server has requested a reconnect:"), error_message),
+ "button[2,6.6;4,1;btn_reconnect_yes;" .. fgettext("Reconnect") .. "]",
+ "button[8,6.6;4,1;btn_reconnect_no;" .. fgettext("Main menu") .. "]"
+ }
+ ui.overridden = true
elseif gamedata ~= nil and gamedata.errormessage ~= nil then
- formspec = wordwrap_quickhack(gamedata.errormessage)
+ local error_message = core.formspec_escape(gamedata.errormessage)
+
local error_title
if string.find(gamedata.errormessage, "ModError") then
- error_title = fgettext("An error occured in a Lua script, such as a mod:")
+ error_title = fgettext("An error occurred in a Lua script:")
else
- error_title = fgettext("An error occured:")
+ error_title = fgettext("An error occurred:")
end
- formspec = "size[12,5]" ..
- "label[0.5,0;" .. error_title ..
- "]textlist[0.2,0.8;11.5,3.5;;" .. formspec ..
- "]button[4.5,4.6;3,0.5;btn_error_confirm;" .. fgettext("Ok") .. "]"
+ formspec = {
+ "size[14,8]",
+ "real_coordinates[true]",
+ "set_focus[btn_error_confirm;true]",
+ "box[0.5,1.2;13,5;#000]",
+ ("textarea[0.5,1.2;13,5;;%s;%s]"):format(
+ error_title, error_message),
+ "button[5,6.6;4,1;btn_error_confirm;" .. fgettext("OK") .. "]"
+ }
+ ui.overridden = true
else
local active_toplevel_ui_elements = 0
for key,value in pairs(ui.childlist) do
@@ -107,8 +101,8 @@ function ui.update()
local retval = value:get_formspec()
if retval ~= nil and retval ~= "" then
- active_toplevel_ui_elements = active_toplevel_ui_elements +1
- formspec = formspec .. retval
+ active_toplevel_ui_elements = active_toplevel_ui_elements + 1
+ table.insert(formspec, retval)
end
end
end
@@ -120,7 +114,7 @@ function ui.update()
local retval = value:get_formspec()
if retval ~= nil and retval ~= "" then
- formspec = formspec .. retval
+ table.insert(formspec, retval)
end
end
end
@@ -135,10 +129,10 @@ function ui.update()
core.log("warning", "no toplevel ui element "..
"active; switching to default")
ui.childlist[ui.default]:show()
- formspec = ui.childlist[ui.default]:get_formspec()
+ formspec = {ui.childlist[ui.default]:get_formspec()}
end
end
- core.update_formspec(formspec)
+ core.update_formspec(table.concat(formspec))
end
--------------------------------------------------------------------------------
@@ -196,6 +190,16 @@ end
--------------------------------------------------------------------------------
core.event_handler = function(event)
+ -- Handle error messages
+ if ui.overridden then
+ if event == "MenuQuit" then
+ gamedata.errormessage = nil
+ gamedata.reconnect_requested = false
+ ui.update()
+ end
+ return
+ end
+
if ui.handle_events(event) then
ui.update()
return
diff --git a/builtin/game/async.lua b/builtin/game/async.lua
new file mode 100644
index 000000000..469f179d7
--- /dev/null
+++ b/builtin/game/async.lua
@@ -0,0 +1,22 @@
+
+core.async_jobs = {}
+
+function core.async_event_handler(jobid, retval)
+ local callback = core.async_jobs[jobid]
+ assert(type(callback) == "function")
+ callback(unpack(retval, 1, retval.n))
+ core.async_jobs[jobid] = nil
+end
+
+function core.handle_async(func, callback, ...)
+ assert(type(func) == "function" and type(callback) == "function",
+ "Invalid minetest.handle_async invocation")
+ local args = {n = select("#", ...), ...}
+ local mod_origin = core.get_last_run_mod()
+
+ local jobid = core.do_async_callback(func, args, mod_origin)
+ core.async_jobs[jobid] = callback
+
+ return true
+end
+
diff --git a/builtin/game/auth.lua b/builtin/game/auth.lua
index 46fe3d342..e7d502bb3 100644
--- a/builtin/game/auth.lua
+++ b/builtin/game/auth.lua
@@ -1,101 +1,25 @@
-- Minetest: builtin/auth.lua
--
--- Authentication handler
+-- Builtin authentication handler
--
-function core.string_to_privs(str, delim)
- assert(type(str) == "string")
- delim = delim or ','
- local privs = {}
- for _, priv in pairs(string.split(str, delim)) do
- privs[priv:trim()] = true
- end
- return privs
-end
-
-function core.privs_to_string(privs, delim)
- assert(type(privs) == "table")
- delim = delim or ','
- local list = {}
- for priv, bool in pairs(privs) do
- if bool then
- list[#list + 1] = priv
- end
- end
- return table.concat(list, delim)
-end
-
-assert(core.string_to_privs("a,b").b == true)
-assert(core.privs_to_string({a=true,b=true}) == "a,b")
-
-core.auth_file_path = core.get_worldpath().."/auth.txt"
-core.auth_table = {}
-
-local function read_auth_file()
- local newtable = {}
- local file, errmsg = io.open(core.auth_file_path, 'rb')
- if not file then
- core.log("info", core.auth_file_path.." could not be opened for reading ("..errmsg.."); assuming new world")
- return
- end
- for line in file:lines() do
- if line ~= "" then
- local fields = line:split(":", true)
- local name, password, privilege_string, last_login = unpack(fields)
- last_login = tonumber(last_login)
- if not (name and password and privilege_string) then
- error("Invalid line in auth.txt: "..dump(line))
- end
- local privileges = core.string_to_privs(privilege_string)
- newtable[name] = {password=password, privileges=privileges, last_login=last_login}
- end
- end
- io.close(file)
- core.auth_table = newtable
- core.notify_authentication_modified()
-end
-
-local function save_auth_file()
- local newtable = {}
- -- Check table for validness before attempting to save
- for name, stuff in pairs(core.auth_table) do
- assert(type(name) == "string")
- assert(name ~= "")
- assert(type(stuff) == "table")
- assert(type(stuff.password) == "string")
- assert(type(stuff.privileges) == "table")
- assert(stuff.last_login == nil or type(stuff.last_login) == "number")
- end
- local file, errmsg = io.open(core.auth_file_path, 'w+b')
- if not file then
- error(core.auth_file_path.." could not be opened for writing: "..errmsg)
- end
- for name, stuff in pairs(core.auth_table) do
- local priv_string = core.privs_to_string(stuff.privileges)
- local parts = {name, stuff.password, priv_string, stuff.last_login or ""}
- file:write(table.concat(parts, ":").."\n")
- end
- io.close(file)
-end
-
-read_auth_file()
+-- Make the auth object private, deny access to mods
+local core_auth = core.auth
+core.auth = nil
core.builtin_auth_handler = {
get_auth = function(name)
assert(type(name) == "string")
- -- Figure out what password to use for a new player (singleplayer
- -- always has an empty password, otherwise use default, which is
- -- usually empty too)
- local new_password_hash = ""
- -- If not in authentication table, return nil
- if not core.auth_table[name] then
+ local auth_entry = core_auth.read(name)
+ -- If no such auth found, return nil
+ if not auth_entry then
return nil
end
-- Figure out what privileges the player should have.
-- Take a copy of the privilege table
local privileges = {}
- for priv, _ in pairs(core.auth_table[name].privileges) do
+ for priv, _ in pairs(auth_entry.privileges) do
privileges[priv] = true
end
-- If singleplayer, give all privileges except those marked as give_to_singleplayer = false
@@ -106,65 +30,127 @@ core.builtin_auth_handler = {
end
end
-- For the admin, give everything
- elseif name == core.setting_get("name") then
+ elseif name == core.settings:get("name") then
for priv, def in pairs(core.registered_privileges) do
- privileges[priv] = true
+ if def.give_to_admin then
+ privileges[priv] = true
+ end
end
end
-- All done
return {
- password = core.auth_table[name].password,
+ password = auth_entry.password,
privileges = privileges,
- -- Is set to nil if unknown
- last_login = core.auth_table[name].last_login,
+ last_login = auth_entry.last_login,
}
end,
create_auth = function(name, password)
assert(type(name) == "string")
assert(type(password) == "string")
core.log('info', "Built-in authentication handler adding player '"..name.."'")
- core.auth_table[name] = {
+ return core_auth.create({
+ name = name,
password = password,
- privileges = core.string_to_privs(core.setting_get("default_privs")),
- last_login = os.time(),
- }
- save_auth_file()
+ privileges = core.string_to_privs(core.settings:get("default_privs")),
+ last_login = -1, -- Defer login time calculation until record_login (called by on_joinplayer)
+ })
+ end,
+ delete_auth = function(name)
+ assert(type(name) == "string")
+ local auth_entry = core_auth.read(name)
+ if not auth_entry then
+ return false
+ end
+ core.log('info', "Built-in authentication handler deleting player '"..name.."'")
+ return core_auth.delete(name)
end,
set_password = function(name, password)
assert(type(name) == "string")
assert(type(password) == "string")
- if not core.auth_table[name] then
+ local auth_entry = core_auth.read(name)
+ if not auth_entry then
core.builtin_auth_handler.create_auth(name, password)
else
core.log('info', "Built-in authentication handler setting password of player '"..name.."'")
- core.auth_table[name].password = password
- save_auth_file()
+ auth_entry.password = password
+ core_auth.save(auth_entry)
end
return true
end,
set_privileges = function(name, privileges)
assert(type(name) == "string")
assert(type(privileges) == "table")
- if not core.auth_table[name] then
- core.builtin_auth_handler.create_auth(name,
+ local auth_entry = core_auth.read(name)
+ if not auth_entry then
+ auth_entry = core.builtin_auth_handler.create_auth(name,
core.get_password_hash(name,
- core.setting_get("default_password")))
+ core.settings:get("default_password")))
+ end
+
+ auth_entry.privileges = privileges
+
+ core_auth.save(auth_entry)
+
+ -- Run grant callbacks
+ for priv, _ in pairs(privileges) do
+ if not auth_entry.privileges[priv] then
+ core.run_priv_callbacks(name, priv, nil, "grant")
+ end
+ end
+
+ -- Run revoke callbacks
+ for priv, _ in pairs(auth_entry.privileges) do
+ if not privileges[priv] then
+ core.run_priv_callbacks(name, priv, nil, "revoke")
+ end
end
- core.auth_table[name].privileges = privileges
core.notify_authentication_modified(name)
- save_auth_file()
end,
reload = function()
- read_auth_file()
+ core_auth.reload()
return true
end,
record_login = function(name)
assert(type(name) == "string")
- assert(core.auth_table[name]).last_login = os.time()
- save_auth_file()
+ local auth_entry = core_auth.read(name)
+ assert(auth_entry)
+ auth_entry.last_login = os.time()
+ core_auth.save(auth_entry)
+ end,
+ iterate = function()
+ local names = {}
+ local nameslist = core_auth.list_names()
+ for k,v in pairs(nameslist) do
+ names[v] = true
+ end
+ return pairs(names)
end,
}
+core.register_on_prejoinplayer(function(name, ip)
+ if core.registered_auth_handler ~= nil then
+ return -- Don't do anything if custom auth handler registered
+ end
+ local auth_entry = core_auth.read(name)
+ if auth_entry ~= nil then
+ return
+ end
+
+ local name_lower = name:lower()
+ for k in core.builtin_auth_handler.iterate() do
+ if k:lower() == name_lower then
+ return string.format("\nCannot create new player called '%s'. "..
+ "Another account called '%s' is already registered. "..
+ "Please check the spelling if it's your account "..
+ "or use a different nickname.", name, k)
+ end
+ end
+end)
+
+--
+-- Authentication API
+--
+
function core.register_authentication_handler(handler)
if core.registered_auth_handler then
error("Add-on authentication handler already registered by "..core.registered_auth_handler_modname)
@@ -190,28 +176,10 @@ end
core.set_player_password = auth_pass("set_password")
core.set_player_privs = auth_pass("set_privileges")
+core.remove_player_auth = auth_pass("delete_auth")
core.auth_reload = auth_pass("reload")
-
local record_login = auth_pass("record_login")
-
core.register_on_joinplayer(function(player)
record_login(player:get_player_name())
end)
-
-core.register_on_prejoinplayer(function(name, ip)
- local auth = core.auth_table
- if auth[name] ~= nil then
- return
- end
-
- local name_lower = name:lower()
- for k in pairs(auth) do
- if k:lower() == name_lower then
- return string.format("\nCannot create new player called '%s'. "..
- "Another account called '%s' is already registered. "..
- "Please check the spelling if it's your account "..
- "or use a different nickname.", name, k)
- end
- end
-end)
diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua
new file mode 100644
index 000000000..bbcdcf2d0
--- /dev/null
+++ b/builtin/game/chat.lua
@@ -0,0 +1,1359 @@
+-- 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)
+ local i1, i2 = s:find(replace, 1, true)
+ if not i1 then
+ return s, false
+ end
+
+ return s:sub(1, i1 - 1) .. with .. s:sub(i2 + 1), true
+end
+
+--
+-- Chat message formatter
+--
+
+-- Implemented in Lua to allow redefinition
+function core.format_chat_message(name, message)
+ local error_str = "Invalid chat message format - missing %s"
+ local str = core.settings:get("chat_message_format")
+ local replaced
+
+ -- Name
+ str, replaced = safe_gsub(str, "@name", name)
+ if not replaced then
+ error(error_str:format("@name"), 2)
+ end
+
+ -- Timestamp
+ str = safe_gsub(str, "@timestamp", os.date("%H:%M:%S", os.time()))
+
+ -- Insert the message into the string only after finishing all other processing
+ str, replaced = safe_gsub(str, "@message", message)
+ if not replaced then
+ error(error_str:format("@message"), 2)
+ end
+
+ return str
+end
+
+--
+-- Chat command handler
+--
+
+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
+ end
+
+ local cmd, param = string.match(message, "^/([^ ]+) *(.*)")
+ if not cmd then
+ core.chat_send_player(name, "-!- "..S("Empty command."))
+ return true
+ end
+
+ param = param or ""
+
+ -- Run core.registered_on_chatcommands callbacks.
+ if core.run_callbacks(core.registered_on_chatcommands, 5, name, cmd, param) then
+ return true
+ end
+
+ local cmd_def = core.registered_chatcommands[cmd]
+ if not cmd_def then
+ 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 = core.get_us_time()
+ local success, result = cmd_def.func(name, param)
+ local delay = (core.get_us_time() - t_before) / 1000000
+ if success == false and result == nil then
+ 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)
+ if helpmsg then
+ core.chat_send_player(name, helpmsg)
+ end
+ end
+ else
+ if delay > msg_time_threshold then
+ -- Show how much time it took to execute the command
+ if result then
+ result = result .. core.colorize("#f3d2ff", S(" (@1 s)",
+ string.format("%.5f", delay)))
+ else
+ result = core.colorize("#f3d2ff", S(
+ "Command execution took @1 s",
+ string.format("%.5f", delay)))
+ end
+ end
+ if result then
+ core.chat_send_player(name, result)
+ end
+ end
+ else
+ 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)
+
+if core.settings:get_bool("profiler.load") then
+ -- Run after register_chatcommand and its register_on_chat_message
+ -- Before any chatcommands that should be profiled
+ profiler.init_chatcommand()
+end
+
+-- Parses a "range" string in the format of "here (number)" or
+-- "(x1, y1, z1) (x2, y2, z2)", returning two position vectors
+local function parse_range_str(player_name, str)
+ local p1, p2
+ local args = str:split(" ")
+
+ if args[1] == "here" then
+ p1, p2 = core.get_player_radius_area(player_name, tonumber(args[2]))
+ if p1 == nil then
+ return false, S("Unable to get position of player @1.", player_name)
+ end
+ else
+ local player = core.get_player_by_name(player_name)
+ local relpos
+ if player then
+ relpos = player:get_pos()
+ end
+ p1, p2 = core.string_to_area(str, relpos)
+ if p1 == nil or p2 == nil then
+ return false, S("Incorrect area format. "
+ .. "Expected: (x1,y1,z1) (x2,y2,z2)")
+ end
+ end
+
+ return p1, p2
+end
+
+--
+-- Chat commands
+--
+core.register_chatcommand("me", {
+ 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)
+ return true
+ end,
+})
+
+core.register_chatcommand("admin", {
+ description = S("Show the name of the server owner"),
+ func = function(name)
+ local admin = core.settings:get("name")
+ if admin then
+ return true, S("The administrator of this server is @1.", admin)
+ else
+ return false, S("There's no administrator named "
+ .. "in the config file.")
+ end
+ end,
+})
+
+local function privileges_of(name, privs)
+ if not privs then
+ privs = core.get_player_privs(name)
+ end
+ local privstr = core.privs_to_string(privs, ", ")
+ if privstr == "" then
+ return S("@1 does not have any privileges.", name)
+ else
+ return S("Privileges of @1: @2", name, privstr)
+ end
+end
+
+core.register_chatcommand("privs", {
+ 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, S("Player @1 does not exist.", name)
+ end
+ return true, privileges_of(name)
+ end,
+})
+
+core.register_chatcommand("haspriv", {
+ 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, S("Invalid parameters (see /help haspriv).")
+ end
+ if not core.registered_privileges[param] then
+ return false, S("Unknown privilege!")
+ end
+ local privs = core.string_to_privs(param)
+ local players_with_priv = {}
+ for _, player in pairs(core.get_connected_players()) do
+ local player_name = player:get_player_name()
+ if core.check_player_privs(player_name, privs) then
+ table.insert(players_with_priv, player_name)
+ end
+ end
+ if #players_with_priv == 0 then
+ return true, S("No online player has the \"@1\" privilege.",
+ param)
+ else
+ return true, S("Players online with the \"@1\" privilege: @2",
+ param,
+ table.concat(players_with_priv, ", "))
+ end
+ 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, S("Your privileges are insufficient.")
+ end
+
+ if not core.get_auth_handler().get_auth(grantname) then
+ return false, S("Player @1 does not exist.", grantname)
+ end
+ local grantprivs = core.string_to_privs(grantprivstr)
+ if grantprivstr == "all" then
+ grantprivs = core.registered_privileges
+ end
+ local privs = core.get_player_privs(grantname)
+ local privs_unknown = ""
+ local basic_privs =
+ 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, S("Your privileges are insufficient. "..
+ "'@1' only allows you to grant: @2",
+ "basic_privs",
+ core.privs_to_string(basic_privs, ', '))
+ end
+ if not core.registered_privileges[priv] then
+ privs_unknown = privs_unknown .. S("Unknown privilege: @1", priv) .. "\n"
+ end
+ privs[priv] = true
+ end
+ if privs_unknown ~= "" then
+ return false, privs_unknown
+ end
+ core.set_player_privs(grantname, privs)
+ for priv, _ in pairs(grantprivs) do
+ -- call the on_grant callbacks
+ core.run_priv_callbacks(grantname, priv, caller, "grant")
+ end
+ core.log("action", caller..' granted ('..core.privs_to_string(grantprivs, ', ')..') privileges to '..grantname)
+ if grantname ~= caller then
+ core.chat_send_player(grantname,
+ S("@1 granted you privileges: @2", caller,
+ core.privs_to_string(grantprivs, ', ')))
+ end
+ return true, privileges_of(grantname)
+end
+
+core.register_chatcommand("grant", {
+ params = S("<name> (<privilege> [, <privilege2> [<...>]] | 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, S("Invalid parameters (see /help grant).")
+ end
+ return handle_grant_command(name, grantname, grantprivstr)
+ end,
+})
+
+core.register_chatcommand("grantme", {
+ params = S("<privilege> [, <privilege2> [<...>]] | all"),
+ description = S("Grant privileges to yourself"),
+ func = function(name, param)
+ if param == "" then
+ return false, S("Invalid parameters (see /help grantme).")
+ end
+ return handle_grant_command(name, name, param)
+ end,
+})
+
+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, S("Your privileges are insufficient.")
+ end
+
+ if not core.get_auth_handler().get_auth(revokename) then
+ return false, S("Player @1 does not exist.", revokename)
+ end
+
+ local privs = core.get_player_privs(revokename)
+
+ local revokeprivs = core.string_to_privs(revokeprivstr)
+ local is_singleplayer = core.is_singleplayer()
+ local is_admin = not is_singleplayer
+ and revokename == core.settings:get("name")
+ and revokename ~= ""
+ if revokeprivstr == "all" then
+ revokeprivs = table.copy(privs)
+ end
+
+ local privs_unknown = ""
+ local basic_privs =
+ core.string_to_privs(core.settings:get("basic_privs") or "interact,shout")
+ local irrevokable = {}
+ local has_irrevokable_priv = false
+ for priv, _ in pairs(revokeprivs) do
+ if not basic_privs[priv] and not caller_privs.privs then
+ return false, S("Your privileges are insufficient. "..
+ "'@1' only allows you to revoke: @2",
+ "basic_privs",
+ core.privs_to_string(basic_privs, ', '))
+ end
+ local def = core.registered_privileges[priv]
+ if not def then
+ -- Old/removed privileges might still be granted to certain players
+ if not privs[priv] then
+ privs_unknown = privs_unknown .. S("Unknown privilege: @1", priv) .. "\n"
+ end
+ elseif is_singleplayer and def.give_to_singleplayer then
+ irrevokable[priv] = true
+ elseif is_admin and def.give_to_admin then
+ irrevokable[priv] = true
+ end
+ end
+ for priv, _ in pairs(irrevokable) do
+ revokeprivs[priv] = nil
+ has_irrevokable_priv = true
+ end
+ if privs_unknown ~= "" then
+ return false, privs_unknown
+ end
+ if has_irrevokable_priv then
+ if is_singleplayer then
+ core.chat_send_player(caller,
+ S("Note: Cannot revoke in singleplayer: @1",
+ core.privs_to_string(irrevokable, ', ')))
+ elseif is_admin then
+ core.chat_send_player(caller,
+ S("Note: Cannot revoke from admin: @1",
+ core.privs_to_string(irrevokable, ', ')))
+ end
+ end
+
+ local revokecount = 0
+ for priv, _ in pairs(revokeprivs) do
+ privs[priv] = nil
+ revokecount = revokecount + 1
+ end
+
+ if revokecount == 0 then
+ return false, S("No privileges were revoked.")
+ end
+
+ core.set_player_privs(revokename, privs)
+ for priv, _ in pairs(revokeprivs) do
+ -- call the on_revoke callbacks
+ core.run_priv_callbacks(revokename, priv, caller, "revoke")
+ end
+ local new_privs = core.get_player_privs(revokename)
+
+ core.log("action", caller..' revoked ('
+ ..core.privs_to_string(revokeprivs, ', ')
+ ..') privileges from '..revokename)
+ if revokename ~= caller then
+ core.chat_send_player(revokename,
+ S("@1 revoked privileges from you: @2", caller,
+ core.privs_to_string(revokeprivs, ', ')))
+ end
+ return true, privileges_of(revokename, new_privs)
+end
+
+core.register_chatcommand("revoke", {
+ params = S("<name> (<privilege> [, <privilege2> [<...>]] | 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, S("Invalid parameters (see /help revoke).")
+ end
+ return handle_revoke_command(name, revokename, revokeprivstr)
+ end,
+})
+
+core.register_chatcommand("revokeme", {
+ params = S("<privilege> [, <privilege2> [<...>]] | all"),
+ description = S("Revoke privileges from yourself"),
+ privs = {},
+ func = function(name, param)
+ if param == "" then
+ return false, S("Invalid parameters (see /help revokeme).")
+ end
+ return handle_revoke_command(name, name, param)
+ end,
+})
+
+core.register_chatcommand("setpassword", {
+ params = S("<name> <password>"),
+ description = S("Set player's password"),
+ privs = {password=true},
+ func = function(name, param)
+ local toname, raw_password = string.match(param, "^([^ ]+) +(.+)$")
+ if not toname then
+ toname = param:match("^([^ ]+) *$")
+ raw_password = nil
+ end
+
+ if not toname then
+ return false, S("Name field required.")
+ end
+
+ local msg_chat, msg_log, msg_ret
+ if not raw_password then
+ core.set_player_password(toname, "")
+ 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))
+ 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, msg_chat)
+ end
+
+ core.log("action", msg_log)
+
+ return true, msg_ret
+ end,
+})
+
+core.register_chatcommand("clearpassword", {
+ 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, S("Name field required.")
+ end
+ core.set_player_password(toname, '')
+
+ core.log("action", name .. " clears password of " .. toname .. ".")
+
+ return true, S("Password of player \"@1\" cleared.", toname)
+ end,
+})
+
+core.register_chatcommand("auth_reload", {
+ params = "",
+ description = S("Reload authentication data"),
+ privs = {server=true},
+ func = function(name, param)
+ local done = core.auth_reload()
+ return done, (done and S("Done.") or S("Failed."))
+ end,
+})
+
+core.register_chatcommand("remove_player", {
+ 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, 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, S("Player \"@1\" removed.", toname)
+ elseif rc == 1 then
+ return true, S("No such player \"@1\" to remove.", toname)
+ elseif rc == 2 then
+ return true, S("Player \"@1\" is connected, cannot remove.", toname)
+ end
+
+ return false, S("Unhandled remove_player return code @1.", tostring(rc))
+ end,
+})
+
+
+-- pos may be a non-integer position
+local function find_free_position_near(pos)
+ local tries = {
+ vector.new( 1, 0, 0),
+ vector.new(-1, 0, 0),
+ vector.new( 0, 0, 1),
+ vector.new( 0, 0, -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
+ end
+ end
+ return pos
+end
+
+-- Teleports player <name> to <p> if possible
+local function teleport_to_pos(name, p)
+ local lm = 31007 -- equals MAX_MAP_GENERATION_LIMIT in C++
+ 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 player = core.get_player_by_name(name)
+ local relpos
+ if player then
+ relpos = player:get_pos()
+ end
+ local p = {}
+ p.x, p.y, p.z = string.match(param, "^([%d.~-]+)[, ] *([%d.~-]+)[, ] *([%d.~-]+)$")
+ p = core.parse_coordinates(p.x, p.y, p.z, relpos)
+ if p and p.x and p.y and p.z then
+ return teleport_to_pos(name, p)
+ end
+
+ local target_name = param:match("^([^ ]+)$")
+ if target_name then
+ return teleport_to_player(name, target_name)
+ 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")
+
+ local teleportee_name
+ p = {}
+ teleportee_name, p.x, p.y, p.z = param:match(
+ "^([^ ]+) +([%d.~-]+)[, ] *([%d.~-]+)[, ] *([%d.~-]+)$")
+ if teleportee_name then
+ local teleportee = core.get_player_by_name(teleportee_name)
+ if not teleportee then
+ return
+ end
+ relpos = teleportee:get_pos()
+ p = core.parse_coordinates(p.x, p.y, p.z, relpos)
+ end
+ 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
+ return teleport_to_pos(teleportee_name, p)
+ end
+
+ teleportee_name, target_name = string.match(param, "^([^ ]+) +([^ ]+)$")
+ if teleportee_name and target_name then
+ if not has_bring_priv then
+ return false, missing_bring_msg
+ end
+ return teleport_to_player(teleportee_name, target_name)
+ end
+
+ return false
+ end,
+})
+
+core.register_chatcommand("set", {
+ 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]) ([^ ]+) (.+)")
+ if arg and arg == "-n" and setname and setvalue then
+ core.settings:set(setname, setvalue)
+ return true, setname .. " = " .. setvalue
+ end
+
+ setname, setvalue = string.match(param, "([^ ]+) (.+)")
+ if setname and setvalue then
+ if setname:sub(1, 7) == "secure." then
+ return false, S("Failed. Cannot modify secure settings. "
+ .. "Edit the settings file manually.")
+ end
+ if not core.settings:get(setname) then
+ return false, S("Failed. Use '/set -n <name> <value>' "
+ .. "to create a new setting.")
+ end
+ core.settings:set(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 = S("<not set>")
+ end
+ return true, S("@1 = @2", setname, setvalue)
+ end
+
+ return false, S("Invalid parameters (see /help set).")
+ end,
+})
+
+local function emergeblocks_callback(pos, action, num_calls_remaining, ctx)
+ if ctx.total_blocks == 0 then
+ ctx.total_blocks = num_calls_remaining + 1
+ ctx.current_blocks = 0
+ end
+ ctx.current_blocks = ctx.current_blocks + 1
+
+ if ctx.current_blocks == ctx.total_blocks then
+ core.chat_send_player(ctx.requestor_name,
+ 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,
+ S("emergeblocks update: @1/@2 blocks emerged (@3%)",
+ ctx.current_blocks, ctx.total_blocks,
+ string.format("%.1f", (ctx.current_blocks / ctx.total_blocks) * 100)))
+
+ core.after(2, emergeblocks_progress_update, ctx)
+ end
+end
+
+core.register_chatcommand("emergeblocks", {
+ 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)
+ if p1 == false then
+ return false, p2
+ end
+
+ local context = {
+ current_blocks = 0,
+ total_blocks = 0,
+ start_time = os.clock(),
+ requestor_name = name
+ }
+
+ core.emerge_area(p1, p2, emergeblocks_callback, context)
+ core.after(2, emergeblocks_progress_update, context)
+
+ 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 = 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)
+ if p1 == false then
+ return false, p2
+ end
+
+ if core.delete_area(p1, p2) then
+ 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, S("Failed to clear one or more "
+ .. "blocks in area.")
+ end
+ end,
+})
+
+core.register_chatcommand("fixlight", {
+ 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)
+ if p1 == false then
+ return false, p2
+ end
+
+ if core.fix_light(p1, p2) then
+ 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, S("Failed to load one or more blocks in area.")
+ end
+ end,
+})
+
+core.register_chatcommand("mods", {
+ params = "",
+ description = S("List mods installed on the server"),
+ privs = {},
+ func = function(name, param)
+ local mods = core.get_modnames()
+ if #mods == 0 then
+ return true, S("No mods installed.")
+ else
+ return true, table.concat(core.get_modnames(), ", ")
+ end
+ end,
+})
+
+local function handle_give_command(cmd, giver, receiver, stackstring)
+ core.log("action", giver .. " invoked " .. cmd
+ .. ', stackstring="' .. stackstring .. '"')
+ local itemstack = ItemStack(stackstring)
+ if itemstack:is_empty() then
+ return false, S("Cannot give an empty item.")
+ elseif (not itemstack:is_known()) or (itemstack:get_name() == "unknown") then
+ return false, S("Cannot give an unknown item.")
+ -- Forbid giving 'ignore' due to unwanted side effects
+ elseif itemstack:get_name() == "ignore" then
+ return false, S("Giving 'ignore' is not allowed.")
+ end
+ local receiverref = core.get_player_by_name(receiver)
+ if receiverref == nil then
+ 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 = nil
+ elseif leftover:get_count() == itemstack:get_count() then
+ partiality = false
+ else
+ 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
+ return true, msg
+ else
+ 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 = 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, S("Name and ItemString required.")
+ end
+ return handle_give_command("/give", name, toname, itemstring)
+ end,
+})
+
+core.register_chatcommand("giveme", {
+ 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, S("ItemString required.")
+ end
+ return handle_give_command("/giveme", name, name, itemstring)
+ end,
+})
+
+core.register_chatcommand("spawnentity", {
+ 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, pstr = string.match(param, "^([^ ]+) *(.*)$")
+ if not entityname then
+ 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, S("Unable to spawn entity, player is nil.")
+ end
+ if not core.registered_entities[entityname] then
+ return false, S("Cannot spawn an unknown entity.")
+ end
+ local p
+ if pstr == "" then
+ p = player:get_pos()
+ else
+ p = {}
+ p.x, p.y, p.z = string.match(pstr, "^([%d.~-]+)[, ] *([%d.~-]+)[, ] *([%d.~-]+)$")
+ local relpos = player:get_pos()
+ p = core.parse_coordinates(p.x, p.y, p.z, relpos)
+ if not (p and p.x and p.y and p.z) then
+ return false, S("Invalid parameters (@1).", param)
+ end
+ end
+ p.y = p.y + 1
+ local obj = core.add_entity(p, 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 = 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, S("Unable to pulverize, no player.")
+ end
+ local wielded_item = player:get_wielded_item()
+ if wielded_item:is_empty() then
+ 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, S("An item was pulverized.")
+ end,
+})
+
+-- Key = player name
+core.rollback_punch_callbacks = {}
+
+core.register_on_punchnode(function(pos, node, puncher)
+ local name = puncher and puncher:get_player_name()
+ if name and core.rollback_punch_callbacks[name] then
+ core.rollback_punch_callbacks[name](pos, node, puncher)
+ core.rollback_punch_callbacks[name] = nil
+ end
+end)
+
+core.register_chatcommand("rollback_check", {
+ 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, S("Rollback functions are disabled.")
+ end
+ local range, seconds, limit =
+ param:match("(%d+) *(%d*) *(%d*)")
+ range = tonumber(range) or 0
+ seconds = tonumber(seconds) or 86400
+ limit = tonumber(limit) or 5
+ if limit > 100 then
+ 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, 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, S("Rollback functions are disabled."))
+ return
+ end
+ local num_actions = #actions
+ if num_actions == 0 then
+ 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("@1 @2 @3 -> @4 @5 seconds ago.",
+ core.pos_to_string(action.pos),
+ action.actor,
+ action.oldnode.name,
+ action.newnode.name,
+ time - action.time))
+ end
+ end
+
+ return true, S("Punch a node (range=@1, seconds=@2, limit=@3).",
+ range, seconds, limit)
+ end,
+})
+
+core.register_chatcommand("rollback", {
+ 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, 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, 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
+ 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 = S("(log is too long to show)").."\n"
+ else
+ for _, line in pairs(log) do
+ response = response .. line .. "\n"
+ end
+ end
+ 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 = 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, S("This command was disabled by a mod or game.")
+ end,
+})
+
+local function get_time(timeofday)
+ local time = math.floor(timeofday * 1440)
+ local minute = time % 60
+ local hour = (time - minute) / 60
+ return time, hour, minute
+end
+
+core.register_chatcommand("time", {
+ 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, 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, S("You don't have permission to run "
+ .. "this command (missing privilege: @1).", "settime")
+ end
+ local relative, negative, hour, minute = param:match("^(~?)(%-?)(%d+):(%d+)$")
+ if not relative then -- checking the first capture against nil suffices
+ local new_time = core.parse_relative_number(param, core.get_timeofday() * 24000)
+ if not new_time then
+ new_time = tonumber(param) or -1
+ else
+ new_time = new_time % 24000
+ end
+ if new_time ~= new_time or new_time < 0 or new_time > 24000 then
+ return false, S("Invalid time (must be between 0 and 24000).")
+ end
+ core.set_timeofday(new_time / 24000)
+ core.log("action", name .. " sets time to " .. new_time)
+ return true, S("Time of day changed.")
+ end
+ local new_time
+ hour = tonumber(hour)
+ minute = tonumber(minute)
+ if relative == "" then
+ if hour < 0 or hour > 23 then
+ return false, S("Invalid hour (must be between 0 and 23 inclusive).")
+ elseif minute < 0 or minute > 59 then
+ return false, S("Invalid minute (must be between 0 and 59 inclusive).")
+ end
+ new_time = (hour * 60 + minute) / 1440
+ else
+ if minute < 0 or minute > 59 then
+ return false, S("Invalid minute (must be between 0 and 59 inclusive).")
+ end
+ local current_time = core.get_timeofday()
+ if negative == "-" then -- negative time
+ hour, minute = -hour, -minute
+ end
+ new_time = (current_time + (hour * 60 + minute) / 1440) % 1
+ local _
+ _, hour, minute = get_time(new_time)
+ end
+ core.set_timeofday(new_time)
+ core.log("action", ("%s sets time to %d:%02d"):format(name, hour, minute))
+ return true, S("Time of day changed.")
+ end,
+})
+
+core.register_chatcommand("days", {
+ description = S("Show day count since world creation"),
+ func = function(name, param)
+ return true, S("Current day is @1.", core.get_day_count())
+ end
+})
+
+local function parse_shutdown_param(param)
+ local delay, reconnect, message
+ local one, two, three
+ one, two, three = param:match("^(%S+) +(%-r) +(.*)")
+ if one and two and three then
+ -- 3 arguments: delay, reconnect and message
+ return one, two, three
+ end
+ -- 2 arguments
+ one, two = param:match("^(%S+) +(.*)")
+ if one and two then
+ if tonumber(one) then
+ delay = one
+ if two == "-r" then
+ reconnect = two
+ else
+ message = two
+ end
+ elseif one == "-r" then
+ reconnect, message = one, two
+ end
+ return delay, reconnect, message
+ end
+ -- 1 argument
+ one = param:match("(.*)")
+ if tonumber(one) then
+ delay = one
+ elseif one == "-r" then
+ reconnect = one
+ else
+ message = one
+ end
+ return delay, reconnect, message
+end
+
+core.register_chatcommand("shutdown", {
+ params = S("[<delay_in_seconds> | -1] [-r] [<message>]"),
+ description = S("Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)"),
+ privs = {server=true},
+ func = function(name, param)
+ local delay, reconnect, message = parse_shutdown_param(param)
+ local bool_reconnect = reconnect == "-r"
+ if not message then
+ message = ""
+ end
+ delay = tonumber(delay) or 0
+
+ if delay == 0 then
+ core.log("action", name .. " shuts down server")
+ core.chat_send_all("*** "..S("Server shutting down (operator request)."))
+ end
+ core.request_shutdown(message:trim(), bool_reconnect, delay)
+ return true
+ end,
+})
+
+core.register_chatcommand("ban", {
+ 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, S("The ban list is empty.")
+ else
+ return true, S("Ban list: @1", ban_list)
+ end
+ end
+ if core.is_singleplayer() then
+ return false, S("You cannot ban players in singleplayer!")
+ end
+ if not core.get_player_by_name(param) then
+ return false, S("Player is not online.")
+ end
+ if not core.ban_player(param) then
+ return false, S("Failed to ban player.")
+ end
+ local desc = core.get_ban_description(param)
+ core.log("action", name .. " bans " .. desc .. ".")
+ return true, S("Banned @1.", desc)
+ end,
+})
+
+core.register_chatcommand("unban", {
+ 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, S("Failed to unban player/IP.")
+ end
+ core.log("action", name .. " unbans " .. param)
+ return true, S("Unbanned @1.", param)
+ end,
+})
+
+core.register_chatcommand("kick", {
+ 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, 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, S("Kicked @1.", tokick)
+ end,
+})
+
+core.register_chatcommand("clearobjects", {
+ params = S("[full | quick]"),
+ description = S("Clear all objects in world"),
+ privs = {server=true},
+ func = function(name, param)
+ local options = {}
+ if param == "" or param == "quick" then
+ options.mode = "quick"
+ elseif param == "full" then
+ options.mode = "full"
+ else
+ return false, S("Invalid usage, see /help clearobjects.")
+ end
+
+ core.log("action", name .. " clears objects ("
+ .. options.mode .. " mode).")
+ 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("*** "..S("Cleared all objects."))
+ return true
+ end,
+})
+
+core.register_chatcommand("msg", {
+ 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, S("Invalid usage, see /help msg.")
+ end
+ if not core.get_player_by_name(sendto) then
+ 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, S("DM from @1: @2", name, message))
+ return true, S("Message sent.")
+ end,
+})
+
+core.register_chatcommand("last-login", {
+ params = S("[<name>]"),
+ description = S("Get the last login time of a player or yourself"),
+ func = function(name, param)
+ if param == "" then
+ param = name
+ end
+ 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, S("@1's last login time was @2.",
+ param,
+ os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login))
+ end
+ return false, S("@1's last login time is unknown.", param)
+ end,
+})
+
+core.register_chatcommand("clearinv", {
+ 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, 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, S("@1 cleared your inventory.", name))
+ else
+ player = core.get_player_by_name(name)
+ end
+
+ if player then
+ player:get_inventory():set_list("main", {})
+ 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, S("Cleared @1's inventory.", player:get_player_name())
+ else
+ 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, 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, S("Player @1 is not online.", victim)
+ elseif victimref:get_hp() <= 0 then
+ if killer == victim then
+ return false, S("You are already dead.")
+ else
+ return false, S("@1 is already dead.", victim)
+ end
+ end
+ if killer ~= victim then
+ core.log("action", string.format("%s killed %s", killer, victim))
+ end
+ -- Kill victim
+ victimref:set_hp(0)
+ return true, S("@1 has been killed.", victim)
+end
+
+core.register_chatcommand("kill", {
+ 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)
+ end,
+})
diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua
deleted file mode 100644
index 2bd93855b..000000000
--- a/builtin/game/chatcommands.lua
+++ /dev/null
@@ -1,940 +0,0 @@
--- Minetest: builtin/chatcommands.lua
-
---
--- Chat command handler
---
-
-core.chatcommands = {}
-function core.register_chatcommand(cmd, def)
- def = def or {}
- def.params = def.params or ""
- def.description = def.description or ""
- def.privs = def.privs or {}
- def.mod_origin = core.get_current_modname() or "??"
- core.chatcommands[cmd] = def
-end
-
-core.register_on_chat_message(function(name, message)
- local cmd, param = string.match(message, "^/([^ ]+) *(.*)")
- if not param then
- param = ""
- end
- local cmd_def = core.chatcommands[cmd]
- if not cmd_def then
- return false
- 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 success, message = cmd_def.func(name, param)
- if message then
- core.chat_send_player(name, message)
- end
- else
- core.chat_send_player(name, "You don't have permission"
- .. " to run this command (missing privileges: "
- .. table.concat(missing_privs, ", ") .. ")")
- end
- return true -- Handled chat message
-end)
-
-if core.setting_getbool("profiler.load") then
- -- Run after register_chatcommand and its register_on_chat_message
- -- Before any chattcommands that should be profiled
- profiler.init_chatcommand()
-end
-
--- Parses a "range" string in the format of "here (number)" or
--- "(x1, y1, z1) (x2, y2, z2)", returning two position vectors
-local function parse_range_str(player_name, str)
- local p1, p2
- local args = str:split(" ")
-
- 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"
- 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)"
- end
- end
-
- return p1, p2
-end
-
---
--- Chat commands
---
-core.register_chatcommand("me", {
- params = "<action>",
- description = "chat action (eg. /me orders a pizza)",
- privs = {shout=true},
- func = function(name, param)
- core.chat_send_all("* " .. name .. " " .. param)
- end,
-})
-
-core.register_chatcommand("admin", {
- description = "Show the name of the server owner",
- func = function(name)
- local admin = minetest.setting_get("name")
- if admin then
- return true, "The administrator of this server is "..admin.."."
- else
- return false, "There's no administrator named in the config file."
- end
- end,
-})
-
-core.register_chatcommand("help", {
- privs = {},
- params = "[all/privs/<cmd>]",
- description = "Get help for commands or list privileges",
- func = function(name, param)
- local function format_help_line(cmd, def)
- local msg = core.colorize("#00ffff", "/"..cmd)
- if def.params and def.params ~= "" then
- msg = msg .. " " .. def.params
- end
- if def.description and def.description ~= "" then
- msg = msg .. ": " .. def.description
- end
- return msg
- end
- if param == "" then
- local msg = ""
- local cmds = {}
- for cmd, def in pairs(core.chatcommands) do
- if core.check_player_privs(name, def.privs) then
- cmds[#cmds + 1] = cmd
- end
- end
- table.sort(cmds)
- return true, "Available commands: " .. table.concat(cmds, " ") .. "\n"
- .. "Use '/help <cmd>' to get more information,"
- .. " or '/help all' to list everything."
- elseif param == "all" then
- local cmds = {}
- for cmd, def in pairs(core.chatcommands) do
- if core.check_player_privs(name, def.privs) then
- cmds[#cmds + 1] = format_help_line(cmd, def)
- end
- end
- table.sort(cmds)
- return true, "Available commands:\n"..table.concat(cmds, "\n")
- elseif 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")
- else
- local cmd = param
- local def = core.chatcommands[cmd]
- if not def then
- return false, "Command not available: "..cmd
- else
- return true, format_help_line(cmd, def)
- end
- end
- end,
-})
-
-core.register_chatcommand("privs", {
- params = "<name>",
- description = "print out privileges of player",
- func = function(caller, param)
- param = param:trim()
- local name = (param ~= "" and param or caller)
- return true, "Privileges of " .. name .. ": "
- .. core.privs_to_string(
- core.get_player_privs(name), ' ')
- end,
-})
-
-local function handle_grant_command(caller, grantname, grantprivstr)
- local caller_privs = minetest.get_player_privs(caller)
- if not (caller_privs.privs or caller_privs.basic_privs) then
- return false, "Your privileges are insufficient."
- end
-
- if not core.auth_table[grantname] then
- return false, "Player " .. grantname .. " does not exist."
- end
- local grantprivs = core.string_to_privs(grantprivstr)
- if grantprivstr == "all" then
- grantprivs = core.registered_privileges
- end
- local privs = core.get_player_privs(grantname)
- local privs_unknown = ""
- local basic_privs =
- core.string_to_privs(core.setting_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."
- end
- if not core.registered_privileges[priv] then
- privs_unknown = privs_unknown .. "Unknown privilege: " .. priv .. "\n"
- end
- privs[priv] = true
- end
- if privs_unknown ~= "" then
- return false, privs_unknown
- end
- 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, ' '))
- end
- return true, "Privileges of " .. grantname .. ": "
- .. core.privs_to_string(
- core.get_player_privs(grantname), ' ')
-end
-
-core.register_chatcommand("grant", {
- params = "<name> <privilege>|all",
- description = "Give privilege 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)"
- end
- return handle_grant_command(name, grantname, grantprivstr)
- end,
-})
-
-core.register_chatcommand("grantme", {
- params = "<privilege>|all",
- description = "Grant privileges to yourself",
- func = function(name, param)
- if param == "" then
- return false, "Invalid parameters (see /help grantme)"
- end
- return handle_grant_command(name, name, param)
- end,
-})
-
-core.register_chatcommand("revoke", {
- params = "<name> <privilege>|all",
- description = "Remove privilege from player",
- privs = {},
- func = function(name, param)
- if not core.check_player_privs(name, {privs=true}) and
- not core.check_player_privs(name, {basic_privs=true}) then
- return false, "Your privileges are insufficient."
- end
- local revoke_name, revoke_priv_str = string.match(param, "([^ ]+) (.+)")
- if not revoke_name or not revoke_priv_str then
- return false, "Invalid parameters (see /help revoke)"
- elseif not core.auth_table[revoke_name] then
- return false, "Player " .. revoke_name .. " does not exist."
- end
- local revoke_privs = core.string_to_privs(revoke_priv_str)
- local privs = core.get_player_privs(revoke_name)
- local basic_privs =
- core.string_to_privs(core.setting_get("basic_privs") or "interact,shout")
- for priv, _ in pairs(revoke_privs) do
- if not basic_privs[priv] and
- not core.check_player_privs(name, {privs=true}) then
- return false, "Your privileges are insufficient."
- end
- end
- if revoke_priv_str == "all" then
- privs = {}
- else
- for priv, _ in pairs(revoke_privs) do
- privs[priv] = nil
- end
- end
- core.set_player_privs(revoke_name, privs)
- core.log("action", name..' revoked ('
- ..core.privs_to_string(revoke_privs, ', ')
- ..') privileges from '..revoke_name)
- if revoke_name ~= name then
- core.chat_send_player(revoke_name, name
- .. " revoked privileges from you: "
- .. core.privs_to_string(revoke_privs, ' '))
- end
- return true, "Privileges of " .. revoke_name .. ": "
- .. core.privs_to_string(
- core.get_player_privs(revoke_name), ' ')
- end,
-})
-
-core.register_chatcommand("setpassword", {
- params = "<name> <password>",
- description = "set given password",
- privs = {password=true},
- func = function(name, param)
- local toname, raw_password = string.match(param, "^([^ ]+) +(.+)$")
- if not toname then
- toname = param:match("^([^ ]+) *$")
- raw_password = nil
- end
- if not toname then
- return false, "Name field required"
- end
- local act_str_past = "?"
- local act_str_pres = "?"
- if not raw_password then
- core.set_player_password(toname, "")
- act_str_past = "cleared"
- act_str_pres = "clears"
- else
- core.set_player_password(toname,
- core.get_password_hash(toname,
- raw_password))
- act_str_past = "set"
- act_str_pres = "sets"
- end
- if toname ~= name then
- core.chat_send_player(toname, "Your password was "
- .. act_str_past .. " by " .. name)
- end
-
- core.log("action", name .. " " .. act_str_pres
- .. " password of " .. toname .. ".")
-
- return true, "Password of player \"" .. toname .. "\" " .. act_str_past
- end,
-})
-
-core.register_chatcommand("clearpassword", {
- params = "<name>",
- description = "set empty password",
- privs = {password=true},
- func = function(name, param)
- local toname = param
- if toname == "" then
- return false, "Name field required"
- end
- core.set_player_password(toname, '')
-
- core.log("action", name .. " clears password of " .. toname .. ".")
-
- return true, "Password of player \"" .. toname .. "\" cleared"
- end,
-})
-
-core.register_chatcommand("auth_reload", {
- params = "",
- description = "reload authentication data",
- privs = {server=true},
- func = function(name, param)
- local done = core.auth_reload()
- return done, (done and "Done." or "Failed.")
- end,
-})
-
-core.register_chatcommand("teleport", {
- params = "<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>",
- description = "teleport to given position",
- 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
- end
- return pos, false
- end
-
- local teleportee = nil
- 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)
- if p.x and p.y and p.z then
- local lm = tonumber(minetest.setting_get("map_generation_limit") or 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
- teleportee = core.get_player_by_name(name)
- if teleportee then
- teleportee:setpos(p)
- return true, "Teleporting to "..core.pos_to_string(p)
- end
- end
-
- local teleportee = nil
- local p = nil
- local target_name = nil
- target_name = param:match("^([^ ]+)$")
- teleportee = core.get_player_by_name(name)
- if target_name then
- local target = core.get_player_by_name(target_name)
- if target then
- p = target:getpos()
- end
- end
- if teleportee and p then
- p = find_free_position_near(p)
- teleportee:setpos(p)
- return true, "Teleporting to " .. target_name
- .. " at "..core.pos_to_string(p)
- 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 teleportee = nil
- local p = {}
- local teleportee_name = nil
- 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
- teleportee:setpos(p)
- return true, "Teleporting " .. teleportee_name
- .. " to " .. core.pos_to_string(p)
- end
-
- local teleportee = nil
- local p = nil
- local teleportee_name = nil
- local target_name = 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:getpos()
- end
- end
- if teleportee and p then
- p = find_free_position_near(p)
- teleportee:setpos(p)
- return true, "Teleporting " .. teleportee_name
- .. " to " .. target_name
- .. " at " .. core.pos_to_string(p)
- end
-
- return false, 'Invalid parameters ("' .. param
- .. '") or player not found (see /help teleport)'
- end,
-})
-
-core.register_chatcommand("set", {
- params = "[-n] <name> <value> | <name>",
- description = "set or read server configuration setting",
- privs = {server=true},
- func = function(name, param)
- local arg, setname, setvalue = string.match(param, "(-[n]) ([^ ]+) (.+)")
- if arg and arg == "-n" and setname and setvalue then
- core.setting_set(setname, setvalue)
- return true, setname .. " = " .. setvalue
- end
- local setname, setvalue = string.match(param, "([^ ]+) (.+)")
- if setname and setvalue then
- if not core.setting_get(setname) then
- return false, "Failed. Use '/set -n <name> <value>' to create a new setting."
- end
- core.setting_set(setname, setvalue)
- return true, setname .. " = " .. setvalue
- end
- local setname = string.match(param, "([^ ]+)")
- if setname then
- local setvalue = core.setting_get(setname)
- if not setvalue then
- setvalue = "<not set>"
- end
- return true, setname .. " = " .. setvalue
- end
- return false, "Invalid parameters (see /help set)."
- end,
-})
-
-local function emergeblocks_callback(pos, action, num_calls_remaining, ctx)
- if ctx.total_blocks == 0 then
- ctx.total_blocks = num_calls_remaining + 1
- ctx.current_blocks = 0
- end
- ctx.current_blocks = ctx.current_blocks + 1
-
- 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))
- 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%%)",
- ctx.current_blocks, ctx.total_blocks,
- (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 = "starts loading (or generating, if inexistent) map blocks "
- .. "contained in area pos1 to pos2",
- privs = {server=true},
- func = function(name, param)
- local p1, p2 = parse_range_str(name, param)
- if p1 == false then
- return false, p2
- end
-
- local context = {
- current_blocks = 0,
- total_blocks = 0,
- start_time = os.clock(),
- requestor_name = name
- }
-
- 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)
- end,
-})
-
-core.register_chatcommand("deleteblocks", {
- params = "(here [radius]) | (<pos1> <pos2>)",
- description = "delete map blocks contained in area pos1 to pos2",
- privs = {server=true},
- func = function(name, param)
- local p1, p2 = parse_range_str(name, param)
- if p1 == false then
- return false, p2
- 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)
- else
- return false, "Failed to clear one or more blocks in area"
- end
- end,
-})
-
-core.register_chatcommand("mods", {
- params = "",
- description = "List mods installed on the server",
- privs = {},
- func = function(name, param)
- return true, table.concat(core.get_modnames(), ", ")
- end,
-})
-
-local function handle_give_command(cmd, giver, receiver, stackstring)
- core.log("action", giver .. " invoked " .. cmd
- .. ', stackstring="' .. stackstring .. '"')
- local itemstack = ItemStack(stackstring)
- if itemstack:is_empty() then
- return false, "Cannot give an empty item"
- elseif not itemstack:is_known() then
- return false, "Cannot give an unknown item"
- end
- local receiverref = core.get_player_by_name(receiver)
- if receiverref == nil then
- return false, receiver .. " is not a known player"
- end
- local leftover = receiverref:get_inventory():add_item("main", itemstack)
- local partiality
- if leftover:is_empty() then
- partiality = ""
- elseif leftover:get_count() == itemstack:get_count() then
- partiality = "could not be "
- else
- partiality = "partially "
- 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()
- if giver == receiver then
- return true, ("%q %sadded to inventory.")
- :format(stackstring, partiality)
- else
- core.chat_send_player(receiver, ("%q %sadded to inventory.")
- :format(stackstring, partiality))
- return true, ("%q %sadded to %s's inventory.")
- :format(stackstring, partiality, receiver)
- end
-end
-
-core.register_chatcommand("give", {
- params = "<name> <ItemString>",
- description = "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"
- end
- return handle_give_command("/give", name, toname, itemstring)
- end,
-})
-
-core.register_chatcommand("giveme", {
- params = "<ItemString>",
- description = "give item to yourself",
- privs = {give=true},
- func = function(name, param)
- local itemstring = string.match(param, "(.+)$")
- if not itemstring then
- return false, "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",
- privs = {give=true, interact=true},
- func = function(name, param)
- local entityname, p = string.match(param, "^([^ ]+) *(.*)$")
- if not entityname then
- return false, "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"
- end
- if p == "" then
- p = player:getpos()
- else
- p = core.string_to_pos(p)
- if p == nil then
- return false, "Invalid parameters ('" .. param .. "')"
- end
- end
- p.y = p.y + 1
- core.add_entity(p, entityname)
- return true, ("%q spawned."):format(entityname)
- end,
-})
-
-core.register_chatcommand("pulverize", {
- params = "",
- description = "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."
- end
- if player:get_wielded_item():is_empty() then
- return false, "Unable to pulverize, no item in hand."
- end
- player:set_wielded_item(nil)
- return true, "An item was pulverized."
- end,
-})
-
--- Key = player name
-core.rollback_punch_callbacks = {}
-
-core.register_on_punchnode(function(pos, node, puncher)
- local name = puncher:get_player_name()
- if core.rollback_punch_callbacks[name] then
- core.rollback_punch_callbacks[name](pos, node, puncher)
- core.rollback_punch_callbacks[name] = nil
- end
-end)
-
-core.register_chatcommand("rollback_check", {
- params = "[<range>] [<seconds>] [limit]",
- description = "Check who has last touched a node or near it,"
- .. " max. <seconds> ago (default range=0,"
- .. " seconds=86400=24h, limit=5)",
- privs = {rollback=true},
- func = function(name, param)
- if not core.setting_getbool("enable_rollback_recording") then
- return false, "Rollback functions are disabled."
- end
- local range, seconds, limit =
- param:match("(%d+) *(%d*) *(%d*)")
- range = tonumber(range) or 0
- seconds = tonumber(seconds) or 86400
- limit = tonumber(limit) or 5
- if limit > 100 then
- return false, "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) .. "...")
- local actions = core.rollback_get_node_actions(pos, range, seconds, limit)
- if not actions then
- core.chat_send_player(name, "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")
- 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(
- core.pos_to_string(action.pos),
- action.actor,
- action.oldnode.name,
- action.newnode.name,
- time - action.time))
- end
- end
-
- return true, "Punch a node (range=" .. range .. ", seconds="
- .. seconds .. "s, limit=" .. limit .. ")"
- end,
-})
-
-core.register_chatcommand("rollback", {
- params = "<player name> [<seconds>] | :<actor> [<seconds>]",
- description = "revert actions of a player; default for <seconds> is 60",
- privs = {rollback=true},
- func = function(name, param)
- if not core.setting_getbool("enable_rollback_recording") then
- return false, "Rollback functions are disabled."
- end
- local target_name, seconds = string.match(param, ":([^ ]+) *(%d*)")
- if not target_name then
- local player_name = nil
- player_name, seconds = string.match(param, "([^ ]+) *(%d*)")
- if not player_name then
- return false, "Invalid parameters. See /help rollback"
- .. " and /help rollback_check."
- end
- target_name = "player:"..player_name
- end
- seconds = tonumber(seconds) or 60
- core.chat_send_player(name, "Reverting actions of "
- .. target_name .. " since "
- .. seconds .. " seconds.")
- 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"
- else
- for _, line in pairs(log) do
- response = response .. line .. "\n"
- end
- end
- response = response .. "Reverting actions "
- .. (success and "succeeded." or "FAILED.")
- return success, response
- end,
-})
-
-core.register_chatcommand("status", {
- description = "Print server status",
- func = function(name, param)
- return true, core.get_server_status()
- end,
-})
-
-core.register_chatcommand("time", {
- params = "<0..23>:<0..59> | <0..24000>",
- description = "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)
- 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)."
- 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."
- 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."
- 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)."
- elseif minute < 0 or minute > 59 then
- return false, "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."
- end,
-})
-
-core.register_chatcommand("days", {
- description = "Display day count",
- func = function(name, param)
- return true, "Current day is " .. core.get_day_count()
- end
-})
-
-core.register_chatcommand("shutdown", {
- description = "shutdown server",
- privs = {server=true},
- func = function(name, param)
- core.log("action", name .. " shuts down server")
- core.request_shutdown()
- core.chat_send_all("*** Server shutting down (operator request).")
- end,
-})
-
-core.register_chatcommand("ban", {
- params = "<name>",
- description = "Ban IP of player",
- privs = {ban=true},
- func = function(name, param)
- if param == "" then
- return true, "Ban list: " .. core.get_ban_list()
- end
- if not core.get_player_by_name(param) then
- return false, "No such player."
- end
- if not core.ban_player(param) then
- return false, "Failed to ban player."
- end
- local desc = core.get_ban_description(param)
- core.log("action", name .. " bans " .. desc .. ".")
- return true, "Banned " .. desc .. "."
- end,
-})
-
-core.register_chatcommand("unban", {
- params = "<name/ip>",
- description = "remove IP ban",
- privs = {ban=true},
- func = function(name, param)
- if not core.unban_player_or_ip(param) then
- return false, "Failed to unban player/IP."
- end
- core.log("action", name .. " unbans " .. param)
- return true, "Unbanned " .. param
- end,
-})
-
-core.register_chatcommand("kick", {
- params = "<name> [reason]",
- description = "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
- 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
- end,
-})
-
-core.register_chatcommand("clearobjects", {
- params = "[full|quick]",
- description = "clear all objects in world",
- privs = {server=true},
- func = function(name, param)
- local options = {}
- if param == "" or param == "full" then
- options.mode = "full"
- elseif param == "quick" then
- options.mode = "quick"
- else
- return false, "Invalid usage, see /help clearobjects."
- end
-
- core.log("action", name .. " clears all objects ("
- .. options.mode .. " mode).")
- core.chat_send_all("Clearing all objects. This may take long."
- .. " You may experience a timeout. (by "
- .. name .. ")")
- core.clear_objects(options)
- core.log("action", "Object clearing done.")
- core.chat_send_all("*** Cleared all objects.")
- end,
-})
-
-core.register_chatcommand("msg", {
- params = "<name> <message>",
- description = "Send a private message",
- 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."
- end
- if not core.get_player_by_name(sendto) then
- return false, "The player " .. sendto
- .. " is not online."
- end
- core.log("action", "PM from " .. name .. " to " .. sendto
- .. ": " .. message)
- core.chat_send_player(sendto, "PM from " .. name .. ": "
- .. message)
- return true, "Message sent."
- end,
-})
-
-core.register_chatcommand("last-login", {
- params = "[name]",
- description = "Get the last login time of a player",
- func = function(name, param)
- if param == "" then
- param = name
- end
- local pauth = core.get_auth_handler().get_auth(param)
- if pauth and pauth.last_login then
- -- Time in UTC, ISO 8601 format
- return true, "Last login time was " ..
- os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login)
- end
- return false, "Last login time is unknown"
- end,
-})
diff --git a/builtin/game/constants.lua b/builtin/game/constants.lua
index 50c515b24..54eeea50f 100644
--- a/builtin/game/constants.lua
+++ b/builtin/game/constants.lua
@@ -21,6 +21,10 @@ core.EMERGE_GENERATED = 4
-- constants.h
-- Size of mapblocks in nodes
core.MAP_BLOCKSIZE = 16
+-- Default maximal HP of a player
+core.PLAYER_MAX_HP_DEFAULT = 20
+-- Default maximal breath of a player
+core.PLAYER_MAX_BREATH_DEFAULT = 10
-- light.h
-- Maximum value for node 'light_source' parameter
diff --git a/builtin/game/deprecated.lua b/builtin/game/deprecated.lua
index cd1cf5e2d..c5c7848f5 100644
--- a/builtin/game/deprecated.lua
+++ b/builtin/game/deprecated.lua
@@ -1,29 +1,6 @@
-- Minetest: builtin/deprecated.lua
--
--- Default material types
---
-local function digprop_err()
- core.log("deprecated", "The core.digprop_* functions are obsolete and need to be replaced by item groups.")
-end
-
-core.digprop_constanttime = digprop_err
-core.digprop_stonelike = digprop_err
-core.digprop_dirtlike = digprop_err
-core.digprop_gravellike = digprop_err
-core.digprop_woodlike = digprop_err
-core.digprop_leaveslike = digprop_err
-core.digprop_glasslike = digprop_err
-
-function core.node_metadata_inventory_move_allow_all()
- core.log("deprecated", "core.node_metadata_inventory_move_allow_all is obsolete and does nothing.")
-end
-
-function core.add_to_creative_inventory(itemstring)
- core.log("deprecated", "core.add_to_creative_inventory: This function is deprecated and does nothing.")
-end
-
---
-- EnvRef
--
core.env = {}
@@ -49,3 +26,40 @@ setmetatable(core.env, {
function core.rollback_get_last_node_actor(pos, range, seconds)
return core.rollback_get_node_actions(pos, range, seconds, 1)[1]
end
+
+--
+-- core.setting_*
+--
+
+local settings = core.settings
+
+local function setting_proxy(name)
+ return function(...)
+ core.log("deprecated", "WARNING: minetest.setting_* "..
+ "functions are deprecated. "..
+ "Use methods on the minetest.settings object.")
+ return settings[name](settings, ...)
+ end
+end
+
+core.setting_set = setting_proxy("set")
+core.setting_get = setting_proxy("get")
+core.setting_setbool = setting_proxy("set_bool")
+core.setting_getbool = setting_proxy("get_bool")
+core.setting_save = setting_proxy("write")
+
+--
+-- core.register_on_auth_fail
+--
+
+function core.register_on_auth_fail(func)
+ core.log("deprecated", "core.register_on_auth_fail " ..
+ "is deprecated and should be replaced by " ..
+ "core.register_on_authplayer instead.")
+
+ core.register_on_authplayer(function (player_name, ip, is_success)
+ if not is_success then
+ func(player_name, ip)
+ end
+ end)
+end
diff --git a/builtin/game/detached_inventory.lua b/builtin/game/detached_inventory.lua
index b5d106b04..2e27168a1 100644
--- a/builtin/game/detached_inventory.lua
+++ b/builtin/game/detached_inventory.lua
@@ -2,7 +2,7 @@
core.detached_inventories = {}
-function core.create_detached_inventory(name, callbacks)
+function core.create_detached_inventory(name, callbacks, player_name)
local stuff = {}
stuff.name = name
if callbacks then
@@ -15,6 +15,10 @@ function core.create_detached_inventory(name, callbacks)
end
stuff.mod_origin = core.get_current_modname() or "??"
core.detached_inventories[name] = stuff
- return core.create_detached_inventory_raw(name)
+ return core.create_detached_inventory_raw(name, player_name)
end
+function core.remove_detached_inventory(name)
+ core.detached_inventories[name] = nil
+ return core.remove_detached_inventory_raw(name)
+end
diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua
index 1932b170a..d5727f2a7 100644
--- a/builtin/game/falling.lua
+++ b/builtin/game/falling.lua
@@ -1,123 +1,453 @@
-- Minetest: builtin/item.lua
+local builtin_shared = ...
+local SCALE = 0.667
+
+local facedir_to_euler = {
+ {y = 0, x = 0, z = 0},
+ {y = -math.pi/2, x = 0, z = 0},
+ {y = math.pi, x = 0, z = 0},
+ {y = math.pi/2, x = 0, z = 0},
+ {y = math.pi/2, x = -math.pi/2, z = math.pi/2},
+ {y = math.pi/2, x = math.pi, z = math.pi/2},
+ {y = math.pi/2, x = math.pi/2, z = math.pi/2},
+ {y = math.pi/2, x = 0, z = math.pi/2},
+ {y = -math.pi/2, x = math.pi/2, z = math.pi/2},
+ {y = -math.pi/2, x = 0, z = math.pi/2},
+ {y = -math.pi/2, x = -math.pi/2, z = math.pi/2},
+ {y = -math.pi/2, x = math.pi, z = math.pi/2},
+ {y = 0, x = 0, z = math.pi/2},
+ {y = 0, x = -math.pi/2, z = math.pi/2},
+ {y = 0, x = math.pi, z = math.pi/2},
+ {y = 0, x = math.pi/2, z = math.pi/2},
+ {y = math.pi, x = math.pi, z = math.pi/2},
+ {y = math.pi, x = math.pi/2, z = math.pi/2},
+ {y = math.pi, x = 0, z = math.pi/2},
+ {y = math.pi, x = -math.pi/2, z = math.pi/2},
+ {y = math.pi, x = math.pi, z = 0},
+ {y = -math.pi/2, x = math.pi, z = 0},
+ {y = 0, x = math.pi, z = 0},
+ {y = math.pi/2, x = math.pi, z = 0}
+}
+
+local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81
+
--
-- Falling stuff
--
core.register_entity(":__builtin:falling_node", {
initial_properties = {
- visual = "wielditem",
- visual_size = {x = 0.667, y = 0.667},
+ visual = "item",
+ visual_size = vector.new(SCALE, SCALE, SCALE),
textures = {},
physical = true,
is_visible = false,
- collide_with_objects = false,
+ collide_with_objects = true,
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
node = {},
+ meta = {},
+ floats = false,
- set_node = function(self, node)
+ set_node = function(self, node, meta)
+ node.param2 = node.param2 or 0
self.node = node
- self.object:set_properties({
- is_visible = true,
- textures = {node.name},
- })
+ meta = meta or {}
+ if type(meta.to_table) == "function" then
+ meta = meta:to_table()
+ end
+ for _, list in pairs(meta.inventory or {}) do
+ for i, stack in pairs(list) do
+ if type(stack) == "userdata" then
+ list[i] = stack:to_string()
+ end
+ end
+ end
+ local def = core.registered_nodes[node.name]
+ if not def then
+ -- Don't allow unknown nodes to fall
+ core.log("info",
+ "Unknown falling node removed at "..
+ core.pos_to_string(self.object:get_pos()))
+ self.object:remove()
+ return
+ end
+ self.meta = meta
+
+ -- Cache whether we're supposed to float on water
+ self.floats = core.get_item_group(node.name, "float") ~= 0
+
+ -- Set entity visuals
+ if def.drawtype == "torchlike" or def.drawtype == "signlike" then
+ local textures
+ if def.tiles and def.tiles[1] then
+ local tile = def.tiles[1]
+ if type(tile) == "table" then
+ tile = tile.name
+ end
+ if def.drawtype == "torchlike" then
+ textures = { "("..tile..")^[transformFX", tile }
+ else
+ textures = { tile, "("..tile..")^[transformFX" }
+ end
+ end
+ local vsize
+ if def.visual_scale then
+ local s = def.visual_scale
+ vsize = vector.new(s, s, s)
+ end
+ self.object:set_properties({
+ is_visible = true,
+ visual = "upright_sprite",
+ visual_size = vsize,
+ textures = textures,
+ glow = def.light_source,
+ })
+ elseif def.drawtype ~= "airlike" then
+ local itemstring = node.name
+ if core.is_colored_paramtype(def.paramtype2) then
+ itemstring = core.itemstring_with_palette(itemstring, node.param2)
+ end
+ -- FIXME: solution needed for paramtype2 == "leveled"
+ -- Calculate size of falling node
+ local s = {}
+ s.x = (def.visual_scale or 1) * SCALE
+ s.y = s.x
+ s.z = s.x
+ -- Compensate for wield_scale
+ if def.wield_scale then
+ s.x = s.x / def.wield_scale.x
+ s.y = s.y / def.wield_scale.y
+ s.z = s.z / def.wield_scale.z
+ end
+ self.object:set_properties({
+ is_visible = true,
+ wield_item = itemstring,
+ visual_size = s,
+ glow = def.light_source,
+ })
+ end
+
+ -- Set collision box (certain nodeboxes only for now)
+ local nb_types = {fixed=true, leveled=true, connected=true}
+ if def.drawtype == "nodebox" and def.node_box and
+ nb_types[def.node_box.type] and def.node_box.fixed then
+ local box = table.copy(def.node_box.fixed)
+ if type(box[1]) == "table" then
+ box = #box == 1 and box[1] or nil -- We can only use a single box
+ end
+ if box then
+ if def.paramtype2 == "leveled" and (self.node.level or 0) > 0 then
+ box[5] = -0.5 + self.node.level / 64
+ end
+ self.object:set_properties({
+ collisionbox = box
+ })
+ end
+ end
+
+ -- Rotate entity
+ if def.drawtype == "torchlike" then
+ self.object:set_yaw(math.pi*0.25)
+ elseif ((node.param2 ~= 0 or def.drawtype == "nodebox" or def.drawtype == "mesh")
+ and (def.wield_image == "" or def.wield_image == nil))
+ or def.drawtype == "signlike"
+ or def.drawtype == "mesh"
+ or def.drawtype == "normal"
+ or def.drawtype == "nodebox" then
+ if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then
+ local fdir = node.param2 % 32 % 24
+ -- Get rotation from a precalculated lookup table
+ local euler = facedir_to_euler[fdir + 1]
+ self.object:set_rotation(euler)
+ elseif (def.drawtype ~= "plantlike" and def.drawtype ~= "plantlike_rooted" and
+ (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted" or def.drawtype == "signlike")) then
+ local rot = node.param2 % 8
+ if (def.drawtype == "signlike" and def.paramtype2 ~= "wallmounted" and def.paramtype2 ~= "colorwallmounted") then
+ -- Change rotation to "floor" by default for non-wallmounted paramtype2
+ rot = 1
+ end
+ local pitch, yaw, roll = 0, 0, 0
+ if def.drawtype == "nodebox" or def.drawtype == "mesh" then
+ if rot == 0 then
+ pitch, yaw = math.pi/2, 0
+ elseif rot == 1 then
+ pitch, yaw = -math.pi/2, math.pi
+ elseif rot == 2 then
+ pitch, yaw = 0, math.pi/2
+ elseif rot == 3 then
+ pitch, yaw = 0, -math.pi/2
+ elseif rot == 4 then
+ pitch, yaw = 0, math.pi
+ end
+ else
+ if rot == 1 then
+ pitch, yaw = math.pi, math.pi
+ elseif rot == 2 then
+ pitch, yaw = math.pi/2, math.pi/2
+ elseif rot == 3 then
+ pitch, yaw = math.pi/2, -math.pi/2
+ elseif rot == 4 then
+ pitch, yaw = math.pi/2, math.pi
+ elseif rot == 5 then
+ pitch, yaw = math.pi/2, 0
+ end
+ end
+ if def.drawtype == "signlike" then
+ pitch = pitch - math.pi/2
+ if rot == 0 then
+ yaw = yaw + math.pi/2
+ elseif rot == 1 then
+ yaw = yaw - math.pi/2
+ end
+ elseif def.drawtype == "mesh" or def.drawtype == "normal" or def.drawtype == "nodebox" then
+ if rot >= 0 and rot <= 1 then
+ roll = roll + math.pi
+ else
+ yaw = yaw + math.pi
+ end
+ end
+ self.object:set_rotation({x=pitch, y=yaw, z=roll})
+ elseif (def.drawtype == "mesh" and def.paramtype2 == "degrotate") then
+ local p2 = (node.param2 - (def.place_param2 or 0)) % 240
+ local yaw = (p2 / 240) * (math.pi * 2)
+ self.object:set_yaw(yaw)
+ elseif (def.drawtype == "mesh" and def.paramtype2 == "colordegrotate") then
+ local p2 = (node.param2 % 32 - (def.place_param2 or 0) % 32) % 24
+ local yaw = (p2 / 24) * (math.pi * 2)
+ self.object:set_yaw(yaw)
+ end
+ end
end,
get_staticdata = function(self)
- return core.serialize(self.node)
+ local ds = {
+ node = self.node,
+ meta = self.meta,
+ }
+ return core.serialize(ds)
end,
on_activate = function(self, staticdata)
self.object:set_armor_groups({immortal = 1})
-
- local node = core.deserialize(staticdata)
- if node then
- self:set_node(node)
+ self.object:set_acceleration(vector.new(0, -gravity, 0))
+
+ local ds = core.deserialize(staticdata)
+ if ds and ds.node then
+ self:set_node(ds.node, ds.meta)
+ elseif ds then
+ self:set_node(ds)
elseif staticdata ~= "" then
self:set_node({name = staticdata})
end
end,
- on_step = function(self, dtime)
- -- Set gravity
- local acceleration = self.object:getacceleration()
- if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
- self.object:setacceleration({x = 0, y = -10, z = 0})
+ try_place = function(self, bcp, bcn)
+ local bcd = core.registered_nodes[bcn.name]
+ -- Add levels if dropped on same leveled node
+ if bcd and bcd.paramtype2 == "leveled" and
+ bcn.name == self.node.name then
+ local addlevel = self.node.level
+ if (addlevel or 0) <= 0 then
+ addlevel = bcd.leveled
+ end
+ if core.add_node_level(bcp, addlevel) < addlevel then
+ return true
+ elseif bcd.buildable_to then
+ -- Node level has already reached max, don't place anything
+ return true
+ end
end
- -- Turn to actual node when colliding with ground, or continue to move
- local pos = self.object:getpos()
- -- Position of bottom center point
- local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z}
- -- Avoid bugs caused by an unloaded node below
- local bcn = core.get_node_or_nil(bcp)
- local bcd = bcn and core.registered_nodes[bcn.name]
- if bcn and
- (not bcd or bcd.walkable or
- (core.get_item_group(self.node.name, "float") ~= 0 and
- bcd.liquidtype ~= "none")) then
- if bcd and bcd.leveled and
- bcn.name == self.node.name then
- local addlevel = self.node.level
- if not addlevel or addlevel <= 0 then
- addlevel = bcd.leveled
+
+ -- Decide if we're replacing the node or placing on top
+ local np = vector.copy(bcp)
+ if bcd and bcd.buildable_to and
+ (not self.floats or bcd.liquidtype == "none") then
+ core.remove_node(bcp)
+ else
+ np.y = np.y + 1
+ end
+
+ -- Check what's here
+ local n2 = core.get_node(np)
+ local nd = core.registered_nodes[n2.name]
+ -- If it's not air or liquid, remove node and replace it with
+ -- it's drops
+ if n2.name ~= "air" and (not nd or nd.liquidtype == "none") then
+ if nd and nd.buildable_to == false then
+ nd.on_dig(np, n2, nil)
+ -- If it's still there, it might be protected
+ if core.get_node(np).name == n2.name then
+ return false
end
- if core.add_node_level(bcp, addlevel) == 0 then
+ else
+ core.remove_node(np)
+ end
+ end
+
+ -- Create node
+ local def = core.registered_nodes[self.node.name]
+ if def then
+ core.add_node(np, self.node)
+ if self.meta then
+ core.get_meta(np):from_table(self.meta)
+ end
+ if def.sounds and def.sounds.place then
+ core.sound_play(def.sounds.place, {pos = np}, true)
+ end
+ end
+ core.check_for_falling(np)
+ return true
+ end,
+
+ on_step = function(self, dtime, moveresult)
+ -- Fallback code since collision detection can't tell us
+ -- about liquids (which do not collide)
+ if self.floats then
+ local pos = self.object:get_pos()
+
+ local bcp = pos:offset(0, -0.7, 0):round()
+ local bcn = core.get_node(bcp)
+
+ local bcd = core.registered_nodes[bcn.name]
+ if bcd and bcd.liquidtype ~= "none" then
+ if self:try_place(bcp, bcn) then
self.object:remove()
return
end
- elseif bcd and bcd.buildable_to and
- (core.get_item_group(self.node.name, "float") == 0 or
- bcd.liquidtype == "none") then
- core.remove_node(bcp)
- return
end
- local np = {x = bcp.x, y = bcp.y + 1, z = bcp.z}
- -- Check what's here
- local n2 = core.get_node(np)
- local nd = core.registered_nodes[n2.name]
- -- If it's not air or liquid, remove node and replace it with
- -- it's drops
- if n2.name ~= "air" and (not nd or nd.liquidtype == "none") then
- core.remove_node(np)
- if nd.buildable_to == false then
- -- Add dropped items
- local drops = core.get_node_drops(n2.name, "")
- for _, dropped_item in pairs(drops) do
- core.add_item(np, dropped_item)
+ end
+
+ assert(moveresult)
+ if not moveresult.collides then
+ return -- Nothing to do :)
+ end
+
+ local bcp, bcn
+ local player_collision
+ if moveresult.touching_ground then
+ for _, info in ipairs(moveresult.collisions) do
+ if info.type == "object" then
+ if info.axis == "y" and info.object:is_player() then
+ player_collision = info
end
- end
- -- Run script hook
- for _, callback in pairs(core.registered_on_dignodes) do
- callback(np, n2)
+ elseif info.axis == "y" then
+ bcp = info.node_pos
+ bcn = core.get_node(bcp)
+ break
end
end
- -- Create node and remove entity
- if core.registered_nodes[self.node.name] then
- core.add_node(np, self.node)
+ end
+
+ if not bcp then
+ -- We're colliding with something, but not the ground. Irrelevant to us.
+ if player_collision then
+ -- Continue falling through players by moving a little into
+ -- their collision box
+ -- TODO: this hack could be avoided in the future if objects
+ -- could choose who to collide with
+ local vel = self.object:get_velocity()
+ self.object:set_velocity(vector.new(
+ vel.x,
+ player_collision.old_velocity.y,
+ vel.z
+ ))
+ self.object:set_pos(self.object:get_pos():offset(0, -0.5, 0))
end
+ return
+ elseif bcn.name == "ignore" then
+ -- Delete on contact with ignore at world edges
self.object:remove()
- nodeupdate(np)
return
end
- local vel = self.object:getvelocity()
- if vector.equals(vel, {x = 0, y = 0, z = 0}) then
- local npos = self.object:getpos()
- self.object:setpos(vector.round(npos))
+
+ local failure = false
+
+ local pos = self.object:get_pos()
+ local distance = vector.apply(vector.subtract(pos, bcp), math.abs)
+ if distance.x >= 1 or distance.z >= 1 then
+ -- We're colliding with some part of a node that's sticking out
+ -- Since we don't want to visually teleport, drop as item
+ failure = true
+ elseif distance.y >= 2 then
+ -- Doors consist of a hidden top node and a bottom node that is
+ -- the actual door. Despite the top node being solid, the moveresult
+ -- almost always indicates collision with the bottom node.
+ -- Compensate for this by checking the top node
+ bcp.y = bcp.y + 1
+ bcn = core.get_node(bcp)
+ local def = core.registered_nodes[bcn.name]
+ if not (def and def.walkable) then
+ failure = true -- This is unexpected, fail
+ end
+ end
+
+ -- Try to actually place ourselves
+ if not failure then
+ failure = not self:try_place(bcp, bcn)
end
+
+ if failure then
+ local drops = core.get_node_drops(self.node, "")
+ for _, item in pairs(drops) do
+ core.add_item(pos, item)
+ end
+ end
+ self.object:remove()
end
})
-function spawn_falling_node(p, node)
- local obj = core.add_entity(p, "__builtin:falling_node")
- obj:get_luaentity():set_node(node)
+local function convert_to_falling_node(pos, node)
+ local obj = core.add_entity(pos, "__builtin:falling_node")
+ if not obj then
+ return false
+ end
+ -- remember node level, the entities' set_node() uses this
+ node.level = core.get_node_level(pos)
+ local meta = core.get_meta(pos)
+ local metatable = meta and meta:to_table() or {}
+
+ local def = core.registered_nodes[node.name]
+ if def and def.sounds and def.sounds.fall then
+ core.sound_play(def.sounds.fall, {pos = pos}, true)
+ end
+
+ obj:get_luaentity():set_node(node, metatable)
+ core.remove_node(pos)
+ return true, obj
+end
+
+function core.spawn_falling_node(pos)
+ local node = core.get_node(pos)
+ if node.name == "air" or node.name == "ignore" then
+ return false
+ end
+ return convert_to_falling_node(pos, node)
end
-function drop_attached_node(p)
- local nn = core.get_node(p).name
+local function drop_attached_node(p)
+ local n = core.get_node(p)
+ local drops = core.get_node_drops(n, "")
+ local def = core.registered_items[n.name]
+ if def and def.preserve_metadata then
+ local oldmeta = core.get_meta(p):to_table().fields
+ -- Copy pos and node because the callback can modify them.
+ local pos_copy = vector.copy(p)
+ local node_copy = {name=n.name, param1=n.param1, param2=n.param2}
+ local drop_stacks = {}
+ for k, v in pairs(drops) do
+ drop_stacks[k] = ItemStack(v)
+ end
+ drops = drop_stacks
+ def.preserve_metadata(pos_copy, node_copy, oldmeta, drops)
+ end
+ if def and def.sounds and def.sounds.fall then
+ core.sound_play(def.sounds.fall, {pos = p}, true)
+ end
core.remove_node(p)
- for _, item in pairs(core.get_node_drops(nn, "")) do
+ for _, item in pairs(drops) do
local pos = {
x = p.x + math.random()/2 - 0.25,
y = p.y + math.random()/2 - 0.25,
@@ -127,15 +457,16 @@ function drop_attached_node(p)
end
end
-function check_attached_node(p, n)
+function builtin_shared.check_attached_node(p, n)
local def = core.registered_nodes[n.name]
- local d = {x = 0, y = 0, z = 0}
- if def.paramtype2 == "wallmounted" then
+ local d = vector.zero()
+ if def.paramtype2 == "wallmounted" or
+ def.paramtype2 == "colorwallmounted" then
-- The fallback vector here is in case 'wallmounted to dir' is nil due
-- to voxelmanip placing a wallmounted node without resetting a
-- pre-existing param2 value that is out-of-range for wallmounted.
-- The fallback vector corresponds to param2 = 0.
- d = core.wallmounted_to_dir(n.param2) or {x = 0, y = 1, z = 0}
+ d = core.wallmounted_to_dir(n.param2) or vector.new(0, 1, 0)
else
d.y = -1
end
@@ -152,32 +483,35 @@ end
-- Some common functions
--
-function nodeupdate_single(p)
+function core.check_single_for_falling(p)
local n = core.get_node(p)
if core.get_item_group(n.name, "falling_node") ~= 0 then
- local p_bottom = {x = p.x, y = p.y - 1, z = p.z}
+ local p_bottom = vector.offset(p, 0, -1, 0)
-- Only spawn falling node if node below is loaded
local n_bottom = core.get_node_or_nil(p_bottom)
local d_bottom = n_bottom and core.registered_nodes[n_bottom.name]
- if d_bottom and
-
- (core.get_item_group(n.name, "float") == 0 or
- d_bottom.liquidtype == "none") and
-
- (n.name ~= n_bottom.name or (d_bottom.leveled and
- core.get_node_level(p_bottom) <
- core.get_node_max_level(p_bottom))) and
-
- (not d_bottom.walkable or d_bottom.buildable_to) then
- n.level = core.get_node_level(p)
- core.remove_node(p)
- spawn_falling_node(p, n)
- return true
+ if d_bottom then
+ local same = n.name == n_bottom.name
+ -- Let leveled nodes fall if it can merge with the bottom node
+ if same and d_bottom.paramtype2 == "leveled" and
+ core.get_node_level(p_bottom) <
+ core.get_node_max_level(p_bottom) then
+ convert_to_falling_node(p, n)
+ return true
+ end
+ -- Otherwise only if the bottom node is considered "fall through"
+ if not same and
+ (not d_bottom.walkable or d_bottom.buildable_to) and
+ (core.get_item_group(n.name, "float") == 0 or
+ d_bottom.liquidtype == "none") then
+ convert_to_falling_node(p, n)
+ return true
+ end
end
end
if core.get_item_group(n.name, "attached_node") ~= 0 then
- if not check_attached_node(p, n) then
+ if not builtin_shared.check_attached_node(p, n) then
drop_attached_node(p)
return true
end
@@ -190,21 +524,21 @@ end
-- We don't walk diagonals, only our direct neighbors, and self.
-- Down first as likely case, but always before self. The same with sides.
-- Up must come last, so that things above self will also fall all at once.
-local nodeupdate_neighbors = {
- {x = -1, y = -1, z = 0},
- {x = 1, y = -1, z = 0},
- {x = 0, y = -1, z = -1},
- {x = 0, y = -1, z = 1},
- {x = 0, y = -1, z = 0},
- {x = -1, y = 0, z = 0},
- {x = 1, y = 0, z = 0},
- {x = 0, y = 0, z = 1},
- {x = 0, y = 0, z = -1},
- {x = 0, y = 0, z = 0},
- {x = 0, y = 1, z = 0},
+local check_for_falling_neighbors = {
+ vector.new(-1, -1, 0),
+ vector.new( 1, -1, 0),
+ vector.new( 0, -1, -1),
+ vector.new( 0, -1, 1),
+ vector.new( 0, -1, 0),
+ vector.new(-1, 0, 0),
+ vector.new( 1, 0, 0),
+ vector.new( 0, 0, 1),
+ vector.new( 0, 0, -1),
+ vector.new( 0, 0, 0),
+ vector.new( 0, 1, 0),
}
-function nodeupdate(p)
+function core.check_for_falling(p)
-- Round p to prevent falling entities to get stuck.
p = vector.round(p)
@@ -223,10 +557,10 @@ function nodeupdate(p)
n = n + 1
s[n] = {p = p, v = v}
-- Select next node from neighbor list.
- p = vector.add(p, nodeupdate_neighbors[v])
+ p = vector.add(p, check_for_falling_neighbors[v])
-- Now we check out the node. If it is in need of an update,
-- it will let us know in the return value (true = updated).
- if not nodeupdate_single(p) then
+ if not core.check_single_for_falling(p) then
-- If we don't need to "recurse" (walk) to it then pop
-- our previous pos off the stack and continue from there,
-- with the v value we were at when we last were at that
@@ -258,17 +592,17 @@ end
-- Global callbacks
--
-function on_placenode(p, node)
- nodeupdate(p)
+local function on_placenode(p, node)
+ core.check_for_falling(p)
end
core.register_on_placenode(on_placenode)
-function on_dignode(p, node)
- nodeupdate(p)
+local function on_dignode(p, node)
+ core.check_for_falling(p)
end
core.register_on_dignode(on_dignode)
-function on_punchnode(p, node)
- nodeupdate(p)
+local function on_punchnode(p, node)
+ core.check_for_falling(p)
end
core.register_on_punchnode(on_punchnode)
diff --git a/builtin/game/features.lua b/builtin/game/features.lua
index 2aad458da..73b16361e 100644
--- a/builtin/game/features.lua
+++ b/builtin/game/features.lua
@@ -3,12 +3,27 @@
core.features = {
glasslike_framed = true,
nodebox_as_selectionbox = true,
- chat_send_player_param3 = true,
get_all_craft_recipes_works = true,
use_texture_alpha = true,
no_legacy_abms = true,
texture_names_parens = true,
area_store_custom_ids = true,
+ add_entity_with_staticdata = true,
+ no_chat_message_prediction = true,
+ object_use_texture_alpha = true,
+ object_independent_selectionbox = true,
+ httpfetch_binary_data = true,
+ formspec_version_element = true,
+ area_store_persistent_ids = true,
+ pathfinder_works = true,
+ object_step_has_moveresult = true,
+ direct_velocity_on_players = true,
+ use_texture_alpha_string_modes = true,
+ degrotate_240_steps = true,
+ abm_min_max_y = true,
+ particlespawner_tweenable = true,
+ dynamic_add_media_table = true,
+ get_sky_as_table = true,
}
function core.has_feature(arg)
diff --git a/builtin/game/forceloading.lua b/builtin/game/forceloading.lua
index 8a05de36c..8043e5dea 100644
--- a/builtin/game/forceloading.lua
+++ b/builtin/game/forceloading.lua
@@ -8,6 +8,9 @@ local blocks_forceloaded
local blocks_temploaded = {}
local total_forceloaded = 0
+-- true, if the forceloaded blocks got changed (flag for persistence on-disk)
+local forceload_blocks_changed = false
+
local BLOCKSIZE = core.MAP_BLOCKSIZE
local function get_blockpos(pos)
return {
@@ -31,6 +34,9 @@ local function get_relevant_tables(transient)
end
function core.forceload_block(pos, transient)
+ -- set changed flag
+ forceload_blocks_changed = true
+
local blockpos = get_blockpos(pos)
local hash = core.hash_node_position(blockpos)
local relevant_table, other_table = get_relevant_tables(transient)
@@ -40,7 +46,7 @@ function core.forceload_block(pos, transient)
elseif other_table[hash] ~= nil then
relevant_table[hash] = 1
else
- if total_forceloaded >= (tonumber(core.setting_get("max_forceloaded_blocks")) or 16) then
+ if total_forceloaded >= (tonumber(core.settings:get("max_forceloaded_blocks")) or 16) then
return false
end
total_forceloaded = total_forceloaded+1
@@ -51,6 +57,9 @@ function core.forceload_block(pos, transient)
end
function core.forceload_free_block(pos, transient)
+ -- set changed flag
+ forceload_blocks_changed = true
+
local blockpos = get_blockpos(pos)
local hash = core.hash_node_position(blockpos)
local relevant_table, other_table = get_relevant_tables(transient)
@@ -77,12 +86,6 @@ local function read_file(filename)
return core.deserialize(t) or {}
end
-local function write_file(filename, table)
- local f = io.open(filename, "w")
- f:write(core.serialize(table))
- f:close()
-end
-
blocks_forceloaded = read_file(wpath.."/force_loaded.txt")
for _, __ in pairs(blocks_forceloaded) do
total_forceloaded = total_forceloaded + 1
@@ -95,6 +98,29 @@ core.after(5, function()
end
end)
-core.register_on_shutdown(function()
- write_file(wpath.."/force_loaded.txt", blocks_forceloaded)
-end)
+-- persists the currently forceloaded blocks to disk
+local function persist_forceloaded_blocks()
+ local data = core.serialize(blocks_forceloaded)
+ core.safe_file_write(wpath.."/force_loaded.txt", data)
+end
+
+-- periodical forceload persistence
+local function periodically_persist_forceloaded_blocks()
+
+ -- only persist if the blocks actually changed
+ if forceload_blocks_changed then
+ persist_forceloaded_blocks()
+
+ -- reset changed flag
+ forceload_blocks_changed = false
+ end
+
+ -- recheck after some time
+ core.after(10, periodically_persist_forceloaded_blocks)
+end
+
+-- persist periodically
+core.after(5, periodically_persist_forceloaded_blocks)
+
+-- persist on shutdown
+core.register_on_shutdown(persist_forceloaded_blocks)
diff --git a/builtin/game/init.lua b/builtin/game/init.lua
index 2f9f90315..d7606f357 100644
--- a/builtin/game/init.lua
+++ b/builtin/game/init.lua
@@ -1,30 +1,40 @@
-local scriptpath = core.get_builtin_path()..DIR_DELIM
-local commonpath = scriptpath.."common"..DIR_DELIM
-local gamepath = scriptpath.."game"..DIR_DELIM
+local scriptpath = core.get_builtin_path()
+local commonpath = scriptpath .. "common" .. DIR_DELIM
+local gamepath = scriptpath .. "game".. DIR_DELIM
-dofile(commonpath.."vector.lua")
+-- Shared between builtin files, but
+-- not exposed to outer context
+local builtin_shared = {}
-dofile(gamepath.."constants.lua")
-dofile(gamepath.."item.lua")
-dofile(gamepath.."register.lua")
+dofile(gamepath .. "constants.lua")
+dofile(gamepath .. "item_s.lua")
+assert(loadfile(gamepath .. "item.lua"))(builtin_shared)
+dofile(gamepath .. "register.lua")
-if core.setting_getbool("profiler.load") then
- profiler = dofile(scriptpath.."profiler"..DIR_DELIM.."init.lua")
+if core.settings:get_bool("profiler.load") then
+ profiler = dofile(scriptpath .. "profiler" .. DIR_DELIM .. "init.lua")
end
-dofile(gamepath.."item_entity.lua")
-dofile(gamepath.."deprecated.lua")
-dofile(gamepath.."misc.lua")
-dofile(gamepath.."privileges.lua")
-dofile(gamepath.."auth.lua")
-dofile(gamepath.."chatcommands.lua")
-dofile(gamepath.."static_spawn.lua")
-dofile(gamepath.."detached_inventory.lua")
-dofile(gamepath.."falling.lua")
-dofile(gamepath.."features.lua")
-dofile(gamepath.."voxelarea.lua")
-dofile(gamepath.."forceloading.lua")
-dofile(gamepath.."statbars.lua")
+dofile(commonpath .. "after.lua")
+dofile(commonpath .. "mod_storage.lua")
+dofile(gamepath .. "item_entity.lua")
+dofile(gamepath .. "deprecated.lua")
+dofile(gamepath .. "misc_s.lua")
+dofile(gamepath .. "misc.lua")
+dofile(gamepath .. "privileges.lua")
+dofile(gamepath .. "auth.lua")
+dofile(commonpath .. "chatcommands.lua")
+dofile(gamepath .. "chat.lua")
+dofile(commonpath .. "information_formspecs.lua")
+dofile(gamepath .. "static_spawn.lua")
+dofile(gamepath .. "detached_inventory.lua")
+assert(loadfile(gamepath .. "falling.lua"))(builtin_shared)
+dofile(gamepath .. "features.lua")
+dofile(gamepath .. "voxelarea.lua")
+dofile(gamepath .. "forceloading.lua")
+dofile(gamepath .. "statbars.lua")
+dofile(gamepath .. "knockback.lua")
+dofile(gamepath .. "async.lua")
profiler = nil
diff --git a/builtin/game/item.lua b/builtin/game/item.lua
index 26ff8225c..00601c68c 100644
--- a/builtin/game/item.lua
+++ b/builtin/game/item.lua
@@ -1,10 +1,12 @@
-- Minetest: builtin/item.lua
+local builtin_shared = ...
+
local function copy_pointed_thing(pointed_thing)
return {
type = pointed_thing.type,
- above = vector.new(pointed_thing.above),
- under = vector.new(pointed_thing.under),
+ above = pointed_thing.above and vector.copy(pointed_thing.above),
+ under = pointed_thing.under and vector.copy(pointed_thing.under),
ref = pointed_thing.ref,
}
end
@@ -13,15 +15,6 @@ end
-- Item definition helpers
--
-function core.inventorycube(img1, img2, img3)
- img2 = img2 or img1
- img3 = img3 or img1
- return "[inventorycube"
- .. "{" .. img1:gsub("%^", "&")
- .. "{" .. img2:gsub("%^", "&")
- .. "{" .. img3:gsub("%^", "&")
-end
-
function core.get_pointed_thing_position(pointed_thing, above)
if pointed_thing.type == "node" then
if above then
@@ -31,128 +24,47 @@ function core.get_pointed_thing_position(pointed_thing, above)
-- The position where a node would be dug
return pointed_thing.under
elseif pointed_thing.type == "object" then
- return pointed_thing.ref and pointed_thing.ref:getpos()
+ return pointed_thing.ref and pointed_thing.ref:get_pos()
end
end
-function core.dir_to_facedir(dir, is6d)
- --account for y if requested
- if is6d and math.abs(dir.y) > math.abs(dir.x) and math.abs(dir.y) > math.abs(dir.z) then
-
- --from above
- if dir.y < 0 then
- if math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 19
- else
- return 13
- end
- else
- if dir.z < 0 then
- return 10
- else
- return 4
- end
- end
-
- --from below
- else
- if math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 15
- else
- return 17
- end
- else
- if dir.z < 0 then
- return 6
- else
- return 8
- end
- end
- end
-
- --otherwise, place horizontally
- elseif math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 3
- else
- return 1
- end
- else
- if dir.z < 0 then
- return 2
- else
- return 0
- end
+local function has_all_groups(tbl, required_groups)
+ if type(required_groups) == "string" then
+ return (tbl[required_groups] or 0) ~= 0
end
-end
-
--- Table of possible dirs
-local facedir_to_dir = {
- {x= 0, y=0, z= 1},
- {x= 1, y=0, z= 0},
- {x= 0, y=0, z=-1},
- {x=-1, y=0, z= 0},
- {x= 0, y=-1, z= 0},
- {x= 0, y=1, z= 0},
-}
--- Mapping from facedir value to index in facedir_to_dir.
-local facedir_to_dir_map = {
- [0]=1, 2, 3, 4,
- 5, 2, 6, 4,
- 6, 2, 5, 4,
- 1, 5, 3, 6,
- 1, 6, 3, 5,
- 1, 4, 3, 2,
-}
-function core.facedir_to_dir(facedir)
- return facedir_to_dir[facedir_to_dir_map[facedir]]
-end
-
-function core.dir_to_wallmounted(dir)
- if math.abs(dir.y) > math.max(math.abs(dir.x), math.abs(dir.z)) then
- if dir.y < 0 then
- return 1
- else
- return 0
- end
- elseif math.abs(dir.x) > math.abs(dir.z) then
- if dir.x < 0 then
- return 3
- else
- return 2
- end
- else
- if dir.z < 0 then
- return 5
- else
- return 4
+ for _, group in ipairs(required_groups) do
+ if (tbl[group] or 0) == 0 then
+ return false
end
end
+ return true
end
--- table of dirs in wallmounted order
-local wallmounted_to_dir = {
- [0] = {x = 0, y = 1, z = 0},
- {x = 0, y = -1, z = 0},
- {x = 1, y = 0, z = 0},
- {x = -1, y = 0, z = 0},
- {x = 0, y = 0, z = 1},
- {x = 0, y = 0, z = -1},
-}
-function core.wallmounted_to_dir(wallmounted)
- return wallmounted_to_dir[wallmounted]
-end
-
-function core.get_node_drops(nodename, toolname)
- local drop = ItemStack({name=nodename}):get_definition().drop
+function core.get_node_drops(node, toolname)
+ -- Compatibility, if node is string
+ local nodename = node
+ local param2 = 0
+ -- New format, if node is table
+ if (type(node) == "table") then
+ nodename = node.name
+ param2 = node.param2
+ end
+ local def = core.registered_nodes[nodename]
+ local drop = def and def.drop
+ local ptype = def and def.paramtype2
+ -- get color, if there is color (otherwise nil)
+ local palette_index = core.strip_param2_color(param2, ptype)
if drop == nil then
-- default drop
+ if palette_index then
+ local stack = ItemStack(nodename)
+ stack:get_meta():set_int("palette_index", palette_index)
+ return {stack:to_string()}
+ end
return {nodename}
elseif type(drop) == "string" then
-- itemstring drop
- return {drop}
+ return drop ~= "" and {drop} or {}
elseif drop.items == nil then
-- drop = {} to disable default drop
return {}
@@ -161,15 +73,16 @@ function core.get_node_drops(nodename, toolname)
-- Extended drop table
local got_items = {}
local got_count = 0
- local _, item, tool
for _, item in ipairs(drop.items) do
local good_rarity = true
local good_tool = true
if item.rarity ~= nil then
good_rarity = item.rarity < 1 or math.random(item.rarity) == 1
end
- if item.tools ~= nil then
+ if item.tools ~= nil or item.tool_groups ~= nil then
good_tool = false
+ end
+ if item.tools ~= nil and toolname then
for _, tool in ipairs(item.tools) do
if tool:sub(1, 1) == '~' then
good_tool = toolname:find(tool:sub(2)) ~= nil
@@ -180,10 +93,37 @@ function core.get_node_drops(nodename, toolname)
break
end
end
- end
+ end
+ if item.tool_groups ~= nil and toolname then
+ local tooldef = core.registered_items[toolname]
+ if tooldef ~= nil and type(tooldef.groups) == "table" then
+ if type(item.tool_groups) == "string" then
+ -- tool_groups can be a string which specifies the required group
+ good_tool = core.get_item_group(toolname, item.tool_groups) ~= 0
+ else
+ -- tool_groups can be a list of sufficient requirements.
+ -- i.e. if any item in the list can be satisfied then the tool is good
+ assert(type(item.tool_groups) == "table")
+ for _, required_groups in ipairs(item.tool_groups) do
+ -- required_groups can be either a string (a single group),
+ -- or an array of strings where all must be in tooldef.groups
+ good_tool = has_all_groups(tooldef.groups, required_groups)
+ if good_tool then
+ break
+ end
+ end
+ end
+ end
+ end
if good_rarity and good_tool then
got_count = got_count + 1
for _, add_item in ipairs(item.items) do
+ -- add color, if necessary
+ if item.inherit_color and palette_index then
+ local stack = ItemStack(add_item)
+ stack:get_meta():set_int("palette_index", palette_index)
+ add_item = stack:to_string()
+ end
got_items[#got_items+1] = add_item
end
if drop.max_items ~= nil and got_count == drop.max_items then
@@ -194,102 +134,135 @@ function core.get_node_drops(nodename, toolname)
return got_items
end
-function core.item_place_node(itemstack, placer, pointed_thing, param2)
- local item = itemstack:peek_item()
+local function user_name(user)
+ return user and user:get_player_name() or ""
+end
+
+-- Returns a logging function. For empty names, does not log.
+local function make_log(name)
+ return name ~= "" and core.log or function() end
+end
+
+function core.item_place_node(itemstack, placer, pointed_thing, param2,
+ prevent_after_place)
local def = itemstack:get_definition()
if def.type ~= "node" or pointed_thing.type ~= "node" then
- return itemstack, false
+ return itemstack, nil
end
local under = pointed_thing.under
local oldnode_under = core.get_node_or_nil(under)
local above = pointed_thing.above
local oldnode_above = core.get_node_or_nil(above)
+ local playername = user_name(placer)
+ local log = make_log(playername)
if not oldnode_under or not oldnode_above then
- core.log("info", placer:get_player_name() .. " tried to place"
+ log("info", playername .. " tried to place"
.. " node in unloaded position " .. core.pos_to_string(above))
- return itemstack, false
+ return itemstack, nil
end
- local olddef_under = ItemStack({name=oldnode_under.name}):get_definition()
+ local olddef_under = core.registered_nodes[oldnode_under.name]
olddef_under = olddef_under or core.nodedef_default
- local olddef_above = ItemStack({name=oldnode_above.name}):get_definition()
+ local olddef_above = core.registered_nodes[oldnode_above.name]
olddef_above = olddef_above or core.nodedef_default
if not olddef_above.buildable_to and not olddef_under.buildable_to then
- core.log("info", placer:get_player_name() .. " tried to place"
+ log("info", playername .. " tried to place"
.. " node in invalid position " .. core.pos_to_string(above)
.. ", replacing " .. oldnode_above.name)
- return itemstack, false
+ return itemstack, nil
end
-- Place above pointed node
- local place_to = {x = above.x, y = above.y, z = above.z}
+ local place_to = vector.copy(above)
-- If node under is buildable_to, place into it instead (eg. snow)
if olddef_under.buildable_to then
- core.log("info", "node under is buildable to")
- place_to = {x = under.x, y = under.y, z = under.z}
+ log("info", "node under is buildable to")
+ place_to = vector.copy(under)
end
- if core.is_protected(place_to, placer:get_player_name()) and
- not minetest.check_player_privs(placer, "protection_bypass") then
- core.log("action", placer:get_player_name()
+ if core.is_protected(place_to, playername) then
+ log("action", playername
.. " tried to place " .. def.name
.. " at protected position "
.. core.pos_to_string(place_to))
- core.record_protection_violation(place_to, placer:get_player_name())
- return itemstack
+ core.record_protection_violation(place_to, playername)
+ return itemstack, nil
end
- core.log("action", placer:get_player_name() .. " places node "
- .. def.name .. " at " .. core.pos_to_string(place_to))
-
local oldnode = core.get_node(place_to)
- local newnode = {name = def.name, param1 = 0, param2 = param2}
+ local newnode = {name = def.name, param1 = 0, param2 = param2 or 0}
-- Calculate direction for wall mounted stuff like torches and signs
if def.place_param2 ~= nil then
newnode.param2 = def.place_param2
- elseif def.paramtype2 == 'wallmounted' and not param2 then
- local dir = {
- x = under.x - above.x,
- y = under.y - above.y,
- z = under.z - above.z
- }
+ elseif (def.paramtype2 == "wallmounted" or
+ def.paramtype2 == "colorwallmounted") and not param2 then
+ local dir = vector.subtract(under, above)
newnode.param2 = core.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff
- elseif def.paramtype2 == 'facedir' and not param2 then
- local placer_pos = placer:getpos()
+ elseif (def.paramtype2 == "facedir" or
+ def.paramtype2 == "colorfacedir") and not param2 then
+ local placer_pos = placer and placer:get_pos()
if placer_pos then
- local dir = {
- x = above.x - placer_pos.x,
- y = above.y - placer_pos.y,
- z = above.z - placer_pos.z
- }
+ local dir = vector.subtract(above, placer_pos)
newnode.param2 = core.dir_to_facedir(dir)
- core.log("action", "facedir: " .. newnode.param2)
+ log("info", "facedir: " .. newnode.param2)
+ end
+ end
+
+ local metatable = itemstack:get_meta():to_table().fields
+
+ -- Transfer color information
+ if metatable.palette_index and not def.place_param2 then
+ local color_divisor = nil
+ if def.paramtype2 == "color" then
+ color_divisor = 1
+ elseif def.paramtype2 == "colorwallmounted" then
+ color_divisor = 8
+ elseif def.paramtype2 == "colorfacedir" then
+ color_divisor = 32
+ elseif def.paramtype2 == "colordegrotate" then
+ color_divisor = 32
+ end
+ if color_divisor then
+ local color = math.floor(metatable.palette_index / color_divisor)
+ local other = newnode.param2 % color_divisor
+ newnode.param2 = color * color_divisor + other
end
end
-- Check if the node is attached and if it can be placed there
if core.get_item_group(def.name, "attached_node") ~= 0 and
- not check_attached_node(place_to, newnode) then
- core.log("action", "attached node " .. def.name ..
+ not builtin_shared.check_attached_node(place_to, newnode) then
+ log("action", "attached node " .. def.name ..
" can not be placed at " .. core.pos_to_string(place_to))
- return itemstack, false
+ return itemstack, nil
end
+ log("action", playername .. " places node "
+ .. def.name .. " at " .. core.pos_to_string(place_to))
+
-- Add node and update
core.add_node(place_to, newnode)
+ -- Play sound if it was done by a player
+ if playername ~= "" and def.sounds and def.sounds.place then
+ core.sound_play(def.sounds.place, {
+ pos = place_to,
+ exclude_player = playername,
+ }, true)
+ end
+
local take_item = true
-- Run callback
- if def.after_place_node then
+ if def.after_place_node and not prevent_after_place then
-- Deepcopy place_to and pointed_thing because callback can modify it
- local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z}
+ local place_to_copy = vector.copy(place_to)
local pointed_thing_copy = copy_pointed_thing(pointed_thing)
if def.after_place_node(place_to_copy, placer, itemstack,
pointed_thing_copy) then
@@ -298,10 +271,9 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2)
end
-- Run script hook
- local _, callback
for _, callback in ipairs(core.registered_on_placenodes) do
-- Deepcopy pos, node and pointed_thing because callback can modify them
- local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z}
+ local place_to_copy = vector.copy(place_to)
local newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.param2}
local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2}
local pointed_thing_copy = copy_pointed_thing(pointed_thing)
@@ -313,9 +285,10 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2)
if take_item then
itemstack:take_item()
end
- return itemstack, true
+ return itemstack, place_to
end
+-- deprecated, item_place does not call this
function core.item_place_object(itemstack, placer, pointed_thing)
local pos = core.get_pointed_thing_position(pointed_thing, true)
if pos ~= nil then
@@ -333,14 +306,15 @@ function core.item_place(itemstack, placer, pointed_thing, param2)
local nn = n.name
if core.registered_nodes[nn] and core.registered_nodes[nn].on_rightclick then
return core.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
- placer, itemstack, pointed_thing) or itemstack, false
+ placer, itemstack, pointed_thing) or itemstack, nil
end
end
+ -- Place if node, otherwise do nothing
if itemstack:get_definition().type == "node" then
return core.item_place_node(itemstack, placer, pointed_thing, param2)
end
- return itemstack
+ return itemstack, nil
end
function core.item_secondary_use(itemstack, placer)
@@ -348,28 +322,24 @@ function core.item_secondary_use(itemstack, placer)
end
function core.item_drop(itemstack, dropper, pos)
- if dropper and dropper:is_player() then
- local v = dropper:get_look_dir()
- local p = {x=pos.x, y=pos.y+1.2, z=pos.z}
- local cs = itemstack:get_count()
- if dropper:get_player_control().sneak then
- cs = 1
- end
- local item = itemstack:take_item(cs)
- local obj = core.add_item(p, item)
- if obj then
- v.x = v.x*2
- v.y = v.y*2 + 2
- v.z = v.z*2
- obj:setvelocity(v)
+ local dropper_is_player = dropper and dropper:is_player()
+ local p = table.copy(pos)
+ local cnt = itemstack:get_count()
+ if dropper_is_player then
+ p.y = p.y + 1.2
+ end
+ local item = itemstack:take_item(cnt)
+ local obj = core.add_item(p, item)
+ if obj then
+ if dropper_is_player then
+ local dir = dropper:get_look_dir()
+ dir.x = dir.x * 2.9
+ dir.y = dir.y * 2.9 + 2
+ dir.z = dir.z * 2.9
+ obj:set_velocity(dir)
obj:get_luaentity().dropped_by = dropper:get_player_name()
- return itemstack
- end
-
- else
- if core.add_item(pos, itemstack) then
- return itemstack
end
+ return itemstack
end
-- If we reach this, adding the object to the
-- environment failed
@@ -382,30 +352,48 @@ function core.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed
return result
end
end
- if itemstack:take_item() ~= nil then
- user:set_hp(user:get_hp() + hp_change)
+ -- read definition before potentially emptying the stack
+ local def = itemstack:get_definition()
+ if itemstack:take_item():is_empty() then
+ return itemstack
+ end
- if replace_with_item then
- if itemstack:is_empty() then
- itemstack:add_item(replace_with_item)
+ if def and def.sound and def.sound.eat then
+ core.sound_play(def.sound.eat, {
+ pos = user:get_pos(),
+ max_hear_distance = 16
+ }, true)
+ end
+
+ -- Changing hp might kill the player causing mods to do who-knows-what to the
+ -- inventory, so do this before set_hp().
+ if replace_with_item then
+ if itemstack:is_empty() then
+ itemstack:add_item(replace_with_item)
+ else
+ local inv = user:get_inventory()
+ -- Check if inv is null, since non-players don't have one
+ if inv and inv:room_for_item("main", {name=replace_with_item}) then
+ inv:add_item("main", replace_with_item)
else
- local inv = user:get_inventory()
- if inv:room_for_item("main", {name=replace_with_item}) then
- inv:add_item("main", replace_with_item)
- else
- local pos = user:getpos()
- pos.y = math.floor(pos.y + 0.5)
- core.add_item(pos, replace_with_item)
- end
+ local pos = user:get_pos()
+ pos.y = math.floor(pos.y + 0.5)
+ core.add_item(pos, replace_with_item)
end
end
end
- return itemstack
+ user:set_wielded_item(itemstack)
+
+ user:set_hp(user:get_hp() + hp_change)
+
+ return nil -- don't overwrite wield item a second time
end
function core.item_eat(hp_change, replace_with_item)
return function(itemstack, user, pointed_thing) -- closure
- return core.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed_thing)
+ if user then
+ return core.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed_thing)
+ end
end
end
@@ -413,7 +401,7 @@ function core.node_punch(pos, node, puncher, pointed_thing)
-- Run script hook
for _, callback in ipairs(core.registered_on_punchnodes) do
-- Copy pos and node because callback can modify them
- local pos_copy = vector.new(pos)
+ local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
local pointed_thing_copy = pointed_thing and copy_pointed_thing(pointed_thing) or nil
callback(pos_copy, node_copy, puncher, pointed_thing_copy)
@@ -422,96 +410,146 @@ end
function core.handle_node_drops(pos, drops, digger)
-- Add dropped items to object's inventory
- if digger:get_inventory() then
- local _, dropped_item
- for _, dropped_item in ipairs(drops) do
- local left = digger:get_inventory():add_item("main", dropped_item)
- if not left:is_empty() then
- local p = {
- x = pos.x + math.random()/2-0.25,
- y = pos.y + math.random()/2-0.25,
- z = pos.z + math.random()/2-0.25,
- }
- core.add_item(p, left)
- end
+ local inv = digger and digger:get_inventory()
+ local give_item
+ if inv then
+ give_item = function(item)
+ return inv:add_item("main", item)
+ end
+ else
+ give_item = function(item)
+ -- itemstring to ItemStack for left:is_empty()
+ return ItemStack(item)
+ end
+ end
+
+ for _, dropped_item in pairs(drops) do
+ local left = give_item(dropped_item)
+ if not left:is_empty() then
+ local p = vector.offset(pos,
+ math.random()/2-0.25,
+ math.random()/2-0.25,
+ math.random()/2-0.25
+ )
+ core.add_item(p, left)
end
end
end
function core.node_dig(pos, node, digger)
- local def = ItemStack({name=node.name}):get_definition()
- if not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
- core.log("info", digger:get_player_name() .. " tried to dig "
+ local diggername = user_name(digger)
+ local log = make_log(diggername)
+ local def = core.registered_nodes[node.name]
+ -- Copy pos because the callback could modify it
+ if def and (not def.diggable or
+ (def.can_dig and not def.can_dig(vector.copy(pos), digger))) then
+ log("info", diggername .. " tried to dig "
.. node.name .. " which is not diggable "
.. core.pos_to_string(pos))
- return
+ return false
end
- if core.is_protected(pos, digger:get_player_name()) and
- not minetest.check_player_privs(digger, "protection_bypass") then
- core.log("action", digger:get_player_name()
+ if core.is_protected(pos, diggername) then
+ log("action", diggername
.. " tried to dig " .. node.name
.. " at protected position "
.. core.pos_to_string(pos))
- core.record_protection_violation(pos, digger:get_player_name())
- return
+ core.record_protection_violation(pos, diggername)
+ return false
end
- core.log('action', digger:get_player_name() .. " digs "
+ log('action', diggername .. " digs "
.. node.name .. " at " .. core.pos_to_string(pos))
- local wielded = digger:get_wielded_item()
- local drops = core.get_node_drops(node.name, wielded:get_name())
+ local wielded = digger and digger:get_wielded_item()
+ local drops = core.get_node_drops(node, wielded and wielded:get_name())
- local wdef = wielded:get_definition()
- local tp = wielded:get_tool_capabilities()
- local dp = core.get_dig_params(def.groups, tp)
- if wdef and wdef.after_use then
- wielded = wdef.after_use(wielded, digger, node, dp) or wielded
- else
- -- Wear out tool
- if not core.setting_getbool("creative_mode") then
- wielded:add_wear(dp.wear)
+ if wielded then
+ local wdef = wielded:get_definition()
+ local tp = wielded:get_tool_capabilities()
+ local dp = core.get_dig_params(def and def.groups, tp, wielded:get_wear())
+ if wdef and wdef.after_use then
+ wielded = wdef.after_use(wielded, digger, node, dp) or wielded
+ else
+ -- Wear out tool
+ if not core.is_creative_enabled(diggername) then
+ wielded:add_wear(dp.wear)
+ if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then
+ core.sound_play(wdef.sound.breaks, {
+ pos = pos,
+ gain = 0.5
+ }, true)
+ end
+ end
end
+ digger:set_wielded_item(wielded)
+ end
+
+ -- Check to see if metadata should be preserved.
+ if def and def.preserve_metadata then
+ local oldmeta = core.get_meta(pos):to_table().fields
+ -- Copy pos and node because the callback can modify them.
+ local pos_copy = vector.copy(pos)
+ local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
+ local drop_stacks = {}
+ for k, v in pairs(drops) do
+ drop_stacks[k] = ItemStack(v)
+ end
+ drops = drop_stacks
+ def.preserve_metadata(pos_copy, node_copy, oldmeta, drops)
end
- digger:set_wielded_item(wielded)
-- Handle drops
core.handle_node_drops(pos, drops, digger)
local oldmetadata = nil
- if def.after_dig_node then
+ if def and def.after_dig_node then
oldmetadata = core.get_meta(pos):to_table()
end
-- Remove node and update
core.remove_node(pos)
+ -- Play sound if it was done by a player
+ if diggername ~= "" and def and def.sounds and def.sounds.dug then
+ core.sound_play(def.sounds.dug, {
+ pos = pos,
+ exclude_player = diggername,
+ }, true)
+ end
+
-- Run callback
- if def.after_dig_node then
+ if def and def.after_dig_node then
-- Copy pos and node because callback can modify them
- local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
+ local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
def.after_dig_node(pos_copy, node_copy, oldmetadata, digger)
end
-- Run script hook
- local _, callback
for _, callback in ipairs(core.registered_on_dignodes) do
local origin = core.callback_origins[callback]
- if origin then
- core.set_last_run_mod(origin.mod)
- --print("Running " .. tostring(callback) ..
- -- " (a " .. origin.name .. " callback in " .. origin.mod .. ")")
- else
- --print("No data associated with callback")
- end
+ core.set_last_run_mod(origin.mod)
-- Copy pos and node because callback can modify them
- local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
+ local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
callback(pos_copy, node_copy, digger)
end
+
+ return true
+end
+
+function core.itemstring_with_palette(item, palette_index)
+ local stack = ItemStack(item) -- convert to ItemStack
+ stack:get_meta():set_int("palette_index", palette_index)
+ return stack:to_string()
+end
+
+function core.itemstring_with_color(item, colorstring)
+ local stack = ItemStack(item) -- convert to ItemStack
+ stack:get_meta():set_string("color", colorstring)
+ return stack:to_string()
end
-- This is used to allow mods to redefine core.item_place and so on
@@ -527,6 +565,8 @@ end
-- Item definition defaults
--
+local default_stack_max = tonumber(core.settings:get("default_stack_max")) or 99
+
core.nodedef_default = {
-- Item properties
type="node",
@@ -535,8 +575,8 @@ core.nodedef_default = {
groups = {},
inventory_image = "",
wield_image = "",
- wield_scale = {x=1,y=1,z=1},
- stack_max = 99,
+ wield_scale = vector.new(1, 1, 1),
+ stack_max = default_stack_max,
usable = false,
liquids_pointable = false,
tool_capabilities = nil,
@@ -554,21 +594,11 @@ core.nodedef_default = {
on_receive_fields = nil,
- on_metadata_inventory_move = core.node_metadata_inventory_move_allow_all,
- on_metadata_inventory_offer = core.node_metadata_inventory_offer_allow_all,
- on_metadata_inventory_take = core.node_metadata_inventory_take_allow_all,
-
-- Node properties
drawtype = "normal",
visual_scale = 1.0,
- -- Don't define these because otherwise the old tile_images and
- -- special_materials wouldn't be read
- --tiles ={""},
- --special_tiles = {
- -- {name="", backface_culling=true},
- -- {name="", backface_culling=true},
- --},
- alpha = 255,
+ tiles = nil,
+ special_tiles = nil,
post_effect_color = {a=0, r=0, g=0, b=0},
paramtype = "none",
paramtype2 = "none",
@@ -599,8 +629,8 @@ core.craftitemdef_default = {
groups = {},
inventory_image = "",
wield_image = "",
- wield_scale = {x=1,y=1,z=1},
- stack_max = 99,
+ wield_scale = vector.new(1, 1, 1),
+ stack_max = default_stack_max,
liquids_pointable = false,
tool_capabilities = nil,
@@ -618,7 +648,7 @@ core.tooldef_default = {
groups = {},
inventory_image = "",
wield_image = "",
- wield_scale = {x=1,y=1,z=1},
+ wield_scale = vector.new(1, 1, 1),
stack_max = 1,
liquids_pointable = false,
tool_capabilities = nil,
@@ -637,8 +667,8 @@ core.noneitemdef_default = { -- This is used for the hand and unknown items
groups = {},
inventory_image = "",
wield_image = "",
- wield_scale = {x=1,y=1,z=1},
- stack_max = 99,
+ wield_scale = vector.new(1, 1, 1),
+ stack_max = default_stack_max,
liquids_pointable = false,
tool_capabilities = nil,
diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua
index be158c119..53f98a7c7 100644
--- a/builtin/game/item_entity.lua
+++ b/builtin/game/item_entity.lua
@@ -14,10 +14,9 @@ end
-- If item_entity_ttl is not set, enity will have default life time
-- Setting it to -1 disables the feature
-local time_to_live = tonumber(core.setting_get("item_entity_ttl"))
-if not time_to_live then
- time_to_live = 900
-end
+local time_to_live = tonumber(core.settings:get("item_entity_ttl")) or 900
+local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81
+
core.register_entity(":__builtin:item", {
initial_properties = {
@@ -28,52 +27,57 @@ core.register_entity(":__builtin:item", {
visual = "wielditem",
visual_size = {x = 0.4, y = 0.4},
textures = {""},
- spritediv = {x = 1, y = 1},
- initial_sprite_basepos = {x = 0, y = 0},
is_visible = false,
},
- itemstring = '',
+ itemstring = "",
+ moving_state = true,
physical_state = true,
+ -- Item expiry
age = 0,
+ -- Pushing item out of solid nodes
+ force_out = nil,
+ force_out_start = nil,
+
+ set_item = function(self, item)
+ local stack = ItemStack(item or self.itemstring)
+ self.itemstring = stack:to_string()
+ if self.itemstring == "" then
+ -- item not yet known
+ return
+ end
+
+ -- Backwards compatibility: old clients use the texture
+ -- to get the type of the item
+ local itemname = stack:is_known() and stack:get_name() or "unknown"
- set_item = function(self, itemstring)
- self.itemstring = itemstring
- local stack = ItemStack(itemstring)
- local count = stack:get_count()
local max_count = stack:get_stack_max()
- if count > max_count then
- count = max_count
- self.itemstring = stack:get_name().." "..max_count
- end
- local s = 0.2 + 0.1 * (count / max_count)
- local c = s
- local itemtable = stack:to_table()
- local itemname = nil
- if itemtable then
- itemname = stack:to_table().name
- end
- local item_texture = nil
- local item_type = ""
- if core.registered_items[itemname] then
- item_texture = core.registered_items[itemname].inventory_image
- item_type = core.registered_items[itemname].type
- end
- local prop = {
+ local count = math.min(stack:get_count(), max_count)
+ local size = 0.2 + 0.1 * (count / max_count) ^ (1 / 3)
+ local def = core.registered_items[itemname]
+ local glow = def and def.light_source and
+ math.floor(def.light_source / 2 + 0.5)
+
+ local size_bias = 1e-3 * math.random() -- small random bias to counter Z-fighting
+ local c = {-size, -size, -size, size, size, size}
+ self.object:set_properties({
is_visible = true,
visual = "wielditem",
textures = {itemname},
- visual_size = {x = s, y = s},
- collisionbox = {-c, -c, -c, c, c, c},
- automatic_rotate = math.pi * 0.5,
- }
- self.object:set_properties(prop)
+ visual_size = {x = size + size_bias, y = size + size_bias},
+ collisionbox = c,
+ automatic_rotate = math.pi * 0.5 * 0.2 / size,
+ wield_item = self.itemstring,
+ glow = glow,
+ })
+
+ -- cache for usage in on_step
+ self._collisionbox = c
end,
get_staticdata = function(self)
return core.serialize({
itemstring = self.itemstring,
- always_collect = self.always_collect,
age = self.age,
dropped_by = self.dropped_by
})
@@ -84,133 +88,246 @@ core.register_entity(":__builtin:item", {
local data = core.deserialize(staticdata)
if data and type(data) == "table" then
self.itemstring = data.itemstring
- self.always_collect = data.always_collect
- if data.age then
- self.age = data.age + dtime_s
- else
- self.age = dtime_s
- end
+ self.age = (data.age or 0) + dtime_s
self.dropped_by = data.dropped_by
end
else
self.itemstring = staticdata
end
self.object:set_armor_groups({immortal = 1})
- self.object:setvelocity({x = 0, y = 2, z = 0})
- self.object:setacceleration({x = 0, y = -10, z = 0})
- self:set_item(self.itemstring)
+ self.object:set_velocity({x = 0, y = 2, z = 0})
+ self.object:set_acceleration({x = 0, y = -gravity, z = 0})
+ self._collisionbox = self.initial_properties.collisionbox
+ self:set_item()
end,
- try_merge_with = function(self, own_stack, object, obj)
- local stack = ItemStack(obj.itemstring)
- if own_stack:get_name() == stack:get_name() and stack:get_free_space() > 0 then
- local overflow = false
- local count = stack:get_count() + own_stack:get_count()
- local max_count = stack:get_stack_max()
- if count > max_count then
- overflow = true
- count = count - max_count
- else
- self.itemstring = ''
- end
- local pos = object:getpos()
- pos.y = pos.y + (count - stack:get_count()) / max_count * 0.15
- object:moveto(pos, false)
- local s, c
- local max_count = stack:get_stack_max()
- local name = stack:get_name()
- if not overflow then
- obj.itemstring = name .. " " .. count
- s = 0.2 + 0.1 * (count / max_count)
- c = s
- object:set_properties({
- visual_size = {x = s, y = s},
- collisionbox = {-c, -c, -c, c, c, c}
- })
- self.object:remove()
- -- merging succeeded
- return true
- else
- s = 0.4
- c = 0.3
- object:set_properties({
- visual_size = {x = s, y = s},
- collisionbox = {-c, -c, -c, c, c, c}
- })
- obj.itemstring = name .. " " .. max_count
- s = 0.2 + 0.1 * (count / max_count)
- c = s
- self.object:set_properties({
- visual_size = {x = s, y = s},
- collisionbox = {-c, -c, -c, c, c, c}
- })
- self.itemstring = name .. " " .. count
- end
+ try_merge_with = function(self, own_stack, object, entity)
+ if self.age == entity.age then
+ -- Can not merge with itself
+ return false
+ end
+
+ local stack = ItemStack(entity.itemstring)
+ local name = stack:get_name()
+ if own_stack:get_name() ~= name or
+ own_stack:get_meta() ~= stack:get_meta() or
+ own_stack:get_wear() ~= stack:get_wear() or
+ own_stack:get_free_space() == 0 then
+ -- Can not merge different or full stack
+ return false
+ end
+
+ local count = own_stack:get_count()
+ local total_count = stack:get_count() + count
+ local max_count = stack:get_stack_max()
+
+ if total_count > max_count then
+ return false
+ end
+ -- Merge the remote stack into this one
+
+ local pos = object:get_pos()
+ pos.y = pos.y + ((total_count - count) / max_count) * 0.15
+ self.object:move_to(pos)
+
+ self.age = 0 -- Handle as new entity
+ own_stack:set_count(total_count)
+ self:set_item(own_stack)
+
+ entity.itemstring = ""
+ object:remove()
+ return true
+ end,
+
+ enable_physics = function(self)
+ if not self.physical_state then
+ self.physical_state = true
+ self.object:set_properties({physical = true})
+ self.object:set_velocity({x=0, y=0, z=0})
+ self.object:set_acceleration({x=0, y=-gravity, z=0})
+ end
+ end,
+
+ disable_physics = function(self)
+ if self.physical_state then
+ self.physical_state = false
+ self.object:set_properties({physical = false})
+ self.object:set_velocity({x=0, y=0, z=0})
+ self.object:set_acceleration({x=0, y=0, z=0})
end
- -- merging didn't succeed
- return false
end,
- on_step = function(self, dtime)
+ on_step = function(self, dtime, moveresult)
self.age = self.age + dtime
if time_to_live > 0 and self.age > time_to_live then
- self.itemstring = ''
+ self.itemstring = ""
self.object:remove()
return
end
- local p = self.object:getpos()
- p.y = p.y - 0.5
- local node = core.get_node_or_nil(p)
- local in_unloaded = (node == nil)
- if in_unloaded then
- -- Don't infinetly fall into unloaded map
- self.object:setvelocity({x = 0, y = 0, z = 0})
- self.object:setacceleration({x = 0, y = 0, z = 0})
- self.physical_state = false
- self.object:set_properties({physical = false})
+
+ local pos = self.object:get_pos()
+ local node = core.get_node_or_nil({
+ x = pos.x,
+ y = pos.y + self._collisionbox[2] - 0.05,
+ z = pos.z
+ })
+ -- Delete in 'ignore' nodes
+ if node and node.name == "ignore" then
+ self.itemstring = ""
+ self.object:remove()
return
end
- local nn = node.name
- -- If node is not registered or node is walkably solid and resting on nodebox
- local v = self.object:getvelocity()
- if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then
- if self.physical_state then
- local own_stack = ItemStack(self.object:get_luaentity().itemstring)
- -- Merge with close entities of the same item
- for _, object in ipairs(core.get_objects_inside_radius(p, 0.8)) do
- local obj = object:get_luaentity()
- if obj and obj.name == "__builtin:item"
- and obj.physical_state == false then
- if self:try_merge_with(own_stack, object, obj) then
- return
- end
- end
+
+ if self.force_out then
+ -- This code runs after the entity got a push from the is_stuck code.
+ -- It makes sure the entity is entirely outside the solid node
+ local c = self._collisionbox
+ local s = self.force_out_start
+ local f = self.force_out
+ local ok = (f.x > 0 and pos.x + c[1] > s.x + 0.5) or
+ (f.y > 0 and pos.y + c[2] > s.y + 0.5) or
+ (f.z > 0 and pos.z + c[3] > s.z + 0.5) or
+ (f.x < 0 and pos.x + c[4] < s.x - 0.5) or
+ (f.z < 0 and pos.z + c[6] < s.z - 0.5)
+ if ok then
+ -- Item was successfully forced out
+ self.force_out = nil
+ self:enable_physics()
+ return
+ end
+ end
+
+ if not self.physical_state then
+ return -- Don't do anything
+ end
+
+ assert(moveresult,
+ "Collision info missing, this is caused by an out-of-date/buggy mod or game")
+
+ if not moveresult.collides then
+ -- future TODO: items should probably decelerate in air
+ return
+ end
+
+ -- Push item out when stuck inside solid node
+ local is_stuck = false
+ local snode = core.get_node_or_nil(pos)
+ if snode then
+ local sdef = core.registered_nodes[snode.name] or {}
+ is_stuck = (sdef.walkable == nil or sdef.walkable == true)
+ and (sdef.collision_box == nil or sdef.collision_box.type == "regular")
+ and (sdef.node_box == nil or sdef.node_box.type == "regular")
+ end
+
+ if is_stuck then
+ local shootdir
+ local order = {
+ {x=1, y=0, z=0}, {x=-1, y=0, z= 0},
+ {x=0, y=0, z=1}, {x= 0, y=0, z=-1},
+ }
+
+ -- Check which one of the 4 sides is free
+ for o = 1, #order do
+ local cnode = core.get_node(vector.add(pos, order[o])).name
+ local cdef = core.registered_nodes[cnode] or {}
+ if cnode ~= "ignore" and cdef.walkable == false then
+ shootdir = order[o]
+ break
end
- self.object:setvelocity({x = 0, y = 0, z = 0})
- self.object:setacceleration({x = 0, y = 0, z = 0})
- self.physical_state = false
- self.object:set_properties({physical = false})
end
- else
- if not self.physical_state then
- self.object:setvelocity({x = 0, y = 0, z = 0})
- self.object:setacceleration({x = 0, y = -10, z = 0})
- self.physical_state = true
- self.object:set_properties({physical = true})
+ -- If none of the 4 sides is free, check upwards
+ if not shootdir then
+ shootdir = {x=0, y=1, z=0}
+ local cnode = core.get_node(vector.add(pos, shootdir)).name
+ if cnode == "ignore" then
+ shootdir = nil -- Do not push into ignore
+ end
+ end
+
+ if shootdir then
+ -- Set new item moving speed accordingly
+ local newv = vector.multiply(shootdir, 3)
+ self:disable_physics()
+ self.object:set_velocity(newv)
+
+ self.force_out = newv
+ self.force_out_start = vector.round(pos)
+ return
+ end
+ end
+
+ node = nil -- ground node we're colliding with
+ if moveresult.touching_ground then
+ for _, info in ipairs(moveresult.collisions) do
+ if info.axis == "y" then
+ node = core.get_node(info.node_pos)
+ break
+ end
+ end
+ end
+
+ -- Slide on slippery nodes
+ local def = node and core.registered_nodes[node.name]
+ local keep_movement = false
+
+ if def then
+ local slippery = core.get_item_group(node.name, "slippery")
+ local vel = self.object:get_velocity()
+ if slippery ~= 0 and (math.abs(vel.x) > 0.1 or math.abs(vel.z) > 0.1) then
+ -- Horizontal deceleration
+ local factor = math.min(4 / (slippery + 4) * dtime, 1)
+ self.object:set_velocity({
+ x = vel.x * (1 - factor),
+ y = 0,
+ z = vel.z * (1 - factor)
+ })
+ keep_movement = true
+ end
+ end
+
+ if not keep_movement then
+ self.object:set_velocity({x=0, y=0, z=0})
+ end
+
+ if self.moving_state == keep_movement then
+ -- Do not update anything until the moving state changes
+ return
+ end
+ self.moving_state = keep_movement
+
+ -- Only collect items if not moving
+ if self.moving_state then
+ return
+ end
+ -- Collect the items around to merge with
+ local own_stack = ItemStack(self.itemstring)
+ if own_stack:get_free_space() == 0 then
+ return
+ end
+ local objects = core.get_objects_inside_radius(pos, 1.0)
+ for k, obj in pairs(objects) do
+ local entity = obj:get_luaentity()
+ if entity and entity.name == "__builtin:item" then
+ if self:try_merge_with(own_stack, obj, entity) then
+ own_stack = ItemStack(self.itemstring)
+ if own_stack:get_free_space() == 0 then
+ return
+ end
+ end
end
end
end,
on_punch = function(self, hitter)
local inv = hitter:get_inventory()
- if inv and self.itemstring ~= '' then
+ if inv and self.itemstring ~= "" then
local left = inv:add_item("main", self.itemstring)
if left and not left:is_empty() then
- self.itemstring = left:to_string()
+ self:set_item(left)
return
end
end
- self.itemstring = ''
+ self.itemstring = ""
self.object:remove()
end,
})
diff --git a/builtin/game/item_s.lua b/builtin/game/item_s.lua
new file mode 100644
index 000000000..a51cd0a1c
--- /dev/null
+++ b/builtin/game/item_s.lua
@@ -0,0 +1,156 @@
+-- Minetest: builtin/item_s.lua
+-- The distinction of what goes here is a bit tricky, basically it's everything
+-- that does not (directly or indirectly) need access to ServerEnvironment,
+-- Server or writable access to IGameDef on the engine side.
+-- (The '_s' stands for standalone.)
+
+--
+-- Item definition helpers
+--
+
+function core.inventorycube(img1, img2, img3)
+ img2 = img2 or img1
+ img3 = img3 or img1
+ return "[inventorycube"
+ .. "{" .. img1:gsub("%^", "&")
+ .. "{" .. img2:gsub("%^", "&")
+ .. "{" .. img3:gsub("%^", "&")
+end
+
+function core.dir_to_facedir(dir, is6d)
+ --account for y if requested
+ if is6d and math.abs(dir.y) > math.abs(dir.x) and math.abs(dir.y) > math.abs(dir.z) then
+
+ --from above
+ if dir.y < 0 then
+ if math.abs(dir.x) > math.abs(dir.z) then
+ if dir.x < 0 then
+ return 19
+ else
+ return 13
+ end
+ else
+ if dir.z < 0 then
+ return 10
+ else
+ return 4
+ end
+ end
+
+ --from below
+ else
+ if math.abs(dir.x) > math.abs(dir.z) then
+ if dir.x < 0 then
+ return 15
+ else
+ return 17
+ end
+ else
+ if dir.z < 0 then
+ return 6
+ else
+ return 8
+ end
+ end
+ end
+
+ --otherwise, place horizontally
+ elseif math.abs(dir.x) > math.abs(dir.z) then
+ if dir.x < 0 then
+ return 3
+ else
+ return 1
+ end
+ else
+ if dir.z < 0 then
+ return 2
+ else
+ return 0
+ end
+ end
+end
+
+-- Table of possible dirs
+local facedir_to_dir = {
+ vector.new( 0, 0, 1),
+ vector.new( 1, 0, 0),
+ vector.new( 0, 0, -1),
+ vector.new(-1, 0, 0),
+ vector.new( 0, -1, 0),
+ vector.new( 0, 1, 0),
+}
+-- Mapping from facedir value to index in facedir_to_dir.
+local facedir_to_dir_map = {
+ [0]=1, 2, 3, 4,
+ 5, 2, 6, 4,
+ 6, 2, 5, 4,
+ 1, 5, 3, 6,
+ 1, 6, 3, 5,
+ 1, 4, 3, 2,
+}
+function core.facedir_to_dir(facedir)
+ return facedir_to_dir[facedir_to_dir_map[facedir % 32]]
+end
+
+function core.dir_to_wallmounted(dir)
+ if math.abs(dir.y) > math.max(math.abs(dir.x), math.abs(dir.z)) then
+ if dir.y < 0 then
+ return 1
+ else
+ return 0
+ end
+ elseif math.abs(dir.x) > math.abs(dir.z) then
+ if dir.x < 0 then
+ return 3
+ else
+ return 2
+ end
+ else
+ if dir.z < 0 then
+ return 5
+ else
+ return 4
+ end
+ end
+end
+
+-- table of dirs in wallmounted order
+local wallmounted_to_dir = {
+ [0] = vector.new( 0, 1, 0),
+ vector.new( 0, -1, 0),
+ vector.new( 1, 0, 0),
+ vector.new(-1, 0, 0),
+ vector.new( 0, 0, 1),
+ vector.new( 0, 0, -1),
+}
+function core.wallmounted_to_dir(wallmounted)
+ return wallmounted_to_dir[wallmounted % 8]
+end
+
+function core.dir_to_yaw(dir)
+ return -math.atan2(dir.x, dir.z)
+end
+
+function core.yaw_to_dir(yaw)
+ return vector.new(-math.sin(yaw), 0, math.cos(yaw))
+end
+
+function core.is_colored_paramtype(ptype)
+ return (ptype == "color") or (ptype == "colorfacedir") or
+ (ptype == "colorwallmounted") or (ptype == "colordegrotate")
+end
+
+function core.strip_param2_color(param2, paramtype2)
+ if not core.is_colored_paramtype(paramtype2) then
+ return nil
+ end
+ if paramtype2 == "colorfacedir" then
+ param2 = math.floor(param2 / 32) * 32
+ elseif paramtype2 == "colorwallmounted" then
+ param2 = math.floor(param2 / 8) * 8
+ elseif paramtype2 == "colordegrotate" then
+ param2 = math.floor(param2 / 32) * 32
+ end
+ -- paramtype2 == "color" requires no modification.
+ return param2
+end
diff --git a/builtin/game/knockback.lua b/builtin/game/knockback.lua
new file mode 100644
index 000000000..a937aa186
--- /dev/null
+++ b/builtin/game/knockback.lua
@@ -0,0 +1,46 @@
+-- can be overriden by mods
+function core.calculate_knockback(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage)
+ if damage == 0 or player:get_armor_groups().immortal then
+ return 0.0
+ end
+
+ local m = 8
+ -- solve m - m*e^(k*4) = 4 for k
+ local k = -0.17328
+ local res = m - m * math.exp(k * damage)
+
+ if distance < 2.0 then
+ res = res * 1.1 -- more knockback when closer
+ elseif distance > 4.0 then
+ res = res * 0.9 -- less when far away
+ end
+ return res
+end
+
+local function vector_absmax(v)
+ local max, abs = math.max, math.abs
+ return max(max(abs(v.x), abs(v.y)), abs(v.z))
+end
+
+core.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, unused_dir, damage)
+ if player:get_hp() == 0 then
+ return -- RIP
+ end
+
+ -- Server::handleCommand_Interact() adds eye offset to one but not the other
+ -- so the direction is slightly off, calculate it ourselves
+ local dir = vector.subtract(player:get_pos(), hitter:get_pos())
+ local d = vector.length(dir)
+ if d ~= 0.0 then
+ dir = vector.divide(dir, d)
+ end
+
+ local k = core.calculate_knockback(player, hitter, time_from_last_punch, tool_capabilities, dir, d, damage)
+
+ local kdir = vector.multiply(dir, k)
+ if vector_absmax(kdir) < 1.0 then
+ return -- barely noticeable, so don't even send
+ end
+
+ player:add_velocity(kdir)
+end)
diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua
index 1333a75ba..997b1894a 100644
--- a/builtin/game/misc.lua
+++ b/builtin/game/misc.lua
@@ -1,66 +1,33 @@
-- Minetest: builtin/misc.lua
+local S = core.get_translator("__builtin")
+
--
-- Misc. API functions
--
-local jobs = {}
-local time = 0.0
-local last = core.get_us_time() / 1000000
-
-core.register_globalstep(function(dtime)
- local new = core.get_us_time() / 1000000
- if new > last then
- time = time + (new - last)
+-- @spec core.kick_player(String, String) :: Boolean
+function core.kick_player(player_name, reason)
+ if type(reason) == "string" then
+ reason = "Kicked: " .. reason
else
- -- Overflow, we may lose a little bit of time here but
- -- only 1 tick max, potentially running timers slightly
- -- too early.
- time = time + new
- end
- last = new
-
- if #jobs < 1 then
- return
- end
-
- -- Iterate backwards so that we miss any new timers added by
- -- a timer callback, and so that we don't skip the next timer
- -- in the list if we remove one.
- for i = #jobs, 1, -1 do
- local job = jobs[i]
- if time >= job.expire then
- core.set_last_run_mod(job.mod_origin)
- job.func(unpack(job.arg))
- table.remove(jobs, i)
- end
+ reason = "Kicked."
end
-end)
-
-function core.after(after, func, ...)
- assert(tonumber(after) and type(func) == "function",
- "Invalid core.after invocation")
- jobs[#jobs + 1] = {
- func = func,
- expire = time + after,
- arg = {...},
- mod_origin = core.get_last_run_mod()
- }
+ return core.disconnect_player(player_name, reason)
end
function core.check_player_privs(name, ...)
- local arg_type = type(name)
- if (arg_type == "userdata" or arg_type == "table") and
- name.get_player_name then -- If it quacks like a Player...
+ if core.is_player(name) then
name = name:get_player_name()
- elseif arg_type ~= "string" then
- error("Invalid core.check_player_privs argument type: " .. arg_type, 2)
+ elseif type(name) ~= "string" then
+ error("core.check_player_privs expects a player or playername as " ..
+ "argument.", 2)
end
-
+
local requested_privs = {...}
local player_privs = core.get_player_privs(name)
local missing_privileges = {}
-
+
if type(requested_privs[1]) == "table" then
-- We were provided with a table like { privA = true, privB = true }.
for priv, value in pairs(requested_privs[1]) do
@@ -76,51 +43,73 @@ function core.check_player_privs(name, ...)
end
end
end
-
+
if #missing_privileges > 0 then
return false, missing_privileges
end
-
+
return true, ""
end
-local player_list = {}
+
+function core.send_join_message(player_name)
+ if not core.is_singleplayer() then
+ core.chat_send_all("*** " .. S("@1 joined the game.", player_name))
+ end
+end
+
+
+function core.send_leave_message(player_name, timed_out)
+ local announcement = "*** " .. S("@1 left the game.", player_name)
+ if timed_out then
+ announcement = "*** " .. S("@1 left the game (timed out).", player_name)
+ end
+ core.chat_send_all(announcement)
+end
+
core.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
- player_list[player_name] = player
- core.chat_send_all("*** " .. player_name .. " joined the game.")
+ if not core.is_singleplayer() then
+ local status = core.get_server_status(player_name, true)
+ if status and status ~= "" then
+ core.chat_send_player(player_name, status)
+ end
+ end
+ core.send_join_message(player_name)
end)
+
core.register_on_leaveplayer(function(player, timed_out)
local player_name = player:get_player_name()
- player_list[player_name] = nil
- local announcement = "*** " .. player_name .. " left the game."
- if timed_out then
- announcement = announcement .. " (timed out)"
- end
- core.chat_send_all(announcement)
+ core.send_leave_message(player_name, timed_out)
end)
-function core.get_connected_players()
- local temp_table = {}
- for index, value in pairs(player_list) do
- if value:is_player_connected() then
- temp_table[#temp_table + 1] = value
- end
- end
- return temp_table
+
+function core.is_player(player)
+ -- a table being a player is also supported because it quacks sufficiently
+ -- like a player if it has the is_player function
+ local t = type(player)
+ return (t == "userdata" or t == "table") and
+ type(player.is_player) == "function" and player:is_player()
end
+
+function core.player_exists(name)
+ return core.get_auth_handler().get_auth(name) ~= nil
+end
+
+
-- Returns two position vectors representing a box of `radius` in each
-- direction centered around the player corresponding to `player_name`
+
function core.get_player_radius_area(player_name, radius)
local player = core.get_player_by_name(player_name)
if player == nil then
return nil
end
- local p1 = player:getpos()
+ local p1 = player:get_pos()
local p2 = p1
if radius then
@@ -131,51 +120,73 @@ function core.get_player_radius_area(player_name, radius)
return p1, p2
end
-function core.hash_node_position(pos)
- return (pos.z+32768)*65536*65536 + (pos.y+32768)*65536 + pos.x+32768
-end
-function core.get_position_from_hash(hash)
- local pos = {}
- pos.x = (hash%65536) - 32768
- hash = math.floor(hash/65536)
- pos.y = (hash%65536) - 32768
- hash = math.floor(hash/65536)
- pos.z = (hash%65536) - 32768
- return pos
+-- To be overriden by protection mods
+
+function core.is_protected(pos, name)
+ return false
end
-function core.get_item_group(name, group)
- if not core.registered_items[name] or not
- core.registered_items[name].groups[group] then
- return 0
+
+function core.record_protection_violation(pos, name)
+ for _, func in pairs(core.registered_on_protection_violation) do
+ func(pos, name)
end
- return core.registered_items[name].groups[group]
end
-function core.get_node_group(name, group)
- core.log("deprecated", "Deprecated usage of get_node_group, use get_item_group instead")
- return core.get_item_group(name, group)
+-- To be overridden by Creative mods
+
+local creative_mode_cache = core.settings:get_bool("creative_mode")
+function core.is_creative_enabled(name)
+ return creative_mode_cache
end
-function core.setting_get_pos(name)
- local value = core.setting_get(name)
- if not value then
- return nil
+-- Checks if specified volume intersects a protected volume
+
+function core.is_area_protected(minp, maxp, player_name, interval)
+ -- 'interval' is the largest allowed interval for the 3D lattice of checks.
+
+ -- Compute the optimal float step 'd' for each axis so that all corners and
+ -- borders are checked. 'd' will be smaller or equal to 'interval'.
+ -- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the
+ -- for loop (which might otherwise not be the case due to rounding errors).
+
+ -- Default to 4
+ interval = interval or 4
+ local d = {}
+
+ for _, c in pairs({"x", "y", "z"}) do
+ if minp[c] > maxp[c] then
+ -- Repair positions: 'minp' > 'maxp'
+ local tmp = maxp[c]
+ maxp[c] = minp[c]
+ minp[c] = tmp
+ end
+
+ if maxp[c] > minp[c] then
+ d[c] = (maxp[c] - minp[c]) /
+ math.ceil((maxp[c] - minp[c]) / interval) - 1e-4
+ else
+ d[c] = 1 -- Any value larger than 0 to avoid division by zero
+ end
end
- return core.string_to_pos(value)
-end
--- To be overriden by protection mods
-function core.is_protected(pos, name)
+ for zf = minp.z, maxp.z, d.z do
+ local z = math.floor(zf + 0.5)
+ for yf = minp.y, maxp.y, d.y do
+ local y = math.floor(yf + 0.5)
+ for xf = minp.x, maxp.x, d.x do
+ local x = math.floor(xf + 0.5)
+ local pos = vector.new(x, y, z)
+ if core.is_protected(pos, player_name) then
+ return pos
+ end
+ end
+ end
+ end
return false
end
-function core.record_protection_violation(pos, name)
- for _, func in pairs(core.registered_on_protection_violation) do
- func(pos, name)
- end
-end
local raillike_ids = {}
local raillike_cur_id = 0
@@ -189,8 +200,10 @@ function core.raillike_group(name)
return id
end
+
-- HTTP callback interface
-function core.http_add_fetch(httpenv)
+
+core.set_http_api_lua(function(httpenv)
httpenv.fetch = function(req, callback)
local handle = httpenv.fetch_async(req)
@@ -206,36 +219,48 @@ function core.http_add_fetch(httpenv)
end
return httpenv
+end)
+core.set_http_api_lua = nil
+
+
+function core.close_formspec(player_name, formname)
+ return core.show_formspec(player_name, formname, "")
end
-if minetest.setting_getbool("disable_escape_sequences") then
- function core.get_color_escape_sequence(color)
- return ""
- end
+function core.cancel_shutdown_requests()
+ core.request_shutdown("", false, -1)
+end
- function core.get_background_escape_sequence(color)
- return ""
- end
- function core.colorize(color, message)
- return message
- end
+-- Used for callback handling with dynamic_add_media
+core.dynamic_media_callbacks = {}
-else
- local ESCAPE_CHAR = string.char(0x1b)
- function core.get_color_escape_sequence(color)
- return ESCAPE_CHAR .. "(c@" .. color .. ")"
- end
+-- Transfer of certain globals into async environment
+-- see builtin/async/game.lua for the other side
- function core.get_background_escape_sequence(color)
- return ESCAPE_CHAR .. "(b@" .. color .. ")"
+local function copy_filtering(t, seen)
+ if type(t) == "userdata" or type(t) == "function" then
+ return true -- don't use nil so presence can still be detected
+ elseif type(t) ~= "table" then
+ return t
end
-
- function core.colorize(color, message)
- return core.get_color_escape_sequence(color) .. message .. core.get_color_escape_sequence("#ffffff")
+ local n = {}
+ seen = seen or {}
+ seen[t] = n
+ for k, v in pairs(t) do
+ local k_ = seen[k] or copy_filtering(k, seen)
+ local v_ = seen[v] or copy_filtering(v, seen)
+ n[k_] = v_
end
-
+ return n
end
+function core.get_globals_to_transfer()
+ local all = {
+ registered_items = copy_filtering(core.registered_items),
+ registered_aliases = core.registered_aliases,
+ }
+ return all
+end
diff --git a/builtin/game/misc_s.lua b/builtin/game/misc_s.lua
new file mode 100644
index 000000000..67a0ec684
--- /dev/null
+++ b/builtin/game/misc_s.lua
@@ -0,0 +1,93 @@
+-- Minetest: builtin/misc_s.lua
+-- The distinction of what goes here is a bit tricky, basically it's everything
+-- that does not (directly or indirectly) need access to ServerEnvironment,
+-- Server or writable access to IGameDef on the engine side.
+-- (The '_s' stands for standalone.)
+
+--
+-- Misc. API functions
+--
+
+function core.hash_node_position(pos)
+ return (pos.z + 32768) * 65536 * 65536
+ + (pos.y + 32768) * 65536
+ + pos.x + 32768
+end
+
+
+function core.get_position_from_hash(hash)
+ local x = (hash % 65536) - 32768
+ hash = math.floor(hash / 65536)
+ local y = (hash % 65536) - 32768
+ hash = math.floor(hash / 65536)
+ local z = (hash % 65536) - 32768
+ return vector.new(x, y, z)
+end
+
+
+function core.get_item_group(name, group)
+ if not core.registered_items[name] or not
+ core.registered_items[name].groups[group] then
+ return 0
+ end
+ return core.registered_items[name].groups[group]
+end
+
+
+function core.get_node_group(name, group)
+ core.log("deprecated", "Deprecated usage of get_node_group, use get_item_group instead")
+ return core.get_item_group(name, group)
+end
+
+
+function core.setting_get_pos(name)
+ local value = core.settings:get(name)
+ if not value then
+ return nil
+ end
+ return core.string_to_pos(value)
+end
+
+
+-- See l_env.cpp for the other functions
+function core.get_artificial_light(param1)
+ return math.floor(param1 / 16)
+end
+
+-- PNG encoder safety wrapper
+
+local o_encode_png = core.encode_png
+function core.encode_png(width, height, data, compression)
+ if type(width) ~= "number" then
+ error("Incorrect type for 'width', expected number, got " .. type(width))
+ end
+ if type(height) ~= "number" then
+ error("Incorrect type for 'height', expected number, got " .. type(height))
+ end
+
+ local expected_byte_count = width * height * 4
+
+ if type(data) ~= "table" and type(data) ~= "string" then
+ error("Incorrect type for 'data', expected table or string, got " .. type(data))
+ end
+
+ local data_length = type(data) == "table" and #data * 4 or string.len(data)
+
+ if data_length ~= expected_byte_count then
+ error(string.format(
+ "Incorrect length of 'data', width and height imply %d bytes but %d were provided",
+ expected_byte_count,
+ data_length
+ ))
+ end
+
+ if type(data) == "table" then
+ local dataBuf = {}
+ for i = 1, #data do
+ dataBuf[i] = core.colorspec_to_bytes(data[i])
+ end
+ data = table.concat(dataBuf)
+ end
+
+ return o_encode_png(width, height, data, compression or 6)
+end
diff --git a/builtin/game/privileges.lua b/builtin/game/privileges.lua
index 56e090f4c..2ff4c093c 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
--
@@ -11,11 +13,14 @@ function core.register_privilege(name, param)
if def.give_to_singleplayer == nil then
def.give_to_singleplayer = true
end
+ if def.give_to_admin == nil then
+ 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 = {}
+ local def
if type(param) == "table" then
def = param
else
@@ -25,68 +30,79 @@ 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"))
+
+local basic_privs =
+ core.string_to_privs((core.settings:get("basic_privs") or "shout,interact"))
+local basic_privs_desc = S("Can modify basic privileges (@1)",
+ core.privs_to_string(basic_privs, ', '))
+core.register_privilege("basic_privs", basic_privs_desc)
+
+core.register_privilege("privs", S("Can modify privileges"))
core.register_privilege("teleport", {
- description = "Can use /teleport command",
+ 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 use /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 fly using the free_move mode",
+ description = S("Can use fly mode"),
give_to_singleplayer = false,
})
core.register_privilege("fast", {
- description = "Can walk fast using the fast_move mode",
+ description = S("Can use fast mode"),
give_to_singleplayer = false,
})
core.register_privilege("noclip", {
- description = "Can fly through walls",
+ description = S("Can fly through solid nodes using noclip mode"),
give_to_singleplayer = false,
})
core.register_privilege("rollback", {
- description = "Can use the rollback functionality",
- give_to_singleplayer = false,
-})
-core.register_privilege("zoom", {
- description = "Can zoom the camera",
+ 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("Can enable wireframe"),
give_to_singleplayer = false,
})
+
+core.register_can_bypass_userlimit(function(name, ip)
+ local privs = core.get_player_privs(name)
+ return privs["server"] or privs["ban"] or privs["privs"] or privs["password"]
+end)
diff --git a/builtin/game/register.lua b/builtin/game/register.lua
index 90f095e9f..8b6f5b990 100644
--- a/builtin/game/register.lua
+++ b/builtin/game/register.lua
@@ -1,4 +1,6 @@
--- Minetest: builtin/misc_register.lua
+-- Minetest: builtin/register.lua
+
+local S = core.get_translator("__builtin")
--
-- Make raw registration functions inaccessible to anyone except this file
@@ -65,20 +67,21 @@ local function check_modname_prefix(name)
error("Name " .. name .. " does not follow naming conventions: " ..
"\"" .. expected_prefix .. "\" or \":\" prefix required")
end
-
+
-- Enforce that the name only contains letters, numbers and underscores.
local subname = name:sub(#expected_prefix+1)
if subname:find("[^%w_]") then
error("Name " .. name .. " does not follow naming conventions: " ..
"contains unallowed characters")
end
-
+
return name
end
end
function core.register_abm(spec)
-- Add to core.registered_abms
+ assert(type(spec.action) == "function", "Required field 'action' of type function")
core.registered_abms[#core.registered_abms + 1] = spec
spec.mod_origin = core.get_current_modname() or "??"
end
@@ -86,6 +89,7 @@ end
function core.register_lbm(spec)
-- Add to core.registered_lbms
check_modname_prefix(spec.name)
+ assert(type(spec.action) == "function", "Required field 'action' of type function")
core.registered_lbms[#core.registered_lbms + 1] = spec
spec.mod_origin = core.get_current_modname() or "??"
end
@@ -254,6 +258,18 @@ function core.register_tool(name, tooldef)
end
-- END Legacy stuff
+ -- This isn't just legacy, but more of a convenience feature
+ local toolcaps = tooldef.tool_capabilities
+ if toolcaps and toolcaps.punch_attack_uses == nil then
+ for _, cap in pairs(toolcaps.groupcaps or {}) do
+ local level = (cap.maxlevel or 0) - 1
+ if (cap.uses or 0) ~= 0 and level >= 0 then
+ toolcaps.punch_attack_uses = cap.uses * (3 ^ level)
+ break
+ end
+ end
+ end
+
core.register_item(name, tooldef)
end
@@ -287,40 +303,34 @@ end
function core.on_craft(itemstack, player, old_craft_list, craft_inv)
for _, func in ipairs(core.registered_on_crafts) do
- itemstack = func(itemstack, player, old_craft_list, craft_inv) or itemstack
+ -- cast to ItemStack since func() could return a string
+ itemstack = ItemStack(func(itemstack, player, old_craft_list, craft_inv) or itemstack)
end
return itemstack
end
function core.craft_predict(itemstack, player, old_craft_list, craft_inv)
for _, func in ipairs(core.registered_craft_predicts) do
- itemstack = func(itemstack, player, old_craft_list, craft_inv) or itemstack
+ -- cast to ItemStack since func() could return a string
+ itemstack = ItemStack(func(itemstack, player, old_craft_list, craft_inv) or itemstack)
end
return itemstack
end
-- Alias the forbidden item names to "" so they can't be
-- created via itemstrings (e.g. /give)
-local name
for name in pairs(forbidden_item_names) do
core.registered_aliases[name] = ""
register_alias_raw(name, "")
end
-
--- Deprecated:
--- Aliases for core.register_alias (how ironic...)
---core.alias_node = core.register_alias
---core.alias_tool = core.register_alias
---core.alias_craftitem = core.register_alias
-
--
-- Built-in node definitions. Also defined in C.
--
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,
@@ -330,9 +340,9 @@ core.register_item(":unknown", {
})
core.register_node(":air", {
- description = "Air (you hacker you!)",
- inventory_image = "unknown_node.png",
- wield_image = "unknown_node.png",
+ description = S("Air"),
+ inventory_image = "air.png",
+ wield_image = "air.png",
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
@@ -347,9 +357,9 @@ core.register_node(":air", {
})
core.register_node(":ignore", {
- description = "Ignore (you hacker you!)",
- inventory_image = "unknown_node.png",
- wield_image = "unknown_node.png",
+ description = S("Ignore"),
+ inventory_image = "ignore.png",
+ wield_image = "ignore.png",
drawtype = "airlike",
paramtype = "none",
sunlight_propagates = false,
@@ -360,11 +370,20 @@ 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",
+ S("You can't place 'ignore' nodes!")))
+ return ""
+ end,
})
-- The hand (bare definition)
core.register_item(":", {
type = "none",
+ wield_image = "wieldhand.png",
groups = {not_in_creative_inventory=1},
})
@@ -386,8 +405,14 @@ function core.override_item(name, redefinition)
register_item_raw(item)
end
-
-core.callback_origins = {}
+do
+ local default = {mod = "??", name = "??"}
+ core.callback_origins = setmetatable({}, {
+ __index = function()
+ return default
+ end
+ })
+end
function core.run_callbacks(callbacks, mode, ...)
assert(type(callbacks) == "table")
@@ -402,13 +427,7 @@ function core.run_callbacks(callbacks, mode, ...)
local ret = nil
for i = 1, cb_len do
local origin = core.callback_origins[callbacks[i]]
- if origin then
- core.set_last_run_mod(origin.mod)
- --print("Running " .. tostring(callbacks[i]) ..
- -- " (a " .. origin.name .. " callback in " .. origin.mod .. ")")
- else
- --print("No data associated with callback")
- end
+ core.set_last_run_mod(origin.mod)
local cb_ret = callbacks[i](...)
if mode == 0 and i == 1 then
@@ -435,6 +454,18 @@ function core.run_callbacks(callbacks, mode, ...)
return ret
end
+function core.run_priv_callbacks(name, priv, caller, method)
+ local def = core.registered_privileges[priv]
+ if not def or not def["on_" .. method] or
+ not def["on_" .. method](name, caller) then
+ for _, func in ipairs(core["registered_on_priv_" .. method]) do
+ if not func(name, caller, priv) then
+ break
+ end
+ end
+ end
+end
+
--
-- Callback registration
--
@@ -494,13 +525,32 @@ local function make_registration_wrap(reg_fn_name, clear_fn_name)
return list
end
+local function make_wrap_deregistration(reg_fn, clear_fn, list)
+ local unregister = function (key)
+ if type(key) ~= "string" then
+ error("key is not a string", 2)
+ end
+ if not list[key] then
+ error("Attempt to unregister non-existent element - '" .. key .. "'", 2)
+ end
+ local temporary_list = table.copy(list)
+ clear_fn()
+ for k,v in pairs(temporary_list) do
+ if key ~= k then
+ reg_fn(v)
+ end
+ end
+ end
+ return unregister
+end
+
core.registered_on_player_hpchanges = { modifiers = { }, loggers = { } }
-function core.registered_on_player_hpchange(player, hp_change)
- local last = false
+function core.registered_on_player_hpchange(player, hp_change, reason)
+ local last
for i = #core.registered_on_player_hpchanges.modifiers, 1, -1 do
local func = core.registered_on_player_hpchanges.modifiers[i]
- hp_change, last = func(player, hp_change)
+ hp_change, last = func(player, hp_change, reason)
if type(hp_change) ~= "number" then
local debuginfo = debug.getinfo(func)
error("The register_on_hp_changes function has to return a number at " ..
@@ -511,7 +561,7 @@ function core.registered_on_player_hpchange(player, hp_change)
end
end
for i, func in ipairs(core.registered_on_player_hpchanges.loggers) do
- func(player, hp_change)
+ func(player, hp_change, reason)
end
return hp_change
end
@@ -532,9 +582,14 @@ core.registered_biomes = make_registration_wrap("register_biome", "cle
core.registered_ores = make_registration_wrap("register_ore", "clear_registered_ores")
core.registered_decorations = make_registration_wrap("register_decoration", "clear_registered_decorations")
+core.unregister_biome = make_wrap_deregistration(core.register_biome,
+ core.clear_registered_biomes, core.registered_biomes)
+
core.registered_on_chat_messages, core.register_on_chat_message = make_registration()
+core.registered_on_chatcommands, core.register_on_chatcommand = make_registration()
core.registered_globalsteps, core.register_globalstep = make_registration()
core.registered_playerevents, core.register_playerevent = make_registration()
+core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration()
core.registered_on_shutdown, core.register_on_shutdown = make_registration()
core.registered_on_punchnodes, core.register_on_punchnode = make_registration()
core.registered_on_placenodes, core.register_on_placenode = make_registration()
@@ -553,10 +608,18 @@ core.registered_craft_predicts, core.register_craft_predict = make_registration(
core.registered_on_protection_violation, core.register_on_protection_violation = make_registration()
core.registered_on_item_eats, core.register_on_item_eat = make_registration()
core.registered_on_punchplayers, core.register_on_punchplayer = make_registration()
+core.registered_on_priv_grant, core.register_on_priv_grant = make_registration()
+core.registered_on_priv_revoke, core.register_on_priv_revoke = make_registration()
+core.registered_on_authplayers, core.register_on_authplayer = make_registration()
+core.registered_can_bypass_userlimit, core.register_can_bypass_userlimit = make_registration()
+core.registered_on_modchannel_message, core.register_on_modchannel_message = make_registration()
+core.registered_on_player_inventory_actions, core.register_on_player_inventory_action = make_registration()
+core.registered_allow_player_inventory_actions, core.register_allow_player_inventory_action = make_registration()
+core.registered_on_rightclickplayers, core.register_on_rightclickplayer = make_registration()
+core.registered_on_liquid_transformed, core.register_on_liquid_transformed = make_registration()
--
-- Compatibility for on_mapgen_init()
--
core.register_on_mapgen_init = function(func) func(core.get_mapgen_params()) end
-
diff --git a/builtin/game/statbars.lua b/builtin/game/statbars.lua
index 61a8b9077..78d1d2728 100644
--- a/builtin/game/statbars.lua
+++ b/builtin/game/statbars.lua
@@ -1,84 +1,100 @@
-
-local health_bar_definition =
-{
- hud_elem_type = "statbar",
- position = { x=0.5, y=1 },
- text = "heart.png",
- number = 20,
- direction = 0,
- size = { x=24, y=24 },
- offset = { x=(-10*24)-25, y=-(48+24+16)},
-}
-
-local breath_bar_definition =
-{
- hud_elem_type = "statbar",
- position = { x=0.5, y=1 },
- text = "bubble.png",
- number = 20,
- direction = 0,
- size = { x=24, y=24 },
- offset = {x=25,y=-(48+24+16)},
+-- cache setting
+local enable_damage = core.settings:get_bool("enable_damage")
+
+local bar_definitions = {
+ hp = {
+ hud_elem_type = "statbar",
+ position = {x = 0.5, y = 1},
+ text = "heart.png",
+ text2 = "heart_gone.png",
+ number = core.PLAYER_MAX_HP_DEFAULT,
+ item = core.PLAYER_MAX_HP_DEFAULT,
+ direction = 0,
+ size = {x = 24, y = 24},
+ offset = {x = (-10 * 24) - 25, y = -(48 + 24 + 16)},
+ },
+ breath = {
+ hud_elem_type = "statbar",
+ position = {x = 0.5, y = 1},
+ text = "bubble.png",
+ text2 = "bubble_gone.png",
+ number = core.PLAYER_MAX_BREATH_DEFAULT * 2,
+ item = core.PLAYER_MAX_BREATH_DEFAULT * 2,
+ direction = 0,
+ size = {x = 24, y = 24},
+ offset = {x = 25, y= -(48 + 24 + 16)},
+ },
}
local hud_ids = {}
-local function initialize_builtin_statbars(player)
-
- if not player:is_player() then
- return
- end
+local function scaleToHudMax(player, field)
+ -- Scale "hp" or "breath" to the hud maximum dimensions
+ local current = player["get_" .. field](player)
+ local nominal = bar_definitions[field].item
+ local max_display = math.max(player:get_properties()[field .. "_max"], current)
+ return math.ceil(current / max_display * nominal)
+end
+local function update_builtin_statbars(player)
local name = player:get_player_name()
if name == "" then
return
end
- if (hud_ids[name] == nil) then
+ local flags = player:hud_get_flags()
+ if not hud_ids[name] then
hud_ids[name] = {}
-- flags are not transmitted to client on connect, we need to make sure
-- our current flags are transmitted by sending them actively
- player:hud_set_flags(player:hud_get_flags())
+ player:hud_set_flags(flags)
end
+ local hud = hud_ids[name]
+
+ local immortal = player:get_armor_groups().immortal == 1
- if player:hud_get_flags().healthbar and
- core.is_yes(core.setting_get("enable_damage")) then
- if hud_ids[name].id_healthbar == nil then
- health_bar_definition.number = player:get_hp()
- hud_ids[name].id_healthbar = player:hud_add(health_bar_definition)
+ if flags.healthbar and enable_damage and not immortal then
+ local number = scaleToHudMax(player, "hp")
+ if hud.id_healthbar == nil then
+ local hud_def = table.copy(bar_definitions.hp)
+ hud_def.number = number
+ hud.id_healthbar = player:hud_add(hud_def)
+ else
+ player:hud_change(hud.id_healthbar, "number", number)
end
- else
- if hud_ids[name].id_healthbar ~= nil then
- player:hud_remove(hud_ids[name].id_healthbar)
- hud_ids[name].id_healthbar = nil
+ elseif hud.id_healthbar then
+ player:hud_remove(hud.id_healthbar)
+ hud.id_healthbar = nil
+ end
+
+ local show_breathbar = flags.breathbar and enable_damage and not immortal
+
+ local breath = player:get_breath()
+ local breath_max = player:get_properties().breath_max
+ if show_breathbar and breath <= breath_max then
+ local number = scaleToHudMax(player, "breath")
+ if not hud.id_breathbar and breath < breath_max then
+ local hud_def = table.copy(bar_definitions.breath)
+ hud_def.number = number
+ hud.id_breathbar = player:hud_add(hud_def)
+ elseif hud.id_breathbar then
+ player:hud_change(hud.id_breathbar, "number", number)
end
end
- if (player:get_breath() < 11) then
- if player:hud_get_flags().breathbar and
- core.is_yes(core.setting_get("enable_damage")) then
- if hud_ids[name].id_breathbar == nil then
- hud_ids[name].id_breathbar = player:hud_add(breath_bar_definition)
+ if hud.id_breathbar and (not show_breathbar or breath == breath_max) then
+ 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
- else
- if hud_ids[name].id_breathbar ~= nil then
- player:hud_remove(hud_ids[name].id_breathbar)
- hud_ids[name].id_breathbar = nil
- end
- end
- elseif hud_ids[name].id_breathbar ~= nil then
- player:hud_remove(hud_ids[name].id_breathbar)
- hud_ids[name].id_breathbar = nil
+ end, name, hud.id_breathbar)
+ hud.id_breathbar = nil
end
end
local function cleanup_builtin_statbars(player)
-
- if not player:is_player() then
- return
- end
-
local name = player:get_player_name()
if name == "" then
@@ -93,65 +109,67 @@ local function player_event_handler(player,eventname)
local name = player:get_player_name()
- if name == "" then
+ if name == "" or not hud_ids[name] then
return
end
if eventname == "health_changed" then
- initialize_builtin_statbars(player)
+ update_builtin_statbars(player)
- if hud_ids[name].id_healthbar ~= nil then
- player:hud_change(hud_ids[name].id_healthbar,"number",player:get_hp())
+ if hud_ids[name].id_healthbar then
return true
end
end
if eventname == "breath_changed" then
- initialize_builtin_statbars(player)
+ update_builtin_statbars(player)
- if hud_ids[name].id_breathbar ~= nil then
- player:hud_change(hud_ids[name].id_breathbar,"number",player:get_breath()*2)
+ if hud_ids[name].id_breathbar then
return true
end
end
- if eventname == "hud_changed" then
- initialize_builtin_statbars(player)
+ if eventname == "hud_changed" or eventname == "properties_changed" then
+ update_builtin_statbars(player)
return true
end
return false
end
-function core.hud_replace_builtin(name, definition)
-
- if definition == nil or
- type(definition) ~= "table" or
- definition.hud_elem_type ~= "statbar" then
+function core.hud_replace_builtin(hud_name, definition)
+ if type(definition) ~= "table" or
+ definition.hud_elem_type ~= "statbar" then
return false
end
- if name == "health" then
- health_bar_definition = definition
+ definition = table.copy(definition)
+
+ if hud_name == "health" then
+ definition.item = definition.item or definition.number or core.PLAYER_MAX_HP_DEFAULT
+ bar_definitions.hp = definition
- for name,ids in pairs(hud_ids) do
+ for name, ids in pairs(hud_ids) do
local player = core.get_player_by_name(name)
- if player and hud_ids[name].id_healthbar then
- player:hud_remove(hud_ids[name].id_healthbar)
- initialize_builtin_statbars(player)
+ if player and ids.id_healthbar then
+ player:hud_remove(ids.id_healthbar)
+ ids.id_healthbar = nil
+ update_builtin_statbars(player)
end
end
return true
end
- if name == "breath" then
- breath_bar_definition = definition
+ if hud_name == "breath" then
+ definition.item = definition.item or definition.number or core.PLAYER_MAX_BREATH_DEFAULT
+ bar_definitions.breath = definition
- for name,ids in pairs(hud_ids) do
+ for name, ids in pairs(hud_ids) do
local player = core.get_player_by_name(name)
- if player and hud_ids[name].id_breathbar then
- player:hud_remove(hud_ids[name].id_breathbar)
- initialize_builtin_statbars(player)
+ if player and ids.id_breathbar then
+ player:hud_remove(ids.id_breathbar)
+ ids.id_breathbar = nil
+ update_builtin_statbars(player)
end
end
return true
@@ -160,6 +178,10 @@ function core.hud_replace_builtin(name, definition)
return false
end
-core.register_on_joinplayer(initialize_builtin_statbars)
+-- Append "update_builtin_statbars" as late as possible
+-- This ensures that the HUD is hidden when the flags are updated in this callback
+core.register_on_mods_loaded(function()
+ core.register_on_joinplayer(update_builtin_statbars)
+end)
core.register_on_leaveplayer(cleanup_builtin_statbars)
core.register_playerevent(player_event_handler)
diff --git a/builtin/game/static_spawn.lua b/builtin/game/static_spawn.lua
index 100334226..fae23eab0 100644
--- a/builtin/game/static_spawn.lua
+++ b/builtin/game/static_spawn.lua
@@ -1,15 +1,13 @@
-- Minetest: builtin/static_spawn.lua
-local function warn_invalid_static_spawnpoint()
- if core.setting_get("static_spawnpoint") and
- not core.setting_get_pos("static_spawnpoint") then
- core.log("error", "The static_spawnpoint setting is invalid: \""..
- core.setting_get("static_spawnpoint").."\"")
- end
+local static_spawnpoint_string = core.settings:get("static_spawnpoint")
+if static_spawnpoint_string and
+ static_spawnpoint_string ~= "" and
+ not core.setting_get_pos("static_spawnpoint") then
+ error('The static_spawnpoint setting is invalid: "' ..
+ static_spawnpoint_string .. '"')
end
-warn_invalid_static_spawnpoint()
-
local function put_player_in_spawn(player_obj)
local static_spawnpoint = core.setting_get_pos("static_spawnpoint")
if not static_spawnpoint then
@@ -17,7 +15,7 @@ local function put_player_in_spawn(player_obj)
end
core.log("action", "Moving " .. player_obj:get_player_name() ..
" to static spawnpoint at " .. core.pos_to_string(static_spawnpoint))
- player_obj:setpos(static_spawnpoint)
+ player_obj:set_pos(static_spawnpoint)
return true
end
diff --git a/builtin/game/voxelarea.lua b/builtin/game/voxelarea.lua
index 724761414..62f07d928 100644
--- a/builtin/game/voxelarea.lua
+++ b/builtin/game/voxelarea.lua
@@ -1,6 +1,9 @@
+local math_floor = math.floor
+local vector_new = vector.new
+
VoxelArea = {
- MinEdge = {x=1, y=1, z=1},
- MaxEdge = {x=0, y=0, z=0},
+ MinEdge = vector_new(1, 1, 1),
+ MaxEdge = vector_new(0, 0, 0),
ystride = 0,
zstride = 0,
}
@@ -19,11 +22,11 @@ end
function VoxelArea:getExtent()
local MaxEdge, MinEdge = self.MaxEdge, self.MinEdge
- return {
- x = MaxEdge.x - MinEdge.x + 1,
- y = MaxEdge.y - MinEdge.y + 1,
- z = MaxEdge.z - MinEdge.z + 1,
- }
+ return vector_new(
+ MaxEdge.x - MinEdge.x + 1,
+ MaxEdge.y - MinEdge.y + 1,
+ MaxEdge.z - MinEdge.z + 1
+ )
end
function VoxelArea:getVolume()
@@ -36,7 +39,7 @@ function VoxelArea:index(x, y, z)
local i = (z - MinEdge.z) * self.zstride +
(y - MinEdge.y) * self.ystride +
(x - MinEdge.x) + 1
- return math.floor(i)
+ return math_floor(i)
end
function VoxelArea:indexp(p)
@@ -44,24 +47,23 @@ function VoxelArea:indexp(p)
local i = (p.z - MinEdge.z) * self.zstride +
(p.y - MinEdge.y) * self.ystride +
(p.x - MinEdge.x) + 1
- return math.floor(i)
+ return math_floor(i)
end
function VoxelArea:position(i)
- local p = {}
local MinEdge = self.MinEdge
i = i - 1
- p.z = math.floor(i / self.zstride) + MinEdge.z
+ local z = math_floor(i / self.zstride) + MinEdge.z
i = i % self.zstride
- p.y = math.floor(i / self.ystride) + MinEdge.y
+ local y = math_floor(i / self.ystride) + MinEdge.y
i = i % self.ystride
- p.x = math.floor(i) + MinEdge.x
+ local x = math_floor(i) + MinEdge.x
- return p
+ return vector_new(x, y, z)
end
function VoxelArea:contains(x, y, z)
diff --git a/builtin/init.lua b/builtin/init.lua
index 4400a19d6..869136016 100644
--- a/builtin/init.lua
+++ b/builtin/init.lua
@@ -21,31 +21,47 @@ if core.print then
core.print = nil -- don't pollute our namespace
end
math.randomseed(os.time())
-os.setlocale("C", "numeric")
minetest = core
-- Load other files
-local scriptdir = core.get_builtin_path() .. DIR_DELIM
+local scriptdir = core.get_builtin_path()
local gamepath = scriptdir .. "game" .. DIR_DELIM
+local clientpath = scriptdir .. "client" .. DIR_DELIM
local commonpath = scriptdir .. "common" .. DIR_DELIM
local asyncpath = scriptdir .. "async" .. DIR_DELIM
+dofile(commonpath .. "vector.lua")
dofile(commonpath .. "strict.lua")
dofile(commonpath .. "serialize.lua")
dofile(commonpath .. "misc_helpers.lua")
if INIT == "game" then
dofile(gamepath .. "init.lua")
+ assert(not core.get_http_api)
elseif INIT == "mainmenu" then
- local mainmenuscript = core.setting_get("main_menu_script")
- if mainmenuscript ~= nil and mainmenuscript ~= "" then
- dofile(mainmenuscript)
- else
+ local mm_script = core.settings:get("main_menu_script")
+ local custom_loaded = false
+ if mm_script and mm_script ~= "" then
+ 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
- dofile(asyncpath .. "init.lua")
+elseif INIT == "async" then
+ dofile(asyncpath .. "mainmenu.lua")
+elseif INIT == "async_game" then
+ dofile(asyncpath .. "game.lua")
+elseif INIT == "client" then
+ dofile(clientpath .. "init.lua")
else
error(("Unrecognized builtin initialization type %s!"):format(tostring(INIT)))
end
-
diff --git a/builtin/locale/__builtin.de.tr b/builtin/locale/__builtin.de.tr
new file mode 100644
index 000000000..4a17f7a4b
--- /dev/null
+++ b/builtin/locale/__builtin.de.tr
@@ -0,0 +1,246 @@
+# textdomain: __builtin
+Empty command.=Leerer Befehl.
+Invalid command: @1=Ungültiger Befehl: @1
+Invalid command usage.=Ungültige Befehlsverwendung.
+ (@1 s)= (@1 s)
+Command execution took @1 s=Befehlsausführung brauchte @1 s
+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.
+@1 does not have any privileges.=@1 hat keine Privilegien.
+Privileges of @1: @2=Privilegien von @1: @2
+[<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.
+<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!
+No online player has the "@1" privilege.=Kein online spielender Spieler hat das „@1“-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.
+Your privileges are insufficient. '@1' only allows you to grant: @2=Ihre Privilegien sind unzureichend. Mit „@1“ können Sie nur folgendes gewähren: @2
+Unknown privilege: @1=Unbekanntes Privileg: @1
+@1 granted you privileges: @2=@1 gewährte Ihnen Privilegien: @2
+<name> (<privilege> [, <privilege2> [<...>]] | all)=<Name> (<Privileg> [, <Privileg2> [<...>]] | all)
+Give privileges to player=Privileg an Spieler vergeben
+Invalid parameters (see /help grant).=Ungültige Parameter (siehe „/help grant“).
+<privilege> [, <privilege2> [<...>]] | all=<Privileg> [, <Privileg2> [<...>]] | all
+Grant privileges to yourself=Privilegien an Ihnen selbst vergeben
+Invalid parameters (see /help grantme).=Ungültige Parameter (siehe „/help grantme“).
+Your privileges are insufficient. '@1' only allows you to revoke: @2=Ihre Privilegien sind unzureichend. Mit „@1“ können Sie nur folgendes entziehen: @2
+Note: Cannot revoke in singleplayer: @1=Anmerkung: Im Einzelspielermodus kann man folgendes nicht entziehen: @1
+Note: Cannot revoke from admin: @1=Anmerkung: Vom Admin kann man folgendes nicht entziehen: @1
+No privileges were revoked.=Es wurden keine Privilegien entzogen.
+@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. Cannot modify secure settings. Edit the settings file manually.=Fehlgeschlagen. Sicherheitseinstellungen können nicht modifiziert werden. Bearbeiten Sie die Einstellungsdatei manuell.
+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
+No mods installed.=Es sind keine Mods installiert.
+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 (must be between 0 and 24000).=Ungültige Zeit (muss zwischen 0 und 24000 liegen).
+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] [-r] [<message>]=[<Verzögerung_in_Sekunden> | -1] [-r] [<Nachricht>]
+Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)=Server herunterfahren (-1 bricht einen verzögerten Abschaltvorgang ab, -r erlaubt Spielern, sich wiederzuverbinden)
+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
+You cannot ban players in singleplayer!=Im Einzelspielermodus können Sie keine Spieler verbannen!
+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)
+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
+Invalid parameters (see /help @1).=Ungültige Parameter (siehe „/help @1“).
+Too many arguments, try using just /help <command>=Zu viele Argumente. Probieren Sie es mit „/help <Befehl>“
+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>] [-t]=[all | privs | <Befehl>] [-t]
+Get help for commands or list privileges (-t: output in chat)=Hilfe für Befehle erhalten oder Privilegien auflisten (-t: Ausgabe im Chat)
+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
+Available privileges:=Verfügbare Privilegien:
+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).
+@1 joined the game.=@1 ist dem Spiel beigetreten.
+@1 left the game.=@1 hat das Spiel verlassen.
+@1 left the game (timed out).=@1 hat das Spiel verlassen (Netzwerkzeitüberschreitung).
+(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 basic privileges (@1)=Kann grundlegende Privilegien anpassen (@1)
+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
+Can enable wireframe=Kann Drahtmodell aktivieren
+Unknown Item=Unbekannter Gegenstand
+Air=Luft
+Ignore=Ignorieren
+You can't place 'ignore' nodes!=Sie können keine „ignore“-Blöcke platzieren!
+Values below show absolute/relative times spend per server step by the instrumented function.=Die unten angegebenen Werte zeigen absolute/relative Zeitspannen, die je Server-Step von der instrumentierten Funktion in Anspruch genommen wurden.
+A total of @1 sample(s) were taken.=Es wurden insgesamt @1 Datenpunkt(e) aufgezeichnet.
+The output is limited to '@1'.=Die Ausgabe ist beschränkt auf „@1“.
+Saving of profile failed: @1=Speichern des Profils fehlgeschlagen: @1
+Profile saved to @1=Profil abgespeichert nach @1
diff --git a/builtin/locale/__builtin.it.tr b/builtin/locale/__builtin.it.tr
new file mode 100644
index 000000000..b04b48926
--- /dev/null
+++ b/builtin/locale/__builtin.it.tr
@@ -0,0 +1,259 @@
+# textdomain: __builtin
+Empty command.=Comando vuoto.
+Invalid command: @1=Comando non valido: @1
+Invalid command usage.=Utilizzo del comando non valido.
+ (@1 s)=
+Command execution took @1 s=
+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.
+@1 does not have any privileges.=
+Privileges of @1: @2=Privilegi di @1: @2
+[<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.
+<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!
+No online player has the "@1" privilege.=
+Players online with the "@1" privilege: @2=Giocatori connessi con il privilegio "@1": @2
+Your privileges are insufficient.=I tuoi privilegi sono insufficienti.
+Your privileges are insufficient. '@1' only allows you to grant: @2=
+Unknown privilege: @1=Privilegio sconosciuto: @1
+@1 granted you privileges: @2=@1 ti ha assegnato i seguenti privilegi: @2
+<name> (<privilege> [, <privilege2> [<...>]] | all)=
+Give privileges to player=Dà privilegi al giocatore
+Invalid parameters (see /help grant).=Parametri non validi (vedi /help grant).
+<privilege> [, <privilege2> [<...>]] | all=
+Grant privileges to yourself=Assegna dei privilegi a te stessǝ
+Invalid parameters (see /help grantme).=Parametri non validi (vedi /help grantme).
+Your privileges are insufficient. '@1' only allows you to revoke: @2=
+Note: Cannot revoke in singleplayer: @1=
+Note: Cannot revoke from admin: @1=
+No privileges were revoked.=
+@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. Cannot modify secure settings. Edit the settings file manually.=
+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
+No mods installed.=
+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 (must be between 0 and 24000).=
+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] [-r] [<message>]=
+Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)=
+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
+You cannot ban players in singleplayer!=
+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ǝ
+Invalid parameters (see /help @1).=
+Too many arguments, try using just /help <command>=
+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>] [-t]=
+Get help for commands or list privileges (-t: output in chat)=
+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
+Available privileges:=Privilegi disponibili:
+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).
+@1 joined the game.=
+@1 left the game.=
+@1 left the game (timed out).=
+(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 basic privileges (@1)=
+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
+Can enable wireframe=
+Unknown Item=Oggetto sconosciuto
+Air=Aria
+Ignore=Ignora
+You can't place 'ignore' nodes!=Non puoi piazzare nodi 'ignore'!
+Values below show absolute/relative times spend per server step by the instrumented function.=
+A total of @1 sample(s) were taken.=
+The output is limited to '@1'.=
+Saving of profile failed: @1=
+Profile saved to @1=
+
+
+##### not used anymore #####
+
+Invalid time.=Orario non valido.
+[all | privs | <cmd>]=[all | privs | <comando>]
+Get help for commands or list privileges=Richiama la finestra d'aiuto dei comandi o dei privilegi
+Allows enabling various debug options that may affect gameplay=Permette di abilitare varie opzioni di debug che potrebbero influenzare l'esperienza di gioco
+[<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)
+<name> (<privilege> | all)=<nome> (<privilegio> | all)
+<privilege> | all=<privilegio> | all
+Can modify 'shout' and 'interact' privileges=Si possono modificare i privilegi 'shout' e 'interact'
diff --git a/builtin/locale/template.txt b/builtin/locale/template.txt
new file mode 100644
index 000000000..fa7352317
--- /dev/null
+++ b/builtin/locale/template.txt
@@ -0,0 +1,246 @@
+# textdomain: __builtin
+Empty command.=
+Invalid command: @1=
+Invalid command usage.=
+ (@1 s)=
+Command execution took @1 s=
+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.=
+@1 does not have any privileges.=
+Privileges of @1: @2=
+[<name>]=
+Show privileges of yourself or another player=
+Player @1 does not exist.=
+<privilege>=
+Return list of all online players with privilege=
+Invalid parameters (see /help haspriv).=
+Unknown privilege!=
+No online player has the "@1" privilege.=
+Players online with the "@1" privilege: @2=
+Your privileges are insufficient.=
+Your privileges are insufficient. '@1' only allows you to grant: @2=
+Unknown privilege: @1=
+@1 granted you privileges: @2=
+<name> (<privilege> [, <privilege2> [<...>]] | all)=
+Give privileges to player=
+Invalid parameters (see /help grant).=
+<privilege> [, <privilege2> [<...>]] | all=
+Grant privileges to yourself=
+Invalid parameters (see /help grantme).=
+Your privileges are insufficient. '@1' only allows you to revoke: @2=
+Note: Cannot revoke in singleplayer: @1=
+Note: Cannot revoke from admin: @1=
+No privileges were revoked.=
+@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. Cannot modify secure settings. Edit the settings file manually.=
+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=
+No mods installed.=
+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 (must be between 0 and 24000).=
+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] [-r] [<message>]=
+Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)=
+Server shutting down (operator request).=
+Ban the IP of a player or show the ban list=
+The ban list is empty.=
+Ban list: @1=
+You cannot ban players in singleplayer!=
+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=
+Invalid parameters (see /help @1).=
+Too many arguments, try using just /help <command>=
+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>] [-t]=
+Get help for commands or list privileges (-t: output in chat)=
+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=
+Available privileges:=
+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).=
+@1 joined the game.=
+@1 left the game.=
+@1 left the game (timed out).=
+(no description)=
+Can interact with things and modify the world=
+Can speak in chat=
+Can modify basic privileges (@1)=
+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=
+Can enable wireframe=
+Unknown Item=
+Air=
+Ignore=
+You can't place 'ignore' nodes!=
+Values below show absolute/relative times spend per server step by the instrumented function.=
+A total of @1 sample(s) were taken.=
+The output is limited to '@1'.=
+Saving of profile failed: @1=
+Profile saved to @1=
diff --git a/builtin/common/async_event.lua b/builtin/mainmenu/async_event.lua
index 988af79b9..04bfb78d6 100644
--- a/builtin/common/async_event.lua
+++ b/builtin/mainmenu/async_event.lua
@@ -8,15 +8,7 @@ local function handle_job(jobid, serialized_retval)
core.async_jobs[jobid] = nil
end
-if core.register_globalstep then
- core.register_globalstep(function(dtime)
- for i, job in ipairs(core.get_finished_jobs()) do
- handle_job(job.jobid, job.retval)
- end
- end)
-else
- core.async_event_handler = handle_job
-end
+core.async_event_handler = handle_job
function core.handle_async(func, parameter, callback)
-- Serialize function
diff --git a/builtin/mainmenu/common.lua b/builtin/mainmenu/common.lua
index da3667828..81e28f2bb 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,154 +26,116 @@ 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
local function configure_selected_world_params(idx)
- local worldconfig = modmgr.get_worldconfig(menudata.worldlist:get_list()[idx].path)
+ local worldconfig = pkgmgr.get_worldconfig(menudata.worldlist:get_list()[idx].path)
if worldconfig.creative_mode then
- core.setting_set("creative_mode", worldconfig.creative_mode)
+ core.settings:set("creative_mode", worldconfig.creative_mode)
end
if worldconfig.enable_damage then
- core.setting_set("enable_damage", worldconfig.enable_damage)
- 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 .. "server_flags_" .. flagname .. ".png")
-end
-
---------------------------------------------------------------------------------
-function order_favorite_list(list)
- local res = {}
- --orders the favorite list after support
- for i = 1, #list do
- local fav = list[i]
- if is_server_protocol_compat(fav.proto_min, fav.proto_max) then
- res[#res + 1] = fav
- end
- end
- for i = 1, #list do
- local fav = list[i]
- if not is_server_protocol_compat(fav.proto_min, fav.proto_max) then
- res[#res + 1] = fav
- end
+ core.settings:set("enable_damage", worldconfig.enable_damage)
end
- return res
end
---------------------------------------------------------------------------------
-function render_favorite(spec, is_favorite)
+function render_serverlist_row(spec)
local text = ""
if spec.name then
text = text .. core.formspec_escape(spec.name:trim())
elseif spec.address then
- text = text .. spec.address:trim()
+ text = text .. core.formspec_escape(spec.address:trim())
if spec.port then
text = text .. ":" .. spec.port
end
end
- local details = ""
- 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,"
+ 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
+ table.insert(details, "4")
+ end
else
- details = "0,"
+ table.insert(details, "0")
end
- if spec.clients and spec.clients_max then
- local clients_color = ''
+ 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
-- (relatively to clients_max)
+ local clients_color
if grey_out then clients_color = '#aaaaaa'
elseif spec.clients == 0 then clients_color = '' -- 0 players: default/white
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,"
+ table.insert(details, "1") -- creative icon
else
- details = details .. "0,"
- end
-
- if spec.damage then
- details = details .. "1,"
- 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
-end
-
---------------------------------------------------------------------------------
-os.tempfolder = function()
- if core.setting_get("TMPFolder") then
- return core.setting_get("TMPFolder") .. DIR_DELIM .. "MT_" .. math.random(0,10000)
- end
-
- local filetocheck = os.tmpname()
- os.remove(filetocheck)
-
- local randname = "MTTempModFolder_" .. math.random(0,10000)
- if DIR_DELIM == "\\" then
- local tempfolder = os.getenv("TEMP")
- return tempfolder .. filetocheck
- else
- local backstring = filetocheck:reverse()
- return filetocheck:sub(0,filetocheck:len()-backstring:find(DIR_DELIM)+1) ..randname
- end
+ table.insert(details, color)
+ table.insert(details, text)
+ return table.concat(details, ",")
+end
+---------------------------------------------------------------------------------
+os.tmpname = function()
+ error('do not use') -- instead use core.get_temp_path()
end
-
--------------------------------------------------------------------------------
+
function menu_render_worldlist()
- local retval = ""
+ local retval = {}
local current_worldlist = menudata.worldlist:get_list()
for i, v in ipairs(current_worldlist) do
- if retval ~= "" then retval = retval .. "," end
- retval = retval .. core.formspec_escape(v.name) ..
- " \\[" .. core.formspec_escape(v.gameid) .. "\\]"
+ retval[#retval+1] = core.formspec_escape(v.name)
end
- return retval
+ return table.concat(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
@@ -186,51 +145,15 @@ function menu_handle_key_up_down(fields, textlist, settingname)
oldidx < menudata.worldlist:size() then
newidx = oldidx + 1
end
- core.setting_set(settingname, menudata.worldlist:get_raw_index(newidx))
+ core.settings:set(settingname, menudata.worldlist:get_raw_index(newidx))
configure_selected_world_params(newidx)
return true
end
return false
end
---------------------------------------------------------------------------------
-function asyncOnlineFavourites()
- if not menudata.public_known then
- menudata.public_known = {{
- name = fgettext("Loading..."),
- description = fgettext_ne("Try reenabling public serverlist and check your internet connection.")
- }}
- end
- menudata.favorites = menudata.public_known
- menudata.favorites_is_public = true
-
- if not menudata.public_downloading then
- menudata.public_downloading = true
- else
- return
- end
-
- core.handle_async(
- function(param)
- return core.get_favorites("online")
- end,
- nil,
- function(result)
- menudata.public_downloading = nil
- local favs = order_favorite_list(result)
- if favs[1] then
- menudata.public_known = favs
- menudata.favorites = menudata.public_known
- menudata.favorites_is_public = true
- end
- core.event_handler("Refresh")
- end
- )
-end
-
---------------------------------------------------------------------------------
function text2textlist(xpos, ypos, width, height, tl_name, textlen, text, transparency)
- local textlines = core.splittext(text, textlen)
+ local textlines = core.wrap_text(text, textlen, true)
local retval = "textlist[" .. xpos .. "," .. ypos .. ";" .. width ..
"," .. height .. ";" .. tl_name .. ";"
@@ -246,7 +169,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.
@@ -254,7 +176,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
@@ -282,7 +204,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
@@ -308,9 +230,17 @@ function menu_worldmt_legacy(selected)
for _, mode_name in pairs(modes_names) do
local mode_val = menu_worldmt(selected, mode_name)
if mode_val then
- core.setting_set(mode_name, mode_val)
+ core.settings:set(mode_name, mode_val)
else
- menu_worldmt(selected, mode_name, core.setting_get(mode_name))
+ menu_worldmt(selected, mode_name, core.settings:get(mode_name))
end
end
end
+
+function confirmation_formspec(message, confirm_id, confirm_label, cancel_id, cancel_label)
+ return "size[10,2.5,true]" ..
+ "label[0.5,0.5;" .. message .. "]" ..
+ "style[" .. confirm_id .. ";bgcolor=red]" ..
+ "button[0.5,1.5;2.5,0.5;" .. confirm_id .. ";" .. confirm_label .. "]" ..
+ "button[7.0,1.5;2.5,0.5;" .. cancel_id .. ";" .. cancel_label .. "]"
+end
diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua
index 7b3ab9852..e76e10ef7 100644
--- a/builtin/mainmenu/dlg_config_world.lua
+++ b/builtin/mainmenu/dlg_config_world.lua
@@ -17,213 +17,304 @@
--------------------------------------------------------------------------------
-local enabled_all = false
+local enabled_all = false
local function modname_valid(name)
return not name:find("[^a-z0-9_]")
end
+local function init_data(data)
+ data.list = filterlist.create(
+ pkgmgr.preparemodlist,
+ pkgmgr.comparemod,
+ function(element, uid)
+ if element.name == uid then
+ return true
+ end
+ end,
+ function(element, criteria)
+ if criteria.hide_game and
+ element.is_game_content then
+ return false
+ end
+
+ if criteria.hide_modpackcontents and
+ element.modpack ~= nil then
+ return false
+ end
+ return true
+ end,
+ {
+ worldpath = data.worldspec.path,
+ gameid = data.worldspec.gameid
+ })
+
+ if data.selected_mod > data.list:size() then
+ data.selected_mod = 0
+ end
+
+ data.list:set_filtercriteria({
+ hide_game = data.hide_gamemods,
+ hide_modpackcontents = data.hide_modpackcontents
+ })
+ data.list:add_sort_mechanism("alphabetic", sort_mod_list)
+ data.list:set_sortmode("alphabetic")
+end
+
+
+-- Returns errors errors and a list of all enabled mods (inc. game and world mods)
+--
+-- `with_errors` is a table from mod virtual path to `{ type = "error" | "warning" }`.
+-- `enabled_mods_by_name` is a table from mod virtual path to `true`.
+--
+-- @param world_path Path to the world
+-- @param all_mods List of mods, with `enabled` property.
+-- @returns with_errors, enabled_mods_by_name
+local function check_mod_configuration(world_path, all_mods)
+ -- Build up lookup tables for enabled mods and all mods by vpath
+ local enabled_mod_paths = {}
+ local all_mods_by_vpath = {}
+ for _, mod in ipairs(all_mods) do
+ if mod.type == "mod" then
+ all_mods_by_vpath[mod.virtual_path] = mod
+ end
+ if mod.enabled then
+ enabled_mod_paths[mod.virtual_path] = mod.path
+ end
+ end
+
+ -- Use the engine's mod configuration code to resolve dependencies and return any errors
+ local config_status = core.check_mod_configuration(world_path, enabled_mod_paths)
+
+ -- Build the list of enabled mod virtual paths
+ local enabled_mods_by_name = {}
+ for _, mod in ipairs(config_status.satisfied_mods) do
+ assert(mod.virtual_path ~= "")
+ enabled_mods_by_name[mod.name] = all_mods_by_vpath[mod.virtual_path] or mod
+ end
+ for _, mod in ipairs(config_status.unsatisfied_mods) do
+ assert(mod.virtual_path ~= "")
+ enabled_mods_by_name[mod.name] = all_mods_by_vpath[mod.virtual_path] or mod
+ end
+
+ -- Build the table of errors
+ local with_error = {}
+ for _, mod in ipairs(config_status.unsatisfied_mods) do
+ local error = { type = "warning" }
+ with_error[mod.virtual_path] = error
+
+ for _, depname in ipairs(mod.unsatisfied_depends) do
+ if not enabled_mods_by_name[depname] then
+ error.type = "error"
+ break
+ end
+ end
+ end
+
+ return with_error, enabled_mods_by_name
+end
+
local function get_formspec(data)
+ if not data.list then
+ init_data(data)
+ end
+
+ local all_mods = data.list:get_list()
+ local with_error, enabled_mods_by_name = check_mod_configuration(data.worldspec.path, all_mods)
- local mod = data.list:get_list()[data.selected_mod]
+ local mod = all_mods[data.selected_mod] or {name = ""}
local retval =
"size[11.5,7.5,true]" ..
"label[0.5,0;" .. fgettext("World:") .. "]" ..
"label[1.75,0;" .. data.worldspec.name .. "]"
- if data.hide_gamemods then
- retval = retval .. "checkbox[1,6;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";true]"
+ if mod.is_modpack or mod.type == "game" then
+ local info = core.formspec_escape(
+ core.get_content_info(mod.path).description)
+ if info == "" then
+ if mod.is_modpack then
+ info = fgettext("No modpack description provided.")
+ else
+ info = fgettext("No game description provided.")
+ end
+ end
+ retval = retval ..
+ "textarea[0.25,0.7;5.75,7.2;;" .. info .. ";]"
else
- retval = retval .. "checkbox[1,6;cb_hide_gamemods;" .. fgettext("Hide Game") .. ";false]"
- end
+ local hard_deps, soft_deps = pkgmgr.get_dependencies(mod.path)
+
+ -- Add error messages to dep lists
+ if mod.enabled or mod.is_game_content then
+ for i, dep_name in ipairs(hard_deps) do
+ local dep = enabled_mods_by_name[dep_name]
+ if not dep then
+ hard_deps[i] = mt_color_red .. dep_name .. " " .. fgettext("(Unsatisfied)")
+ elseif with_error[dep.virtual_path] then
+ hard_deps[i] = mt_color_orange .. dep_name .. " " .. fgettext("(Enabled, has error)")
+ else
+ hard_deps[i] = mt_color_green .. dep_name
+ end
+ end
+ for i, dep_name in ipairs(soft_deps) do
+ local dep = enabled_mods_by_name[dep_name]
+ if dep and with_error[dep.virtual_path] then
+ soft_deps[i] = mt_color_orange .. dep_name .. " " .. fgettext("(Enabled, has error)")
+ elseif dep then
+ soft_deps[i] = mt_color_green .. dep_name
+ end
+ end
+ end
- if data.hide_modpackcontents then
- retval = retval .. "checkbox[6,6;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";true]"
- else
- retval = retval .. "checkbox[6,6;cb_hide_mpcontent;" .. fgettext("Hide mp content") .. ";false]"
- end
+ local hard_deps_str = table.concat(hard_deps, ",")
+ local soft_deps_str = table.concat(soft_deps, ",")
- if mod == nil then
- mod = {name=""}
+ retval = retval ..
+ "label[0,0.7;" .. fgettext("Mod:") .. "]" ..
+ "label[0.75,0.7;" .. mod.name .. "]"
+
+ if hard_deps_str == "" then
+ if soft_deps_str == "" then
+ retval = retval ..
+ "label[0,1.25;" ..
+ fgettext("No (optional) dependencies") .. "]"
+ else
+ retval = retval ..
+ "label[0,1.25;" .. fgettext("No hard dependencies") ..
+ "]" ..
+ "label[0,1.75;" .. fgettext("Optional dependencies:") ..
+ "]" ..
+ "textlist[0,2.25;5,4;world_config_optdepends;" ..
+ soft_deps_str .. ";0]"
+ end
+ else
+ if soft_deps_str == "" then
+ retval = retval ..
+ "label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
+ "textlist[0,1.75;5,4;world_config_depends;" ..
+ hard_deps_str .. ";0]" ..
+ "label[0,6;" .. fgettext("No optional dependencies") .. "]"
+ else
+ retval = retval ..
+ "label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
+ "textlist[0,1.75;5,2.125;world_config_depends;" ..
+ hard_deps_str .. ";0]" ..
+ "label[0,3.9;" .. fgettext("Optional dependencies:") ..
+ "]" ..
+ "textlist[0,4.375;5,1.8;world_config_optdepends;" ..
+ soft_deps_str .. ";0]"
+ end
+ end
end
- local hard_deps, soft_deps = modmgr.get_dependencies(mod.path)
-
retval = retval ..
- "label[0,0.7;" .. fgettext("Mod:") .. "]" ..
- "label[0.75,0.7;" .. mod.name .. "]" ..
- "label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
- "textlist[0,1.75;5,2.125;world_config_depends;" ..
- hard_deps .. ";0]" ..
- "label[0,3.875;" .. fgettext("Optional dependencies:") .. "]" ..
- "textlist[0,4.375;5,1.8;world_config_optdepends;" ..
- soft_deps .. ";0]" ..
- "button[3.25,7;2.5,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" ..
- "button[5.75,7;2.5,0.5;btn_config_world_cancel;" .. fgettext("Cancel") .. "]"
-
- if mod ~= nil and mod.name ~= "" and mod.typ ~= "game_mod" then
+ "button[3.25,7;2.5,0.5;btn_config_world_save;" ..
+ fgettext("Save") .. "]" ..
+ "button[5.75,7;2.5,0.5;btn_config_world_cancel;" ..
+ fgettext("Cancel") .. "]" ..
+ "button[9,7;2.5,0.5;btn_config_world_cdb;" ..
+ fgettext("Find More Mods") .. "]"
+
+ if mod.name ~= "" and not mod.is_game_content then
if mod.is_modpack then
- local rawlist = data.list:get_raw_list()
-
- local all_enabled = true
- for j=1,#rawlist,1 do
- if rawlist[j].modpack == mod.name and
- rawlist[j].enabled ~= true then
- all_enabled = false
- break
- end
- end
-
- if all_enabled == false then
- retval = retval .. "button[5.5,0.125;2.5,0.5;btn_mp_enable;" .. fgettext("Enable MP") .. "]"
+ if pkgmgr.is_modpack_entirely_enabled(data, mod.name) then
+ retval = retval ..
+ "button[5.5,0.125;3,0.5;btn_mp_disable;" ..
+ fgettext("Disable modpack") .. "]"
else
- retval = retval .. "button[5.5,0.125;2.5,0.5;btn_mp_disable;" .. fgettext("Disable MP") .. "]"
+ retval = retval ..
+ "button[5.5,0.125;3,0.5;btn_mp_enable;" ..
+ fgettext("Enable modpack") .. "]"
end
else
- if mod.enabled then
- retval = retval .. "checkbox[5.5,-0.125;cb_mod_enable;" .. fgettext("enabled") .. ";true]"
- else
- retval = retval .. "checkbox[5.5,-0.125;cb_mod_enable;" .. fgettext("enabled") .. ";false]"
- end
+ retval = retval ..
+ "checkbox[5.5,-0.125;cb_mod_enable;" .. fgettext("enabled") ..
+ ";" .. tostring(mod.enabled) .. "]"
end
end
- if enabled_all then
+ if enabled_all then
retval = retval ..
- "button[8.75,0.125;2.5,0.5;btn_disable_all_mods;" .. fgettext("Disable all") .. "]" ..
- "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
+ "button[8.95,0.125;2.5,0.5;btn_disable_all_mods;" ..
+ fgettext("Disable all") .. "]"
else
retval = retval ..
- "button[8.75,0.125;2.5,0.5;btn_enable_all_mods;" .. fgettext("Enable all") .. "]" ..
- "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
+ "button[8.95,0.125;2.5,0.5;btn_enable_all_mods;" ..
+ fgettext("Enable all") .. "]"
end
- retval = retval .. modmgr.render_modlist(data.list)
- retval = retval .. ";" .. data.selected_mod .."]"
-
- return retval
-end
-local function enable_mod(this, toset)
- local mod = this.data.list:get_list()[this.data.selected_mod]
+ local use_technical_names = core.settings:get_bool("show_technical_names")
- if mod.typ == "game_mod" then
- -- game mods can't be enabled or disabled
- elseif not mod.is_modpack then
- if toset == nil then
- mod.enabled = not mod.enabled
- else
- mod.enabled = toset
- end
- else
- local list = this.data.list:get_raw_list()
- for i=1,#list,1 do
- if list[i].modpack == mod.name then
- if toset == nil then
- toset = not list[i].enabled
- end
- list[i].enabled = toset
- end
- end
- end
+ return retval ..
+ "tablecolumns[color;tree;image,align=inline,width=1.5,0=" .. core.formspec_escape(defaulttexturedir .. "blank.png") ..
+ ",1=" .. core.formspec_escape(defaulttexturedir .. "checkbox_16_white.png") ..
+ ",2=" .. core.formspec_escape(defaulttexturedir .. "error_icon_orange.png") ..
+ ",3=" .. core.formspec_escape(defaulttexturedir .. "error_icon_red.png") .. ";text]" ..
+ "table[5.5,0.75;5.75,6;world_config_modlist;" ..
+ pkgmgr.render_packagelist(data.list, use_technical_names, with_error) .. ";" .. data.selected_mod .."]"
end
-
local function handle_buttons(this, fields)
-
- if fields["world_config_modlist"] ~= nil then
- local event = core.explode_textlist_event(fields["world_config_modlist"])
- this.data.selected_mod = event.index
- core.setting_set("world_config_selected_mod", event.index)
+ if fields.world_config_modlist then
+ local event = core.explode_table_event(fields.world_config_modlist)
+ this.data.selected_mod = event.row
+ core.settings:set("world_config_selected_mod", event.row)
if event.type == "DCL" then
- enable_mod(this)
+ pkgmgr.enable_mod(this)
end
-
- return true
- end
- if fields["key_enter"] ~= nil then
- enable_mod(this)
return true
end
- if fields["cb_mod_enable"] ~= nil then
- local toset = core.is_yes(fields["cb_mod_enable"])
- enable_mod(this,toset)
+ if fields.key_enter then
+ pkgmgr.enable_mod(this)
return true
end
- if fields["btn_mp_enable"] ~= nil or
- fields["btn_mp_disable"] then
- local toset = (fields["btn_mp_enable"] ~= nil)
- enable_mod(this,toset)
+ if fields.cb_mod_enable ~= nil then
+ pkgmgr.enable_mod(this, core.is_yes(fields.cb_mod_enable))
return true
end
- if fields["cb_hide_gamemods"] ~= nil or
- fields["cb_hide_mpcontent"] ~= nil then
- local current = this.data.list:get_filtercriteria()
-
- if current == nil then
- current = {}
- end
-
- if fields["cb_hide_gamemods"] ~= nil then
- if core.is_yes(fields["cb_hide_gamemods"]) then
- current.hide_game = true
- this.data.hide_gamemods = true
- core.setting_set("world_config_hide_gamemods", "true")
- else
- current.hide_game = false
- this.data.hide_gamemods = false
- core.setting_set("world_config_hide_gamemods", "false")
- end
- end
-
- if fields["cb_hide_mpcontent"] ~= nil then
- if core.is_yes(fields["cb_hide_mpcontent"]) then
- current.hide_modpackcontents = true
- this.data.hide_modpackcontents = true
- core.setting_set("world_config_hide_modpackcontents", "true")
- else
- current.hide_modpackcontents = false
- this.data.hide_modpackcontents = false
- core.setting_set("world_config_hide_modpackcontents", "false")
- end
- end
-
- this.data.list:set_filtercriteria(current)
+ if fields.btn_mp_enable ~= nil or
+ fields.btn_mp_disable then
+ pkgmgr.enable_mod(this, fields.btn_mp_enable ~= nil)
return true
end
- if fields["btn_config_world_save"] then
-
- local filename = this.data.worldspec.path ..
- DIR_DELIM .. "world.mt"
+ if fields.btn_config_world_save then
+ local filename = this.data.worldspec.path .. DIR_DELIM .. "world.mt"
local worldfile = Settings(filename)
local mods = worldfile:to_table()
local rawlist = this.data.list:get_raw_list()
+ local was_set = {}
- local i,mod
- for i,mod in ipairs(rawlist) do
+ for i = 1, #rawlist do
+ local mod = rawlist[i]
if not mod.is_modpack and
- mod.typ ~= "game_mod" then
+ not mod.is_game_content then
if modname_valid(mod.name) then
- worldfile:set("load_mod_"..mod.name, tostring(mod.enabled))
- else
if mod.enabled then
- gamedata.errormessage = fgettext_ne("Failed to enable mod \"$1\" as it contains disallowed characters. Only chararacters [a-z0-9_] are allowed.", mod.name)
+ worldfile:set("load_mod_" .. mod.name, mod.virtual_path)
+ was_set[mod.name] = true
+ elseif not was_set[mod.name] then
+ worldfile:set("load_mod_" .. mod.name, "false")
end
+ elseif mod.enabled then
+ gamedata.errormessage = fgettext_ne("Failed to enable mo" ..
+ "d \"$1\" as it contains disallowed characters. " ..
+ "Only characters [a-z0-9_] are allowed.",
+ mod.name)
end
- mods["load_mod_"..mod.name] = nil
+ mods["load_mod_" .. mod.name] = nil
end
end
-- Remove mods that are not present anymore
- for key,value in pairs(mods) do
- if key:sub(1,9) == "load_mod_" then
+ for key in pairs(mods) do
+ if key:sub(1, 9) == "load_mod_" then
worldfile:remove(key)
end
end
@@ -231,33 +322,59 @@ local function handle_buttons(this, fields)
if not worldfile:write() then
core.log("error", "Failed to write world config file")
end
-
+
this:delete()
return true
end
- if fields["btn_config_world_cancel"] then
+ if fields.btn_config_world_cancel then
this:delete()
return true
end
+ if fields.btn_config_world_cdb then
+ this.data.list = nil
+
+ local dlg = create_store_dlg("mod")
+ dlg:set_parent(this)
+ this:hide()
+ dlg:show()
+ return true
+ end
+
if fields.btn_enable_all_mods then
local list = this.data.list:get_raw_list()
+ -- When multiple copies of a mod are installed, we need to avoid enabling multiple of them
+ -- at a time. So lets first collect all the enabled mods, and then use this to exclude
+ -- multiple enables.
+
+ local was_enabled = {}
for i = 1, #list do
- if list[i].typ ~= "game_mod" and not list[i].is_modpack then
+ if not list[i].is_game_content
+ and not list[i].is_modpack and list[i].enabled then
+ was_enabled[list[i].name] = true
+ end
+ end
+
+ for i = 1, #list do
+ if not list[i].is_game_content and not list[i].is_modpack and
+ not was_enabled[list[i].name] then
list[i].enabled = true
+ was_enabled[list[i].name] = true
end
end
+
enabled_all = true
return true
end
-
+
if fields.btn_disable_all_mods then
local list = this.data.list:get_raw_list()
for i = 1, #list do
- if list[i].typ ~= "game_mod" and not list[i].is_modpack then
+ if not list[i].is_game_content
+ and not list[i].is_modpack then
list[i].enabled = false
end
end
@@ -269,67 +386,24 @@ local function handle_buttons(this, fields)
end
function create_configure_world_dlg(worldidx)
+ local dlg = dialog_create("sp_config_world", get_formspec, handle_buttons)
- local dlg = dialog_create("sp_config_world",
- get_formspec,
- handle_buttons,
- nil)
-
- dlg.data.hide_gamemods = core.setting_getbool("world_config_hide_gamemods")
- dlg.data.hide_modpackcontents = core.setting_getbool("world_config_hide_modpackcontents")
- dlg.data.selected_mod = tonumber(core.setting_get("world_config_selected_mod"))
- if dlg.data.selected_mod == nil then
- dlg.data.selected_mod = 0
- end
+ dlg.data.selected_mod = tonumber(
+ core.settings:get("world_config_selected_mod")) or 0
dlg.data.worldspec = core.get_worlds()[worldidx]
- if dlg.data.worldspec == nil then dlg:delete() return nil end
-
- dlg.data.worldconfig = modmgr.get_worldconfig(dlg.data.worldspec.path)
-
- if dlg.data.worldconfig == nil or dlg.data.worldconfig.id == nil or
- dlg.data.worldconfig.id == "" then
-
+ if not dlg.data.worldspec then
dlg:delete()
- return nil
+ return
end
-
- dlg.data.list = filterlist.create(
- modmgr.preparemodlist, --refresh
- modmgr.comparemod, --compare
- function(element,uid) --uid match
- if element.name == uid then
- return true
- end
- end,
- function(element,criteria)
- if criteria.hide_game and
- element.typ == "game_mod" then
- return false
- end
- if criteria.hide_modpackcontents and
- element.modpack ~= nil then
- return false
- end
- return true
- end, --filter
- { worldpath= dlg.data.worldspec.path,
- gameid = dlg.data.worldspec.gameid }
- )
+ dlg.data.worldconfig = pkgmgr.get_worldconfig(dlg.data.worldspec.path)
-
- if dlg.data.selected_mod > dlg.data.list:size() then
- dlg.data.selected_mod = 0
+ if not dlg.data.worldconfig or not dlg.data.worldconfig.id or
+ dlg.data.worldconfig.id == "" then
+ dlg:delete()
+ return
end
- dlg.data.list:set_filtercriteria(
- {
- hide_game=dlg.data.hide_gamemods,
- hide_modpackcontents= dlg.data.hide_modpackcontents
- })
- dlg.data.list:add_sort_mechanism("alphabetic", sort_mod_list)
- dlg.data.list:set_sortmode("alphabetic")
-
return dlg
end
diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua
new file mode 100644
index 000000000..2152b8a39
--- /dev/null
+++ b/builtin/mainmenu/dlg_contentstore.lua
@@ -0,0 +1,1062 @@
+--Minetest
+--Copyright (C) 2018-20 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.
+
+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"))
+ end
+ return
+end
+
+-- Unordered preserves the original order of the ContentDB API,
+-- before the package list is ordered based on installed state.
+local store = { packages = {}, packages_full = {}, packages_full_unordered = {}, aliases = {} }
+
+local http = core.get_http_api()
+
+-- Screenshot
+local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb"
+assert(core.create_dir(screenshot_dir))
+local screenshot_downloading = {}
+local screenshot_downloaded = {}
+
+-- Filter
+local search_string = ""
+local cur_page = 1
+local num_per_page = 5
+local filter_type = 1
+local filter_types_titles = {
+ fgettext("All packages"),
+ fgettext("Games"),
+ fgettext("Mods"),
+ fgettext("Texture packs"),
+}
+
+local number_downloading = 0
+local download_queue = {}
+
+local filter_types_type = {
+ nil,
+ "game",
+ "mod",
+ "txp",
+}
+
+local REASON_NEW = "new"
+local REASON_UPDATE = "update"
+local REASON_DEPENDENCY = "dependency"
+
+
+-- encodes for use as URL parameter or path component
+local function urlencode(str)
+ return str:gsub("[^%a%d()._~-]", function(char)
+ return string.format("%%%02X", string.byte(char))
+ end)
+end
+assert(urlencode("sample text?") == "sample%20text%3F")
+
+
+local function get_download_url(package, reason)
+ local base_url = core.settings:get("contentdb_url")
+ local ret = base_url .. ("/packages/%s/releases/%d/download/"):format(
+ package.url_part, package.release)
+ if reason then
+ ret = ret .. "?reason=" .. reason
+ end
+ return ret
+end
+
+
+local function download_and_extract(param)
+ local package = param.package
+
+ local filename = core.get_temp_path(true)
+ if filename == "" or not core.download_file(param.url, filename) then
+ core.log("error", "Downloading " .. dump(param.url) .. " failed")
+ return {
+ msg = fgettext("Failed to download $1", package.name)
+ }
+ end
+
+ local tempfolder = core.get_temp_path()
+ if tempfolder ~= "" then
+ tempfolder = tempfolder .. DIR_DELIM .. "MT_" .. math.random(1, 1024000)
+ if not core.extract_zip(filename, tempfolder) then
+ tempfolder = nil
+ end
+ else
+ tempfolder = nil
+ end
+ os.remove(filename)
+ if not tempfolder then
+ return {
+ msg = fgettext("Install: Unsupported file type or broken archive"),
+ }
+ end
+
+ return {
+ path = tempfolder
+ }
+end
+
+local function start_install(package, reason)
+ local params = {
+ package = package,
+ url = get_download_url(package, reason),
+ }
+
+ number_downloading = number_downloading + 1
+
+ local function callback(result)
+ if result.msg then
+ gamedata.errormessage = result.msg
+ else
+ local path, msg = pkgmgr.install_dir(package.type, result.path, package.name, package.path)
+ core.delete_dir(result.path)
+ if not path then
+ gamedata.errormessage = msg
+ else
+ core.log("action", "Installed package to " .. path)
+
+ local conf_path
+ local name_is_title = false
+ if package.type == "mod" then
+ local actual_type = pkgmgr.get_folder_type(path)
+ if actual_type.type == "modpack" then
+ conf_path = path .. DIR_DELIM .. "modpack.conf"
+ else
+ conf_path = path .. DIR_DELIM .. "mod.conf"
+ end
+ elseif package.type == "game" then
+ conf_path = path .. DIR_DELIM .. "game.conf"
+ name_is_title = true
+ elseif package.type == "txp" then
+ conf_path = path .. DIR_DELIM .. "texture_pack.conf"
+ end
+
+ if conf_path then
+ local conf = Settings(conf_path)
+ conf:set("title", package.title)
+ if not name_is_title then
+ conf:set("name", package.name)
+ end
+ if not conf:get("description") then
+ conf:set("description", package.short_description)
+ end
+ conf:set("author", package.author)
+ conf:set("release", package.release)
+ conf:write()
+ end
+ end
+ end
+
+ package.downloading = false
+
+ number_downloading = number_downloading - 1
+
+ local next = download_queue[1]
+ if next then
+ table.remove(download_queue, 1)
+
+ start_install(next.package, next.reason)
+ end
+
+ ui.update()
+ end
+
+ package.queued = false
+ package.downloading = true
+
+ if not core.handle_async(download_and_extract, params, callback) then
+ core.log("error", "ERROR: async event failed")
+ gamedata.errormessage = fgettext("Failed to download $1", package.name)
+ return
+ end
+end
+
+local function queue_download(package, reason)
+ local max_concurrent_downloads = tonumber(core.settings:get("contentdb_max_concurrent_downloads"))
+ if number_downloading < math.max(max_concurrent_downloads, 1) then
+ start_install(package, reason)
+ else
+ table.insert(download_queue, { package = package, reason = reason })
+ package.queued = true
+ end
+end
+
+local function get_raw_dependencies(package)
+ if package.raw_deps then
+ return package.raw_deps
+ end
+
+ local url_fmt = "/api/packages/%s/dependencies/?only_hard=1&protocol_version=%s&engine_version=%s"
+ local version = core.get_version()
+ local base_url = core.settings:get("contentdb_url")
+ local url = base_url .. url_fmt:format(package.url_part, core.get_max_supp_proto(), urlencode(version.string))
+
+ local response = http.fetch_sync({ url = url })
+ if not response.succeeded then
+ return
+ end
+
+ local data = core.parse_json(response.data) or {}
+
+ local content_lookup = {}
+ for _, pkg in pairs(store.packages_full) do
+ content_lookup[pkg.id] = pkg
+ end
+
+ for id, raw_deps in pairs(data) do
+ local package2 = content_lookup[id:lower()]
+ if package2 and not package2.raw_deps then
+ package2.raw_deps = raw_deps
+
+ for _, dep in pairs(raw_deps) do
+ local packages = {}
+ for i=1, #dep.packages do
+ packages[#packages + 1] = content_lookup[dep.packages[i]:lower()]
+ end
+ dep.packages = packages
+ end
+ end
+ end
+
+ return package.raw_deps
+end
+
+local function has_hard_deps(raw_deps)
+ for i=1, #raw_deps do
+ if not raw_deps[i].is_optional then
+ return true
+ end
+ end
+
+ return false
+end
+
+-- Recursively resolve dependencies, given the installed mods
+local function resolve_dependencies_2(raw_deps, installed_mods, out)
+ local function resolve_dep(dep)
+ -- Check whether it's already installed
+ if installed_mods[dep.name] then
+ return {
+ is_optional = dep.is_optional,
+ name = dep.name,
+ installed = true,
+ }
+ end
+
+ -- Find exact name matches
+ local fallback
+ for _, package in pairs(dep.packages) do
+ if package.type ~= "game" then
+ if package.name == dep.name then
+ return {
+ is_optional = dep.is_optional,
+ name = dep.name,
+ installed = false,
+ package = package,
+ }
+ elseif not fallback then
+ fallback = package
+ end
+ end
+ end
+
+ -- Otherwise, find the first mod that fulfils it
+ if fallback then
+ return {
+ is_optional = dep.is_optional,
+ name = dep.name,
+ installed = false,
+ package = fallback,
+ }
+ end
+
+ return {
+ is_optional = dep.is_optional,
+ name = dep.name,
+ installed = false,
+ }
+ end
+
+ for _, dep in pairs(raw_deps) do
+ if not dep.is_optional and not out[dep.name] then
+ local result = resolve_dep(dep)
+ out[dep.name] = result
+ if result and result.package and not result.installed then
+ local raw_deps2 = get_raw_dependencies(result.package)
+ if raw_deps2 then
+ resolve_dependencies_2(raw_deps2, installed_mods, out)
+ end
+ end
+ end
+ end
+
+ return true
+end
+
+-- Resolve dependencies for a package, calls the recursive version.
+local function resolve_dependencies(raw_deps, game)
+ assert(game)
+
+ local installed_mods = {}
+
+ local mods = {}
+ pkgmgr.get_game_mods(game, mods)
+ for _, mod in pairs(mods) do
+ installed_mods[mod.name] = true
+ end
+
+ for _, mod in pairs(pkgmgr.global_mods:get_list()) do
+ installed_mods[mod.name] = true
+ end
+
+ local out = {}
+ if not resolve_dependencies_2(raw_deps, installed_mods, out) then
+ return nil
+ end
+
+ local retval = {}
+ for _, dep in pairs(out) do
+ retval[#retval + 1] = dep
+ end
+
+ table.sort(retval, function(a, b)
+ return a.name < b.name
+ end)
+
+ return retval
+end
+
+local install_dialog = {}
+function install_dialog.get_formspec()
+ local package = install_dialog.package
+ local raw_deps = install_dialog.raw_deps
+ local will_install_deps = install_dialog.will_install_deps
+
+ local selected_game_idx = 1
+ local selected_gameid = core.settings:get("menu_last_game")
+ local games = table.copy(pkgmgr.games)
+ for i=1, #games do
+ if selected_gameid and games[i].id == selected_gameid then
+ selected_game_idx = i
+ end
+
+ games[i] = core.formspec_escape(games[i].title)
+ end
+
+ local selected_game = pkgmgr.games[selected_game_idx]
+ local deps_to_install = 0
+ local deps_not_found = 0
+
+ install_dialog.dependencies = resolve_dependencies(raw_deps, selected_game)
+ local formatted_deps = {}
+ for _, dep in pairs(install_dialog.dependencies) do
+ formatted_deps[#formatted_deps + 1] = "#fff"
+ 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")
+ elseif dep.package then
+ formatted_deps[#formatted_deps + 1] = "#cfc"
+ formatted_deps[#formatted_deps + 1] = fgettext("$1 by $2", dep.package.title, dep.package.author)
+ deps_to_install = deps_to_install + 1
+ else
+ formatted_deps[#formatted_deps + 1] = "#f00"
+ formatted_deps[#formatted_deps + 1] = fgettext("Not found")
+ deps_not_found = deps_not_found + 1
+ end
+ end
+
+ local message_bg = "#3333"
+ local message
+ if will_install_deps then
+ message = fgettext("$1 and $2 dependencies will be installed.", package.title, deps_to_install)
+ else
+ message = fgettext("$1 will be installed, and $2 dependencies will be skipped.", package.title, deps_to_install)
+ end
+ if deps_not_found > 0 then
+ message = fgettext("$1 required dependencies could not be found.", deps_not_found) ..
+ " " .. fgettext("Please check that the base game is correct.", deps_not_found) ..
+ "\n" .. message
+ message_bg = mt_color_orange
+ end
+
+ local formspec = {
+ "formspec_version[3]",
+ "size[7,7.85]",
+ "style[title;border=false]",
+ "box[0,0;7,0.5;#3333]",
+ "button[0,0;7,0.5;title;", fgettext("Install $1", package.title) , "]",
+
+ "container[0.375,0.70]",
+
+ "label[0,0.25;", fgettext("Base Game:"), "]",
+ "dropdown[2,0;4.25,0.5;selected_game;", table.concat(games, ","), ";", selected_game_idx, "]",
+
+ "label[0,0.8;", fgettext("Dependencies:"), "]",
+
+ "tablecolumns[color;text;color;text]",
+ "table[0,1.1;6.25,3;packages;", table.concat(formatted_deps, ","), "]",
+
+ "container_end[]",
+
+ "checkbox[0.375,5.1;will_install_deps;",
+ fgettext("Install missing dependencies"), ";",
+ will_install_deps and "true" or "false", "]",
+
+ "box[0,5.4;7,1.2;", message_bg, "]",
+ "textarea[0.375,5.5;6.25,1;;;", message, "]",
+
+ "container[1.375,6.85]",
+ "button[0,0;2,0.8;install_all;", fgettext("Install"), "]",
+ "button[2.25,0;2,0.8;cancel;", fgettext("Cancel"), "]",
+ "container_end[]",
+ }
+
+ return table.concat(formspec, "")
+end
+
+function install_dialog.handle_submit(this, fields)
+ if fields.cancel then
+ this:delete()
+ return true
+ end
+
+ if fields.will_install_deps ~= nil then
+ install_dialog.will_install_deps = core.is_yes(fields.will_install_deps)
+ return true
+ end
+
+ if fields.install_all then
+ queue_download(install_dialog.package, REASON_NEW)
+
+ if install_dialog.will_install_deps then
+ for _, dep in pairs(install_dialog.dependencies) do
+ if not dep.is_optional and not dep.installed and dep.package then
+ queue_download(dep.package, REASON_DEPENDENCY)
+ end
+ end
+ end
+
+ this:delete()
+ return true
+ end
+
+ if fields.selected_game then
+ for _, game in pairs(pkgmgr.games) do
+ if game.title == fields.selected_game then
+ core.settings:set("menu_last_game", game.id)
+ break
+ end
+ end
+ return true
+ end
+
+ return false
+end
+
+function install_dialog.create(package, raw_deps)
+ install_dialog.dependencies = nil
+ install_dialog.package = package
+ install_dialog.raw_deps = raw_deps
+ install_dialog.will_install_deps = true
+ return dialog_create("install_dialog",
+ install_dialog.get_formspec,
+ install_dialog.handle_submit,
+ nil)
+end
+
+
+local confirm_overwrite = {}
+function confirm_overwrite.get_formspec()
+ local package = confirm_overwrite.package
+
+ return confirmation_formspec(
+ fgettext("\"$1\" already exists. Would you like to overwrite it?", package.name),
+ 'install', fgettext("Overwrite"),
+ 'cancel', fgettext("Cancel"))
+end
+
+function confirm_overwrite.handle_submit(this, fields)
+ if fields.cancel then
+ this:delete()
+ return true
+ end
+
+ if fields.install then
+ this:delete()
+ confirm_overwrite.callback()
+ return true
+ end
+
+ return false
+end
+
+function confirm_overwrite.create(package, callback)
+ assert(type(package) == "table")
+ assert(type(callback) == "function")
+
+ confirm_overwrite.package = package
+ confirm_overwrite.callback = callback
+ return dialog_create("confirm_overwrite",
+ confirm_overwrite.get_formspec,
+ confirm_overwrite.handle_submit,
+ nil)
+end
+
+
+local function get_file_extension(path)
+ local parts = path:split(".")
+ return parts[#parts]
+end
+
+local function get_screenshot(package)
+ if not package.thumbnail then
+ return defaulttexturedir .. "no_screenshot.png"
+ elseif screenshot_downloading[package.thumbnail] then
+ return defaulttexturedir .. "loading_screenshot.png"
+ end
+
+ -- Get tmp screenshot path
+ local ext = get_file_extension(package.thumbnail)
+ local filepath = screenshot_dir .. DIR_DELIM ..
+ ("%s-%s-%s.%s"):format(package.type, package.author, package.name, ext)
+
+ -- Return if already downloaded
+ local file = io.open(filepath, "r")
+ if file then
+ file:close()
+ return filepath
+ end
+
+ -- Show error if we've failed to download before
+ if screenshot_downloaded[package.thumbnail] then
+ return defaulttexturedir .. "error_screenshot.png"
+ end
+
+ -- Download
+
+ local function download_screenshot(params)
+ return core.download_file(params.url, params.dest)
+ end
+ local function callback(success)
+ screenshot_downloading[package.thumbnail] = nil
+ screenshot_downloaded[package.thumbnail] = true
+ if not success then
+ core.log("warning", "Screenshot download failed for some reason")
+ end
+ ui.update()
+ end
+ if core.handle_async(download_screenshot,
+ { dest = filepath, url = package.thumbnail }, callback) then
+ screenshot_downloading[package.thumbnail] = true
+ else
+ core.log("error", "ERROR: async event failed")
+ return defaulttexturedir .. "error_screenshot.png"
+ end
+
+ return defaulttexturedir .. "loading_screenshot.png"
+end
+
+function store.load()
+ local version = core.get_version()
+ local base_url = core.settings:get("contentdb_url")
+ local url = base_url ..
+ "/api/packages/?type=mod&type=game&type=txp&protocol_version=" ..
+ core.get_max_supp_proto() .. "&engine_version=" .. urlencode(version.string)
+
+ for _, item in pairs(core.settings:get("contentdb_flag_blacklist"):split(",")) do
+ item = item:trim()
+ if item ~= "" then
+ url = url .. "&hide=" .. urlencode(item)
+ end
+ end
+
+ local response = http.fetch_sync({ url = url })
+ if not response.succeeded then
+ return
+ end
+
+ store.packages_full = core.parse_json(response.data) or {}
+ store.aliases = {}
+
+ for _, package in pairs(store.packages_full) do
+ local name_len = #package.name
+ -- This must match what store.update_paths() does!
+ package.id = package.author:lower() .. "/"
+ if package.type == "game" and name_len > 5 and package.name:sub(name_len - 4) == "_game" then
+ package.id = package.id .. package.name:sub(1, name_len - 5)
+ else
+ package.id = package.id .. package.name
+ end
+
+ package.url_part = urlencode(package.author) .. "/" .. urlencode(package.name)
+
+ if package.aliases then
+ for _, alias in ipairs(package.aliases) do
+ -- We currently don't support name changing
+ local suffix = "/" .. package.name
+ if alias:sub(-#suffix) == suffix then
+ store.aliases[alias:lower()] = package.id
+ end
+ end
+ end
+ end
+
+ store.packages_full_unordered = store.packages_full
+ store.packages = store.packages_full
+ store.loaded = true
+end
+
+function store.update_paths()
+ local mod_hash = {}
+ pkgmgr.refresh_globals()
+ for _, mod in pairs(pkgmgr.global_mods:get_list()) do
+ if mod.author and mod.release > 0 then
+ local id = mod.author:lower() .. "/" .. mod.name
+ mod_hash[store.aliases[id] or id] = mod
+ end
+ end
+
+ local game_hash = {}
+ pkgmgr.update_gamelist()
+ for _, game in pairs(pkgmgr.games) do
+ if game.author ~= "" and game.release > 0 then
+ local id = game.author:lower() .. "/" .. game.id
+ game_hash[store.aliases[id] or id] = game
+ end
+ end
+
+ local txp_hash = {}
+ for _, txp in pairs(pkgmgr.get_texture_packs()) do
+ if txp.author and txp.release > 0 then
+ local id = txp.author:lower() .. "/" .. txp.name
+ txp_hash[store.aliases[id] or id] = txp
+ end
+ end
+
+ for _, package in pairs(store.packages_full) do
+ local content
+ if package.type == "mod" then
+ content = mod_hash[package.id]
+ elseif package.type == "game" then
+ content = game_hash[package.id]
+ elseif package.type == "txp" then
+ content = txp_hash[package.id]
+ end
+
+ if content then
+ package.path = content.path
+ package.installed_release = content.release or 0
+ else
+ package.path = nil
+ end
+ end
+end
+
+function store.sort_packages()
+ local ret = {}
+
+ -- Add installed content
+ for i=1, #store.packages_full_unordered do
+ local package = store.packages_full_unordered[i]
+ if package.path then
+ ret[#ret + 1] = package
+ end
+ end
+
+ -- Sort installed content by title
+ table.sort(ret, function(a, b)
+ return a.title < b.title
+ end)
+
+ -- Add uninstalled content
+ for i=1, #store.packages_full_unordered do
+ local package = store.packages_full_unordered[i]
+ if not package.path then
+ ret[#ret + 1] = package
+ end
+ end
+
+ store.packages_full = ret
+end
+
+function store.filter_packages(query)
+ if query == "" and filter_type == 1 then
+ store.packages = store.packages_full
+ return
+ end
+
+ local keywords = {}
+ for word in query:lower():gmatch("%S+") do
+ table.insert(keywords, word)
+ end
+
+ local function matches_keywords(package)
+ for k = 1, #keywords do
+ local keyword = keywords[k]
+
+ if string.find(package.name:lower(), keyword, 1, true) or
+ string.find(package.title:lower(), keyword, 1, true) or
+ string.find(package.author:lower(), keyword, 1, true) or
+ string.find(package.short_description:lower(), keyword, 1, true) then
+ return true
+ end
+ end
+
+ return false
+ end
+
+ store.packages = {}
+ for _, package in pairs(store.packages_full) do
+ if (query == "" or matches_keywords(package)) and
+ (filter_type == 1 or package.type == filter_types_type[filter_type]) then
+ store.packages[#store.packages + 1] = package
+ end
+ end
+end
+
+function store.get_formspec(dlgdata)
+ store.update_paths()
+
+ dlgdata.pagemax = math.max(math.ceil(#store.packages / num_per_page), 1)
+ if cur_page > dlgdata.pagemax then
+ cur_page = 1
+ end
+
+ local W = 15.75
+ local H = 9.5
+ local formspec
+ if #store.packages_full > 0 then
+ formspec = {
+ "formspec_version[3]",
+ "size[15.75,9.5]",
+ "position[0.5,0.55]",
+
+ "style[status,downloading,queued;border=false]",
+
+ "container[0.375,0.375]",
+ "field[0,0;7.225,0.8;search_string;;", core.formspec_escape(search_string), "]",
+ "field_close_on_enter[search_string;false]",
+ "image_button[7.3,0;0.8,0.8;", core.formspec_escape(defaulttexturedir .. "search.png"), ";search;]",
+ "image_button[8.125,0;0.8,0.8;", core.formspec_escape(defaulttexturedir .. "clear.png"), ";clear;]",
+ "dropdown[9.6,0;2.4,0.8;type;", table.concat(filter_types_titles, ","), ";", filter_type, "]",
+ "container_end[]",
+
+ -- Page nav buttons
+ "container[0,", H - 0.8 - 0.375, "]",
+ "button[0.375,0;4,0.8;back;", fgettext("Back to Main Menu"), "]",
+
+ "container[", W - 0.375 - 0.8*4 - 2, ",0]",
+ "image_button[0,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "start_icon.png;pstart;]",
+ "image_button[0.8,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "prev_icon.png;pback;]",
+ "style[pagenum;border=false]",
+ "button[1.6,0;2,0.8;pagenum;", tonumber(cur_page), " / ", tonumber(dlgdata.pagemax), "]",
+ "image_button[3.6,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "next_icon.png;pnext;]",
+ "image_button[4.4,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "end_icon.png;pend;]",
+ "container_end[]",
+
+ "container_end[]",
+ }
+
+ if number_downloading > 0 then
+ formspec[#formspec + 1] = "button[12.75,0.375;2.625,0.8;downloading;"
+ if #download_queue > 0 then
+ formspec[#formspec + 1] = fgettext("$1 downloading,\n$2 queued", number_downloading, #download_queue)
+ else
+ formspec[#formspec + 1] = fgettext("$1 downloading...", number_downloading)
+ end
+ formspec[#formspec + 1] = "]"
+ else
+ local num_avail_updates = 0
+ for i=1, #store.packages_full do
+ local package = store.packages_full[i]
+ if package.path and package.installed_release < package.release and
+ not (package.downloading or package.queued) then
+ num_avail_updates = num_avail_updates + 1
+ end
+ end
+
+ if num_avail_updates == 0 then
+ formspec[#formspec + 1] = "button[12.75,0.375;2.625,0.8;status;"
+ formspec[#formspec + 1] = fgettext("No updates")
+ formspec[#formspec + 1] = "]"
+ else
+ formspec[#formspec + 1] = "button[12.75,0.375;2.625,0.8;update_all;"
+ formspec[#formspec + 1] = fgettext("Update All [$1]", num_avail_updates)
+ formspec[#formspec + 1] = "]"
+ end
+ end
+
+ if #store.packages == 0 then
+ formspec[#formspec + 1] = "label[4,3;"
+ formspec[#formspec + 1] = fgettext("No results")
+ formspec[#formspec + 1] = "]"
+ end
+ else
+ formspec = {
+ "size[12,7]",
+ "position[0.5,0.55]",
+ "label[4,3;", fgettext("No packages could be retrieved"), "]",
+ "container[0,", H - 0.8 - 0.375, "]",
+ "button[0,0;4,0.8;back;", fgettext("Back to Main Menu"), "]",
+ "container_end[]",
+ }
+ end
+
+ -- download/queued tooltips always have the same message
+ local tooltip_colors = ";#dff6f5;#302c2e]"
+ formspec[#formspec + 1] = "tooltip[downloading;" .. fgettext("Downloading...") .. tooltip_colors
+ formspec[#formspec + 1] = "tooltip[queued;" .. fgettext("Queued") .. tooltip_colors
+
+ local start_idx = (cur_page - 1) * num_per_page + 1
+ for i=start_idx, math.min(#store.packages, start_idx+num_per_page-1) do
+ local package = store.packages[i]
+ local container_y = (i - start_idx) * 1.375 + (2*0.375 + 0.8)
+ formspec[#formspec + 1] = "container[0.375,"
+ formspec[#formspec + 1] = container_y
+ formspec[#formspec + 1] = "]"
+
+ -- image
+ formspec[#formspec + 1] = "image[0,0;1.5,1;"
+ formspec[#formspec + 1] = core.formspec_escape(get_screenshot(package))
+ formspec[#formspec + 1] = "]"
+
+ -- title
+ formspec[#formspec + 1] = "label[1.875,0.1;"
+ formspec[#formspec + 1] = core.formspec_escape(
+ core.colorize(mt_color_green, package.title) ..
+ core.colorize("#BFBFBF", " by " .. package.author))
+ formspec[#formspec + 1] = "]"
+
+ -- buttons
+ local left_base = "image_button[-1.55,0;0.7,0.7;" .. core.formspec_escape(defaulttexturedir)
+ formspec[#formspec + 1] = "container["
+ formspec[#formspec + 1] = W - 0.375*2
+ formspec[#formspec + 1] = ",0.1]"
+
+ if package.downloading then
+ formspec[#formspec + 1] = "animated_image[-1.7,-0.15;1,1;downloading;"
+ formspec[#formspec + 1] = core.formspec_escape(defaulttexturedir)
+ formspec[#formspec + 1] = "cdb_downloading.png;3;400;]"
+ elseif package.queued then
+ formspec[#formspec + 1] = left_base
+ formspec[#formspec + 1] = "cdb_queued.png;queued;]"
+ elseif not package.path then
+ local elem_name = "install_" .. i .. ";"
+ formspec[#formspec + 1] = "style[" .. elem_name .. "bgcolor=#71aa34]"
+ formspec[#formspec + 1] = left_base .. "cdb_add.png;" .. elem_name .. "]"
+ formspec[#formspec + 1] = "tooltip[" .. elem_name .. fgettext("Install") .. tooltip_colors
+ else
+ if package.installed_release < package.release then
+
+ -- The install_ action also handles updating
+ local elem_name = "install_" .. i .. ";"
+ formspec[#formspec + 1] = "style[" .. elem_name .. "bgcolor=#28ccdf]"
+ formspec[#formspec + 1] = left_base .. "cdb_update.png;" .. elem_name .. "]"
+ formspec[#formspec + 1] = "tooltip[" .. elem_name .. fgettext("Update") .. tooltip_colors
+ else
+
+ local elem_name = "uninstall_" .. i .. ";"
+ formspec[#formspec + 1] = "style[" .. elem_name .. "bgcolor=#a93b3b]"
+ formspec[#formspec + 1] = left_base .. "cdb_clear.png;" .. elem_name .. "]"
+ formspec[#formspec + 1] = "tooltip[" .. elem_name .. fgettext("Uninstall") .. tooltip_colors
+ end
+ end
+
+ local web_elem_name = "view_" .. i .. ";"
+ formspec[#formspec + 1] = "image_button[-0.7,0;0.7,0.7;" ..
+ core.formspec_escape(defaulttexturedir) .. "cdb_viewonline.png;" .. web_elem_name .. "]"
+ formspec[#formspec + 1] = "tooltip[" .. web_elem_name ..
+ fgettext("View more information in a web browser") .. tooltip_colors
+ formspec[#formspec + 1] = "container_end[]"
+
+ -- description
+ local description_width = W - 0.375*5 - 0.85 - 2*0.7
+ formspec[#formspec + 1] = "textarea[1.855,0.3;"
+ formspec[#formspec + 1] = tostring(description_width)
+ formspec[#formspec + 1] = ",0.8;;;"
+ formspec[#formspec + 1] = core.formspec_escape(package.short_description)
+ formspec[#formspec + 1] = "]"
+
+ formspec[#formspec + 1] = "container_end[]"
+ end
+
+ return table.concat(formspec, "")
+end
+
+function store.handle_submit(this, fields)
+ if fields.search or fields.key_enter_field == "search_string" then
+ search_string = fields.search_string:trim()
+ cur_page = 1
+ store.filter_packages(search_string)
+ return true
+ end
+
+ if fields.clear then
+ search_string = ""
+ cur_page = 1
+ store.filter_packages("")
+ return true
+ end
+
+ if fields.back then
+ this:delete()
+ return true
+ end
+
+ if fields.pstart then
+ cur_page = 1
+ return true
+ end
+
+ if fields.pend then
+ cur_page = this.data.pagemax
+ return true
+ end
+
+ if fields.pnext then
+ cur_page = cur_page + 1
+ if cur_page > this.data.pagemax then
+ cur_page = 1
+ end
+ return true
+ end
+
+ if fields.pback then
+ if cur_page == 1 then
+ cur_page = this.data.pagemax
+ else
+ cur_page = cur_page - 1
+ end
+ return true
+ end
+
+ if fields.type then
+ local new_type = table.indexof(filter_types_titles, fields.type)
+ if new_type ~= filter_type then
+ filter_type = new_type
+ store.filter_packages(search_string)
+ return true
+ end
+ end
+
+ if fields.update_all then
+ for i=1, #store.packages_full do
+ local package = store.packages_full[i]
+ if package.path and package.installed_release < package.release and
+ not (package.downloading or package.queued) then
+ queue_download(package, REASON_UPDATE)
+ end
+ end
+ return true
+ end
+
+ local start_idx = (cur_page - 1) * num_per_page + 1
+ assert(start_idx ~= nil)
+ for i=start_idx, math.min(#store.packages, start_idx+num_per_page-1) do
+ local package = store.packages[i]
+ assert(package)
+
+ if fields["install_" .. i] then
+ local install_parent
+ if package.type == "mod" then
+ install_parent = core.get_modpath()
+ elseif package.type == "game" then
+ install_parent = core.get_gamepath()
+ elseif package.type == "txp" then
+ install_parent = core.get_texturepath()
+ else
+ error("Unknown package type: " .. package.type)
+ end
+
+
+ local function on_confirm()
+ local deps = get_raw_dependencies(package)
+ if deps and has_hard_deps(deps) then
+ local dlg = install_dialog.create(package, deps)
+ dlg:set_parent(this)
+ this:hide()
+ dlg:show()
+ else
+ queue_download(package, package.path and REASON_UPDATE or REASON_NEW)
+ end
+ end
+
+ if not package.path and core.is_dir(install_parent .. DIR_DELIM .. package.name) then
+ local dlg = confirm_overwrite.create(package, on_confirm)
+ dlg:set_parent(this)
+ this:hide()
+ dlg:show()
+ else
+ on_confirm()
+ end
+
+ return true
+ end
+
+ if fields["uninstall_" .. i] then
+ local dlg = create_delete_content_dlg(package)
+ dlg:set_parent(this)
+ this:hide()
+ dlg:show()
+ return true
+ end
+
+ if fields["view_" .. i] then
+ local url = ("%s/packages/%s?protocol_version=%d"):format(
+ core.settings:get("contentdb_url"), package.url_part,
+ core.get_max_supp_proto())
+ core.open_url(url)
+ return true
+ end
+ end
+
+ return false
+end
+
+function create_store_dlg(type)
+ if not store.loaded or #store.packages_full == 0 then
+ store.load()
+ end
+
+ store.update_paths()
+ store.sort_packages()
+
+ search_string = ""
+ cur_page = 1
+
+ if type then
+ -- table.indexof does not work on tables that contain `nil`
+ for i, v in pairs(filter_types_type) do
+ if v == type then
+ filter_type = i
+ break
+ end
+ end
+ end
+
+ store.filter_packages(search_string)
+
+ return dialog_create("store",
+ store.get_formspec,
+ store.handle_submit,
+ nil)
+end
diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua
index 477b8bcb9..806e019a9 100644
--- a/builtin/mainmenu/dlg_create_world.lua
+++ b/builtin/mainmenu/dlg_create_world.lua
@@ -15,129 +15,474 @@
--with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+local function table_to_flags(ftable)
+ -- Convert e.g. { jungles = true, caves = false } to "jungles,nocaves"
+ local str = {}
+ for flag, is_set in pairs(ftable) do
+ str[#str + 1] = is_set and flag or ("no" .. flag)
+ end
+ return table.concat(str, ",")
+end
+
+-- Same as check_flag but returns a string
+local function strflag(flags, flag)
+ return (flags[flag] == true) and "true" or "false"
+end
+
+local cb_caverns = { "caverns", fgettext("Caverns"),
+ fgettext("Very large caverns deep in the underground") }
+
+local flag_checkboxes = {
+ v5 = {
+ cb_caverns,
+ },
+ v7 = {
+ cb_caverns,
+ { "ridges", fgettext("Rivers"), fgettext("Sea level rivers") },
+ { "mountains", fgettext("Mountains") },
+ { "floatlands", fgettext("Floatlands (experimental)"),
+ fgettext("Floating landmasses in the sky") },
+ },
+ carpathian = {
+ cb_caverns,
+ { "rivers", fgettext("Rivers"), fgettext("Sea level rivers") },
+ },
+ valleys = {
+ { "altitude_chill", fgettext("Altitude chill"),
+ fgettext("Reduces heat with altitude") },
+ { "altitude_dry", fgettext("Altitude dry"),
+ fgettext("Reduces humidity with altitude") },
+ { "humid_rivers", fgettext("Humid rivers"),
+ fgettext("Increases humidity around rivers") },
+ { "vary_river_depth", fgettext("Vary river depth"),
+ fgettext("Low humidity and high heat causes shallow or dry rivers") },
+ },
+ flat = {
+ cb_caverns,
+ { "hills", fgettext("Hills") },
+ { "lakes", fgettext("Lakes") },
+ },
+ fractal = {
+ { "terrain", fgettext("Additional terrain"),
+ fgettext("Generate non-fractal terrain: Oceans and underground") },
+ },
+ v6 = {
+ { "trees", fgettext("Trees and jungle grass") },
+ { "flat", fgettext("Flat terrain") },
+ { "mudflow", fgettext("Mud flow"), fgettext("Terrain surface erosion") },
+ -- Biome settings are in mgv6_biomes below
+ },
+}
+
+local mgv6_biomes = {
+ {
+ fgettext("Temperate, Desert, Jungle, Tundra, Taiga"),
+ {jungles = true, snowbiomes = true}
+ },
+ {
+ fgettext("Temperate, Desert, Jungle"),
+ {jungles = true, snowbiomes = false}
+ },
+ {
+ fgettext("Temperate, Desert"),
+ {jungles = false, snowbiomes = false}
+ },
+}
+
local function create_world_formspec(dialogdata)
+
+ -- Point the player to ContentDB when no games are found
+ if #pkgmgr.games == 0 then
+ return "size[8,2.5,true]" ..
+ "style[label_button;border=false]" ..
+ "button[0.5,0.5;7,0.5;label_button;" ..
+ fgettext("You have no games installed.") .. "]" ..
+ "button[0.5,1.5;2.5,0.5;world_create_open_cdb;" .. fgettext("Install a game") .. "]" ..
+ "button[5.0,1.5;2.5,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]"
+ end
+
+ local current_mg = dialogdata.mg
local mapgens = core.get_mapgen_names()
- local current_seed = core.setting_get("fixed_map_seed") or ""
- local current_mg = core.setting_get("mg_name")
+ local gameid = core.settings:get("menu_last_game")
+
+ local flags = dialogdata.flags
+
+ local game = pkgmgr.find_by_gameid(gameid)
+ if game == nil then
+ -- should never happen but just pick the first game
+ game = pkgmgr.get_game(1)
+ core.settings:set("menu_last_game", game.id)
+ end
+
+ local disallowed_mapgen_settings = {}
+ if game ~= nil then
+ local gameconfig = Settings(game.path.."/game.conf")
+
+ local allowed_mapgens = (gameconfig:get("allowed_mapgens") or ""):split()
+ for key, value in pairs(allowed_mapgens) do
+ allowed_mapgens[key] = value:trim()
+ end
+
+ local disallowed_mapgens = (gameconfig:get("disallowed_mapgens") or ""):split()
+ for key, value in pairs(disallowed_mapgens) do
+ disallowed_mapgens[key] = value:trim()
+ end
+
+ if #allowed_mapgens > 0 then
+ for i = #mapgens, 1, -1 do
+ if table.indexof(allowed_mapgens, mapgens[i]) == -1 then
+ table.remove(mapgens, i)
+ end
+ end
+ end
+
+ if #disallowed_mapgens > 0 then
+ for i = #mapgens, 1, -1 do
+ if table.indexof(disallowed_mapgens, mapgens[i]) > 0 then
+ table.remove(mapgens, i)
+ end
+ end
+ end
+
+ local ds = (gameconfig:get("disallowed_mapgen_settings") or ""):split()
+ for _, value in pairs(ds) do
+ disallowed_mapgen_settings[value:trim()] = true
+ end
+ end
local mglist = ""
- local selindex = 1
- local i = 1
- for k,v in pairs(mapgens) do
- if current_mg == v then
- selindex = i
+ local selindex
+ do -- build the list of mapgens
+ local i = 1
+ local first_mg
+ for k, v in pairs(mapgens) do
+ if not first_mg then
+ first_mg = v
+ end
+ if current_mg == v then
+ selindex = i
+ end
+ i = i + 1
+ mglist = mglist .. core.formspec_escape(v) .. ","
end
- i = i + 1
- mglist = mglist .. v .. ","
+ if not selindex then
+ selindex = 1
+ current_mg = first_mg
+ end
+ mglist = mglist:sub(1, -2)
end
- mglist = mglist:sub(1, -2)
-
- local gameid = core.setting_get("menu_last_game")
-
- local game, gameidx = nil , 0
- if gameid ~= nil then
- game, gameidx = gamemgr.find_by_gameid(gameid)
-
- if gameidx == nil then
- gameidx = 0
+
+ -- The logic of the flag element IDs is as follows:
+ -- "flag_main_foo-bar-baz" controls dialogdata.flags["main"]["foo_bar_baz"]
+ -- see the buttonhandler for the implementation of this
+
+ local mg_main_flags = function(mapgen, y)
+ if mapgen == "singlenode" then
+ return "", y
+ end
+ if disallowed_mapgen_settings["mg_flags"] then
+ return "", y
+ end
+
+ local form = "checkbox[0," .. y .. ";flag_main_caves;" ..
+ fgettext("Caves") .. ";"..strflag(flags.main, "caves").."]"
+ y = y + 0.5
+
+ form = form .. "checkbox[0,"..y..";flag_main_dungeons;" ..
+ fgettext("Dungeons") .. ";"..strflag(flags.main, "dungeons").."]"
+ y = y + 0.5
+
+ local d_name = fgettext("Decorations")
+ local d_tt
+ if mapgen == "v6" then
+ d_tt = fgettext("Structures appearing on the terrain (no effect on trees and jungle grass created by v6)")
+ else
+ d_tt = fgettext("Structures appearing on the terrain, typically trees and plants")
+ end
+ form = form .. "checkbox[0,"..y..";flag_main_decorations;" ..
+ d_name .. ";" ..
+ strflag(flags.main, "decorations").."]" ..
+ "tooltip[flag_mg_decorations;" ..
+ d_tt ..
+ "]"
+ y = y + 0.5
+
+ form = form .. "tooltip[flag_main_caves;" ..
+ fgettext("Network of tunnels and caves")
+ .. "]"
+ return form, y
+ end
+
+ local mg_specific_flags = function(mapgen, y)
+ if not flag_checkboxes[mapgen] then
+ return "", y
+ end
+ if disallowed_mapgen_settings["mg"..mapgen.."_spflags"] then
+ return "", y
+ end
+ local form = ""
+ for _, tab in pairs(flag_checkboxes[mapgen]) do
+ local id = "flag_"..mapgen.."_"..tab[1]:gsub("_", "-")
+ form = form .. ("checkbox[0,%f;%s;%s;%s]"):
+ format(y, id, tab[2], strflag(flags[mapgen], tab[1]))
+
+ if tab[3] then
+ form = form .. "tooltip["..id..";"..tab[3].."]"
+ end
+ y = y + 0.5
+ end
+
+ if mapgen ~= "v6" then
+ -- No special treatment
+ return form, y
+ end
+ -- Special treatment for v6 (add biome widgets)
+
+ -- Biome type (jungles, snowbiomes)
+ local biometype
+ if flags.v6.snowbiomes == true then
+ biometype = 1
+ elseif flags.v6.jungles == true then
+ biometype = 2
+ else
+ biometype = 3
end
+ y = y + 0.3
+
+ form = form .. "label[0,"..(y+0.1)..";" .. fgettext("Biomes") .. "]"
+ y = y + 0.6
+
+ form = form .. "dropdown[0,"..y..";6.3;mgv6_biomes;"
+ for b=1, #mgv6_biomes do
+ form = form .. mgv6_biomes[b][1]
+ if b < #mgv6_biomes then
+ form = form .. ","
+ end
+ end
+ form = form .. ";" .. biometype.. "]"
+
+ -- biomeblend
+ y = y + 0.55
+ form = form .. "checkbox[0,"..y..";flag_v6_biomeblend;" ..
+ fgettext("Biome blending") .. ";"..strflag(flags.v6, "biomeblend").."]" ..
+ "tooltip[flag_v6_biomeblend;" ..
+ fgettext("Smooth transition between biomes") .. "]"
+
+ return form, y
+ end
+
+ local y_start = 0.0
+ local y = y_start
+ local str_flags, str_spflags
+ local label_flags, label_spflags = "", ""
+ y = y + 0.3
+ str_flags, y = mg_main_flags(current_mg, y)
+ if str_flags ~= "" then
+ label_flags = "label[0,"..y_start..";" .. fgettext("Mapgen flags") .. "]"
+ y_start = y + 0.4
+ else
+ y_start = 0.0
+ end
+ y = y_start + 0.3
+ str_spflags = mg_specific_flags(current_mg, y)
+ if str_spflags ~= "" then
+ label_spflags = "label[0,"..y_start..";" .. fgettext("Mapgen-specific flags") .. "]"
end
- current_seed = core.formspec_escape(current_seed)
local retval =
- "size[11.5,6.5,true]" ..
- "label[2,0;" .. fgettext("World name") .. "]"..
- "field[4.5,0.4;6,0.5;te_world_name;;]" ..
+ "size[12.25,7,true]" ..
- "label[2,1;" .. fgettext("Seed") .. "]"..
- "field[4.5,1.4;6,0.5;te_seed;;".. current_seed .. "]" ..
+ -- Left side
+ "container[0,0]"..
+ "field[0.3,0.6;6,0.5;te_world_name;" ..
+ fgettext("World name") ..
+ ";" .. core.formspec_escape(dialogdata.worldname) .. "]" ..
+ "set_focus[te_world_name;false]"
- "label[2,2;" .. fgettext("Mapgen") .. "]"..
- "dropdown[4.2,2;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" ..
+ if not disallowed_mapgen_settings["seed"] then
- "label[2,3;" .. fgettext("Game") .. "]"..
- "textlist[4.2,3;5.8,2.3;games;" .. gamemgr.gamelist() ..
- ";" .. gameidx .. ";true]" ..
+ retval = retval .. "field[0.3,1.7;6,0.5;te_seed;" ..
+ fgettext("Seed") ..
+ ";".. core.formspec_escape(dialogdata.seed) .. "]"
- "button[3.25,6;2.5,0.5;world_create_confirm;" .. fgettext("Create") .. "]" ..
- "button[5.75,6;2.5,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]"
-
- if #gamemgr.games == 0 then
- retval = retval .. "box[2,4;8,1;#ff8800]label[2.25,4;" ..
- fgettext("You have no subgames installed.") .. "]label[2.25,4.4;" ..
- fgettext("Download one from minetest.net") .. "]"
- elseif #gamemgr.games == 1 and gamemgr.games[1].id == "minimal" then
- retval = retval .. "box[1.75,4;8.7,1;#ff8800]label[2,4;" ..
- fgettext("Warning: The minimal development test is meant for developers.") .. "]label[2,4.4;" ..
- fgettext("Download a subgame, such as minetest_game, from minetest.net") .. "]"
end
+ retval = retval ..
+ "label[0,2;" .. fgettext("Mapgen") .. "]"..
+ "dropdown[0,2.5;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]"
+
+ -- Warning if only devtest is installed
+ if #pkgmgr.games == 1 and pkgmgr.games[1].id == "devtest" then
+ retval = retval ..
+ "container[0,3.5]" ..
+ "box[0,0;5.8,1.7;#ff8800]" ..
+ "textarea[0.4,0.1;6,1.8;;;"..
+ fgettext("Development Test is meant for developers.") .. "]" ..
+ "button[1,1;4,0.5;world_create_open_cdb;" .. fgettext("Install another game") .. "]" ..
+ "container_end[]"
+ end
+
+ retval = retval ..
+ "container_end[]" ..
+
+ -- Right side
+ "container[6.2,0]"..
+ label_flags .. str_flags ..
+ label_spflags .. str_spflags ..
+ "container_end[]"..
+
+ -- Menu buttons
+ "button[3.25,6.5;3,0.5;world_create_confirm;" .. fgettext("Create") .. "]" ..
+ "button[6.25,6.5;3,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]"
+
return retval
end
local function create_world_buttonhandler(this, fields)
+ if fields["world_create_open_cdb"] then
+ local dlg = create_store_dlg("game")
+ dlg:set_parent(this.parent)
+ this:delete()
+ this.parent:hide()
+ dlg:show()
+ return true
+ end
+
if fields["world_create_confirm"] or
fields["key_enter"] then
local worldname = fields["te_world_name"]
- local gameindex = core.get_textlist_index("games")
-
- if gameindex ~= nil and
- worldname ~= "" then
+ local game, gameindex = pkgmgr.find_by_gameid(core.settings:get("menu_last_game"))
- local message = nil
+ local message
+ if game == nil then
+ message = fgettext("No game selected")
+ end
- core.setting_set("fixed_map_seed", fields["te_seed"])
+ if message == nil then
+ -- For unnamed worlds use the generated name 'world<number>',
+ -- where the number increments: it is set to 1 larger than the largest
+ -- generated name number found.
+ if worldname == "" then
+ local worldnum_max = 0
+ for _, world in ipairs(menudata.worldlist:get_list()) do
+ if world.name:match("^world%d+$") then
+ local worldnum = tonumber(world.name:sub(6))
+ worldnum_max = math.max(worldnum_max, worldnum)
+ end
+ end
+ worldname = "world" .. worldnum_max + 1
+ end
- if not menudata.worldlist:uid_exists_raw(worldname) then
- core.setting_set("mg_name",fields["dd_mapgen"])
- message = core.create_world(worldname,gameindex)
- else
+ if menudata.worldlist:uid_exists_raw(worldname) then
message = fgettext("A world named \"$1\" already exists", worldname)
end
+ end
- if message ~= nil then
- gamedata.errormessage = message
- else
- core.setting_set("menu_last_game",gamemgr.games[gameindex].id)
- if this.data.update_worldlist_filter then
- menudata.worldlist:set_filtercriteria(gamemgr.games[gameindex].id)
- mm_texture.update("singleplayer", gamemgr.games[gameindex].id)
- end
- menudata.worldlist:refresh()
- core.setting_set("mainmenu_last_selected_world",
- menudata.worldlist:raw_index_by_uid(worldname))
- end
- else
- gamedata.errormessage =
- fgettext("No worldname given or no game selected")
+ if message == nil then
+ this.data.seed = fields["te_seed"] or ""
+ this.data.mg = fields["dd_mapgen"]
+
+ -- actual names as used by engine
+ local settings = {
+ fixed_map_seed = this.data.seed,
+ mg_name = this.data.mg,
+ mg_flags = table_to_flags(this.data.flags.main),
+ mgv5_spflags = table_to_flags(this.data.flags.v5),
+ mgv6_spflags = table_to_flags(this.data.flags.v6),
+ mgv7_spflags = table_to_flags(this.data.flags.v7),
+ mgfractal_spflags = table_to_flags(this.data.flags.fractal),
+ mgcarpathian_spflags = table_to_flags(this.data.flags.carpathian),
+ mgvalleys_spflags = table_to_flags(this.data.flags.valleys),
+ mgflat_spflags = table_to_flags(this.data.flags.flat),
+ }
+ message = core.create_world(worldname, gameindex, settings)
+ end
+
+ if message == nil then
+ core.settings:set("menu_last_game", game.id)
+ menudata.worldlist:set_filtercriteria(game.id)
+ menudata.worldlist:refresh()
+ core.settings:set("mainmenu_last_selected_world",
+ menudata.worldlist:raw_index_by_uid(worldname))
end
+
+ gamedata.errormessage = message
this:delete()
return true
end
+ this.data.worldname = fields["te_world_name"]
+ this.data.seed = fields["te_seed"] or ""
+
if fields["games"] then
+ local gameindex = core.get_textlist_index("games")
+ core.settings:set("menu_last_game", pkgmgr.games[gameindex].id)
return true
end
-
+
+ for k,v in pairs(fields) do
+ local split = string.split(k, "_", nil, 3)
+ if split and split[1] == "flag" then
+ -- We replaced the underscore of flag names with a dash.
+ local flag = string.gsub(split[3], "-", "_")
+ local ftable = this.data.flags[split[2]]
+ assert(ftable)
+ ftable[flag] = v == "true"
+ return true
+ end
+ end
+
if fields["world_create_cancel"] then
this:delete()
return true
end
+ if fields["mgv6_biomes"] then
+ local entry = core.formspec_escape(fields["mgv6_biomes"])
+ for b=1, #mgv6_biomes do
+ if entry == mgv6_biomes[b][1] then
+ local ftable = this.data.flags.v6
+ ftable.jungles = mgv6_biomes[b][2].jungles
+ ftable.snowbiomes = mgv6_biomes[b][2].snowbiomes
+ return true
+ end
+ end
+ end
+
+ if fields["dd_mapgen"] then
+ this.data.mg = fields["dd_mapgen"]
+ return true
+ end
+
return false
end
-function create_create_world_dlg(update_worldlistfilter)
+function create_create_world_dlg()
local retval = dialog_create("sp_create_world",
create_world_formspec,
create_world_buttonhandler,
nil)
- retval.update_worldlist_filter = update_worldlistfilter
-
+ retval.data = {
+ worldname = "",
+ -- settings the world is created with:
+ seed = core.settings:get("fixed_map_seed") or "",
+ mg = core.settings:get("mg_name"),
+ flags = {
+ main = core.settings:get_flags("mg_flags"),
+ v5 = core.settings:get_flags("mgv5_spflags"),
+ v6 = core.settings:get_flags("mgv6_spflags"),
+ v7 = core.settings:get_flags("mgv7_spflags"),
+ fractal = core.settings:get_flags("mgfractal_spflags"),
+ carpathian = core.settings:get_flags("mgcarpathian_spflags"),
+ valleys = core.settings:get_flags("mgvalleys_spflags"),
+ flat = core.settings:get_flags("mgflat_spflags"),
+ }
+ }
+
return retval
end
diff --git a/builtin/mainmenu/dlg_delete_mod.lua b/builtin/mainmenu/dlg_delete_content.lua
index 2efd70414..4463825f7 100644
--- a/builtin/mainmenu/dlg_delete_mod.lua
+++ b/builtin/mainmenu/dlg_delete_content.lua
@@ -17,39 +17,39 @@
--------------------------------------------------------------------------------
-local function delete_mod_formspec(dialogdata)
-
- dialogdata.mod = modmgr.global_mods:get_list()[dialogdata.selected]
-
- local retval =
- "size[11.5,4.5,true]" ..
- "label[2,2;" ..
- fgettext("Are you sure you want to delete \"$1\"?", dialogdata.mod.name) .. "]"..
- "button[3.25,3.5;2.5,0.5;dlg_delete_mod_confirm;" .. fgettext("Delete") .. "]" ..
- "button[5.75,3.5;2.5,0.5;dlg_delete_mod_cancel;" .. fgettext("Cancel") .. "]"
-
- return retval
+local function delete_content_formspec(dialogdata)
+ return confirmation_formspec(
+ fgettext("Are you sure you want to delete \"$1\"?", dialogdata.content.name),
+ 'dlg_delete_content_confirm', fgettext("Delete"),
+ 'dlg_delete_content_cancel', fgettext("Cancel"))
end
--------------------------------------------------------------------------------
-local function delete_mod_buttonhandler(this, fields)
- if fields["dlg_delete_mod_confirm"] ~= nil then
+local function delete_content_buttonhandler(this, fields)
+ if fields["dlg_delete_content_confirm"] ~= nil then
- if this.data.mod.path ~= nil and
- this.data.mod.path ~= "" and
- this.data.mod.path ~= core.get_modpath() then
- if not core.delete_dir(this.data.mod.path) then
- gamedata.errormessage = fgettext("Modmgr: failed to delete \"$1\"", this.data.mod.path)
+ if this.data.content.path ~= nil and
+ this.data.content.path ~= "" and
+ this.data.content.path ~= core.get_modpath() and
+ this.data.content.path ~= core.get_gamepath() and
+ this.data.content.path ~= core.get_texturepath() then
+ if not core.delete_dir(this.data.content.path) then
+ gamedata.errormessage = fgettext("pkgmgr: failed to delete \"$1\"", this.data.content.path)
+ end
+
+ if this.data.content.type == "game" then
+ pkgmgr.update_gamelist()
+ else
+ pkgmgr.refresh_globals()
end
- modmgr.refresh_globals()
else
- gamedata.errormessage = fgettext("Modmgr: invalid modpath \"$1\"", this.data.mod.path)
+ gamedata.errormessage = fgettext("pkgmgr: invalid path \"$1\"", this.data.content.path)
end
this:delete()
return true
end
-
- if fields["dlg_delete_mod_cancel"] then
+
+ if fields["dlg_delete_content_cancel"] then
this:delete()
return true
end
@@ -58,12 +58,13 @@ local function delete_mod_buttonhandler(this, fields)
end
--------------------------------------------------------------------------------
-function create_delete_mod_dlg(selected_index)
+function create_delete_content_dlg(content)
+ assert(content.name)
- local retval = dialog_create("dlg_delete_mod",
- delete_mod_formspec,
- delete_mod_buttonhandler,
+ local retval = dialog_create("dlg_delete_content",
+ delete_content_formspec,
+ delete_content_buttonhandler,
nil)
- retval.data.selected = selected_index
+ retval.data.content = content
return retval
end
diff --git a/builtin/mainmenu/dlg_delete_world.lua b/builtin/mainmenu/dlg_delete_world.lua
index 1e5af1feb..67c0612bd 100644
--- a/builtin/mainmenu/dlg_delete_world.lua
+++ b/builtin/mainmenu/dlg_delete_world.lua
@@ -17,39 +17,33 @@
local function delete_world_formspec(dialogdata)
-
- local retval =
- "size[11.5,4.5,true]" ..
- "label[2,2;" ..
- fgettext("Delete World \"$1\"?", dialogdata.delete_name) .. "]" ..
- "button[3.25,3.5;2.5,0.5;world_delete_confirm;" .. fgettext("Delete") .. "]" ..
- "button[5.75,3.5;2.5,0.5;world_delete_cancel;" .. fgettext("Cancel") .. "]"
- return retval
+ return confirmation_formspec(
+ fgettext("Delete World \"$1\"?", dialogdata.delete_name),
+ 'world_delete_confirm', fgettext("Delete"),
+ 'world_delete_cancel', fgettext("Cancel"))
end
local function delete_world_buttonhandler(this, fields)
if fields["world_delete_confirm"] then
-
if this.data.delete_index > 0 and
- this.data.delete_index <= #menudata.worldlist:get_raw_list() then
+ this.data.delete_index <= #menudata.worldlist:get_raw_list() then
core.delete_world(this.data.delete_index)
menudata.worldlist:refresh()
end
this:delete()
return true
end
-
+
if fields["world_delete_cancel"] then
this:delete()
return true
end
-
+
return false
end
-function create_delete_world_dlg(name_to_del,index_to_del)
-
+function create_delete_world_dlg(name_to_del, index_to_del)
assert(name_to_del ~= nil and type(name_to_del) == "string" and name_to_del ~= "")
assert(index_to_del ~= nil and type(index_to_del) == "number")
@@ -59,6 +53,6 @@ function create_delete_world_dlg(name_to_del,index_to_del)
nil)
retval.data.delete_name = name_to_del
retval.data.delete_index = index_to_del
-
+
return retval
end
diff --git a/builtin/mainmenu/dlg_register.lua b/builtin/mainmenu/dlg_register.lua
new file mode 100644
index 000000000..a7658249c
--- /dev/null
+++ b/builtin/mainmenu/dlg_register.lua
@@ -0,0 +1,123 @@
+--Minetest
+--Copyright (C) 2022 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.
+
+--------------------------------------------------------------------------------
+
+local function register_formspec(dialogdata)
+ local title = fgettext("Joining $1", dialogdata.server and dialogdata.server.name or dialogdata.address)
+ local buttons_y = 4 + 1.3
+ if dialogdata.error then
+ buttons_y = buttons_y + 0.8
+ end
+
+ local retval = {
+ "formspec_version[4]",
+ "size[8,", tostring(buttons_y + 1.175), "]",
+ "set_focus[", (dialogdata.name ~= "" and "password" or "name"), "]",
+ "label[0.375,0.8;", title, "]",
+ "field[0.375,1.575;7.25,0.8;name;", core.formspec_escape(fgettext("Name")), ";",
+ core.formspec_escape(dialogdata.name), "]",
+ "pwdfield[0.375,2.875;7.25,0.8;password;", core.formspec_escape(fgettext("Password")), "]",
+ "pwdfield[0.375,4.175;7.25,0.8;password_2;", core.formspec_escape(fgettext("Confirm Password")), "]"
+ }
+
+ if dialogdata.error then
+ table.insert_all(retval, {
+ "box[0.375,", tostring(buttons_y - 0.9), ";7.25,0.6;darkred]",
+ "label[0.625,", tostring(buttons_y - 0.6), ";", core.formspec_escape(dialogdata.error), "]",
+ })
+ end
+
+ table.insert_all(retval, {
+ "container[0.375,", tostring(buttons_y), "]",
+ "button[0,0;2.5,0.8;dlg_register_confirm;", fgettext("Register"), "]",
+ "button[4.75,0;2.5,0.8;dlg_register_cancel;", fgettext("Cancel"), "]",
+ "container_end[]",
+ })
+
+ return table.concat(retval, "")
+end
+
+--------------------------------------------------------------------------------
+local function register_buttonhandler(this, fields)
+ this.data.name = fields.name
+ this.data.error = nil
+
+ if fields.dlg_register_confirm or fields.key_enter then
+ if fields.name == "" then
+ this.data.error = fgettext("Missing name")
+ return true
+ end
+ if fields.password ~= fields.password_2 then
+ this.data.error = fgettext("Passwords do not match")
+ return true
+ end
+
+ gamedata.playername = fields.name
+ gamedata.password = fields.password
+ gamedata.address = this.data.address
+ gamedata.port = this.data.port
+ gamedata.allow_login_or_register = "register"
+ gamedata.selected_world = 0
+
+ assert(gamedata.address and gamedata.port)
+
+ local server = this.data.server
+ if server then
+ serverlistmgr.add_favorite(server)
+ gamedata.servername = server.name
+ gamedata.serverdescription = server.description
+ else
+ gamedata.servername = ""
+ gamedata.serverdescription = ""
+
+ serverlistmgr.add_favorite({
+ address = gamedata.address,
+ port = gamedata.port,
+ })
+ end
+
+ core.settings:set("name", fields.name)
+ core.settings:set("address", gamedata.address)
+ core.settings:set("remote_port", gamedata.port)
+
+ core.start()
+ end
+
+ if fields["dlg_register_cancel"] then
+ this:delete()
+ return true
+ end
+
+ return false
+end
+
+--------------------------------------------------------------------------------
+function create_register_dialog(address, port, server)
+ assert(address)
+ assert(type(port) == "number")
+
+ local retval = dialog_create("dlg_register",
+ register_formspec,
+ register_buttonhandler,
+ nil)
+ retval.data.address = address
+ retval.data.port = port
+ retval.data.server = server
+ retval.data.name = core.settings:get("name") or ""
+ return retval
+end
diff --git a/builtin/mainmenu/dlg_rename_modpack.lua b/builtin/mainmenu/dlg_rename_modpack.lua
index 959c65d9b..ca76a8cbe 100644
--- a/builtin/mainmenu/dlg_rename_modpack.lua
+++ b/builtin/mainmenu/dlg_rename_modpack.lua
@@ -18,35 +18,41 @@
--------------------------------------------------------------------------------
local function rename_modpack_formspec(dialogdata)
-
- dialogdata.mod = modmgr.global_mods:get_list()[dialogdata.selected]
-
local retval =
"size[11.5,4.5,true]" ..
- "field[2.5,2;7,0.5;te_modpack_name;".. fgettext("Rename Modpack:") .. ";" ..
- dialogdata.mod.name .. "]" ..
"button[3.25,3.5;2.5,0.5;dlg_rename_modpack_confirm;"..
fgettext("Accept") .. "]" ..
"button[5.75,3.5;2.5,0.5;dlg_rename_modpack_cancel;"..
fgettext("Cancel") .. "]"
-
+
+ local input_y = 2
+ if dialogdata.mod.is_name_explicit then
+ retval = retval .. "textarea[1,0.2;10,2;;;" ..
+ fgettext("This modpack has an explicit name given in its modpack.conf " ..
+ "which will override any renaming here.") .. "]"
+ input_y = 2.5
+ end
+ retval = retval ..
+ "field[2.5," .. input_y .. ";7,0.5;te_modpack_name;" ..
+ fgettext("Rename Modpack:") .. ";" .. dialogdata.mod.dir_name .. "]"
+
return retval
end
--------------------------------------------------------------------------------
local function rename_modpack_buttonhandler(this, fields)
if fields["dlg_rename_modpack_confirm"] ~= nil then
- local oldpath = core.get_modpath() .. DIR_DELIM .. this.data.mod.name
- local targetpath = core.get_modpath() .. DIR_DELIM .. fields["te_modpack_name"]
- core.copy_dir(oldpath,targetpath,false)
- modmgr.refresh_globals()
- modmgr.selected_mod = modmgr.global_mods:get_current_index(
- modmgr.global_mods:raw_index_by_uid(fields["te_modpack_name"]))
-
+ local oldpath = this.data.mod.path
+ local targetpath = this.data.mod.parent_dir .. DIR_DELIM .. fields["te_modpack_name"]
+ os.rename(oldpath, targetpath)
+ pkgmgr.refresh_globals()
+ pkgmgr.selected_mod = pkgmgr.global_mods:get_current_index(
+ pkgmgr.global_mods:raw_index_by_uid(fields["te_modpack_name"]))
+
this:delete()
return true
end
-
+
if fields["dlg_rename_modpack_cancel"] then
this:delete()
return true
@@ -56,12 +62,12 @@ local function rename_modpack_buttonhandler(this, fields)
end
--------------------------------------------------------------------------------
-function create_rename_modpack_dlg(selected_index)
+function create_rename_modpack_dlg(modpack)
local retval = dialog_create("dlg_delete_mod",
rename_modpack_formspec,
rename_modpack_buttonhandler,
nil)
- retval.data.selected = selected_index
+ retval.data.mod = modpack
return retval
end
diff --git a/builtin/mainmenu/dlg_settings_advanced.lua b/builtin/mainmenu/dlg_settings_advanced.lua
index 06def72a3..69562e6a5 100644
--- a/builtin/mainmenu/dlg_settings_advanced.lua
+++ b/builtin/mainmenu/dlg_settings_advanced.lua
@@ -25,8 +25,16 @@ local CHAR_CLASSES = {
FLAGS = "[%w_%-%.,]",
}
+local function flags_to_table(flags)
+ return flags:gsub("%s+", ""):split(",", true) -- Remove all spaces and split
+end
+
-- returns error message, or nil
local function parse_setting_line(settings, line, read_all, base_level, allow_secure)
+
+ -- strip carriage returns (CR, /r)
+ line = line:gsub("\r", "")
+
-- comment
local comment = line:match("^#" .. CHAR_CLASSES.SPACE .. "*(.*)$")
if comment then
@@ -111,7 +119,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
return
end
- if setting_type == "string" or setting_type == "noise_params"
+ if setting_type == "string"
or setting_type == "key" or setting_type == "v3f" then
local default = remaining_line:match("^(.*)$")
@@ -133,6 +141,60 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
return
end
+ if setting_type == "noise_params_2d"
+ or setting_type == "noise_params_3d" then
+ local default = remaining_line:match("^(.*)$")
+
+ if not default then
+ return "Invalid string setting"
+ end
+
+ local values = {}
+ local ti = 1
+ local index = 1
+ for match in default:gmatch("[+-]?[%d.-e]+") do -- All numeric characters
+ index = default:find("[+-]?[%d.-e]+", index) + match:len()
+ table.insert(values, match)
+ ti = ti + 1
+ if ti > 9 then
+ break
+ end
+ end
+ index = default:find("[^, ]", index)
+ local flags = ""
+ if index then
+ flags = default:sub(index)
+ default = default:sub(1, index - 3) -- Make sure no flags in single-line format
+ end
+ table.insert(values, flags)
+
+ table.insert(settings, {
+ name = name,
+ readable_name = readable_name,
+ type = setting_type,
+ default = default,
+ default_table = {
+ offset = values[1],
+ scale = values[2],
+ spread = {
+ x = values[3],
+ y = values[4],
+ z = values[5]
+ },
+ seed = values[6],
+ octaves = values[7],
+ persistence = values[8],
+ lacunarity = values[9],
+ flags = values[10]
+ },
+ values = values,
+ comment = current_comment,
+ noise_params = true,
+ flags = flags_to_table("defaults,eased,absvalue")
+ })
+ return
+ end
+
if setting_type == "bool" then
if remaining_line ~= "false" and remaining_line ~= "true" then
return "Invalid boolean setting"
@@ -196,7 +258,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
return
end
- if setting_type == "path" then
+ if setting_type == "path" or setting_type == "filepath" then
local default = remaining_line:match("^(.*)$")
if not default then
@@ -206,7 +268,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
table.insert(settings, {
name = name,
readable_name = readable_name,
- type = "path",
+ type = setting_type,
default = default,
comment = current_comment,
})
@@ -236,7 +298,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
readable_name = readable_name,
type = "flags",
default = default,
- possible = possible,
+ possible = flags_to_table(possible),
comment = current_comment,
})
return
@@ -264,31 +326,34 @@ end
-- read_all: whether to ignore certain setting types for GUI or not
-- parse_mods: whether to parse settingtypes.txt in mods and games
local function parse_config_file(read_all, parse_mods)
- local builtin_path = core.get_builtin_path() .. DIR_DELIM .. FILENAME
- local file = io.open(builtin_path, "r")
local settings = {}
- if not file then
- core.log("error", "Can't load " .. FILENAME)
- return settings
- end
- parse_single_file(file, builtin_path, read_all, settings, 0, true)
+ do
+ local builtin_path = core.get_builtin_path() .. FILENAME
+ local file = io.open(builtin_path, "r")
+ if not file then
+ core.log("error", "Can't load " .. FILENAME)
+ return settings
+ end
+
+ parse_single_file(file, builtin_path, read_all, settings, 0, true)
- file:close()
+ file:close()
+ end
if parse_mods then
-- Parse games
local games_category_initialized = false
local index = 1
- local game = gamemgr.get_game(index)
+ local game = pkgmgr.get_game(index)
while game do
local path = game.path .. DIR_DELIM .. FILENAME
local file = io.open(path, "r")
if file then
if not games_category_initialized then
- local translation = fgettext_ne("Games"), -- not used, but needed for xgettext
+ fgettext_ne("Content: Games") -- not used, but needed for xgettext
table.insert(settings, {
- name = "Games",
+ name = "Content: Games",
level = 0,
type = "category",
})
@@ -307,21 +372,21 @@ local function parse_config_file(read_all, parse_mods)
end
index = index + 1
- game = gamemgr.get_game(index)
+ game = pkgmgr.get_game(index)
end
-- Parse mods
local mods_category_initialized = false
local mods = {}
- get_mods(core.get_modpath(), mods)
+ get_mods(core.get_modpath(), "mods", mods)
for _, mod in ipairs(mods) do
local path = mod.path .. DIR_DELIM .. FILENAME
local file = io.open(path, "r")
if file then
if not mods_category_initialized then
- local translation = fgettext_ne("Mods"), -- not used, but needed for xgettext
+ fgettext_ne("Content: Mods") -- not used, but needed for xgettext
table.insert(settings, {
- name = "Mods",
+ name = "Content: Mods",
level = 0,
type = "category",
})
@@ -330,6 +395,37 @@ local function parse_config_file(read_all, parse_mods)
table.insert(settings, {
name = mod.name,
+ readable_name = mod.title,
+ level = 1,
+ type = "category",
+ })
+
+ parse_single_file(file, path, read_all, settings, 2, false)
+
+ file:close()
+ end
+ end
+
+ -- Parse client mods
+ local clientmods_category_initialized = false
+ local clientmods = {}
+ get_mods(core.get_clientmodpath(), "clientmods", clientmods)
+ for _, mod in ipairs(clientmods) do
+ local path = mod.path .. DIR_DELIM .. FILENAME
+ local file = io.open(path, "r")
+ if file then
+ if not clientmods_category_initialized then
+ fgettext_ne("Client Mods") -- not used, but needed for xgettext
+ table.insert(settings, {
+ name = "Client Mods",
+ level = 0,
+ type = "category",
+ })
+ clientmods_category_initialized = true
+ end
+
+ table.insert(settings, {
+ name = mod.name,
level = 1,
type = "category",
})
@@ -344,78 +440,155 @@ local function parse_config_file(read_all, parse_mods)
return settings
end
-local settings = parse_config_file(false, true)
-local selected_setting = 1
+local function filter_settings(settings, searchstring)
+ if not searchstring or searchstring == "" then
+ return settings, -1
+ end
-local function get_current_value(setting)
- local value = core.setting_get(setting.name)
- if value == nil then
- value = setting.default
+ -- Setup the keyword list
+ local keywords = {}
+ for word in searchstring:lower():gmatch("%S+") do
+ table.insert(keywords, word)
end
- return value
-end
-local function create_change_setting_formspec(dialogdata)
- local setting = settings[selected_setting]
- local formspec = "size[10,5.2,true]" ..
- "button[5,4.5;2,1;btn_done;" .. fgettext("Save") .. "]" ..
- "button[3,4.5;2,1;btn_cancel;" .. fgettext("Cancel") .. "]" ..
- "tablecolumns[color;text]" ..
- "tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
- "table[0,0;10,3;info;"
+ local result = {}
+ local category_stack = {}
+ local current_level = 0
+ local best_setting = nil
+ for _, entry in pairs(settings) do
+ if entry.type == "category" then
+ -- Remove all settingless categories
+ while #category_stack > 0 and entry.level <= current_level do
+ table.remove(category_stack, #category_stack)
+ if #category_stack > 0 then
+ current_level = category_stack[#category_stack].level
+ else
+ current_level = 0
+ end
+ end
- if setting.readable_name then
- formspec = formspec .. "#FFFF00," .. fgettext(setting.readable_name)
- .. " (" .. core.formspec_escape(setting.name) .. "),"
- else
- formspec = formspec .. "#FFFF00," .. core.formspec_escape(setting.name) .. ","
- end
+ -- Push category onto stack
+ category_stack[#category_stack + 1] = entry
+ current_level = entry.level
+ else
+ -- See if setting matches keywords
+ local setting_score = 0
+ for k = 1, #keywords do
+ local keyword = keywords[k]
- formspec = formspec .. ",,"
+ if string.find(entry.name:lower(), keyword, 1, true) then
+ setting_score = setting_score + 1
+ end
- local comment_text = ""
+ if entry.readable_name and
+ string.find(fgettext(entry.readable_name):lower(), keyword, 1, true) then
+ setting_score = setting_score + 1
+ end
- if setting.comment == "" then
- comment_text = fgettext_ne("(No description of setting given)")
- else
- comment_text = fgettext_ne(setting.comment)
+ if entry.comment and
+ string.find(fgettext_ne(entry.comment):lower(), keyword, 1, true) then
+ setting_score = setting_score + 1
+ end
+ end
+
+ -- Add setting to results if match
+ if setting_score > 0 then
+ -- Add parent categories
+ for _, category in pairs(category_stack) do
+ result[#result + 1] = category
+ end
+ category_stack = {}
+
+ -- Add setting
+ result[#result + 1] = entry
+ entry.score = setting_score
+
+ if not best_setting or
+ setting_score > result[best_setting].score then
+ best_setting = #result
+ end
+ end
+ end
end
- for _, comment_line in ipairs(comment_text:split("\n", true)) do
- formspec = formspec .. "," .. core.formspec_escape(comment_line) .. ","
+ return result, best_setting or -1
+end
+
+local full_settings = parse_config_file(false, true)
+local search_string = ""
+local settings = full_settings
+local selected_setting = 1
+
+local function get_current_value(setting)
+ local value = core.settings:get(setting.name)
+ if value == nil then
+ value = setting.default
end
+ return value
+end
- if setting.type == "flags" then
- formspec = formspec .. ",,"
- .. "," .. fgettext("Please enter a comma seperated list of flags.") .. ","
- .. "," .. fgettext("Possible values are: ")
- .. core.formspec_escape(setting.possible:gsub(",", ", ")) .. ","
- elseif setting.type == "noise_params" then
- formspec = formspec .. ",,"
- .. "," .. fgettext("Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, <octaves>, <persistence>") .. ","
- .. "," .. fgettext("Optionally the lacunarity can be appended with a leading comma.") .. ","
- elseif setting.type == "v3f" then
- formspec = formspec .. ",,"
- .. "," .. fgettext_ne("Format is 3 numbers separated by commas and inside brackets.") .. ","
+local function get_current_np_group(setting)
+ local value = core.settings:get_np_group(setting.name)
+ if value == nil then
+ return setting.values
end
+ local p = "%g"
+ return {
+ p:format(value.offset),
+ p:format(value.scale),
+ p:format(value.spread.x),
+ p:format(value.spread.y),
+ p:format(value.spread.z),
+ p:format(value.seed),
+ p:format(value.octaves),
+ p:format(value.persistence),
+ p:format(value.lacunarity),
+ value.flags
+ }
+end
- formspec = formspec:sub(1, -2) -- remove trailing comma
+local function get_current_np_group_as_string(setting)
+ local value = core.settings:get_np_group(setting.name)
+ if value == nil then
+ return setting.default
+ end
+ return ("%g, %g, (%g, %g, %g), %g, %g, %g, %g"):format(
+ value.offset,
+ value.scale,
+ value.spread.x,
+ value.spread.y,
+ value.spread.z,
+ value.seed,
+ value.octaves,
+ value.persistence,
+ value.lacunarity
+ ) .. (value.flags ~= "" and (", " .. value.flags) or "")
+end
- formspec = formspec .. ";1]"
+local checkboxes = {} -- handle checkboxes events
+local function create_change_setting_formspec(dialogdata)
+ local setting = settings[selected_setting]
+ -- Final formspec will be created at the end of this function
+ -- Default values below, may be changed depending on setting type
+ local width = 10
+ local height = 3.5
+ local description_height = 3
+ local formspec = ""
+
+ -- Setting-specific formspec elements
if setting.type == "bool" then
- local selected_index
+ local selected_index = 1
if core.is_yes(get_current_value(setting)) then
selected_index = 2
- else
- selected_index = 1
end
- formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;"
+ formspec = "dropdown[3," .. height .. ";4,1;dd_setting_value;"
.. fgettext("Disabled") .. "," .. fgettext("Enabled") .. ";"
.. selected_index .. "]"
+ height = height + 1.25
elseif setting.type == "enum" then
local selected_index = 0
- formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;"
+ formspec = "dropdown[3," .. height .. ";4,1;dd_setting_value;"
for index, value in ipairs(setting.values) do
-- translating value is not possible, since it's the value
-- that we set the setting to
@@ -428,47 +601,240 @@ local function create_change_setting_formspec(dialogdata)
formspec = formspec:sub(1, -2) -- remove trailing comma
end
formspec = formspec .. ";" .. selected_index .. "]"
+ height = height + 1.25
- elseif setting.type == "path" then
+ elseif setting.type == "path" or setting.type == "filepath" then
local current_value = dialogdata.selected_path
if not current_value then
current_value = get_current_value(setting)
end
- formspec = formspec .. "field[0.5,4;7.5,1;te_setting_value;;"
+ formspec = "field[0.28," .. height + 0.15 .. ";8,1;te_setting_value;;"
.. core.formspec_escape(current_value) .. "]"
- .. "button[8,3.75;2,1;btn_browser_path;" .. fgettext("Browse") .. "]"
+ .. "button[8," .. height - 0.15 .. ";2,1;btn_browser_"
+ .. setting.type .. ";" .. fgettext("Browse") .. "]"
+ height = height + 1.15
+
+ elseif setting.type == "noise_params_2d" or setting.type == "noise_params_3d" then
+ local t = get_current_np_group(setting)
+ local dimension = 3
+ if setting.type == "noise_params_2d" then
+ dimension = 2
+ end
+
+ -- More space for 3x3 fields
+ description_height = description_height - 1.5
+ height = height - 1.5
+
+ local fields = {}
+ local function add_field(x, name, label, value)
+ fields[#fields + 1] = ("field[%f,%f;3.3,1;%s;%s;%s]"):format(
+ x, height, name, label, core.formspec_escape(value or "")
+ )
+ end
+ -- First row
+ height = height + 0.3
+ add_field(0.3, "te_offset", fgettext("Offset"), t[1])
+ add_field(3.6, "te_scale", fgettext("Scale"), t[2])
+ add_field(6.9, "te_seed", fgettext("Seed"), t[6])
+ height = height + 1.1
+
+ -- Second row
+ add_field(0.3, "te_spreadx", fgettext("X spread"), t[3])
+ if dimension == 3 then
+ add_field(3.6, "te_spready", fgettext("Y spread"), t[4])
+ else
+ fields[#fields + 1] = "label[4," .. height - 0.2 .. ";" ..
+ fgettext("2D Noise") .. "]"
+ end
+ add_field(6.9, "te_spreadz", fgettext("Z spread"), t[5])
+ height = height + 1.1
+
+ -- Third row
+ add_field(0.3, "te_octaves", fgettext("Octaves"), t[7])
+ add_field(3.6, "te_persist", fgettext("Persistence"), t[8])
+ add_field(6.9, "te_lacun", fgettext("Lacunarity"), t[9])
+ height = height + 1.1
+
+
+ local enabled_flags = flags_to_table(t[10])
+ local flags = {}
+ for _, name in ipairs(enabled_flags) do
+ -- Index by name, to avoid iterating over all enabled_flags for every possible flag.
+ flags[name] = true
+ end
+ for _, name in ipairs(setting.flags) do
+ local checkbox_name = "cb_" .. name
+ local is_enabled = flags[name] == true -- to get false if nil
+ checkboxes[checkbox_name] = is_enabled
+ end
+ -- Flags
+ formspec = table.concat(fields)
+ .. "checkbox[0.5," .. height - 0.6 .. ";cb_defaults;"
+ --[[~ "defaults" is a noise parameter flag.
+ It describes the default processing options
+ for noise settings in main menu -> "All Settings". ]]
+ .. fgettext("defaults") .. ";" -- defaults
+ .. tostring(flags["defaults"] == true) .. "]" -- to get false if nil
+ .. "checkbox[5," .. height - 0.6 .. ";cb_eased;"
+ --[[~ "eased" is a noise parameter flag.
+ It is used to make the map smoother and
+ can be enabled in noise settings in
+ main menu -> "All Settings". ]]
+ .. fgettext("eased") .. ";" -- eased
+ .. tostring(flags["eased"] == true) .. "]"
+ .. "checkbox[5," .. height - 0.15 .. ";cb_absvalue;"
+ --[[~ "absvalue" is a noise parameter flag.
+ It is short for "absolute value".
+ It can be enabled in noise settings in
+ main menu -> "All Settings". ]]
+ .. fgettext("absvalue") .. ";" -- absvalue
+ .. tostring(flags["absvalue"] == true) .. "]"
+ height = height + 1
+
+ elseif setting.type == "v3f" then
+ local val = get_current_value(setting)
+ local v3f = {}
+ for line in val:gmatch("[+-]?[%d.+-eE]+") do -- All numeric characters
+ table.insert(v3f, line)
+ end
+
+ height = height + 0.3
+ formspec = formspec
+ .. "field[0.3," .. height .. ";3.3,1;te_x;"
+ .. fgettext("X") .. ";" -- X
+ .. core.formspec_escape(v3f[1] or "") .. "]"
+ .. "field[3.6," .. height .. ";3.3,1;te_y;"
+ .. fgettext("Y") .. ";" -- Y
+ .. core.formspec_escape(v3f[2] or "") .. "]"
+ .. "field[6.9," .. height .. ";3.3,1;te_z;"
+ .. fgettext("Z") .. ";" -- Z
+ .. core.formspec_escape(v3f[3] or "") .. "]"
+ height = height + 1.1
+
+ elseif setting.type == "flags" then
+ local current_flags = flags_to_table(get_current_value(setting))
+ local flags = {}
+ for _, name in ipairs(current_flags) do
+ -- Index by name, to avoid iterating over all enabled_flags for every possible flag.
+ if name:sub(1, 2) == "no" then
+ flags[name:sub(3)] = false
+ else
+ flags[name] = true
+ end
+ end
+ local flags_count = #setting.possible / 2
+ local max_height = math.ceil(flags_count / 2) / 2
+
+ -- More space for flags
+ description_height = description_height - 1
+ height = height - 1
+
+ local fields = {} -- To build formspec
+ local j = 1
+ for _, name in ipairs(setting.possible) do
+ if name:sub(1, 2) ~= "no" then
+ local x = 0.5
+ local y = height + j / 2 - 0.75
+ if j - 1 >= flags_count / 2 then -- 2nd column
+ x = 5
+ y = y - max_height
+ end
+ j = j + 1;
+ local checkbox_name = "cb_" .. name
+ local is_enabled = flags[name] == true -- to get false if nil
+ checkboxes[checkbox_name] = is_enabled
+
+ fields[#fields + 1] = ("checkbox[%f,%f;%s;%s;%s]"):format(
+ x, y, checkbox_name, name, tostring(is_enabled)
+ )
+ end
+ end
+ formspec = table.concat(fields)
+ height = height + max_height + 0.25
else
- -- TODO: fancy input for float, int, flags, noise_params, v3f
- local width = 10
+ -- TODO: fancy input for float, int
local text = get_current_value(setting)
- if dialogdata.error_message then
- formspec = formspec .. "tablecolumns[color;text]" ..
- "tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
- "table[5,3.9;5,0.6;error_message;#FF0000,"
- .. core.formspec_escape(dialogdata.error_message) .. ";0]"
- width = 5
- if dialogdata.entered_text then
- text = dialogdata.entered_text
- end
+ if dialogdata.error_message and dialogdata.entered_text then
+ text = dialogdata.entered_text
end
- formspec = formspec .. "field[0.5,4;" .. width .. ",1;te_setting_value;;"
+ formspec = "field[0.28," .. height + 0.15 .. ";" .. width .. ",1;te_setting_value;;"
.. core.formspec_escape(text) .. "]"
+ height = height + 1.15
end
- return formspec
+
+ -- Box good, textarea bad. Calculate textarea size from box.
+ local function create_textfield(size, label, text, bg_color)
+ local textarea = {
+ x = size.x + 0.3,
+ y = size.y,
+ w = size.w + 0.25,
+ h = size.h * 1.16 + 0.12
+ }
+ return ("box[%f,%f;%f,%f;%s]textarea[%f,%f;%f,%f;;%s;%s]"):format(
+ size.x, size.y, size.w, size.h, bg_color or "#000",
+ textarea.x, textarea.y, textarea.w, textarea.h,
+ core.formspec_escape(label), core.formspec_escape(text)
+ )
+
+ end
+
+ -- When there's an error: Shrink description textarea and add error below
+ if dialogdata.error_message then
+ local error_box = {
+ x = 0,
+ y = description_height - 0.4,
+ w = width - 0.25,
+ h = 0.5
+ }
+ formspec = formspec ..
+ create_textfield(error_box, "", dialogdata.error_message, "#600")
+ description_height = description_height - 0.75
+ end
+
+ -- Get description field
+ local description_box = {
+ x = 0,
+ y = 0.2,
+ w = width - 0.25,
+ h = description_height
+ }
+
+ local setting_name = setting.name
+ if setting.readable_name then
+ setting_name = fgettext_ne(setting.readable_name) ..
+ " (" .. setting.name .. ")"
+ end
+
+ local comment_text
+ if setting.comment == "" then
+ comment_text = fgettext_ne("(No description of setting given)")
+ else
+ comment_text = fgettext_ne(setting.comment)
+ end
+
+ return (
+ "size[" .. width .. "," .. height + 0.25 .. ",true]" ..
+ create_textfield(description_box, setting_name, comment_text) ..
+ formspec ..
+ "button[" .. width / 2 - 2.5 .. "," .. height - 0.4 .. ";2.5,1;btn_done;" ..
+ fgettext("Save") .. "]" ..
+ "button[" .. width / 2 .. "," .. height - 0.4 .. ";2.5,1;btn_cancel;" ..
+ fgettext("Cancel") .. "]"
+ )
end
local function handle_change_setting_buttons(this, fields)
+ local setting = settings[selected_setting]
if fields["btn_done"] or fields["key_enter"] then
- local setting = settings[selected_setting]
if setting.type == "bool" then
local new_value = fields["dd_setting_value"]
-- Note: new_value is the actual (translated) value shown in the dropdown
- core.setting_setbool(setting.name, new_value == fgettext("Enabled"))
+ core.settings:set_bool(setting.name, new_value == fgettext("Enabled"))
elseif setting.type == "enum" then
local new_value = fields["dd_setting_value"]
- core.setting_set(setting.name, new_value)
+ core.settings:set(setting.name, new_value)
elseif setting.type == "int" then
local new_value = tonumber(fields["te_setting_value"])
@@ -479,18 +845,18 @@ local function handle_change_setting_buttons(this, fields)
return true
end
if setting.min and new_value < setting.min then
- this.data.error_message = fgettext_ne("The value must be greater than $1.", setting.min)
+ this.data.error_message = fgettext_ne("The value must be at least $1.", setting.min)
this.data.entered_text = fields["te_setting_value"]
core.update_formspec(this:get_formspec())
return true
end
if setting.max and new_value > setting.max then
- this.data.error_message = fgettext_ne("The value must be lower than $1.", setting.max)
+ this.data.error_message = fgettext_ne("The value must not be larger than $1.", setting.max)
this.data.entered_text = fields["te_setting_value"]
core.update_formspec(this:get_formspec())
return true
end
- core.setting_set(setting.name, new_value)
+ core.settings:set(setting.name, new_value)
elseif setting.type == "float" then
local new_value = tonumber(fields["te_setting_value"])
@@ -500,27 +866,78 @@ local function handle_change_setting_buttons(this, fields)
core.update_formspec(this:get_formspec())
return true
end
- core.setting_set(setting.name, new_value)
+ if setting.min and new_value < setting.min then
+ this.data.error_message = fgettext_ne("The value must be at least $1.", setting.min)
+ this.data.entered_text = fields["te_setting_value"]
+ core.update_formspec(this:get_formspec())
+ return true
+ end
+ if setting.max and new_value > setting.max then
+ this.data.error_message = fgettext_ne("The value must not be larger than $1.", setting.max)
+ this.data.entered_text = fields["te_setting_value"]
+ core.update_formspec(this:get_formspec())
+ return true
+ end
+ core.settings:set(setting.name, new_value)
elseif setting.type == "flags" then
- local new_value = fields["te_setting_value"]
- for _,value in ipairs(new_value:split(",", true)) do
- value = value:trim()
- local possible = "," .. setting.possible .. ","
- if not possible:find("," .. value .. ",", 0, true) then
- this.data.error_message = fgettext_ne("\"$1\" is not a valid flag.", value)
- this.data.entered_text = fields["te_setting_value"]
- core.update_formspec(this:get_formspec())
- return true
+ local values = {}
+ for _, name in ipairs(setting.possible) do
+ if name:sub(1, 2) ~= "no" then
+ if checkboxes["cb_" .. name] then
+ table.insert(values, name)
+ else
+ table.insert(values, "no" .. name)
+ end
+ end
+ end
+
+ checkboxes = {}
+
+ local new_value = table.concat(values, ", ")
+ core.settings:set(setting.name, new_value)
+
+ elseif setting.type == "noise_params_2d" or setting.type == "noise_params_3d" then
+ local np_flags = {}
+ for _, name in ipairs(setting.flags) do
+ if checkboxes["cb_" .. name] then
+ table.insert(np_flags, name)
end
end
- core.setting_set(setting.name, new_value)
+
+ checkboxes = {}
+
+ if setting.type == "noise_params_2d" then
+ fields["te_spready"] = fields["te_spreadz"]
+ end
+ local new_value = {
+ offset = fields["te_offset"],
+ scale = fields["te_scale"],
+ spread = {
+ x = fields["te_spreadx"],
+ y = fields["te_spready"],
+ z = fields["te_spreadz"]
+ },
+ seed = fields["te_seed"],
+ octaves = fields["te_octaves"],
+ persistence = fields["te_persist"],
+ lacunarity = fields["te_lacun"],
+ flags = table.concat(np_flags, ", ")
+ }
+ core.settings:set_np_group(setting.name, new_value)
+
+ elseif setting.type == "v3f" then
+ local new_value = "("
+ .. fields["te_x"] .. ", "
+ .. fields["te_y"] .. ", "
+ .. fields["te_z"] .. ")"
+ core.settings:set(setting.name, new_value)
else
local new_value = fields["te_setting_value"]
- core.setting_set(setting.name, new_value)
+ core.settings:set(setting.name, new_value)
end
- core.setting_save()
+ core.settings:write()
this:delete()
return true
end
@@ -531,7 +948,13 @@ local function handle_change_setting_buttons(this, fields)
end
if fields["btn_browser_path"] then
- core.show_file_open_dialog("dlg_browse_path", fgettext_ne("Select path"))
+ core.show_path_select_dialog("dlg_browse_path",
+ fgettext_ne("Select directory"), false)
+ end
+
+ if fields["btn_browser_filepath"] then
+ core.show_path_select_dialog("dlg_browse_path",
+ fgettext_ne("Select file"), true)
end
if fields["dlg_browse_path_accepted"] then
@@ -539,19 +962,32 @@ local function handle_change_setting_buttons(this, fields)
core.update_formspec(this:get_formspec())
end
+ if setting.type == "flags"
+ or setting.type == "noise_params_2d"
+ or setting.type == "noise_params_3d" then
+ for name, value in pairs(fields) do
+ if name:sub(1, 3) == "cb_" then
+ checkboxes[name] = value == "true"
+ end
+ end
+ end
+
return false
end
-local function create_settings_formspec(tabview, name, tabdata)
- local formspec = "size[12,6.5;true]" ..
- "tablecolumns[color;tree;text;text]" ..
+local function create_settings_formspec(tabview, _, tabdata)
+ local formspec = "size[12,5.4;true]" ..
+ "tablecolumns[color;tree;text,width=28;text]" ..
"tableoptions[background=#00000000;border=false]" ..
- "table[0,0;12,5.5;list_settings;"
+ "field[0.3,0.1;10.2,1;search_string;;" .. core.formspec_escape(search_string) .. "]" ..
+ "field_close_on_enter[search_string;false]" ..
+ "button[10.2,-0.2;2,1;search;" .. fgettext("Search") .. "]" ..
+ "table[0,0.8;12,3.5;list_settings;"
local current_level = 0
for _, entry in ipairs(settings) do
local name
- if not core.setting_getbool("main_menu_technical_settings") and entry.readable_name then
+ if not core.settings:get_bool("show_technical_names") and entry.readable_name then
name = fgettext_ne(entry.readable_name)
else
name = entry.name
@@ -571,9 +1007,13 @@ local function create_settings_formspec(tabview, name, tabdata)
formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. ","
.. value .. ","
- elseif entry.type == "key" then
+ elseif entry.type == "key" then --luacheck: ignore
-- ignore key settings, since we have a special dialog for them
+ elseif entry.type == "noise_params_2d" or entry.type == "noise_params_3d" then
+ formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. ","
+ .. core.formspec_escape(get_current_np_group_as_string(entry)) .. ","
+
else
formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. ","
.. core.formspec_escape(get_current_value(entry)) .. ","
@@ -584,11 +1024,11 @@ local function create_settings_formspec(tabview, name, tabdata)
formspec = formspec:sub(1, -2) -- remove trailing comma
end
formspec = formspec .. ";" .. selected_setting .. "]" ..
- "button[0,6;4,1;btn_back;".. fgettext("< Back to Settings page") .. "]" ..
- "button[10,6;2,1;btn_edit;" .. fgettext("Edit") .. "]" ..
- "button[7,6;3,1;btn_restore;" .. fgettext("Restore Default") .. "]" ..
- "checkbox[0,5.3;cb_tech_settings;" .. fgettext("Show technical names") .. ";"
- .. dump(core.setting_getbool("main_menu_technical_settings")) .. "]"
+ "button[0,4.9;4,1;btn_back;".. fgettext("< Back to Settings page") .. "]" ..
+ "button[10,4.9;2,1;btn_edit;" .. fgettext("Edit") .. "]" ..
+ "button[7,4.9;3,1;btn_restore;" .. fgettext("Restore Default") .. "]" ..
+ "checkbox[0,4.3;cb_tech_settings;" .. fgettext("Show technical names") .. ";"
+ .. dump(core.settings:get_bool("show_technical_names")) .. "]"
return formspec
end
@@ -597,13 +1037,13 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
local list_enter = false
if fields["list_settings"] then
selected_setting = core.get_table_index("list_settings")
- if core.explode_table_event(fields["list_settings"]).type == "DCL" then
+ if core.explode_table_event(fields["list_settings"]).type == "DCL" then
-- Directly toggle booleans
local setting = settings[selected_setting]
- if setting.type == "bool" then
+ if setting and setting.type == "bool" then
local current_value = get_current_value(setting)
- core.setting_setbool(setting.name, not core.is_yes(current_value))
- core.setting_save()
+ core.settings:set_bool(setting.name, not core.is_yes(current_value))
+ core.settings:write()
return true
else
list_enter = true
@@ -613,11 +1053,41 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
end
end
+ if fields.search or fields.key_enter_field == "search_string" then
+ if search_string == fields.search_string then
+ if selected_setting > 0 then
+ -- Go to next result on enter press
+ local i = selected_setting + 1
+ local looped = false
+ while i > #settings or settings[i].type == "category" do
+ i = i + 1
+ if i > #settings then
+ -- Stop infinte looping
+ if looped then
+ return false
+ end
+ i = 1
+ looped = true
+ end
+ end
+ selected_setting = i
+ core.update_formspec(this:get_formspec())
+ return true
+ end
+ else
+ -- Search for setting
+ search_string = fields.search_string
+ settings, selected_setting = filter_settings(full_settings, search_string)
+ core.update_formspec(this:get_formspec())
+ end
+ return true
+ end
+
if fields["btn_edit"] or list_enter then
local setting = settings[selected_setting]
- if setting.type ~= "category" then
- local edit_dialog = dialog_create("change_setting", create_change_setting_formspec,
- handle_change_setting_buttons)
+ if setting and setting.type ~= "category" then
+ local edit_dialog = dialog_create("change_setting",
+ create_change_setting_formspec, handle_change_setting_buttons)
edit_dialog:set_parent(this)
this:hide()
edit_dialog:show()
@@ -627,9 +1097,9 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
if fields["btn_restore"] then
local setting = settings[selected_setting]
- if setting.type ~= "category" then
- core.setting_set(setting.name, setting.default)
- core.setting_save()
+ if setting and setting.type ~= "category" then
+ core.settings:remove(setting.name)
+ core.settings:write()
core.update_formspec(this:get_formspec())
end
return true
@@ -641,8 +1111,8 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
end
if fields["cb_tech_settings"] then
- core.setting_set("main_menu_technical_settings", fields["cb_tech_settings"])
- core.setting_save()
+ core.settings:set("show_technical_names", fields["cb_tech_settings"])
+ core.settings:write()
core.update_formspec(this:get_formspec())
return true
end
@@ -659,12 +1129,9 @@ function create_adv_settings_dlg()
return dlg
end
--- Generate minetest.conf.example and settings_translation_file.cpp
-
--- *** Please note ***
--- There is text in minetest.conf.example that will not be generated from
--- settingtypes.txt but must be preserved:
--- The documentation of mapgen noise parameter formats (title plus 16 lines)
--- Noise parameter 'mgv5_np_ground' in group format (13 lines)
+-- Uncomment to generate 'minetest.conf.example' and 'settings_translation_file.cpp'.
+-- For RUN_IN_PLACE the generated files may appear in the 'bin' folder.
+-- See comment and alternative line at the end of 'generate_from_settingtypes.lua'.
---assert(loadfile(core.get_mainmenu_path()..DIR_DELIM.."generate_from_settingtypes.lua"))(parse_config_file(true, false))
+--assert(loadfile(core.get_builtin_path().."mainmenu"..DIR_DELIM..
+-- "generate_from_settingtypes.lua"))(parse_config_file(true, false))
diff --git a/builtin/mainmenu/dlg_version_info.lua b/builtin/mainmenu/dlg_version_info.lua
new file mode 100644
index 000000000..568fca3f4
--- /dev/null
+++ b/builtin/mainmenu/dlg_version_info.lua
@@ -0,0 +1,172 @@
+--[[
+Minetest
+Copyright (C) 2018-2020 SmallJoker, 2022 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.
+]]
+
+if not core.get_http_api then
+ function check_new_version()
+ end
+ return
+end
+
+local function version_info_formspec(data)
+ local cur_ver = core.get_version()
+ local title = fgettext("A new $1 version is available", cur_ver.project)
+ local message =
+ fgettext("Installed version: $1\nNew version: $2\n" ..
+ "Visit $3 to find out how to get the newest version and stay up to date" ..
+ " with features and bugfixes.",
+ cur_ver.string, data.new_version or "", data.url or "")
+
+ local fs = {
+ "formspec_version[3]",
+ "size[12.8,7]",
+ "style_type[label;textcolor=#0E0]",
+ "label[0.5,0.8;", core.formspec_escape(title), "]",
+ "textarea[0.4,1.6;12,3.4;;;",
+ core.formspec_escape(message), "]",
+ "container[0.4,5.8]",
+ "button[0.0,0;4.0,0.8;version_check_visit;", fgettext("Visit website"), "]",
+ "button[4.5,0;3.5,0.8;version_check_remind;", fgettext("Later"), "]",
+ "button[8.5.5,0;3.5,0.8;version_check_never;", fgettext("Never"), "]",
+ "container_end[]",
+ }
+
+ return table.concat(fs, "")
+end
+
+local function version_info_buttonhandler(this, fields)
+ if fields.version_check_remind then
+ -- Erase last known, user will be reminded again at next check
+ core.settings:set("update_last_known", "")
+ this:delete()
+ return true
+ end
+ if fields.version_check_never then
+ core.settings:set("update_last_checked", "disabled")
+ this:delete()
+ return true
+ end
+ if fields.version_check_visit then
+ if type(this.data.url) == "string" then
+ core.open_url(this.data.url)
+ end
+ this:delete()
+ return true
+ end
+
+ return false
+end
+
+local function create_version_info_dlg(new_version, url)
+ assert(type(new_version) == "string")
+ assert(type(url) == "string")
+
+ local retval = dialog_create("version_info",
+ version_info_formspec,
+ version_info_buttonhandler,
+ nil)
+
+ retval.data.new_version = new_version
+ retval.data.url = url
+
+ return retval
+end
+
+local function get_current_version_code()
+ -- Format: Major.Minor.Patch
+ -- Convert to MMMNNNPPP
+ local cur_string = core.get_version().string
+ local cur_major, cur_minor, cur_patch = cur_string:match("^(%d+).(%d+).(%d+)")
+
+ if not cur_patch then
+ core.log("error", "Failed to parse version numbers (invalid tag format?)")
+ return
+ end
+
+ return (cur_major * 1000 + cur_minor) * 1000 + cur_patch
+end
+
+local function on_version_info_received(json)
+ local maintab = ui.find_by_name("maintab")
+ if maintab.hidden then
+ -- Another dialog is open, abort.
+ return
+ end
+
+ local known_update = tonumber(core.settings:get("update_last_known")) or 0
+
+ -- Format: MMNNPPP (Major, Minor, Patch)
+ local new_number = type(json.latest) == "table" and json.latest.version_code
+ if type(new_number) ~= "number" then
+ core.log("error", "Failed to read version number (invalid response?)")
+ return
+ end
+
+ local cur_number = get_current_version_code()
+ if new_number <= known_update or new_number < cur_number then
+ return
+ end
+
+ -- Also consider updating from 1.2.3-dev to 1.2.3
+ if new_number == cur_number and not core.get_version().is_dev then
+ return
+ end
+
+ core.settings:set("update_last_known", tostring(new_number))
+
+ -- Show version info dialog (once)
+ maintab:hide()
+
+ local version_info_dlg = create_version_info_dlg(json.latest.version, json.latest.url)
+ version_info_dlg:set_parent(maintab)
+ version_info_dlg:show()
+
+ ui.update()
+end
+
+function check_new_version()
+ local url = core.settings:get("update_information_url")
+ if core.settings:get("update_last_checked") == "disabled" or
+ url == "" then
+ -- Never show any updates
+ return
+ end
+
+ local time_now = os.time()
+ local time_checked = tonumber(core.settings:get("update_last_checked")) or 0
+ if time_now - time_checked < 2 * 24 * 3600 then
+ -- Check interval of 2 entire days
+ return
+ end
+
+ core.settings:set("update_last_checked", tostring(time_now))
+
+ core.handle_async(function(params)
+ local http = core.get_http_api()
+ return http.fetch_sync(params)
+ end, { url = url }, function(result)
+ local json = result.succeeded and core.parse_json(result.data)
+ if type(json) ~= "table" or not json.latest then
+ core.log("error", "Failed to read JSON output from " .. url ..
+ ", status code = " .. result.code)
+ return
+ end
+
+ on_version_info_received(json)
+ end)
+end
diff --git a/builtin/mainmenu/textures.lua b/builtin/mainmenu/game_theme.lua
index dadbb093e..89e1b66c8 100644
--- a/builtin/mainmenu/textures.lua
+++ b/builtin/mainmenu/game_theme.lua
@@ -16,134 +16,142 @@
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-mm_texture = {}
+mm_game_theme = {}
--------------------------------------------------------------------------------
-function mm_texture.init()
- mm_texture.defaulttexturedir = core.get_texturepath() .. DIR_DELIM .. "base" ..
+function mm_game_theme.init()
+ mm_game_theme.defaulttexturedir = core.get_texturepath_share() .. DIR_DELIM .. "base" ..
DIR_DELIM .. "pack" .. DIR_DELIM
- mm_texture.basetexturedir = mm_texture.defaulttexturedir
-
- mm_texture.texturepack = core.setting_get("texture_path")
-
- mm_texture.gameid = nil
+ mm_game_theme.basetexturedir = mm_game_theme.defaulttexturedir
+
+ mm_game_theme.texturepack = core.settings:get("texture_path")
+
+ mm_game_theme.gameid = nil
+
+ mm_game_theme.music_handle = nil
end
--------------------------------------------------------------------------------
-function mm_texture.update(tab,gamedetails)
+function mm_game_theme.update(tab,gamedetails)
if tab ~= "singleplayer" then
- mm_texture.reset()
+ mm_game_theme.reset()
return
end
if gamedetails == nil then
return
end
-
- mm_texture.update_game(gamedetails)
+
+ mm_game_theme.update_game(gamedetails)
end
--------------------------------------------------------------------------------
-function mm_texture.reset()
- mm_texture.gameid = nil
+function mm_game_theme.reset()
+ mm_game_theme.gameid = nil
local have_bg = false
- local have_overlay = mm_texture.set_generic("overlay")
-
+ local have_overlay = mm_game_theme.set_generic("overlay")
+
if not have_overlay then
- have_bg = mm_texture.set_generic("background")
+ have_bg = mm_game_theme.set_generic("background")
end
-
- mm_texture.clear("header")
- mm_texture.clear("footer")
+
+ mm_game_theme.clear("header")
+ mm_game_theme.clear("footer")
core.set_clouds(false)
-
- mm_texture.set_generic("footer")
- mm_texture.set_generic("header")
-
+
+ mm_game_theme.set_generic("footer")
+ mm_game_theme.set_generic("header")
+
if not have_bg then
- if core.setting_getbool("menu_clouds") then
+ if core.settings:get_bool("menu_clouds") then
core.set_clouds(true)
else
- mm_texture.set_dirt_bg()
+ mm_game_theme.set_dirt_bg()
end
end
+
+ if mm_game_theme.music_handle ~= nil then
+ core.sound_stop(mm_game_theme.music_handle)
+ end
end
--------------------------------------------------------------------------------
-function mm_texture.update_game(gamedetails)
- if mm_texture.gameid == gamedetails.id then
+function mm_game_theme.update_game(gamedetails)
+ if mm_game_theme.gameid == gamedetails.id then
return
end
-
+
local have_bg = false
- local have_overlay = mm_texture.set_game("overlay",gamedetails)
-
+ local have_overlay = mm_game_theme.set_game("overlay",gamedetails)
+
if not have_overlay then
- have_bg = mm_texture.set_game("background",gamedetails)
+ have_bg = mm_game_theme.set_game("background",gamedetails)
end
-
- mm_texture.clear("header")
- mm_texture.clear("footer")
+
+ mm_game_theme.clear("header")
+ mm_game_theme.clear("footer")
core.set_clouds(false)
-
+
if not have_bg then
-
- if core.setting_getbool("menu_clouds") then
+
+ if core.settings:get_bool("menu_clouds") then
core.set_clouds(true)
else
- mm_texture.set_dirt_bg()
+ mm_game_theme.set_dirt_bg()
end
end
-
- mm_texture.set_game("footer",gamedetails)
- mm_texture.set_game("header",gamedetails)
-
- mm_texture.gameid = gamedetails.id
+
+ mm_game_theme.set_game("footer",gamedetails)
+ mm_game_theme.set_game("header",gamedetails)
+
+ mm_game_theme.gameid = gamedetails.id
end
--------------------------------------------------------------------------------
-function mm_texture.clear(identifier)
+function mm_game_theme.clear(identifier)
core.set_background(identifier,"")
end
--------------------------------------------------------------------------------
-function mm_texture.set_generic(identifier)
+function mm_game_theme.set_generic(identifier)
--try texture pack first
- if mm_texture.texturepack ~= nil then
- local path = mm_texture.texturepack .. DIR_DELIM .."menu_" ..
+ if mm_game_theme.texturepack ~= nil then
+ local path = mm_game_theme.texturepack .. DIR_DELIM .."menu_" ..
identifier .. ".png"
if core.set_background(identifier,path) then
return true
end
end
-
- if mm_texture.defaulttexturedir ~= nil then
- local path = mm_texture.defaulttexturedir .. DIR_DELIM .."menu_" ..
+
+ if mm_game_theme.defaulttexturedir ~= nil then
+ local path = mm_game_theme.defaulttexturedir .. DIR_DELIM .."menu_" ..
identifier .. ".png"
if core.set_background(identifier,path) then
return true
end
end
-
+
return false
end
--------------------------------------------------------------------------------
-function mm_texture.set_game(identifier, gamedetails)
-
+function mm_game_theme.set_game(identifier, gamedetails)
+
if gamedetails == nil then
return false
end
- if mm_texture.texturepack ~= nil then
- local path = mm_texture.texturepack .. DIR_DELIM ..
+ mm_game_theme.set_music(gamedetails)
+
+ if mm_game_theme.texturepack ~= nil then
+ local path = mm_game_theme.texturepack .. DIR_DELIM ..
gamedetails.id .. "_menu_" .. identifier .. ".png"
if core.set_background(identifier, path) then
return true
end
end
-
- -- Find out how many randomized textures the subgame provides
+
+ -- Find out how many randomized textures the game provides
local n = 0
local filename
local menu_files = core.get_dir_list(gamedetails.path .. DIR_DELIM .. "menu", false)
@@ -167,19 +175,29 @@ function mm_texture.set_game(identifier, gamedetails)
if core.set_background(identifier, path) then
return true
end
-
+
return false
end
-function mm_texture.set_dirt_bg()
- if mm_texture.texturepack ~= nil then
- local path = mm_texture.texturepack .. DIR_DELIM .."default_dirt.png"
+--------------------------------------------------------------------------------
+function mm_game_theme.set_dirt_bg()
+ if mm_game_theme.texturepack ~= nil then
+ local path = mm_game_theme.texturepack .. DIR_DELIM .."default_dirt.png"
if core.set_background("background", path, true, 128) then
return true
end
end
-
+
-- Use universal fallback texture in textures/base/pack
local minimalpath = defaulttexturedir .. "menu_bg.png"
core.set_background("background", minimalpath, true, 128)
end
+
+--------------------------------------------------------------------------------
+function mm_game_theme.set_music(gamedetails)
+ if mm_game_theme.music_handle ~= nil then
+ core.sound_stop(mm_game_theme.music_handle)
+ end
+ local music_path = gamedetails.path .. DIR_DELIM .. "menu" .. DIR_DELIM .. "theme"
+ mm_game_theme.music_handle = core.sound_play(music_path, true)
+end
diff --git a/builtin/mainmenu/gamemgr.lua b/builtin/mainmenu/gamemgr.lua
deleted file mode 100644
index b6faa71d9..000000000
--- a/builtin/mainmenu/gamemgr.lua
+++ /dev/null
@@ -1,83 +0,0 @@
---Minetest
---Copyright (C) 2013 sapier
---
---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.
-
-gamemgr = {}
-
---------------------------------------------------------------------------------
-function gamemgr.find_by_gameid(gameid)
- for i=1,#gamemgr.games,1 do
- if gamemgr.games[i].id == gameid then
- return gamemgr.games[i], i
- end
- end
- return nil, nil
-end
-
---------------------------------------------------------------------------------
-function gamemgr.get_game_mods(gamespec, retval)
- if gamespec ~= nil and
- gamespec.gamemods_path ~= nil and
- gamespec.gamemods_path ~= "" then
- get_mods(gamespec.gamemods_path, retval)
- end
-end
-
---------------------------------------------------------------------------------
-function gamemgr.get_game_modlist(gamespec)
- local retval = ""
- local game_mods = {}
- gamemgr.get_game_mods(gamespec, game_mods)
- for i=1,#game_mods,1 do
- if retval ~= "" then
- retval = retval..","
- end
- retval = retval .. game_mods[i].name
- end
- return retval
-end
-
---------------------------------------------------------------------------------
-function gamemgr.get_game(index)
- if index > 0 and index <= #gamemgr.games then
- return gamemgr.games[index]
- end
-
- return nil
-end
-
---------------------------------------------------------------------------------
-function gamemgr.update_gamelist()
- gamemgr.games = core.get_games()
-end
-
---------------------------------------------------------------------------------
-function gamemgr.gamelist()
- local retval = ""
- if #gamemgr.games > 0 then
- retval = retval .. gamemgr.games[1].name
-
- for i=2,#gamemgr.games,1 do
- retval = retval .. "," .. gamemgr.games[i].name
- end
- end
- return retval
-end
-
---------------------------------------------------------------------------------
--- read initial data
---------------------------------------------------------------------------------
-gamemgr.update_gamelist()
diff --git a/builtin/mainmenu/generate_from_settingtypes.lua b/builtin/mainmenu/generate_from_settingtypes.lua
index 6c9ba27fb..0f551fbb1 100644
--- a/builtin/mainmenu/generate_from_settingtypes.lua
+++ b/builtin/mainmenu/generate_from_settingtypes.lua
@@ -22,6 +22,20 @@ local minetest_example_header = [[
]]
+local group_format_template = [[
+# %s = {
+# offset = %s,
+# scale = %s,
+# spread = (%s, %s, %s),
+# seed = %s,
+# octaves = %s,
+# persistence = %s,
+# lacunarity = %s,
+# flags =%s
+# }
+
+]]
+
local function create_minetest_conf_example()
local result = { minetest_example_header }
for _, entry in ipairs(settings) do
@@ -33,9 +47,19 @@ local function create_minetest_conf_example()
insert(result, "# " .. entry.name .. "\n\n")
end
else
+ local group_format = false
+ if entry.noise_params and entry.values then
+ if entry.type == "noise_params_2d" or entry.type == "noise_params_3d" then
+ group_format = true
+ end
+ end
if entry.comment ~= "" then
for _, comment_line in ipairs(entry.comment:split("\n", true)) do
- insert(result, "# " .. comment_line .. "\n")
+ if comment_line == "" then
+ insert(result, "#\n")
+ else
+ insert(result, "# " .. comment_line .. "\n")
+ end
end
end
insert(result, "# type: " .. entry.type)
@@ -45,18 +69,29 @@ local function create_minetest_conf_example()
if entry.max then
insert(result, " max: " .. entry.max)
end
- if entry.values then
+ if entry.values and entry.noise_params == nil then
insert(result, " values: " .. concat(entry.values, ", "))
end
if entry.possible then
- insert(result, " possible values: " .. entry.possible:gsub(",", ", "))
+ insert(result, " possible values: " .. concat(entry.possible, ", "))
end
insert(result, "\n")
- local append
- if entry.default ~= "" then
- append = " " .. entry.default
+ if group_format == true then
+ local flags = entry.values[10]
+ if flags ~= "" then
+ flags = " "..flags
+ end
+ insert(result, sprintf(group_format_template, entry.name, entry.values[1],
+ entry.values[2], entry.values[3], entry.values[4], entry.values[5],
+ entry.values[6], entry.values[7], entry.values[8], entry.values[9],
+ flags))
+ else
+ local append
+ if entry.default ~= "" then
+ append = " " .. entry.default
+ end
+ insert(result, sprintf("# %s =%s\n\n", entry.name, append or ""))
end
- insert(result, sprintf("# %s =%s\n\n", entry.name, append or ""))
end
end
return concat(result)
@@ -64,7 +99,7 @@ end
local translation_file_header = [[
// This file is automatically generated
-// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files
+// It contains a bunch of fake gettext calls, to tell xgettext about the strings in config files
// To update it, refer to the bottom of builtin/mainmenu/dlg_settings_advanced.lua
fake_function() {]]
@@ -94,6 +129,8 @@ file:write(create_minetest_conf_example())
file:close()
file = assert(io.open("src/settings_translation_file.cpp", "w"))
+-- If 'minetest.conf.example' appears in the 'bin' folder, the line below may have to be
+-- used instead. The file will also appear in the 'bin' folder.
+--file = assert(io.open("settings_translation_file.cpp", "w"))
file:write(create_translation_file())
file:close()
-
diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua
index 7f0c1e386..c3a28a570 100644
--- a/builtin/mainmenu/init.lua
+++ b/builtin/mainmenu/init.lua
@@ -16,51 +16,46 @@
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
mt_color_grey = "#AAAAAA"
-mt_color_blue = "#0000DD"
-mt_color_green = "#00DD00"
-mt_color_dark_green = "#003300"
-
---for all other colors ask sfan5 to complete his work!
+mt_color_blue = "#6389FF"
+mt_color_lightblue = "#99CCFF"
+mt_color_green = "#72FF63"
+mt_color_dark_green = "#25C191"
+mt_color_orange = "#FF8800"
+mt_color_red = "#FF3300"
local menupath = core.get_mainmenu_path()
local basepath = core.get_builtin_path()
defaulttexturedir = core.get_texturepath_share() .. DIR_DELIM .. "base" ..
DIR_DELIM .. "pack" .. DIR_DELIM
-dofile(basepath .. DIR_DELIM .. "common" .. DIR_DELIM .. "async_event.lua")
-dofile(basepath .. DIR_DELIM .. "common" .. DIR_DELIM .. "filterlist.lua")
-dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "buttonbar.lua")
-dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "dialog.lua")
-dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "tabview.lua")
-dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "ui.lua")
+dofile(basepath .. "common" .. DIR_DELIM .. "filterlist.lua")
+dofile(basepath .. "fstk" .. DIR_DELIM .. "buttonbar.lua")
+dofile(basepath .. "fstk" .. DIR_DELIM .. "dialog.lua")
+dofile(basepath .. "fstk" .. DIR_DELIM .. "tabview.lua")
+dofile(basepath .. "fstk" .. DIR_DELIM .. "ui.lua")
+dofile(menupath .. DIR_DELIM .. "async_event.lua")
dofile(menupath .. DIR_DELIM .. "common.lua")
-dofile(menupath .. DIR_DELIM .. "gamemgr.lua")
-dofile(menupath .. DIR_DELIM .. "modmgr.lua")
-dofile(menupath .. DIR_DELIM .. "store.lua")
-dofile(menupath .. DIR_DELIM .. "textures.lua")
+dofile(menupath .. DIR_DELIM .. "pkgmgr.lua")
+dofile(menupath .. DIR_DELIM .. "serverlistmgr.lua")
+dofile(menupath .. DIR_DELIM .. "game_theme.lua")
dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua")
dofile(menupath .. DIR_DELIM .. "dlg_settings_advanced.lua")
-if PLATFORM ~= "Android" then
- dofile(menupath .. DIR_DELIM .. "dlg_create_world.lua")
- dofile(menupath .. DIR_DELIM .. "dlg_delete_mod.lua")
- dofile(menupath .. DIR_DELIM .. "dlg_delete_world.lua")
- dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua")
-end
+dofile(menupath .. DIR_DELIM .. "dlg_contentstore.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_create_world.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_delete_content.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_delete_world.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_register.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua")
+dofile(menupath .. DIR_DELIM .. "dlg_version_info.lua")
local tabs = {}
tabs.settings = dofile(menupath .. DIR_DELIM .. "tab_settings.lua")
-tabs.mods = dofile(menupath .. DIR_DELIM .. "tab_mods.lua")
-tabs.credits = dofile(menupath .. DIR_DELIM .. "tab_credits.lua")
-if PLATFORM == "Android" then
- tabs.simple_main = dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua")
-else
- tabs.singleplayer = dofile(menupath .. DIR_DELIM .. "tab_singleplayer.lua")
- tabs.multiplayer = dofile(menupath .. DIR_DELIM .. "tab_multiplayer.lua")
- tabs.server = dofile(menupath .. DIR_DELIM .. "tab_server.lua")
- tabs.texturepacks = dofile(menupath .. DIR_DELIM .. "tab_texturepacks.lua")
-end
+tabs.content = dofile(menupath .. DIR_DELIM .. "tab_content.lua")
+tabs.about = dofile(menupath .. DIR_DELIM .. "tab_about.lua")
+tabs.local_game = dofile(menupath .. DIR_DELIM .. "tab_local.lua")
+tabs.play_online = dofile(menupath .. DIR_DELIM .. "tab_online.lua")
--------------------------------------------------------------------------------
local function main_event_handler(tabview, event)
@@ -75,96 +70,62 @@ local function init_globals()
-- Init gamedata
gamedata.worldindex = 0
- if PLATFORM == "Android" then
- local world_list = core.get_worlds()
- local world_index
-
- local found_singleplayerworld = false
- for i, world in ipairs(world_list) do
- if world.name == "singleplayerworld" then
- found_singleplayerworld = true
- world_index = i
- break
- end
+ menudata.worldlist = filterlist.create(
+ core.get_worlds,
+ compare_worlds,
+ -- Unique id comparison function
+ function(element, uid)
+ return element.name == uid
+ end,
+ -- Filter function
+ function(element, gameid)
+ return element.gameid == gameid
end
+ )
- if not found_singleplayerworld then
- core.create_world("singleplayerworld", 1)
+ menudata.worldlist:add_sort_mechanism("alphabetic", sort_worlds_alphabetic)
+ menudata.worldlist:set_sortmode("alphabetic")
- world_list = core.get_worlds()
-
- for i, world in ipairs(world_list) do
- if world.name == "singleplayerworld" then
- world_index = i
- break
- end
- end
- end
-
- gamedata.worldindex = world_index
- else
- menudata.worldlist = filterlist.create(
- core.get_worlds,
- compare_worlds,
- -- Unique id comparison function
- function(element, uid)
- return element.name == uid
- end,
- -- Filter function
- function(element, gameid)
- return element.gameid == gameid
- end
- )
-
- menudata.worldlist:add_sort_mechanism("alphabetic", sort_worlds_alphabetic)
- menudata.worldlist:set_sortmode("alphabetic")
-
- if not core.setting_get("menu_last_game") then
- local default_game = core.setting_get("default_game") or "minetest"
- core.setting_set("menu_last_game", default_game)
- end
-
- mm_texture.init()
+ if not core.settings:get("menu_last_game") then
+ local default_game = core.settings:get("default_game") or "minetest"
+ core.settings:set("menu_last_game", default_game)
end
+ mm_game_theme.init()
+
-- Create main tabview
- local tv_main = tabview_create("maintab", {x = 12, y = 5.2}, {x = 0, y = 0})
-
- if PLATFORM == "Android" then
- tv_main:add(tabs.simple_main)
- tv_main:add(tabs.settings)
- else
- tv_main:set_autosave_tab(true)
- tv_main:add(tabs.singleplayer)
- tv_main:add(tabs.multiplayer)
- tv_main:add(tabs.server)
- tv_main:add(tabs.settings)
- tv_main:add(tabs.texturepacks)
- end
+ local tv_main = tabview_create("maintab", {x = 12, y = 5.4}, {x = 0, y = 0})
+ -- note: size would be 15.5,7.1 in real coordinates mode
+
+ tv_main:set_autosave_tab(true)
+ tv_main:add(tabs.local_game)
+ tv_main:add(tabs.play_online)
- tv_main:add(tabs.mods)
- tv_main:add(tabs.credits)
+ tv_main:add(tabs.content)
+ tv_main:add(tabs.settings)
+ tv_main:add(tabs.about)
tv_main:set_global_event_handler(main_event_handler)
tv_main:set_fixed_size(false)
- if PLATFORM ~= "Android" then
- tv_main:set_tab(core.setting_get("maintab_LAST"))
+ local last_tab = core.settings:get("maintab_LAST")
+ if last_tab and tv_main.current_tab ~= last_tab then
+ tv_main:set_tab(last_tab)
end
- ui.set_default("maintab")
- tv_main:show()
- -- Create modstore ui
- if PLATFORM == "Android" then
- modstore.init({x = 12, y = 6}, 3, 2)
- else
- modstore.init({x = 12, y = 8}, 4, 3)
+ -- In case the folder of the last selected game has been deleted,
+ -- display "Minetest" as a header
+ if tv_main.current_tab == "local" then
+ local game = pkgmgr.find_by_gameid(core.settings:get("menu_last_game"))
+ if game == nil then
+ mm_game_theme.reset()
+ end
end
+ ui.set_default("maintab")
+ check_new_version()
+ tv_main:show()
ui.update()
-
- core.sound_play("main_menu", true)
end
init_globals()
-
diff --git a/builtin/mainmenu/init_simple.lua b/builtin/mainmenu/init_simple.lua
deleted file mode 100644
index 298bd834e..000000000
--- a/builtin/mainmenu/init_simple.lua
+++ /dev/null
@@ -1,4 +0,0 @@
--- helper file to be able to debug the simple menu on PC
--- without messing around with actual menu code!
-PLATFORM = "Android"
-dofile("builtin/mainmenu/init.lua")
diff --git a/builtin/mainmenu/modmgr.lua b/builtin/mainmenu/modmgr.lua
deleted file mode 100644
index bf87b1dfa..000000000
--- a/builtin/mainmenu/modmgr.lua
+++ /dev/null
@@ -1,571 +0,0 @@
---Minetest
---Copyright (C) 2013 sapier
---
---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.
-
---------------------------------------------------------------------------------
-function get_mods(path,retval,modpack)
- local mods = core.get_dir_list(path, true)
-
- for _, name in ipairs(mods) do
- if name:sub(1, 1) ~= "." then
- local prefix = path .. DIR_DELIM .. name .. DIR_DELIM
- local toadd = {}
- retval[#retval + 1] = toadd
-
- local mod_conf = Settings(prefix .. "mod.conf"):to_table()
- if mod_conf.name then
- name = mod_conf.name
- end
-
- toadd.name = name
- toadd.path = prefix
-
- if modpack ~= nil and modpack ~= "" then
- toadd.modpack = modpack
- else
- local modpackfile = io.open(prefix .. "modpack.txt")
- if modpackfile then
- modpackfile:close()
- toadd.is_modpack = true
- get_mods(prefix, retval, name)
- end
- end
- end
- end
-end
-
---modmanager implementation
-modmgr = {}
-
---------------------------------------------------------------------------------
-function modmgr.extract(modfile)
- if modfile.type == "zip" then
- local tempfolder = os.tempfolder()
-
- if tempfolder ~= nil and
- tempfolder ~= "" then
- core.create_dir(tempfolder)
- if core.extract_zip(modfile.name,tempfolder) then
- return tempfolder
- end
- end
- end
- return nil
-end
-
--------------------------------------------------------------------------------
-function modmgr.getbasefolder(temppath)
-
- if temppath == nil then
- return {
- type = "invalid",
- path = ""
- }
- end
-
- local testfile = io.open(temppath .. DIR_DELIM .. "init.lua","r")
- if testfile ~= nil then
- testfile:close()
- return {
- type="mod",
- path=temppath
- }
- end
-
- testfile = io.open(temppath .. DIR_DELIM .. "modpack.txt","r")
- if testfile ~= nil then
- testfile:close()
- return {
- type="modpack",
- path=temppath
- }
- end
-
- local subdirs = core.get_dir_list(temppath, true)
-
- --only single mod or modpack allowed
- if #subdirs ~= 1 then
- return {
- type = "invalid",
- path = ""
- }
- end
-
- testfile =
- io.open(temppath .. DIR_DELIM .. subdirs[1] ..DIR_DELIM .."init.lua","r")
- if testfile ~= nil then
- testfile:close()
- return {
- type="mod",
- path= temppath .. DIR_DELIM .. subdirs[1]
- }
- end
-
- testfile =
- io.open(temppath .. DIR_DELIM .. subdirs[1] ..DIR_DELIM .."modpack.txt","r")
- if testfile ~= nil then
- testfile:close()
- return {
- type="modpack",
- path=temppath .. DIR_DELIM .. subdirs[1]
- }
- end
-
- return {
- type = "invalid",
- path = ""
- }
-end
-
---------------------------------------------------------------------------------
-function modmgr.isValidModname(modpath)
- if modpath:find("-") ~= nil then
- return false
- end
-
- return true
-end
-
---------------------------------------------------------------------------------
-function modmgr.parse_register_line(line)
- local pos1 = line:find("\"")
- local pos2 = nil
- if pos1 ~= nil then
- pos2 = line:find("\"",pos1+1)
- end
-
- if pos1 ~= nil and pos2 ~= nil then
- local item = line:sub(pos1+1,pos2-1)
-
- if item ~= nil and
- item ~= "" then
- local pos3 = item:find(":")
-
- if pos3 ~= nil then
- local retval = item:sub(1,pos3-1)
- if retval ~= nil and
- retval ~= "" then
- return retval
- end
- end
- end
- end
- return nil
-end
-
---------------------------------------------------------------------------------
-function modmgr.parse_dofile_line(modpath,line)
- local pos1 = line:find("\"")
- local pos2 = nil
- if pos1 ~= nil then
- pos2 = line:find("\"",pos1+1)
- end
-
- if pos1 ~= nil and pos2 ~= nil then
- local filename = line:sub(pos1+1,pos2-1)
-
- if filename ~= nil and
- filename ~= "" and
- filename:find(".lua") then
- return modmgr.identify_modname(modpath,filename)
- end
- end
- return nil
-end
-
---------------------------------------------------------------------------------
-function modmgr.identify_modname(modpath,filename)
- local testfile = io.open(modpath .. DIR_DELIM .. filename,"r")
- if testfile ~= nil then
- local line = testfile:read()
-
- while line~= nil do
- local modname = nil
-
- if line:find("minetest.register_tool") then
- modname = modmgr.parse_register_line(line)
- end
-
- if line:find("minetest.register_craftitem") then
- modname = modmgr.parse_register_line(line)
- end
-
-
- if line:find("minetest.register_node") then
- modname = modmgr.parse_register_line(line)
- end
-
- if line:find("dofile") then
- modname = modmgr.parse_dofile_line(modpath,line)
- end
-
- if modname ~= nil then
- testfile:close()
- return modname
- end
-
- line = testfile:read()
- end
- testfile:close()
- end
-
- return nil
-end
---------------------------------------------------------------------------------
-function modmgr.render_modlist(render_list)
- local retval = ""
-
- if render_list == nil then
- if modmgr.global_mods == nil then
- modmgr.refresh_globals()
- end
- render_list = modmgr.global_mods
- end
-
- local list = render_list:get_list()
- local last_modpack = nil
-
- for i,v in ipairs(list) do
- if retval ~= "" then
- retval = retval ..","
- end
-
- local color = ""
-
- if v.is_modpack then
- local rawlist = render_list:get_raw_list()
-
- local all_enabled = true
- for j=1,#rawlist,1 do
- if rawlist[j].modpack == list[i].name and
- rawlist[j].enabled ~= true then
- all_enabled = false
- break
- end
- end
-
- if all_enabled == false then
- color = mt_color_grey
- else
- color = mt_color_dark_green
- end
- end
-
- if v.typ == "game_mod" then
- color = mt_color_blue
- else
- if v.enabled then
- color = mt_color_green
- end
- end
-
- retval = retval .. color
- if v.modpack ~= nil then
- retval = retval .. " "
- end
- retval = retval .. v.name
- end
-
- return retval
-end
-
---------------------------------------------------------------------------------
-function modmgr.get_dependencies(modfolder)
- local toadd_hard = ""
- local toadd_soft = ""
- if modfolder ~= nil then
- local filename = modfolder ..
- DIR_DELIM .. "depends.txt"
-
- local hard_dependencies = {}
- local soft_dependencies = {}
- local dependencyfile = io.open(filename,"r")
- if dependencyfile then
- local dependency = dependencyfile:read("*l")
- while dependency do
- if string.sub(dependency, -1, -1) == "?" then
- table.insert(soft_dependencies, string.sub(dependency, 1, -2))
- else
- table.insert(hard_dependencies, dependency)
- end
- dependency = dependencyfile:read()
- end
- dependencyfile:close()
- end
- toadd_hard = table.concat(hard_dependencies, ",")
- toadd_soft = table.concat(soft_dependencies, ",")
- end
-
- return toadd_hard, toadd_soft
-end
-
---------------------------------------------------------------------------------
-function modmgr.get_worldconfig(worldpath)
- local filename = worldpath ..
- DIR_DELIM .. "world.mt"
-
- local worldfile = Settings(filename)
-
- local worldconfig = {}
- worldconfig.global_mods = {}
- worldconfig.game_mods = {}
-
- for key,value in pairs(worldfile:to_table()) do
- if key == "gameid" then
- worldconfig.id = value
- elseif key:sub(0, 9) == "load_mod_" then
- worldconfig.global_mods[key] = core.is_yes(value)
- else
- worldconfig[key] = value
- end
- end
-
- --read gamemods
- local gamespec = gamemgr.find_by_gameid(worldconfig.id)
- gamemgr.get_game_mods(gamespec, worldconfig.game_mods)
-
- return worldconfig
-end
-
---------------------------------------------------------------------------------
-function modmgr.installmod(modfilename,basename)
- local modfile = modmgr.identify_filetype(modfilename)
- local modpath = modmgr.extract(modfile)
-
- if modpath == nil then
- gamedata.errormessage = fgettext("Install Mod: file: \"$1\"", modfile.name) ..
- fgettext("\nInstall Mod: unsupported filetype \"$1\" or broken archive", modfile.type)
- return
- end
-
- local basefolder = modmgr.getbasefolder(modpath)
-
- if basefolder.type == "modpack" then
- local clean_path = nil
-
- if basename ~= nil then
- clean_path = "mp_" .. basename
- end
-
- if clean_path == nil then
- clean_path = get_last_folder(cleanup_path(basefolder.path))
- end
-
- if clean_path ~= nil then
- local targetpath = core.get_modpath() .. DIR_DELIM .. clean_path
- if not core.copy_dir(basefolder.path,targetpath) then
- gamedata.errormessage = fgettext("Failed to install $1 to $2", basename, targetpath)
- end
- else
- gamedata.errormessage = fgettext("Install Mod: unable to find suitable foldername for modpack $1", modfilename)
- end
- end
-
- if basefolder.type == "mod" then
- local targetfolder = basename
-
- if targetfolder == nil then
- targetfolder = modmgr.identify_modname(basefolder.path,"init.lua")
- end
-
- --if heuristic failed try to use current foldername
- if targetfolder == nil then
- targetfolder = get_last_folder(basefolder.path)
- end
-
- if targetfolder ~= nil and modmgr.isValidModname(targetfolder) then
- local targetpath = core.get_modpath() .. DIR_DELIM .. targetfolder
- core.copy_dir(basefolder.path,targetpath)
- else
- gamedata.errormessage = fgettext("Install Mod: unable to find real modname for: $1", modfilename)
- end
- end
-
- core.delete_dir(modpath)
-
- modmgr.refresh_globals()
-
-end
-
---------------------------------------------------------------------------------
-function modmgr.preparemodlist(data)
- local retval = {}
-
- local global_mods = {}
- local game_mods = {}
-
- --read global mods
- local modpath = core.get_modpath()
-
- if modpath ~= nil and
- modpath ~= "" then
- get_mods(modpath,global_mods)
- end
-
- for i=1,#global_mods,1 do
- global_mods[i].typ = "global_mod"
- retval[#retval + 1] = global_mods[i]
- end
-
- --read game mods
- local gamespec = gamemgr.find_by_gameid(data.gameid)
- gamemgr.get_game_mods(gamespec, game_mods)
-
- for i=1,#game_mods,1 do
- game_mods[i].typ = "game_mod"
- retval[#retval + 1] = game_mods[i]
- end
-
- if data.worldpath == nil then
- return retval
- end
-
- --read world mod configuration
- local filename = data.worldpath ..
- DIR_DELIM .. "world.mt"
-
- local worldfile = Settings(filename)
-
- for key,value in pairs(worldfile:to_table()) do
- if key:sub(1, 9) == "load_mod_" then
- key = key:sub(10)
- local element = nil
- for i=1,#retval,1 do
- if retval[i].name == key and
- not retval[i].is_modpack then
- element = retval[i]
- break
- end
- end
- if element ~= nil then
- element.enabled = core.is_yes(value)
- else
- core.log("info", "Mod: " .. key .. " " .. dump(value) .. " but not found")
- end
- end
- end
-
- return retval
-end
-
---------------------------------------------------------------------------------
-function modmgr.comparemod(elem1,elem2)
- if elem1 == nil or elem2 == nil then
- return false
- end
- if elem1.name ~= elem2.name then
- return false
- end
- if elem1.is_modpack ~= elem2.is_modpack then
- return false
- end
- if elem1.typ ~= elem2.typ then
- return false
- end
- if elem1.modpack ~= elem2.modpack then
- return false
- end
-
- if elem1.path ~= elem2.path then
- return false
- end
-
- return true
-end
-
---------------------------------------------------------------------------------
-function modmgr.mod_exists(basename)
-
- if modmgr.global_mods == nil then
- modmgr.refresh_globals()
- end
-
- if modmgr.global_mods:raw_index_by_uid(basename) > 0 then
- return true
- end
-
- return false
-end
-
---------------------------------------------------------------------------------
-function modmgr.get_global_mod(idx)
-
- if modmgr.global_mods == nil then
- return nil
- end
-
- if idx == nil or idx < 1 or
- idx > modmgr.global_mods:size() then
- return nil
- end
-
- return modmgr.global_mods:get_list()[idx]
-end
-
---------------------------------------------------------------------------------
-function modmgr.refresh_globals()
- modmgr.global_mods = filterlist.create(
- modmgr.preparemodlist, --refresh
- modmgr.comparemod, --compare
- function(element,uid) --uid match
- if element.name == uid then
- return true
- end
- end,
- nil, --filter
- {}
- )
- modmgr.global_mods:add_sort_mechanism("alphabetic", sort_mod_list)
- modmgr.global_mods:set_sortmode("alphabetic")
-end
-
---------------------------------------------------------------------------------
-function modmgr.identify_filetype(name)
-
- if name:sub(-3):lower() == "zip" then
- return {
- name = name,
- type = "zip"
- }
- end
-
- if name:sub(-6):lower() == "tar.gz" or
- name:sub(-3):lower() == "tgz"then
- return {
- name = name,
- type = "tgz"
- }
- end
-
- if name:sub(-6):lower() == "tar.bz2" then
- return {
- name = name,
- type = "tbz"
- }
- end
-
- if name:sub(-2):lower() == "7z" then
- return {
- name = name,
- type = "7z"
- }
- end
-
- return {
- name = name,
- type = "ukn"
- }
-end
diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua
new file mode 100644
index 000000000..853509b4f
--- /dev/null
+++ b/builtin/mainmenu/pkgmgr.lua
@@ -0,0 +1,929 @@
+--Minetest
+--Copyright (C) 2013 sapier
+--
+--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.
+
+--------------------------------------------------------------------------------
+local function get_last_folder(text,count)
+ local parts = text:split(DIR_DELIM)
+
+ if count == nil then
+ return parts[#parts]
+ end
+
+ local retval = ""
+ for i=1,count,1 do
+ retval = retval .. parts[#parts - (count-i)] .. DIR_DELIM
+ end
+
+ return retval
+end
+
+local function cleanup_path(temppath)
+
+ local parts = temppath:split("-")
+ temppath = ""
+ for i=1,#parts,1 do
+ if temppath ~= "" then
+ temppath = temppath .. "_"
+ end
+ temppath = temppath .. parts[i]
+ end
+
+ parts = temppath:split(".")
+ temppath = ""
+ for i=1,#parts,1 do
+ if temppath ~= "" then
+ temppath = temppath .. "_"
+ end
+ temppath = temppath .. parts[i]
+ end
+
+ parts = temppath:split("'")
+ temppath = ""
+ for i=1,#parts,1 do
+ if temppath ~= "" then
+ temppath = temppath .. ""
+ end
+ temppath = temppath .. parts[i]
+ end
+
+ parts = temppath:split(" ")
+ temppath = ""
+ for i=1,#parts,1 do
+ if temppath ~= "" then
+ temppath = temppath
+ end
+ temppath = temppath .. parts[i]
+ end
+
+ return temppath
+end
+
+local function load_texture_packs(txtpath, retval)
+ local list = core.get_dir_list(txtpath, true)
+ local current_texture_path = core.settings:get("texture_path")
+
+ for _, item in ipairs(list) do
+ if item ~= "base" then
+ local path = txtpath .. DIR_DELIM .. item .. DIR_DELIM
+ local conf = Settings(path .. "texture_pack.conf")
+ local enabled = path == current_texture_path
+
+ local title = conf:get("title") or item
+
+ -- list_* is only used if non-nil, else the regular versions are used.
+ retval[#retval + 1] = {
+ name = item,
+ title = title,
+ list_name = enabled and fgettext("$1 (Enabled)", item) or nil,
+ list_title = enabled and fgettext("$1 (Enabled)", title) or nil,
+ author = conf:get("author"),
+ release = tonumber(conf:get("release")) or 0,
+ type = "txp",
+ path = path,
+ enabled = enabled,
+ }
+ end
+ end
+end
+
+function get_mods(path, virtual_path, retval, modpack)
+ local mods = core.get_dir_list(path, true)
+
+ for _, name in ipairs(mods) do
+ if name:sub(1, 1) ~= "." then
+ local mod_path = path .. DIR_DELIM .. name
+ local mod_virtual_path = virtual_path .. "/" .. name
+ local toadd = {
+ dir_name = name,
+ parent_dir = path,
+ }
+ retval[#retval + 1] = toadd
+
+ -- Get config file
+ local mod_conf
+ local modpack_conf = io.open(mod_path .. DIR_DELIM .. "modpack.conf")
+ if modpack_conf then
+ toadd.is_modpack = true
+ modpack_conf:close()
+
+ mod_conf = Settings(mod_path .. DIR_DELIM .. "modpack.conf"):to_table()
+ if mod_conf.name then
+ name = mod_conf.name
+ toadd.is_name_explicit = true
+ end
+ else
+ mod_conf = Settings(mod_path .. DIR_DELIM .. "mod.conf"):to_table()
+ if mod_conf.name then
+ name = mod_conf.name
+ toadd.is_name_explicit = true
+ end
+ end
+
+ -- Read from config
+ toadd.name = name
+ toadd.title = mod_conf.title
+ toadd.author = mod_conf.author
+ toadd.release = tonumber(mod_conf.release) or 0
+ toadd.path = mod_path
+ toadd.virtual_path = mod_virtual_path
+ toadd.type = "mod"
+
+ -- Check modpack.txt
+ -- Note: modpack.conf is already checked above
+ local modpackfile = io.open(mod_path .. DIR_DELIM .. "modpack.txt")
+ if modpackfile then
+ modpackfile:close()
+ toadd.is_modpack = true
+ end
+
+ -- Deal with modpack contents
+ if modpack and modpack ~= "" then
+ toadd.modpack = modpack
+ elseif toadd.is_modpack then
+ toadd.type = "modpack"
+ toadd.is_modpack = true
+ get_mods(mod_path, mod_virtual_path, retval, name)
+ end
+ end
+ end
+end
+
+--modmanager implementation
+pkgmgr = {}
+
+function pkgmgr.get_texture_packs()
+ local txtpath = core.get_texturepath()
+ local txtpath_system = core.get_texturepath_share()
+ local retval = {}
+
+ load_texture_packs(txtpath, retval)
+ -- on portable versions these two paths coincide. It avoids loading the path twice
+ if txtpath ~= txtpath_system then
+ load_texture_packs(txtpath_system, retval)
+ end
+
+ table.sort(retval, function(a, b)
+ return a.name > b.name
+ end)
+
+ return retval
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_folder_type(path)
+ local testfile = io.open(path .. DIR_DELIM .. "init.lua","r")
+ if testfile ~= nil then
+ testfile:close()
+ return { type = "mod", path = path }
+ end
+
+ testfile = io.open(path .. DIR_DELIM .. "modpack.conf","r")
+ if testfile ~= nil then
+ testfile:close()
+ return { type = "modpack", path = path }
+ end
+
+ testfile = io.open(path .. DIR_DELIM .. "modpack.txt","r")
+ if testfile ~= nil then
+ testfile:close()
+ return { type = "modpack", path = path }
+ end
+
+ testfile = io.open(path .. DIR_DELIM .. "game.conf","r")
+ if testfile ~= nil then
+ testfile:close()
+ return { type = "game", path = path }
+ end
+
+ testfile = io.open(path .. DIR_DELIM .. "texture_pack.conf","r")
+ if testfile ~= nil then
+ testfile:close()
+ return { type = "txp", path = path }
+ end
+
+ return nil
+end
+
+-------------------------------------------------------------------------------
+function pkgmgr.get_base_folder(temppath)
+ if temppath == nil then
+ return { type = "invalid", path = "" }
+ end
+
+ local ret = pkgmgr.get_folder_type(temppath)
+ if ret then
+ return ret
+ end
+
+ local subdirs = core.get_dir_list(temppath, true)
+ if #subdirs == 1 then
+ ret = pkgmgr.get_folder_type(temppath .. DIR_DELIM .. subdirs[1])
+ if ret then
+ return ret
+ else
+ return { type = "invalid", path = temppath .. DIR_DELIM .. subdirs[1] }
+ end
+ end
+
+ return nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.isValidModname(modpath)
+ if modpath:find("-") ~= nil then
+ return false
+ end
+
+ return true
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.parse_register_line(line)
+ local pos1 = line:find("\"")
+ local pos2 = nil
+ if pos1 ~= nil then
+ pos2 = line:find("\"",pos1+1)
+ end
+
+ if pos1 ~= nil and pos2 ~= nil then
+ local item = line:sub(pos1+1,pos2-1)
+
+ if item ~= nil and
+ item ~= "" then
+ local pos3 = item:find(":")
+
+ if pos3 ~= nil then
+ local retval = item:sub(1,pos3-1)
+ if retval ~= nil and
+ retval ~= "" then
+ return retval
+ end
+ end
+ end
+ end
+ return nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.parse_dofile_line(modpath,line)
+ local pos1 = line:find("\"")
+ local pos2 = nil
+ if pos1 ~= nil then
+ pos2 = line:find("\"",pos1+1)
+ end
+
+ if pos1 ~= nil and pos2 ~= nil then
+ local filename = line:sub(pos1+1,pos2-1)
+
+ if filename ~= nil and
+ filename ~= "" and
+ filename:find(".lua") then
+ return pkgmgr.identify_modname(modpath,filename)
+ end
+ end
+ return nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.identify_modname(modpath,filename)
+ local testfile = io.open(modpath .. DIR_DELIM .. filename,"r")
+ if testfile ~= nil then
+ local line = testfile:read()
+
+ while line~= nil do
+ local modname = nil
+
+ if line:find("minetest.register_tool") then
+ modname = pkgmgr.parse_register_line(line)
+ end
+
+ if line:find("minetest.register_craftitem") then
+ modname = pkgmgr.parse_register_line(line)
+ end
+
+
+ if line:find("minetest.register_node") then
+ modname = pkgmgr.parse_register_line(line)
+ end
+
+ if line:find("dofile") then
+ modname = pkgmgr.parse_dofile_line(modpath,line)
+ end
+
+ if modname ~= nil then
+ testfile:close()
+ return modname
+ end
+
+ line = testfile:read()
+ end
+ testfile:close()
+ end
+
+ return nil
+end
+--------------------------------------------------------------------------------
+function pkgmgr.render_packagelist(render_list, use_technical_names, with_error)
+ if not render_list then
+ if not pkgmgr.global_mods then
+ pkgmgr.refresh_globals()
+ end
+ render_list = pkgmgr.global_mods
+ end
+
+ local list = render_list:get_list()
+ local retval = {}
+ for i, v in ipairs(list) do
+ local color = ""
+ local icon = 0
+ local error = with_error and with_error[v.virtual_path]
+ local function update_error(val)
+ if val and (not error or (error.type == "warning" and val.type == "error")) then
+ error = val
+ end
+ end
+
+ if v.is_modpack then
+ local rawlist = render_list:get_raw_list()
+ color = mt_color_dark_green
+
+ for j = 1, #rawlist do
+ if rawlist[j].modpack == list[i].name then
+ if with_error then
+ update_error(with_error[rawlist[j].virtual_path])
+ end
+
+ if rawlist[j].enabled then
+ icon = 1
+ else
+ -- Modpack not entirely enabled so showing as grey
+ color = mt_color_grey
+ end
+ end
+ end
+ elseif v.is_game_content or v.type == "game" then
+ icon = 1
+ color = mt_color_blue
+
+ local rawlist = render_list:get_raw_list()
+ if v.type == "game" and with_error then
+ for j = 1, #rawlist do
+ if rawlist[j].is_game_content then
+ update_error(with_error[rawlist[j].virtual_path])
+ end
+ end
+ end
+ elseif v.enabled or v.type == "txp" then
+ icon = 1
+ color = mt_color_green
+ end
+
+ if error then
+ if error.type == "warning" then
+ color = mt_color_orange
+ icon = 2
+ else
+ color = mt_color_red
+ icon = 3
+ end
+ end
+
+ retval[#retval + 1] = color
+ if v.modpack ~= nil or v.loc == "game" then
+ retval[#retval + 1] = "1"
+ else
+ retval[#retval + 1] = "0"
+ end
+
+ if with_error then
+ retval[#retval + 1] = icon
+ end
+
+ if use_technical_names then
+ retval[#retval + 1] = core.formspec_escape(v.list_name or v.name)
+ else
+ retval[#retval + 1] = core.formspec_escape(v.list_title or v.list_name or v.title or v.name)
+ end
+ end
+
+ return table.concat(retval, ",")
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_dependencies(path)
+ if path == nil then
+ return {}, {}
+ end
+
+ local info = core.get_content_info(path)
+ return info.depends or {}, info.optional_depends or {}
+end
+
+----------- tests whether all of the mods in the modpack are enabled -----------
+function pkgmgr.is_modpack_entirely_enabled(data, name)
+ local rawlist = data.list:get_raw_list()
+ for j = 1, #rawlist do
+ if rawlist[j].modpack == name and not rawlist[j].enabled then
+ return false
+ end
+ end
+ return true
+end
+
+local function disable_all_by_name(list, name, except)
+ for i=1, #list do
+ if list[i].name == name and list[i] ~= except then
+ list[i].enabled = false
+ end
+ end
+end
+
+---------- toggles or en/disables a mod or modpack and its dependencies --------
+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
+ toset = not mod.enabled
+ end
+ if mod.enabled ~= toset then
+ toggled_mods[#toggled_mods+1] = mod.name
+ end
+ if toset then
+ -- Mark this mod for recursive dependency traversal
+ enabled_mods[mod.name] = true
+
+ -- Disable other mods with the same name
+ disable_all_by_name(list, mod.name, mod)
+ end
+ mod.enabled = toset
+ else
+ -- Toggle or en/disable every mod in the modpack,
+ -- interleaved unsupported
+ for i = 1, #list do
+ if list[i].modpack == mod.name then
+ 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 next(enabled_mods) == nil then
+ -- Mod(s) were disabled, so no dependencies need to be enabled
+ table.sort(toggled_mods)
+ core.log("info", "Following mods were disabled: " ..
+ table.concat(toggled_mods, ", "))
+ return
+ end
+
+ -- Enable mods' depends after activation
+
+ -- Make a list of mod ids indexed by their names. Among mods with the
+ -- same name, enabled mods take precedence, after which game mods take
+ -- precedence, being last in the mod list.
+ local mod_ids = {}
+ for id, mod2 in pairs(list) do
+ if mod2.type == "mod" and not mod2.is_modpack then
+ local prev_id = mod_ids[mod2.name]
+ if not prev_id or not list[prev_id].enabled then
+ mod_ids[mod2.name] = id
+ end
+ end
+ end
+
+ -- to_enable is used as a DFS stack with sp as stack pointer
+ local to_enable = {}
+ local sp = 0
+ for name in pairs(enabled_mods) do
+ local depends = pkgmgr.get_dependencies(list[mod_ids[name]].path)
+ for i = 1, #depends do
+ local dependency_name = depends[i]
+ if not enabled_mods[dependency_name] then
+ sp = sp+1
+ to_enable[sp] = dependency_name
+ end
+ end
+ end
+
+ -- If sp is 0, every dependency is already activated
+ while sp > 0 do
+ local name = to_enable[sp]
+ sp = sp-1
+
+ if not enabled_mods[name] then
+ enabled_mods[name] = true
+ local mod_to_enable = list[mod_ids[name]]
+ if not mod_to_enable then
+ core.log("warning", "Mod dependency \"" .. name ..
+ "\" not found!")
+ elseif not mod_to_enable.is_game_content then
+ if not mod_to_enable.enabled then
+ mod_to_enable.enabled = true
+ toggled_mods[#toggled_mods+1] = mod_to_enable.name
+ end
+ -- Push the dependencies of the dependency onto the stack
+ local depends = pkgmgr.get_dependencies(mod_to_enable.path)
+ for i = 1, #depends do
+ if not enabled_mods[depends[i]] then
+ sp = sp+1
+ to_enable[sp] = depends[i]
+ end
+ end
+ end
+ end
+ end
+
+ -- Log the list of enabled mods
+ table.sort(toggled_mods)
+ core.log("info", "Following mods were enabled: " ..
+ table.concat(toggled_mods, ", "))
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_worldconfig(worldpath)
+ local filename = worldpath ..
+ DIR_DELIM .. "world.mt"
+
+ local worldfile = Settings(filename)
+
+ local worldconfig = {}
+ worldconfig.global_mods = {}
+ worldconfig.game_mods = {}
+
+ for key,value in pairs(worldfile:to_table()) do
+ if key == "gameid" then
+ worldconfig.id = value
+ elseif key:sub(0, 9) == "load_mod_" then
+ -- Compatibility: Check against "nil" which was erroneously used
+ -- as value for fresh configured worlds
+ worldconfig.global_mods[key] = value ~= "false" and value ~= "nil"
+ and value
+ else
+ worldconfig[key] = value
+ end
+ end
+
+ --read gamemods
+ local gamespec = pkgmgr.find_by_gameid(worldconfig.id)
+ pkgmgr.get_game_mods(gamespec, worldconfig.game_mods)
+
+ return worldconfig
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.install_dir(type, path, basename, targetpath)
+ local basefolder = pkgmgr.get_base_folder(path)
+
+ -- There's no good way to detect a texture pack, so let's just assume
+ -- it's correct for now.
+ if type == "txp" then
+ if basefolder and basefolder.type ~= "invalid" and basefolder.type ~= "txp" then
+ return nil, fgettext("Unable to install a $1 as a texture pack", basefolder.type)
+ end
+
+ local from = basefolder and basefolder.path or path
+ if not targetpath then
+ targetpath = core.get_texturepath() .. DIR_DELIM .. basename
+ end
+ core.delete_dir(targetpath)
+ if not core.copy_dir(from, targetpath, false) then
+ return nil,
+ fgettext("Failed to install $1 to $2", basename, targetpath)
+ end
+ return targetpath, nil
+
+ elseif not basefolder then
+ return nil, fgettext("Unable to find a valid mod or modpack")
+ end
+
+ --
+ -- Get destination
+ --
+ if basefolder.type == "modpack" then
+ if type ~= "mod" then
+ return nil, fgettext("Unable to install a modpack as a $1", type)
+ end
+
+ -- Get destination name for modpack
+ if targetpath then
+ core.delete_dir(targetpath)
+ else
+ local clean_path = nil
+ if basename ~= nil then
+ clean_path = basename
+ end
+ if not clean_path then
+ clean_path = get_last_folder(cleanup_path(basefolder.path))
+ end
+ if clean_path then
+ targetpath = core.get_modpath() .. DIR_DELIM .. clean_path
+ else
+ return nil,
+ fgettext("Install Mod: Unable to find suitable folder name for modpack $1",
+ path)
+ end
+ end
+ elseif basefolder.type == "mod" then
+ if type ~= "mod" then
+ return nil, fgettext("Unable to install a mod as a $1", type)
+ end
+
+ if targetpath then
+ core.delete_dir(targetpath)
+ else
+ local targetfolder = basename
+ if targetfolder == nil then
+ targetfolder = pkgmgr.identify_modname(basefolder.path, "init.lua")
+ end
+
+ -- If heuristic failed try to use current foldername
+ if targetfolder == nil then
+ targetfolder = get_last_folder(basefolder.path)
+ end
+
+ if targetfolder ~= nil and pkgmgr.isValidModname(targetfolder) then
+ targetpath = core.get_modpath() .. DIR_DELIM .. targetfolder
+ else
+ return nil, fgettext("Install Mod: Unable to find real mod name for: $1", path)
+ end
+ end
+
+ elseif basefolder.type == "game" then
+ if type ~= "game" then
+ return nil, fgettext("Unable to install a game as a $1", type)
+ end
+
+ if targetpath then
+ core.delete_dir(targetpath)
+ else
+ targetpath = core.get_gamepath() .. DIR_DELIM .. basename
+ end
+ else
+ error("basefolder didn't return a recognised type, this shouldn't happen")
+ end
+
+ -- Copy it
+ core.delete_dir(targetpath)
+ if not core.copy_dir(basefolder.path, targetpath, false) then
+ return nil,
+ fgettext("Failed to install $1 to $2", basename, targetpath)
+ end
+
+ if basefolder.type == "game" then
+ pkgmgr.update_gamelist()
+ else
+ pkgmgr.refresh_globals()
+ end
+
+ return targetpath, nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.preparemodlist(data)
+ local retval = {}
+
+ local global_mods = {}
+ local game_mods = {}
+
+ --read global mods
+ local modpaths = core.get_modpaths()
+ for key, modpath in pairs(modpaths) do
+ get_mods(modpath, key, global_mods)
+ end
+
+ for i=1,#global_mods,1 do
+ global_mods[i].type = "mod"
+ global_mods[i].loc = "global"
+ global_mods[i].enabled = false
+ retval[#retval + 1] = global_mods[i]
+ end
+
+ --read game mods
+ local gamespec = pkgmgr.find_by_gameid(data.gameid)
+ pkgmgr.get_game_mods(gamespec, game_mods)
+
+ if #game_mods > 0 then
+ -- Add title
+ retval[#retval + 1] = {
+ type = "game",
+ is_game_content = true,
+ name = fgettext("$1 mods", gamespec.title),
+ path = gamespec.path
+ }
+ end
+
+ for i=1,#game_mods,1 do
+ game_mods[i].type = "mod"
+ game_mods[i].loc = "game"
+ game_mods[i].is_game_content = true
+ retval[#retval + 1] = game_mods[i]
+ end
+
+ if data.worldpath == nil then
+ return retval
+ end
+
+ --read world mod configuration
+ local filename = data.worldpath ..
+ DIR_DELIM .. "world.mt"
+
+ local worldfile = Settings(filename)
+ for key, value in pairs(worldfile:to_table()) do
+ if key:sub(1, 9) == "load_mod_" then
+ key = key:sub(10)
+ local mod_found = false
+
+ local fallback_found = false
+ local fallback_mod = nil
+
+ for i=1, #retval do
+ if retval[i].name == key and
+ not retval[i].is_modpack then
+ if core.is_yes(value) or retval[i].virtual_path == value then
+ retval[i].enabled = true
+ mod_found = true
+ break
+ elseif fallback_found then
+ -- Only allow fallback if only one mod matches
+ fallback_mod = nil
+ else
+ fallback_found = true
+ fallback_mod = retval[i]
+ end
+ end
+ end
+
+ if not mod_found then
+ if fallback_mod and value:find("/") then
+ fallback_mod.enabled = true
+ else
+ core.log("info", "Mod: " .. key .. " " .. dump(value) .. " but not found")
+ end
+ end
+ end
+ end
+
+ return retval
+end
+
+function pkgmgr.compare_package(a, b)
+ return a and b and a.name == b.name and a.path == b.path
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.comparemod(elem1,elem2)
+ if elem1 == nil or elem2 == nil then
+ return false
+ end
+ if elem1.name ~= elem2.name then
+ return false
+ end
+ if elem1.is_modpack ~= elem2.is_modpack then
+ return false
+ end
+ if elem1.type ~= elem2.type then
+ return false
+ end
+ if elem1.modpack ~= elem2.modpack then
+ return false
+ end
+
+ if elem1.path ~= elem2.path then
+ return false
+ end
+
+ return true
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.mod_exists(basename)
+
+ if pkgmgr.global_mods == nil then
+ pkgmgr.refresh_globals()
+ end
+
+ if pkgmgr.global_mods:raw_index_by_uid(basename) > 0 then
+ return true
+ end
+
+ return false
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_global_mod(idx)
+
+ if pkgmgr.global_mods == nil then
+ return nil
+ end
+
+ if idx == nil or idx < 1 or
+ idx > pkgmgr.global_mods:size() then
+ return nil
+ end
+
+ return pkgmgr.global_mods:get_list()[idx]
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.refresh_globals()
+ local function is_equal(element,uid) --uid match
+ if element.name == uid then
+ return true
+ end
+ end
+ pkgmgr.global_mods = filterlist.create(pkgmgr.preparemodlist,
+ pkgmgr.comparemod, is_equal, nil, {})
+ pkgmgr.global_mods:add_sort_mechanism("alphabetic", sort_mod_list)
+ pkgmgr.global_mods:set_sortmode("alphabetic")
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.find_by_gameid(gameid)
+ for i=1,#pkgmgr.games,1 do
+ if pkgmgr.games[i].id == gameid then
+ return pkgmgr.games[i], i
+ end
+ end
+ return nil, nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_game_mods(gamespec, retval)
+ if gamespec ~= nil and
+ gamespec.gamemods_path ~= nil and
+ gamespec.gamemods_path ~= "" then
+ get_mods(gamespec.gamemods_path, ("games/%s/mods"):format(gamespec.id), retval)
+ end
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_game_modlist(gamespec)
+ local retval = ""
+ local game_mods = {}
+ pkgmgr.get_game_mods(gamespec, game_mods)
+ for i=1,#game_mods,1 do
+ if retval ~= "" then
+ retval = retval..","
+ end
+ retval = retval .. game_mods[i].name
+ end
+ return retval
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.get_game(index)
+ if index > 0 and index <= #pkgmgr.games then
+ return pkgmgr.games[index]
+ end
+
+ return nil
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.update_gamelist()
+ pkgmgr.games = core.get_games()
+end
+
+--------------------------------------------------------------------------------
+function pkgmgr.gamelist()
+ local retval = ""
+ if #pkgmgr.games > 0 then
+ retval = retval .. core.formspec_escape(pkgmgr.games[1].title)
+
+ for i=2,#pkgmgr.games,1 do
+ retval = retval .. "," .. core.formspec_escape(pkgmgr.games[i].title)
+ end
+ end
+ return retval
+end
+
+--------------------------------------------------------------------------------
+-- read initial data
+--------------------------------------------------------------------------------
+pkgmgr.update_gamelist()
diff --git a/builtin/mainmenu/serverlistmgr.lua b/builtin/mainmenu/serverlistmgr.lua
new file mode 100644
index 000000000..964d0c584
--- /dev/null
+++ b/builtin/mainmenu/serverlistmgr.lua
@@ -0,0 +1,252 @@
+--Minetest
+--Copyright (C) 2020 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.
+
+serverlistmgr = {}
+
+--------------------------------------------------------------------------------
+local function order_server_list(list)
+ local res = {}
+ --orders the favorite list after support
+ for i = 1, #list do
+ local fav = list[i]
+ if is_server_protocol_compat(fav.proto_min, fav.proto_max) then
+ res[#res + 1] = fav
+ end
+ end
+ for i = 1, #list do
+ local fav = list[i]
+ if not is_server_protocol_compat(fav.proto_min, fav.proto_max) then
+ res[#res + 1] = fav
+ end
+ end
+ return res
+end
+
+local public_downloading = false
+
+--------------------------------------------------------------------------------
+function serverlistmgr.sync()
+ if not serverlistmgr.servers then
+ serverlistmgr.servers = {{
+ name = fgettext("Loading..."),
+ description = fgettext_ne("Try reenabling public serverlist and check your internet connection.")
+ }}
+ 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
+ public_downloading = true
+
+ core.handle_async(
+ function(param)
+ local http = core.get_http_api()
+ local url = ("%s/list?proto_version_min=%d&proto_version_max=%d"):format(
+ core.settings:get("serverlist_url"),
+ core.get_min_supp_proto(),
+ core.get_max_supp_proto())
+
+ local response = http.fetch_sync({ url = url })
+ if not response.succeeded then
+ return {}
+ end
+
+ local retval = core.parse_json(response.data)
+ return retval and retval.list or {}
+ end,
+ nil,
+ function(result)
+ public_downloading = nil
+ local favs = order_server_list(result)
+ if favs[1] then
+ serverlistmgr.servers = favs
+ end
+ core.event_handler("Refresh")
+ end
+ )
+end
+
+--------------------------------------------------------------------------------
+local function get_favorites_path(folder)
+ local base = core.get_user_path() .. DIR_DELIM .. "client" .. DIR_DELIM .. "serverlist" .. DIR_DELIM
+ if folder then
+ return base
+ end
+ return base .. core.settings:get("serverlist_file")
+end
+
+--------------------------------------------------------------------------------
+local function save_favorites(favorites)
+ local filename = core.settings:get("serverlist_file")
+ -- If setting specifies legacy format change the filename to the new one
+ if filename:sub(#filename - 3):lower() == ".txt" then
+ core.settings:set("serverlist_file", filename:sub(1, #filename - 4) .. ".json")
+ end
+
+ assert(core.create_dir(get_favorites_path(true)))
+ core.safe_file_write(get_favorites_path(), core.write_json(favorites))
+end
+
+--------------------------------------------------------------------------------
+function serverlistmgr.read_legacy_favorites(path)
+ local file = io.open(path, "r")
+ if not file then
+ return nil
+ end
+
+ local lines = {}
+ for line in file:lines() do
+ lines[#lines + 1] = line
+ end
+ file:close()
+
+ local favorites = {}
+
+ local i = 1
+ while i < #lines do
+ local function pop()
+ local line = lines[i]
+ i = i + 1
+ return line and line:trim()
+ end
+
+ if pop():lower() == "[server]" then
+ local name = pop()
+ local address = pop()
+ local port = tonumber(pop())
+ local description = pop()
+
+ if name == "" then
+ name = nil
+ end
+
+ if description == "" then
+ description = nil
+ end
+
+ if not address or #address < 3 then
+ core.log("warning", "Malformed favorites file, missing address at line " .. i)
+ elseif not port or port < 1 or port > 65535 then
+ core.log("warning", "Malformed favorites file, missing port at line " .. i)
+ elseif (name and name:upper() == "[SERVER]") or
+ (address and address:upper() == "[SERVER]") or
+ (description and description:upper() == "[SERVER]") then
+ core.log("warning", "Potentially malformed favorites file, overran at line " .. i)
+ else
+ favorites[#favorites + 1] = {
+ name = name,
+ address = address,
+ port = port,
+ description = description
+ }
+ end
+ end
+ end
+
+ return favorites
+end
+
+--------------------------------------------------------------------------------
+local function read_favorites()
+ local path = get_favorites_path()
+
+ -- If new format configured fall back to reading the legacy file
+ if path:sub(#path - 4):lower() == ".json" then
+ local file = io.open(path, "r")
+ if file then
+ local json = file:read("*all")
+ file:close()
+ return core.parse_json(json)
+ end
+
+ path = path:sub(1, #path - 5) .. ".txt"
+ end
+
+ local favs = serverlistmgr.read_legacy_favorites(path)
+ if favs then
+ save_favorites(favs)
+ os.remove(path)
+ end
+ return favs
+end
+
+--------------------------------------------------------------------------------
+local function delete_favorite(favorites, del_favorite)
+ for i=1, #favorites do
+ local fav = favorites[i]
+
+ if fav.address == del_favorite.address and fav.port == del_favorite.port then
+ table.remove(favorites, i)
+ return
+ end
+ end
+end
+
+--------------------------------------------------------------------------------
+function serverlistmgr.get_favorites()
+ if serverlistmgr.favorites then
+ return serverlistmgr.favorites
+ end
+
+ serverlistmgr.favorites = {}
+
+ -- Add favorites, removing duplicates
+ local seen = {}
+ for _, fav in ipairs(read_favorites() or {}) do
+ local key = ("%s:%d"):format(fav.address:lower(), fav.port)
+ if not seen[key] then
+ seen[key] = true
+ serverlistmgr.favorites[#serverlistmgr.favorites + 1] = fav
+ end
+ end
+
+ return serverlistmgr.favorites
+end
+
+--------------------------------------------------------------------------------
+function serverlistmgr.add_favorite(new_favorite)
+ assert(type(new_favorite.port) == "number")
+
+ -- Whitelist favorite keys
+ new_favorite = {
+ name = new_favorite.name,
+ address = new_favorite.address,
+ port = new_favorite.port,
+ description = new_favorite.description,
+ }
+
+ local favorites = serverlistmgr.get_favorites()
+ delete_favorite(favorites, new_favorite)
+ table.insert(favorites, 1, new_favorite)
+ save_favorites(favorites)
+end
+
+--------------------------------------------------------------------------------
+function serverlistmgr.delete_favorite(del_favorite)
+ local favorites = serverlistmgr.get_favorites()
+ delete_favorite(favorites, del_favorite)
+ save_favorites(favorites)
+end
diff --git a/builtin/mainmenu/store.lua b/builtin/mainmenu/store.lua
deleted file mode 100644
index ad861082d..000000000
--- a/builtin/mainmenu/store.lua
+++ /dev/null
@@ -1,614 +0,0 @@
---Minetest
---Copyright (C) 2013 sapier
---
---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.
-
---------------------------------------------------------------------------------
-
---modstore implementation
-modstore = {}
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] init
-function modstore.init(size, unsortedmods, searchmods)
-
- modstore.mods_on_unsorted_page = unsortedmods
- modstore.mods_on_search_page = searchmods
- modstore.modsperpage = modstore.mods_on_unsorted_page
-
- modstore.basetexturedir = core.get_texturepath() .. DIR_DELIM .. "base" ..
- DIR_DELIM .. "pack" .. DIR_DELIM
-
- modstore.lastmodtitle = ""
- modstore.last_search = ""
-
- modstore.searchlist = filterlist.create(
- function()
- if modstore.modlist_unsorted ~= nil and
- modstore.modlist_unsorted.data ~= nil then
- return modstore.modlist_unsorted.data
- end
- return {}
- end,
- function(element,modid)
- if element.id == modid then
- return true
- end
- return false
- end, --compare fct
- nil, --uid match fct
- function(element,substring)
- if substring == nil or
- substring == "" then
- return false
- end
- substring = substring:upper()
-
- if element.title ~= nil and
- element.title:upper():find(substring) ~= nil then
- return true
- end
-
- if element.details ~= nil and
- element.details.author ~= nil and
- element.details.author:upper():find(substring) ~= nil then
- return true
- end
-
- if element.details ~= nil and
- element.details.description ~= nil and
- element.details.description:upper():find(substring) ~= nil then
- return true
- end
- return false
- end --filter fct
- )
-
- modstore.current_list = nil
-
- modstore.tv_store = tabview_create("modstore",size,{x=0,y=0})
-
- modstore.tv_store:set_global_event_handler(modstore.handle_events)
-
- modstore.tv_store:add(
- {
- name = "unsorted",
- caption = fgettext("Unsorted"),
- cbf_formspec = modstore.unsorted_tab,
- cbf_button_handler = modstore.handle_buttons,
- on_change =
- function() modstore.modsperpage = modstore.mods_on_unsorted_page end
- }
- )
-
- modstore.tv_store:add(
- {
- name = "search",
- caption = fgettext("Search"),
- cbf_formspec = modstore.getsearchpage,
- cbf_button_handler = modstore.handle_buttons,
- on_change = modstore.activate_search_tab
- }
- )
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] nametoindex
-function modstore.nametoindex(name)
-
- for i=1,#modstore.tabnames,1 do
- if modstore.tabnames[i] == name then
- return i
- end
- end
-
- return 1
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] showdownloading
-function modstore.showdownloading(title)
- local new_dlg = dialog_create("store_downloading",
- function(data)
- return "size[6,2]label[0.25,0.75;" ..
- fgettext("Downloading $1, please wait...", data.title) .. "]"
- end,
- function(this,fields)
- if fields["btn_hidden_close_download"] ~= nil then
- if fields["btn_hidden_close_download"].successfull then
- modstore.lastmodentry = fields["btn_hidden_close_download"]
- modstore.successfulldialog(this)
- else
- this.parent:show()
- this:delete()
- modstore.lastmodtitle = ""
- end
-
- return true
- end
-
- return false
- end,
- nil)
-
- new_dlg:set_parent(modstore.tv_store)
- modstore.tv_store:hide()
- new_dlg.data.title = title
- new_dlg:show()
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] successfulldialog
-function modstore.successfulldialog(downloading_dlg)
- local new_dlg = dialog_create("store_downloading",
- function(data)
- local retval = ""
- retval = retval .. "size[6,2,true]"
- if modstore.lastmodentry ~= nil then
- retval = retval .. "label[0,0.25;" .. fgettext("Successfully installed:") .. "]"
- retval = retval .. "label[3,0.25;" .. modstore.lastmodentry.moddetails.title .. "]"
- retval = retval .. "label[0,0.75;" .. fgettext("Shortname:") .. "]"
- retval = retval .. "label[3,0.75;" .. core.formspec_escape(modstore.lastmodentry.moddetails.basename) .. "]"
- end
- retval = retval .. "button[2.2,1.5;1.5,0.5;btn_confirm_mod_successfull;" .. fgettext("Ok") .. "]"
- return retval
- end,
- function(this,fields)
- if fields["btn_confirm_mod_successfull"] ~= nil then
- this.parent:show()
- downloading_dlg:delete()
- this:delete()
-
- return true
- end
-
- return false
- end,
- nil)
-
- new_dlg:set_parent(modstore.tv_store)
- modstore.tv_store:hide()
- new_dlg:show()
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] handle_buttons
-function modstore.handle_buttons(parent, fields, name, data)
-
- if fields["btn_modstore_page_up"] then
- if modstore.current_list ~= nil and modstore.current_list.page > 0 then
- modstore.current_list.page = modstore.current_list.page - 1
- end
- return true
- end
-
- if fields["btn_modstore_page_down"] then
- if modstore.current_list ~= nil and
- modstore.current_list.page <modstore.current_list.pagecount-1 then
- modstore.current_list.page = modstore.current_list.page +1
- end
- return true
- end
-
- if fields["btn_modstore_search"] or
- (fields["key_enter"] and fields["te_modstore_search"] ~= nil) then
- modstore.last_search = fields["te_modstore_search"]
- filterlist.set_filtercriteria(modstore.searchlist,fields["te_modstore_search"])
- filterlist.refresh(modstore.searchlist)
- modstore.currentlist = {
- page = 0,
- pagecount = math.ceil(filterlist.size(modstore.searchlist) / modstore.modsperpage),
- data = filterlist.get_list(modstore.searchlist),
- }
- return true
- end
-
- if fields["btn_modstore_close"] then
- local maintab = ui.find_by_name("maintab")
- parent:hide()
- maintab:show()
- return true
- end
-
- for key,value in pairs(fields) do
- local foundat = key:find("btn_install_mod_")
- if ( foundat == 1) then
- local modid = tonumber(key:sub(17))
- for i=1,#modstore.modlist_unsorted.data,1 do
- if modstore.modlist_unsorted.data[i].id == modid then
- local moddetails = modstore.modlist_unsorted.data[i].details
- modstore.lastmodtitle = moddetails.title
-
- if not core.handle_async(
- function(param)
- local fullurl = core.setting_get("modstore_download_url") ..
- param.moddetails.download_url
-
- if param.version ~= nil then
- local found = false
- for i=1,#param.moddetails.versions, 1 do
- if param.moddetails.versions[i].date:sub(1,10) == param.version then
- fullurl = core.setting_get("modstore_download_url") ..
- param.moddetails.versions[i].download_url
- found = true
- end
- end
-
- if not found then
- core.log("error","no download url found for version " .. dump(param.version))
- return {
- moddetails = param.moddetails,
- successfull = false
- }
- end
- end
-
- if core.download_file(fullurl,param.filename) then
- return {
- texturename = param.texturename,
- moddetails = param.moddetails,
- filename = param.filename,
- successfull = true
- }
- else
- core.log("error","downloading " .. dump(fullurl) .. " failed")
- return {
- moddetails = param.moddetails,
- successfull = false
- }
- end
- end,
- {
- moddetails = moddetails,
- version = fields["dd_version" .. modid],
- filename = os.tempfolder() .. "_MODNAME_" .. moddetails.basename .. ".zip",
- texturename = modstore.modlist_unsorted.data[i].texturename
- },
- function(result)
- --print("Result from async: " .. dump(result.successfull))
- if result.successfull then
- modmgr.installmod(result.filename,result.moddetails.basename)
- os.remove(result.filename)
- else
- gamedata.errormessage = "Failed to download " .. result.moddetails.title
- end
-
- if gamedata.errormessage == nil then
- core.button_handler({btn_hidden_close_download=result})
- else
- core.button_handler({btn_hidden_close_download={successfull=false}})
- end
- end
- ) then
- print("ERROR: async event failed")
- gamedata.errormessage = "Failed to download " .. modstore.lastmodtitle
- end
-
- modstore.showdownloading(modstore.lastmodtitle)
- return true
- end
- end
- return true
- end
- end
-
- return false
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] handle_events
-function modstore.handle_events(this,event)
- if (event == "MenuQuit") then
- this:hide()
- return true
- end
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] update_modlist
-function modstore.update_modlist()
- modstore.modlist_unsorted = {}
- modstore.modlist_unsorted.data = {}
- modstore.modlist_unsorted.pagecount = 1
- modstore.modlist_unsorted.page = 0
-
- core.handle_async(
- function(param)
- return core.get_modstore_list()
- end,
- nil,
- function(result)
- if result ~= nil then
- modstore.modlist_unsorted = {}
- modstore.modlist_unsorted.data = result
-
- if modstore.modlist_unsorted.data ~= nil then
- modstore.modlist_unsorted.pagecount =
- math.ceil((#modstore.modlist_unsorted.data / modstore.modsperpage))
- else
- modstore.modlist_unsorted.data = {}
- modstore.modlist_unsorted.pagecount = 1
- end
- modstore.modlist_unsorted.page = 0
- modstore.fetchdetails()
- core.event_handler("Refresh")
- end
- end
- )
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] fetchdetails
-function modstore.fetchdetails()
-
- for i=1,#modstore.modlist_unsorted.data,1 do
- core.handle_async(
- function(param)
- param.details = core.get_modstore_details(tostring(param.modid))
- return param
- end,
- {
- modid=modstore.modlist_unsorted.data[i].id,
- listindex=i
- },
- function(result)
- if result ~= nil and
- modstore.modlist_unsorted ~= nil
- and modstore.modlist_unsorted.data ~= nil and
- modstore.modlist_unsorted.data[result.listindex] ~= nil and
- modstore.modlist_unsorted.data[result.listindex].id ~= nil then
-
- modstore.modlist_unsorted.data[result.listindex].details = result.details
- core.event_handler("Refresh")
- end
- end
- )
- end
-end
-
---------------------------------------------------------------------------------
--- @function [parent=#modstore] getscreenshot
-function modstore.getscreenshot(ypos,listentry)
-
- if listentry.details ~= nil and
- (listentry.details.screenshot_url == nil or
- listentry.details.screenshot_url == "") then
-
- if listentry.texturename == nil then
- listentry.texturename = defaulttexturedir .. "no_screenshot.png"
- end
-
- return "image[0,".. ypos .. ";3,2;" ..
- core.formspec_escape(listentry.texturename) .. "]"
- end
-
- if listentry.details ~= nil and
- listentry.texturename == nil then
- --make sure we don't download multiple times
- listentry.texturename = "in progress"
-
- --prepare url and filename
- local fullurl = core.setting_get("modstore_download_url") ..
- listentry.details.screenshot_url
- local filename = os.tempfolder() .. "_MID_" .. listentry.id
-
- --trigger download
- core.handle_async(
- --first param is downloadfct
- function(param)
- param.successfull = core.download_file(param.fullurl,param.filename)
- return param
- end,
- --second parameter is data passed to async job
- {
- fullurl = fullurl,
- filename = filename,
- modid = listentry.id
- },
- --integrate result to raw list
- function(result)
- if result.successfull then
- local found = false
- for i=1,#modstore.modlist_unsorted.data,1 do
- if modstore.modlist_unsorted.data[i].id == result.modid then
- found = true
- modstore.modlist_unsorted.data[i].texturename = result.filename
- break
- end
- end
- if found then
- core.event_handler("Refresh")
- else
- core.log("error","got screenshot but didn't find matching mod: " .. result.modid)
- end
- end
- end
- )
- end
-
- if listentry.texturename ~= nil and
- listentry.texturename ~= "in progress" then
- return "image[0,".. ypos .. ";3,2;" ..
- core.formspec_escape(listentry.texturename) .. "]"
- end
-
- return ""
-end
-
---------------------------------------------------------------------------------
---@function [parent=#modstore] getshortmodinfo
-function modstore.getshortmodinfo(ypos,listentry,details)
- local retval = ""
-
- retval = retval .. "box[0," .. ypos .. ";11.4,1.75;#FFFFFF]"
-
- --screenshot
- retval = retval .. modstore.getscreenshot(ypos,listentry)
-
- --title + author
- retval = retval .."label[2.75," .. ypos .. ";" ..
- core.formspec_escape(details.title) .. " (" .. details.author .. ")]"
-
- --description
- local descriptiony = ypos + 0.5
- retval = retval .. "textarea[3," .. descriptiony .. ";6.5,1.55;;" ..
- core.formspec_escape(details.description) .. ";]"
-
- --rating
- local ratingy = ypos
- retval = retval .."label[7," .. ratingy .. ";" ..
- fgettext("Rating") .. ":]"
- retval = retval .. "label[8.7," .. ratingy .. ";" .. details.rating .."]"
-
- --versions (IMPORTANT has to be defined AFTER rating)
- if details.versions ~= nil and
- #details.versions > 1 then
- local versiony = ypos + 0.05
- retval = retval .. "dropdown[9.1," .. versiony .. ";2.48,0.25;dd_version" .. details.id .. ";"
- local versions = ""
- for i=1,#details.versions , 1 do
- if versions ~= "" then
- versions = versions .. ","
- end
-
- versions = versions .. details.versions[i].date:sub(1,10)
- end
- retval = retval .. versions .. ";1]"
- end
-
- if details.basename then
- --install button
- local buttony = ypos + 1.2
- retval = retval .."button[9.1," .. buttony .. ";2.5,0.5;btn_install_mod_" .. details.id .. ";"
-
- if modmgr.mod_exists(details.basename) then
- retval = retval .. fgettext("re-Install") .."]"
- else
- retval = retval .. fgettext("Install") .."]"
- end
- end
-
- return retval
-end
-
---------------------------------------------------------------------------------
---@function [parent=#modstore] getmodlist
-function modstore.getmodlist(list,yoffset)
- modstore.current_list = list
-
- if yoffset == nil then
- yoffset = 0
- end
-
- local sb_y_start = 0.2 + yoffset
- local sb_y_end = (modstore.modsperpage * 1.75) + ((modstore.modsperpage-1) * 0.15)
- local close_button = "button[4," .. (sb_y_end + 0.3 + yoffset) ..
- ";4,0.5;btn_modstore_close;" .. fgettext("Close store") .. "]"
-
- if #list.data == 0 then
- return close_button
- end
-
- local scrollbar = ""
- scrollbar = scrollbar .. "label[0.1,".. (sb_y_end + 0.25 + yoffset) ..";"
- .. fgettext("Page $1 of $2", list.page+1, list.pagecount) .. "]"
- scrollbar = scrollbar .. "box[11.6," .. sb_y_start .. ";0.28," .. sb_y_end .. ";#000000]"
- local scrollbarpos = (sb_y_start + 0.5) +
- ((sb_y_end -1.6)/(list.pagecount-1)) * list.page
- scrollbar = scrollbar .. "box[11.6," ..scrollbarpos .. ";0.28,0.5;#32CD32]"
- scrollbar = scrollbar .. "button[11.6," .. (sb_y_start)
- .. ";0.5,0.5;btn_modstore_page_up;^]"
- scrollbar = scrollbar .. "button[11.6," .. (sb_y_start + sb_y_end - 0.5)
- .. ";0.5,0.5;btn_modstore_page_down;v]"
-
- local retval = ""
-
- local endmod = (list.page * modstore.modsperpage) + modstore.modsperpage
-
- if (endmod > #list.data) then
- endmod = #list.data
- end
-
- for i=(list.page * modstore.modsperpage) +1, endmod, 1 do
- --getmoddetails
- local details = list.data[i].details
-
- if details == nil then
- details = {}
- details.title = list.data[i].title
- details.author = ""
- details.rating = -1
- details.description = ""
- end
-
- if details ~= nil then
- local screenshot_ypos =
- yoffset +(i-1 - (list.page * modstore.modsperpage))*1.9 +0.2
-
- retval = retval .. modstore.getshortmodinfo(screenshot_ypos,
- list.data[i],
- details)
- end
- end
-
- return retval .. scrollbar .. close_button
-end
-
---------------------------------------------------------------------------------
---@function [parent=#modstore] getsearchpage
-function modstore.getsearchpage(tabview, name, tabdata)
- local retval = ""
- local search = ""
-
- if modstore.last_search ~= nil then
- search = modstore.last_search
- end
-
- retval = retval ..
- "button[9.5,0.2;2.5,0.5;btn_modstore_search;".. fgettext("Search") .. "]" ..
- "field[0.5,0.5;9,0.5;te_modstore_search;;" .. search .. "]"
-
- retval = retval ..
- modstore.getmodlist(
- modstore.currentlist,
- 1.75)
-
- return retval;
-end
-
---------------------------------------------------------------------------------
---@function [parent=#modstore] unsorted_tab
-function modstore.unsorted_tab()
- return modstore.getmodlist(modstore.modlist_unsorted)
-end
-
---------------------------------------------------------------------------------
---@function [parent=#modstore] activate_search_tab
-function modstore.activate_search_tab(type, old_tab, new_tab)
-
- if old_tab == new_tab then
- return
- end
- filterlist.set_filtercriteria(modstore.searchlist,modstore.last_search)
- filterlist.refresh(modstore.searchlist)
- modstore.modsperpage = modstore.mods_on_search_page
- modstore.currentlist = {
- page = 0,
- pagecount =
- math.ceil(filterlist.size(modstore.searchlist) / modstore.modsperpage),
- data = filterlist.get_list(modstore.searchlist),
- }
-end
-
diff --git a/builtin/mainmenu/tab_about.lua b/builtin/mainmenu/tab_about.lua
new file mode 100644
index 000000000..a84ebce3f
--- /dev/null
+++ b/builtin/mainmenu/tab_about.lua
@@ -0,0 +1,195 @@
+--Minetest
+--Copyright (C) 2013 sapier
+--
+--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.
+
+-- https://github.com/orgs/minetest/teams/engine/members
+
+local core_developers = {
+ "Perttu Ahola (celeron55) <celeron55@gmail.com> [Project founder]",
+ "sfan5 <sfan5@live.de>",
+ "ShadowNinja <shadowninja@minetest.net>",
+ "Nathanaëlle Courant (Nore/Ekdohibs) <nore@mesecons.net>",
+ "Loic Blot (nerzhul/nrz) <loic.blot@unix-experience.fr>",
+ "Andrew Ward (rubenwardy) <rw@rubenwardy.com>",
+ "Krock/SmallJoker <mk939@ymail.com>",
+ "Lars Hofhansl <larsh@apache.org>",
+ "v-rob <robinsonvincent89@gmail.com>",
+ "hecks",
+ "Hugues Ross <hugues.ross@gmail.com>",
+ "Dmitry Kostenko (x2048) <codeforsmile@gmail.com>",
+}
+
+local core_team = {
+ "Zughy [Issue triager]",
+}
+
+-- For updating active/previous contributors, see the script in ./util/gather_git_credits.py
+
+local active_contributors = {
+ "Wuzzy [Features, translations, devtest]",
+ "Lars Müller [Lua optimizations and fixes]",
+ "Jude Melton-Houghton [Optimizations, bugfixes]",
+ "paradust7 [Performance, fixes, Irrlicht refactoring]",
+ "Desour [Fixes]",
+ "ROllerozxa [Main menu]",
+ "savilli [Bugfixes]",
+ "Lexi Hale [Particlespawner animation]",
+ "Liso [Shadow Mapping]",
+ "JosiahWI [Fixes, build system]",
+ "numzero [Graphics and rendering]",
+ "HybridDog [Fixes]",
+ "NeroBurner [Joystick]",
+ "pecksin [Clickable web links]",
+ "Daroc Alden [Fixes]",
+ "Jean-Patrick Guerrero (kilbith) [Fixes]",
+}
+
+local previous_core_developers = {
+ "BlockMen",
+ "Maciej Kasatkin (RealBadAngel) [RIP]",
+ "Lisa Milne (darkrose) <lisa@ltmnet.com>",
+ "proller",
+ "Ilya Zhuravlev (xyz) <xyz@minetest.net>",
+ "PilzAdam <pilzadam@minetest.net>",
+ "est31 <MTest31@outlook.com>",
+ "kahrl <kahrl@gmx.net>",
+ "Ryan Kwolek (kwolekr) <kwolekr@minetest.net>",
+ "sapier",
+ "Zeno",
+ "Auke Kok (sofar) <sofar@foo-projects.org>",
+ "Aaron Suen <warr1024@gmail.com>",
+ "paramat",
+ "Pierre-Yves Rollo <dev@pyrollo.com>",
+}
+
+local previous_contributors = {
+ "Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net> [Minetest logo]",
+ "red-001 <red-001@outlook.ie>",
+ "Giuseppe Bilotta",
+ "ClobberXD",
+ "Dániel Juhász (juhdanad) <juhdanad@gmail.com>",
+ "MirceaKitsune <mirceakitsune@gmail.com>",
+ "MoNTE48",
+ "Constantin Wenger (SpeedProg)",
+ "Ciaran Gultnieks (CiaranG)",
+ "Paul Ouellette (pauloue)",
+ "stujones11",
+ "srifqi",
+ "Rogier <rogier777@gmail.com>",
+ "Gregory Currie (gregorycu)",
+ "JacobF",
+ "Jeija <jeija@mesecons.net>",
+}
+
+local function prepare_credits(dest, source)
+ for _, s in ipairs(source) do
+ -- if there's text inside brackets make it gray-ish
+ s = s:gsub("%[.-%]", core.colorize("#aaa", "%1"))
+ dest[#dest+1] = s
+ end
+end
+
+local function build_hacky_list(items, spacing)
+ spacing = spacing or 0.5
+ local y = spacing / 2
+ local ret = {}
+ for _, item in ipairs(items) do
+ if item ~= "" then
+ ret[#ret+1] = ("label[0,%f;%s]"):format(y, core.formspec_escape(item))
+ end
+ y = y + spacing
+ end
+ return table.concat(ret, ""), y
+end
+
+return {
+ name = "about",
+ caption = fgettext("About"),
+ cbf_formspec = function(tabview, name, tabdata)
+ local logofile = defaulttexturedir .. "logo.png"
+ local version = core.get_version()
+
+ local credit_list = {}
+ table.insert_all(credit_list, {
+ core.colorize("#ff0", fgettext("Core Developers"))
+ })
+ prepare_credits(credit_list, core_developers)
+ table.insert_all(credit_list, {
+ "",
+ core.colorize("#ff0", fgettext("Core Team"))
+ })
+ prepare_credits(credit_list, core_team)
+ table.insert_all(credit_list, {
+ "",
+ core.colorize("#ff0", fgettext("Active Contributors"))
+ })
+ prepare_credits(credit_list, active_contributors)
+ table.insert_all(credit_list, {
+ "",
+ core.colorize("#ff0", fgettext("Previous Core Developers"))
+ })
+ prepare_credits(credit_list, previous_core_developers)
+ table.insert_all(credit_list, {
+ "",
+ core.colorize("#ff0", fgettext("Previous Contributors"))
+ })
+ prepare_credits(credit_list, previous_contributors)
+ local credit_fs, scroll_height = build_hacky_list(credit_list)
+ -- account for the visible portion
+ scroll_height = math.max(0, scroll_height - 6.9)
+
+ local fs = "image[1.5,0.6;2.5,2.5;" .. core.formspec_escape(logofile) .. "]" ..
+ "style[label_button;border=false]" ..
+ "button[0.1,3.4;5.3,0.5;label_button;" ..
+ core.formspec_escape(version.project .. " " .. version.string) .. "]" ..
+ "button[1.5,4.1;2.5,0.8;homepage;minetest.net]" ..
+ "scroll_container[5.5,0.1;9.5,6.9;scroll_credits;vertical;" ..
+ tostring(scroll_height / 1000) .. "]" .. credit_fs ..
+ "scroll_container_end[]"..
+ "scrollbar[15,0.1;0.4,6.9;vertical;scroll_credits;0]"
+
+ -- Render information
+ fs = fs .. "style[label_button2;border=false]" ..
+ "button[0.1,6;5.3,1;label_button2;" ..
+ fgettext("Active renderer:") .. "\n" ..
+ core.formspec_escape(core.get_screen_info().render_info) .. "]"
+
+ if PLATFORM == "Android" then
+ fs = fs .. "button[0.5,5.1;4.5,0.8;share_debug;" .. fgettext("Share debug log") .. "]"
+ else
+ fs = fs .. "tooltip[userdata;" ..
+ fgettext("Opens the directory that contains user-provided worlds, games, mods,\n" ..
+ "and texture packs in a file manager / explorer.") .. "]"
+ fs = fs .. "button[0.5,5.1;4.5,0.8;userdata;" .. fgettext("Open User Data Directory") .. "]"
+ end
+
+ return fs, "size[15.5,7.1,false]real_coordinates[true]"
+ end,
+ cbf_button_handler = function(this, fields, name, tabdata)
+ if fields.homepage then
+ core.open_url("https://www.minetest.net")
+ end
+
+ if fields.share_debug then
+ local path = core.get_user_path() .. DIR_DELIM .. "debug.txt"
+ core.share_file(path)
+ end
+
+ if fields.userdata then
+ core.open_dir(core.get_user_path())
+ end
+ end,
+}
diff --git a/builtin/mainmenu/tab_content.lua b/builtin/mainmenu/tab_content.lua
new file mode 100644
index 000000000..5e14d1902
--- /dev/null
+++ b/builtin/mainmenu/tab_content.lua
@@ -0,0 +1,237 @@
+--Minetest
+--Copyright (C) 2014 sapier
+--Copyright (C) 2018 rubenwardy <rw@rubenwardy.com>
+--
+--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.
+
+local packages_raw
+local packages
+
+--------------------------------------------------------------------------------
+local function get_formspec(tabview, name, tabdata)
+ if pkgmgr.global_mods == nil then
+ pkgmgr.refresh_globals()
+ end
+ if pkgmgr.games == nil then
+ pkgmgr.update_gamelist()
+ end
+
+ if packages == nil then
+ packages_raw = {}
+ table.insert_all(packages_raw, pkgmgr.games)
+ table.insert_all(packages_raw, pkgmgr.get_texture_packs())
+ table.insert_all(packages_raw, pkgmgr.global_mods:get_list())
+
+ local function get_data()
+ return packages_raw
+ end
+
+ local function is_equal(element, uid) --uid match
+ return (element.type == "game" and element.id == uid) or
+ element.name == uid
+ end
+
+ packages = filterlist.create(get_data, pkgmgr.compare_package,
+ is_equal, nil, {})
+ end
+
+ if tabdata.selected_pkg == nil then
+ tabdata.selected_pkg = 1
+ end
+
+ local use_technical_names = core.settings:get_bool("show_technical_names")
+
+
+ local retval =
+ "label[0.05,-0.25;".. fgettext("Installed Packages:") .. "]" ..
+ "tablecolumns[color;tree;text]" ..
+ "table[0,0.25;5.1,4.3;pkglist;" ..
+ pkgmgr.render_packagelist(packages, use_technical_names) ..
+ ";" .. tabdata.selected_pkg .. "]" ..
+ "button[0,4.85;5.25,0.5;btn_contentdb;".. fgettext("Browse online content") .. "]"
+
+
+ local selected_pkg
+ if filterlist.size(packages) >= tabdata.selected_pkg then
+ selected_pkg = packages:get_list()[tabdata.selected_pkg]
+ end
+
+ if selected_pkg ~= nil then
+ --check for screenshot beeing available
+ local screenshotfilename = selected_pkg.path .. DIR_DELIM .. "screenshot.png"
+ local screenshotfile, error = io.open(screenshotfilename, "r")
+
+ local modscreenshot
+ if error == nil then
+ screenshotfile:close()
+ modscreenshot = screenshotfilename
+ end
+
+ if modscreenshot == nil then
+ modscreenshot = defaulttexturedir .. "no_screenshot.png"
+ end
+
+ local info = core.get_content_info(selected_pkg.path)
+ local desc = fgettext("No package description available")
+ if info.description and info.description:trim() ~= "" then
+ desc = info.description
+ end
+
+ local title_and_name
+ if selected_pkg.type == "game" then
+ title_and_name = selected_pkg.name
+ else
+ title_and_name = (selected_pkg.title or selected_pkg.name) .. "\n" ..
+ core.colorize("#BFBFBF", selected_pkg.name)
+ end
+
+ retval = retval ..
+ "image[5.5,0;3,2;" .. core.formspec_escape(modscreenshot) .. "]" ..
+ "label[8.25,0.6;" .. core.formspec_escape(title_and_name) .. "]" ..
+ "box[5.5,2.2;6.15,2.35;#000]"
+
+ if selected_pkg.type == "mod" then
+ if selected_pkg.is_modpack then
+ retval = retval ..
+ "button[8.65,4.65;3.25,1;btn_mod_mgr_rename_modpack;" ..
+ fgettext("Rename") .. "]"
+ else
+ --show dependencies
+ desc = desc .. "\n\n"
+ local toadd_hard = table.concat(info.depends or {}, "\n")
+ local toadd_soft = table.concat(info.optional_depends or {}, "\n")
+ if toadd_hard == "" and toadd_soft == "" then
+ desc = desc .. fgettext("No dependencies.")
+ else
+ if toadd_hard ~= "" then
+ desc = desc ..fgettext("Dependencies:") ..
+ "\n" .. toadd_hard
+ end
+ if toadd_soft ~= "" then
+ if toadd_hard ~= "" then
+ desc = desc .. "\n\n"
+ end
+ desc = desc .. fgettext("Optional dependencies:") ..
+ "\n" .. toadd_soft
+ end
+ end
+ end
+
+ else
+ if selected_pkg.type == "txp" then
+ if selected_pkg.enabled then
+ retval = retval ..
+ "button[8.65,4.65;3.25,1;btn_mod_mgr_disable_txp;" ..
+ fgettext("Disable Texture Pack") .. "]"
+ else
+ retval = retval ..
+ "button[8.65,4.65;3.25,1;btn_mod_mgr_use_txp;" ..
+ fgettext("Use Texture Pack") .. "]"
+ end
+ end
+ end
+
+ retval = retval .. "textarea[5.85,2.2;6.35,2.9;;" ..
+ fgettext("Information:") .. ";" .. desc .. "]"
+
+ if core.may_modify_path(selected_pkg.path) then
+ retval = retval ..
+ "button[5.5,4.65;3.25,1;btn_mod_mgr_delete_mod;" ..
+ fgettext("Uninstall Package") .. "]"
+ end
+ end
+ return retval
+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
+
+ mm_game_theme.init()
+ mm_game_theme.reset()
+ 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
+
+ if fields["btn_contentdb"] ~= nil then
+ local dlg = create_store_dlg()
+ dlg:set_parent(tabview)
+ tabview:hide()
+ dlg:show()
+ packages = nil
+ return true
+ end
+
+ if fields["btn_mod_mgr_rename_modpack"] ~= nil then
+ local mod = packages:get_list()[tabdata.selected_pkg]
+ local dlg_renamemp = create_rename_modpack_dlg(mod)
+ dlg_renamemp:set_parent(tabview)
+ tabview:hide()
+ dlg_renamemp:show()
+ packages = nil
+ return true
+ end
+
+ if fields["btn_mod_mgr_delete_mod"] ~= nil then
+ local mod = packages:get_list()[tabdata.selected_pkg]
+ local dlg_delmod = create_delete_content_dlg(mod)
+ dlg_delmod:set_parent(tabview)
+ tabview:hide()
+ dlg_delmod:show()
+ packages = nil
+ return true
+ end
+
+ if fields.btn_mod_mgr_use_txp or fields.btn_mod_mgr_disable_txp then
+ local txp_path = ""
+ if fields.btn_mod_mgr_use_txp then
+ txp_path = packages:get_list()[tabdata.selected_pkg].path
+ end
+
+ core.settings:set("texture_path", txp_path)
+ packages = nil
+
+ mm_game_theme.init()
+ mm_game_theme.reset()
+ return true
+ end
+
+ return false
+end
+
+--------------------------------------------------------------------------------
+return {
+ name = "content",
+ caption = fgettext("Content"),
+ cbf_formspec = get_formspec,
+ cbf_button_handler = handle_buttons,
+ on_change = pkgmgr.update_gamelist
+}
diff --git a/builtin/mainmenu/tab_credits.lua b/builtin/mainmenu/tab_credits.lua
deleted file mode 100644
index 9b6045263..000000000
--- a/builtin/mainmenu/tab_credits.lua
+++ /dev/null
@@ -1,101 +0,0 @@
---Minetest
---Copyright (C) 2013 sapier
---
---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.
-
---------------------------------------------------------------------------------
-
-local core_developers = {
- "Perttu Ahola (celeron55) <celeron55@gmail.com>",
- "Ryan Kwolek (kwolekr) <kwolekr@minetest.net>",
- "PilzAdam <pilzadam@minetest.net>",
- "sfan5 <sfan5@live.de>",
- "kahrl <kahrl@gmx.net>",
- "sapier",
- "ShadowNinja <shadowninja@minetest.net>",
- "Nathanaël Courant (Nore/Ekdohibs) <nore@mesecons.net>",
- "Loic Blot (nerzhul/nrz) <loic.blot@unix-experience.fr>",
- "Matt Gregory (paramat)",
- "est31 <MTest31@outlook.com>",
- "Craig Robbins (Zeno)",
-}
-
-local active_contributors = {
- "Auke Kok (sofar) <sofar@foo-projects.org>",
- "Duane Robertson <duane@duanerobertson.com>",
- "SmallJoker <mk939@ymail.com>",
- "Andrew Ward (rubenwardy) <rubenwardy@gmail.com>",
- "Jeija <jeija@mesecons.net>",
- "Gregory Currie (gregorycu)",
- "Sokomine <wegwerf@anarres.dyndns.org>",
- "TeTpaAka",
- "Jean-Patrick G (kilbith) <jeanpatrick.guerrero@gmail.com>",
- "Diego Martínez (kaeza) <kaeza@users.sf.net>",
-}
-
-local previous_core_developers = {
- "BlockMen",
- "Maciej Kasatkin (RealBadAngel) <maciej.kasatkin@o2.pl>",
- "Lisa Milne (darkrose) <lisa@ltmnet.com>",
- "proller",
- "Ilya Zhuravlev (xyz) <xyz@minetest.net>",
-}
-
-local previous_contributors = {
- "Vanessa Ezekowitz (VanessaE) <vanessaezekowitz@gmail.com>",
- "Jurgen Doser (doserj) <jurgen.doser@gmail.com>",
- "MirceaKitsune <mirceakitsune@gmail.com>",
- "dannydark <the_skeleton_of_a_child@yahoo.co.uk>",
- "0gb.us <0gb.us@0gb.us>",
- "Guiseppe Bilotta (Oblomov) <guiseppe.bilotta@gmail.com>",
- "Jonathan Neuschafer <j.neuschaefer@gmx.net>",
- "Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net>",
- "Břetislav Štec (t0suj4/TBC_x)",
- "Aaron Suen <warr1024@gmail.com>",
- "Constantin Wenger (SpeedProg) <constantin.wenger@googlemail.com>",
- "matttpt <matttpt@gmail.com>",
- "JacobF <queatz@gmail.com>",
- "TriBlade9 <triblade9@mail.com>",
- "Zefram <zefram@fysh.org>",
-}
-
-return {
- name = "credits",
- caption = fgettext("Credits"),
- cbf_formspec = function(tabview, name, tabdata)
- local logofile = defaulttexturedir .. "logo.png"
- local version = core.get_version()
- return "image[0.5,1;" .. core.formspec_escape(logofile) .. "]" ..
- "label[0.5,3.2;" .. version.project .. " " .. version.string .. "]" ..
- "label[0.5,3.5;http://minetest.net]" ..
- "tablecolumns[color;text]" ..
- "tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
- "table[3.5,-0.25;8.5,5.8;list_credits;" ..
- "#FFFF00," .. "Dedication of the current release" .. ",," ..
- "The 0.4.14 release is dedicated to the memory of" .. ",," ..
- "Minetest developer Maciej Kasatkin (RealBadAngel)" .. ",," ..
- "who died on March 24 2016." .. ",," ..
- "Our thoughts are with his family and friends." .. ",,," ..
- "#FFFF00," .. fgettext("Core Developers") .. ",," ..
- table.concat(core_developers, ",,") .. ",,," ..
- "#FFFF00," .. fgettext("Active Contributors") .. ",," ..
- table.concat(active_contributors, ",,") .. ",,," ..
- "#FFFF00," .. fgettext("Previous Core Developers") ..",," ..
- table.concat(previous_core_developers, ",,") .. ",,," ..
- "#FFFF00," .. fgettext("Previous Contributors") .. ",," ..
- table.concat(previous_contributors, ",,") .. "," ..
- ";1]"
- end
-}
diff --git a/builtin/mainmenu/tab_local.lua b/builtin/mainmenu/tab_local.lua
new file mode 100644
index 000000000..f8de10db6
--- /dev/null
+++ b/builtin/mainmenu/tab_local.lua
@@ -0,0 +1,393 @@
+--Minetest
+--Copyright (C) 2014 sapier
+--
+--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.
+
+
+local current_game, singleplayer_refresh_gamebar
+local valid_disabled_settings = {
+ ["enable_damage"]=true,
+ ["creative_mode"]=true,
+ ["enable_server"]=true,
+}
+
+-- Currently chosen game in gamebar for theming and filtering
+function current_game()
+ local last_game_id = core.settings:get("menu_last_game")
+ local game = pkgmgr.find_by_gameid(last_game_id)
+
+ return game
+end
+
+-- Apply menu changes from given game
+function apply_game(game)
+ core.set_topleft_text(game.name)
+ core.settings:set("menu_last_game", game.id)
+ menudata.worldlist:set_filtercriteria(game.id)
+
+ mm_game_theme.update("singleplayer", game) -- this refreshes the formspec
+
+ local index = filterlist.get_current_index(menudata.worldlist,
+ tonumber(core.settings:get("mainmenu_last_selected_world")))
+ if not index or index < 1 then
+ local selected = core.get_textlist_index("sp_worlds")
+ if selected ~= nil and selected < #menudata.worldlist:get_list() then
+ index = selected
+ else
+ index = #menudata.worldlist:get_list()
+ end
+ end
+ menu_worldmt_legacy(index)
+end
+
+function singleplayer_refresh_gamebar()
+
+ local old_bar = ui.find_by_name("game_button_bar")
+ if old_bar ~= nil then
+ old_bar:delete()
+ end
+
+ local function game_buttonbar_button_handler(fields)
+ if fields.game_open_cdb then
+ local maintab = ui.find_by_name("maintab")
+ local dlg = create_store_dlg("game")
+ dlg:set_parent(maintab)
+ maintab:hide()
+ dlg:show()
+ return true
+ end
+
+ for _, game in ipairs(pkgmgr.games) do
+ if fields["game_btnbar_" .. game.id] then
+ apply_game(game)
+ return true
+ end
+ end
+ end
+
+ local btnbar = buttonbar_create("game_button_bar",
+ game_buttonbar_button_handler,
+ {x=-0.3,y=5.9}, "horizontal", {x=12.4,y=1.15})
+
+ for _, game in ipairs(pkgmgr.games) do
+ local btn_name = "game_btnbar_" .. game.id
+
+ local image = nil
+ local text = nil
+ local tooltip = core.formspec_escape(game.title)
+
+ if (game.menuicon_path or "") ~= "" then
+ image = core.formspec_escape(game.menuicon_path)
+ else
+ local part1 = game.id:sub(1,5)
+ local part2 = game.id:sub(6,10)
+ local part3 = game.id:sub(11)
+
+ text = part1 .. "\n" .. part2
+ if part3 ~= "" then
+ text = text .. "\n" .. part3
+ end
+ end
+ btnbar:add_button(btn_name, text, image, tooltip)
+ end
+
+ local plus_image = core.formspec_escape(defaulttexturedir .. "plus.png")
+ btnbar:add_button("game_open_cdb", "", plus_image, fgettext("Install games from ContentDB"))
+end
+
+local function get_disabled_settings(game)
+ if not game then
+ return {}
+ end
+
+ local gameconfig = Settings(game.path .. "/game.conf")
+ local disabled_settings = {}
+ if gameconfig then
+ local disabled_settings_str = (gameconfig:get("disabled_settings") or ""):split()
+ for _, value in pairs(disabled_settings_str) do
+ local state = false
+ value = value:trim()
+ if string.sub(value, 1, 1) == "!" then
+ state = true
+ value = string.sub(value, 2)
+ end
+ if valid_disabled_settings[value] then
+ disabled_settings[value] = state
+ else
+ core.log("error", "Invalid disabled setting in game.conf: "..tostring(value))
+ end
+ end
+ end
+ return disabled_settings
+end
+
+local function get_formspec(tabview, name, tabdata)
+ local retval = ""
+
+ local index = filterlist.get_current_index(menudata.worldlist,
+ tonumber(core.settings:get("mainmenu_last_selected_world")))
+ local list = menudata.worldlist:get_list()
+ local world = list and index and list[index]
+ local game
+ if world then
+ game = pkgmgr.find_by_gameid(world.gameid)
+ else
+ game = current_game()
+ end
+ local disabled_settings = get_disabled_settings(game)
+
+ local creative, damage, host = "", "", ""
+
+ -- Y offsets for game settings checkboxes
+ local y = -0.2
+ local yo = 0.45
+
+ if disabled_settings["creative_mode"] == nil then
+ creative = "checkbox[0,"..y..";cb_creative_mode;".. fgettext("Creative Mode") .. ";" ..
+ dump(core.settings:get_bool("creative_mode")) .. "]"
+ y = y + yo
+ end
+ if disabled_settings["enable_damage"] == nil then
+ damage = "checkbox[0,"..y..";cb_enable_damage;".. fgettext("Enable Damage") .. ";" ..
+ dump(core.settings:get_bool("enable_damage")) .. "]"
+ y = y + yo
+ end
+ if disabled_settings["enable_server"] == nil then
+ host = "checkbox[0,"..y..";cb_server;".. fgettext("Host Server") ..";" ..
+ dump(core.settings:get_bool("enable_server")) .. "]"
+ y = y + yo
+ end
+
+ retval = retval ..
+ "button[3.9,3.8;2.8,1;world_delete;".. fgettext("Delete") .. "]" ..
+ "button[6.55,3.8;2.8,1;world_configure;".. fgettext("Select Mods") .. "]" ..
+ "button[9.2,3.8;2.8,1;world_create;".. fgettext("New") .. "]" ..
+ "label[3.9,-0.05;".. fgettext("Select World:") .. "]"..
+ creative ..
+ damage ..
+ host ..
+ "textlist[3.9,0.4;7.9,3.45;sp_worlds;" ..
+ menu_render_worldlist() ..
+ ";" .. index .. "]"
+
+ if core.settings:get_bool("enable_server") and disabled_settings["enable_server"] == nil then
+ retval = retval ..
+ "button[7.9,4.75;4.1,1;play;".. fgettext("Host Game") .. "]" ..
+ "checkbox[0,"..y..";cb_server_announce;" .. fgettext("Announce Server") .. ";" ..
+ dump(core.settings:get_bool("server_announce")) .. "]" ..
+ "field[0.3,2.85;3.8,0.5;te_playername;" .. fgettext("Name") .. ";" ..
+ core.formspec_escape(core.settings:get("name")) .. "]" ..
+ "pwdfield[0.3,4.05;3.8,0.5;te_passwd;" .. fgettext("Password") .. "]"
+
+ local bind_addr = core.settings:get("bind_address")
+ if bind_addr ~= nil and bind_addr ~= "" then
+ retval = retval ..
+ "field[0.3,5.25;2.5,0.5;te_serveraddr;" .. fgettext("Bind Address") .. ";" ..
+ core.formspec_escape(core.settings:get("bind_address")) .. "]" ..
+ "field[2.85,5.25;1.25,0.5;te_serverport;" .. fgettext("Port") .. ";" ..
+ core.formspec_escape(core.settings:get("port")) .. "]"
+ else
+ retval = retval ..
+ "field[0.3,5.25;3.8,0.5;te_serverport;" .. fgettext("Server Port") .. ";" ..
+ core.formspec_escape(core.settings:get("port")) .. "]"
+ end
+ else
+ retval = retval ..
+ "button[7.9,4.75;4.1,1;play;" .. fgettext("Play Game") .. "]"
+ end
+
+ return retval
+end
+
+local function main_button_handler(this, fields, name, tabdata)
+
+ assert(name == "local")
+
+ local world_doubleclick = false
+
+ if fields["sp_worlds"] ~= nil then
+ local event = core.explode_textlist_event(fields["sp_worlds"])
+ local selected = core.get_textlist_index("sp_worlds")
+
+ menu_worldmt_legacy(selected)
+
+ if event.type == "DCL" then
+ world_doubleclick = true
+ end
+
+ if event.type == "CHG" and selected ~= nil then
+ core.settings:set("mainmenu_last_selected_world",
+ menudata.worldlist:get_raw_index(selected))
+ return true
+ end
+ end
+
+ if menu_handle_key_up_down(fields,"sp_worlds","mainmenu_last_selected_world") then
+ return true
+ end
+
+ if fields["cb_creative_mode"] then
+ core.settings:set("creative_mode", fields["cb_creative_mode"])
+ local selected = core.get_textlist_index("sp_worlds")
+ menu_worldmt(selected, "creative_mode", fields["cb_creative_mode"])
+
+ return true
+ end
+
+ if fields["cb_enable_damage"] then
+ core.settings:set("enable_damage", fields["cb_enable_damage"])
+ local selected = core.get_textlist_index("sp_worlds")
+ menu_worldmt(selected, "enable_damage", fields["cb_enable_damage"])
+
+ return true
+ end
+
+ if fields["cb_server"] then
+ core.settings:set("enable_server", fields["cb_server"])
+
+ return true
+ end
+
+ if fields["cb_server_announce"] then
+ core.settings:set("server_announce", fields["cb_server_announce"])
+ local selected = core.get_textlist_index("srv_worlds")
+ menu_worldmt(selected, "server_announce", fields["cb_server_announce"])
+
+ return true
+ end
+
+ if fields["play"] ~= nil or world_doubleclick or fields["key_enter"] then
+ local selected = core.get_textlist_index("sp_worlds")
+ gamedata.selected_world = menudata.worldlist:get_raw_index(selected)
+
+ if selected == nil or gamedata.selected_world == 0 then
+ gamedata.errormessage =
+ fgettext("No world created or selected!")
+ return true
+ end
+
+ -- Update last game
+ local world = menudata.worldlist:get_raw_element(gamedata.selected_world)
+ local game_obj
+ if world then
+ game_obj = pkgmgr.find_by_gameid(world.gameid)
+ core.settings:set("menu_last_game", game_obj.id)
+ end
+
+ local disabled_settings = get_disabled_settings(game_obj)
+ for k, _ in pairs(valid_disabled_settings) do
+ local v = disabled_settings[k]
+ if v ~= nil then
+ if k == "enable_server" and v == true then
+ error("Setting 'enable_server' cannot be force-enabled! The game.conf needs to be fixed.")
+ end
+ core.settings:set_bool(k, disabled_settings[k])
+ end
+ end
+
+ if core.settings:get_bool("enable_server") then
+ gamedata.playername = fields["te_playername"]
+ gamedata.password = fields["te_passwd"]
+ gamedata.port = fields["te_serverport"]
+ gamedata.address = ""
+
+ core.settings:set("port",gamedata.port)
+ if fields["te_serveraddr"] ~= nil then
+ core.settings:set("bind_address",fields["te_serveraddr"])
+ end
+ else
+ gamedata.singleplayer = true
+ end
+
+ core.start()
+ return true
+ end
+
+ if fields["world_create"] ~= nil then
+ local create_world_dlg = create_create_world_dlg()
+ create_world_dlg:set_parent(this)
+ this:hide()
+ create_world_dlg:show()
+ mm_game_theme.update("singleplayer", current_game())
+ return true
+ end
+
+ if fields["world_delete"] ~= nil then
+ local selected = core.get_textlist_index("sp_worlds")
+ if selected ~= nil and
+ selected <= menudata.worldlist:size() then
+ local world = menudata.worldlist:get_list()[selected]
+ if world ~= nil and
+ world.name ~= nil and
+ world.name ~= "" then
+ local index = menudata.worldlist:get_raw_index(selected)
+ local delete_world_dlg = create_delete_world_dlg(world.name,index)
+ delete_world_dlg:set_parent(this)
+ this:hide()
+ delete_world_dlg:show()
+ mm_game_theme.update("singleplayer",current_game())
+ end
+ end
+
+ return true
+ end
+
+ if fields["world_configure"] ~= nil then
+ local selected = core.get_textlist_index("sp_worlds")
+ if selected ~= nil then
+ local configdialog =
+ create_configure_world_dlg(
+ menudata.worldlist:get_raw_index(selected))
+
+ if (configdialog ~= nil) then
+ configdialog:set_parent(this)
+ this:hide()
+ configdialog:show()
+ mm_game_theme.update("singleplayer",current_game())
+ end
+ end
+
+ return true
+ end
+end
+
+local function on_change(type, old_tab, new_tab)
+ if (type == "ENTER") then
+ local game = current_game()
+ if game then
+ apply_game(game)
+ end
+
+ singleplayer_refresh_gamebar()
+ ui.find_by_name("game_button_bar"):show()
+ else
+ menudata.worldlist:set_filtercriteria(nil)
+ local gamebar = ui.find_by_name("game_button_bar")
+ if gamebar then
+ gamebar:hide()
+ end
+ core.set_topleft_text("")
+ mm_game_theme.update(new_tab,nil)
+ end
+end
+
+--------------------------------------------------------------------------------
+return {
+ name = "local",
+ caption = fgettext("Start Game"),
+ cbf_formspec = get_formspec,
+ cbf_button_handler = main_button_handler,
+ on_change = on_change
+}
diff --git a/builtin/mainmenu/tab_mods.lua b/builtin/mainmenu/tab_mods.lua
deleted file mode 100644
index 4a5b6c041..000000000
--- a/builtin/mainmenu/tab_mods.lua
+++ /dev/null
@@ -1,184 +0,0 @@
---Minetest
---Copyright (C) 2014 sapier
---
---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.
-
---------------------------------------------------------------------------------
-local function get_formspec(tabview, name, tabdata)
-
- if modmgr.global_mods == nil then
- modmgr.refresh_globals()
- end
-
- if tabdata.selected_mod == nil then
- tabdata.selected_mod = 1
- end
-
- local retval =
- "label[0.05,-0.25;".. fgettext("Installed Mods:") .. "]" ..
- "textlist[0,0.25;5.1,5;modlist;" ..
- modmgr.render_modlist(modmgr.global_mods) ..
- ";" .. tabdata.selected_mod .. "]"
-
- retval = retval ..
--- "label[0.8,4.2;" .. fgettext("Add mod:") .. "]" ..
--- TODO Disabled due to upcoming release 0.4.8 and irrlicht messing up localization
--- "button[0.75,4.85;1.8,0.5;btn_mod_mgr_install_local;".. fgettext("Local install") .. "]" ..
-
--- TODO Disabled due to service being offline, and not likely to come online again, in this form
--- "button[0,4.85;5.25,0.5;btn_modstore;".. fgettext("Online mod repository") .. "]"
- ""
-
- local selected_mod = nil
-
- if filterlist.size(modmgr.global_mods) >= tabdata.selected_mod then
- selected_mod = modmgr.global_mods:get_list()[tabdata.selected_mod]
- end
-
- if selected_mod ~= nil then
- local modscreenshot = nil
-
- --check for screenshot beeing available
- local screenshotfilename = selected_mod.path .. DIR_DELIM .. "screenshot.png"
- local error = nil
- local screenshotfile,error = io.open(screenshotfilename,"r")
- if error == nil then
- screenshotfile:close()
- modscreenshot = screenshotfilename
- end
-
- if modscreenshot == nil then
- modscreenshot = defaulttexturedir .. "no_screenshot.png"
- end
-
- retval = retval
- .. "image[5.5,0;3,2;" .. core.formspec_escape(modscreenshot) .. "]"
- .. "label[8.25,0.6;" .. selected_mod.name .. "]"
-
- local descriptionlines = nil
- error = nil
- local descriptionfilename = selected_mod.path .. "description.txt"
- local descriptionfile,error = io.open(descriptionfilename,"r")
- if error == nil then
- local descriptiontext = descriptionfile:read("*all")
-
- descriptionlines = core.splittext(descriptiontext,42)
- descriptionfile:close()
- else
- descriptionlines = {}
- descriptionlines[#descriptionlines + 1] = fgettext("No mod description available")
- end
-
- retval = retval ..
- "label[5.5,1.7;".. fgettext("Mod information:") .. "]" ..
- "textlist[5.5,2.2;6.2,2.4;description;"
-
- for i=1,#descriptionlines,1 do
- retval = retval .. core.formspec_escape(descriptionlines[i]) .. ","
- end
-
-
- if selected_mod.is_modpack then
- retval = retval .. ";0]" ..
- "button[10,4.85;2,0.5;btn_mod_mgr_rename_modpack;" ..
- fgettext("Rename") .. "]"
- retval = retval .. "button[5.5,4.85;4.5,0.5;btn_mod_mgr_delete_mod;"
- .. fgettext("Uninstall selected modpack") .. "]"
- else
- --show dependencies
- local toadd_hard, toadd_soft = modmgr.get_dependencies(selected_mod.path)
- if toadd_hard == "" and toadd_soft == "" then
- retval = retval .. "," .. fgettext("No dependencies.")
- else
- if toadd_hard ~= "" then
- retval = retval .. "," .. fgettext("Dependencies:") .. ","
- retval = retval .. toadd_hard
- end
- if toadd_soft ~= "" then
- if toadd_hard ~= "" then
- retval = retval .. ","
- end
- retval = retval .. "," .. fgettext("Optional dependencies:") .. ","
- retval = retval .. toadd_soft
- end
- end
-
- retval = retval .. ";0]"
-
- retval = retval .. "button[5.5,4.85;4.5,0.5;btn_mod_mgr_delete_mod;"
- .. fgettext("Uninstall selected mod") .. "]"
- end
- end
- return retval
-end
-
---------------------------------------------------------------------------------
-local function handle_buttons(tabview, fields, tabname, tabdata)
- if fields["modlist"] ~= nil then
- local event = core.explode_textlist_event(fields["modlist"])
- tabdata.selected_mod = event.index
- return true
- end
-
- if fields["btn_mod_mgr_install_local"] ~= nil then
- core.show_file_open_dialog("mod_mgt_open_dlg",fgettext("Select Mod File:"))
- return true
- end
-
- if fields["btn_modstore"] ~= nil then
- local modstore_ui = ui.find_by_name("modstore")
- if modstore_ui ~= nil then
- tabview:hide()
- modstore.update_modlist()
- modstore_ui:show()
- else
- print("modstore ui element not found")
- end
- return true
- end
-
- if fields["btn_mod_mgr_rename_modpack"] ~= nil then
- local dlg_renamemp = create_rename_modpack_dlg(tabdata.selected_mod)
- dlg_renamemp:set_parent(tabview)
- tabview:hide()
- dlg_renamemp:show()
- return true
- end
-
- if fields["btn_mod_mgr_delete_mod"] ~= nil then
- local dlg_delmod = create_delete_mod_dlg(tabdata.selected_mod)
- dlg_delmod:set_parent(tabview)
- tabview:hide()
- dlg_delmod:show()
- return true
- end
-
- if fields["mod_mgt_open_dlg_accepted"] ~= nil and
- fields["mod_mgt_open_dlg_accepted"] ~= "" then
- modmgr.installmod(fields["mod_mgt_open_dlg_accepted"],nil)
- return true
- end
-
- return false
-end
-
---------------------------------------------------------------------------------
-return {
- name = "mods",
- caption = fgettext("Mods"),
- cbf_formspec = get_formspec,
- cbf_button_handler = handle_buttons,
- on_change = gamemgr.update_gamelist
-}
diff --git a/builtin/mainmenu/tab_multiplayer.lua b/builtin/mainmenu/tab_multiplayer.lua
deleted file mode 100644
index 00150f26d..000000000
--- a/builtin/mainmenu/tab_multiplayer.lua
+++ /dev/null
@@ -1,249 +0,0 @@
---Minetest
---Copyright (C) 2014 sapier
---
---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.
-
---------------------------------------------------------------------------------
-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 fav_selected = menudata.favorites[tabdata.fav_selected]
-
- local retval =
- "label[7.75,-0.15;" .. fgettext("Address / Port") .. "]" ..
- "label[7.75,1.05;" .. fgettext("Name / Password") .. "]" ..
- "field[8,0.75;3.3,0.5;te_address;;" ..
- core.formspec_escape(core.setting_get("address")) .. "]" ..
- "field[11.15,0.75;1.4,0.5;te_port;;" ..
- core.formspec_escape(core.setting_get("remote_port")) .. "]" ..
- "button[10.1,4.9;2,0.5;btn_mp_connect;" .. fgettext("Connect") .. "]" ..
- "field[8,1.95;2.95,0.5;te_name;;" ..
- core.formspec_escape(core.setting_get("name")) .. "]" ..
- "pwdfield[10.78,1.95;1.77,0.5;te_pwd;]" ..
- "box[7.73,2.35;4.3,2.28;#999999]"
-
- if tabdata.fav_selected and fav_selected then
- if gamedata.fav then
- retval = retval .. "button[7.85,4.9;2.3,0.5;btn_delete_favorite;" ..
- fgettext("Del. Favorite") .. "]"
- end
- if fav_selected.description then
- retval = retval .. "textarea[8.1,2.4;4.26,2.6;;" ..
- core.formspec_escape((gamedata.serverdescription or ""), true) .. ";]"
- end
- end
-
- --favourites
- retval = retval .. "tablecolumns[" ..
- image_column(fgettext("Favorite"), "favorite") .. ";" ..
- "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;" ..
- image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" ..
- "color,span=1;" ..
- "text,padding=1]" ..
- "table[-0.15,-0.1;7.75,5.5;favourites;"
-
- if #menudata.favorites > 0 then
- local favs = core.get_favorites("local")
- if #favs > 0 then
- for i = 1, #favs do
- for j = 1, #menudata.favorites do
- if menudata.favorites[j].address == favs[i].address and
- menudata.favorites[j].port == favs[i].port then
- table.insert(menudata.favorites, i, table.remove(menudata.favorites, j))
- end
- end
- if favs[i].address ~= menudata.favorites[i].address then
- table.insert(menudata.favorites, i, favs[i])
- end
- end
- end
- retval = retval .. render_favorite(menudata.favorites[1], (#favs > 0))
- for i = 2, #menudata.favorites do
- retval = retval .. "," .. render_favorite(menudata.favorites[i], (i <= #favs))
- end
- end
-
- if tabdata.fav_selected then
- retval = retval .. ";" .. tabdata.fav_selected .. "]"
- else
- retval = retval .. ";0]"
- end
-
- return retval
-end
-
---------------------------------------------------------------------------------
-local function main_button_handler(tabview, fields, name, tabdata)
- if fields.te_name then
- gamedata.playername = fields.te_name
- core.setting_set("name", fields.te_name)
- end
-
- if fields.favourites then
- local event = core.explode_table_event(fields.favourites)
- local fav = menudata.favorites[event.row]
-
- if event.type == "DCL" then
- if event.row <= #menudata.favorites then
- if menudata.favorites_is_public and
- not is_server_protocol_compat_or_error(
- fav.proto_min, fav.proto_max) then
- return true
- end
-
- gamedata.address = fav.address
- gamedata.port = fav.port
- gamedata.playername = fields.te_name
- gamedata.selected_world = 0
-
- if fields.te_pwd then
- gamedata.password = fields.te_pwd
- end
-
- gamedata.servername = fav.name
- gamedata.serverdescription = fav.description
-
- if gamedata.address and gamedata.port then
- core.setting_set("address", gamedata.address)
- core.setting_set("remote_port", gamedata.port)
- core.start()
- end
- end
- return true
- end
-
- if event.type == "CHG" then
- if event.row <= #menudata.favorites then
- gamedata.fav = false
- local favs = core.get_favorites("local")
- 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.setting_set("address", address)
- core.setting_set("remote_port", port)
- end
- tabdata.fav_selected = event.row
- end
- return true
- end
- end
-
- if fields.key_up or fields.key_down then
- local fav_idx = core.get_table_index("favourites")
- local fav = menudata.favorites[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 < #menudata.favorites then
- fav_idx = fav_idx + 1
- end
- else
- fav_idx = 1
- end
-
- if not menudata.favorites or not fav then
- tabdata.fav_selected = 0
- return true
- end
-
- local address = fav.address
- local port = fav.port
-
- if address and port then
- core.setting_set("address", address)
- core.setting_set("remote_port", port)
- end
-
- tabdata.fav_selected = fav_idx
- return true
- end
-
- if fields.btn_delete_favorite then
- local current_favourite = core.get_table_index("favourites")
- if not current_favourite then return end
-
- core.delete_favorite(current_favourite)
- asyncOnlineFavourites()
- tabdata.fav_selected = nil
-
- core.setting_set("address", "")
- core.setting_set("remote_port", "30000")
- return true
- end
-
- if (fields.btn_mp_connect or fields.key_enter) and fields.te_address and fields.te_port then
- gamedata.playername = fields.te_name
- gamedata.password = fields.te_pwd
- gamedata.address = fields.te_address
- gamedata.port = fields.te_port
- gamedata.selected_world = 0
- local fav_idx = core.get_table_index("favourites")
- local fav = menudata.favorites[fav_idx]
-
- if fav_idx and fav_idx <= #menudata.favorites and
- fav.address == fields.te_address and
- fav.port == fields.te_port then
-
- gamedata.servername = fav.name
- gamedata.serverdescription = fav.description
-
- if menudata.favorites_is_public and
- not is_server_protocol_compat_or_error(
- fav.proto_min, fav.proto_max) then
- return true
- end
- else
- gamedata.servername = ""
- gamedata.serverdescription = ""
- end
-
- core.setting_set("address", fields.te_address)
- core.setting_set("remote_port", fields.te_port)
-
- core.start()
- return true
- end
- return false
-end
-
-local function on_change(type, old_tab, new_tab)
- if type == "LEAVE" then return end
- asyncOnlineFavourites()
-end
-
---------------------------------------------------------------------------------
-return {
- name = "multiplayer",
- caption = fgettext("Client"),
- cbf_formspec = get_formspec,
- cbf_button_handler = main_button_handler,
- on_change = on_change
-}
diff --git a/builtin/mainmenu/tab_online.lua b/builtin/mainmenu/tab_online.lua
new file mode 100644
index 000000000..ad5f79eaa
--- /dev/null
+++ b/builtin/mainmenu/tab_online.lua
@@ -0,0 +1,427 @@
+--Minetest
+--Copyright (C) 2014 sapier
+--
+--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.
+
+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()
+
+ if not tabdata.search_for then
+ tabdata.search_for = ""
+ end
+
+ local retval =
+ -- Search
+ "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[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[4.25,0.5;1.25,0.75;te_port;;" ..
+ core.formspec_escape(core.settings:get("remote_port")) .. "]" ..
+
+ -- Description Background
+ "label[0.25,1.6;" .. fgettext("Server Description") .. "]" ..
+ "box[0.25,1.85;5.25,2.7;#999999]"..
+
+ -- Name / Password
+ "container[0,4.8]" ..
+ "label[0.25,0;" .. fgettext("Name") .. "]" ..
+ "label[2.875,0;" .. fgettext("Password") .. "]" ..
+ "field[0.25,0.2;2.625,0.75;te_name;;" .. core.formspec_escape(core.settings:get("name")) .. "]" ..
+ "pwdfield[2.875,0.2;2.625,0.75;te_pwd;]" ..
+ "container_end[]" ..
+
+ -- Connect
+ "button[3,6;2.5,0.75;btn_mp_login;" .. fgettext("Login") .. "]"
+
+ if core.settings:get_bool("enable_split_login_register") then
+ retval = retval .. "button[0.25,6;2.5,0.75;btn_mp_register;" .. fgettext("Register") .. "]"
+ end
+
+ if tabdata.selected then
+ if gamedata.fav then
+ retval = retval .. "tooltip[btn_delete_favorite;" .. fgettext("Remove favorite") .. "]"
+ retval = retval .. "style[btn_delete_favorite;padding=6]"
+ retval = retval .. "image_button[5,1.3;0.5,0.5;" .. core.formspec_escape(defaulttexturedir ..
+ "server_favorite_delete.png") .. ";btn_delete_favorite;]"
+ end
+ if gamedata.serverdescription then
+ retval = retval .. "textarea[0.25,1.85;5.2,2.75;;;" ..
+ core.formspec_escape(gamedata.serverdescription) .. "]"
+ end
+ end
+
+ retval = retval .. "container_end[]"
+
+ -- Table
+ retval = retval .. "tablecolumns[" ..
+ "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,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
+ end
+
+ retval = retval .. table.concat(rows, ",")
+
+ if tabdata.selected then
+ retval = retval .. ";" .. tabdata.selected .. "]"
+ else
+ retval = retval .. ";0]"
+ end
+
+ return retval, "size[15.5,7,false]real_coordinates[true]"
+end
+
+--------------------------------------------------------------------------------
+
+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.servers then
+ local event = core.explode_table_event(fields.servers)
+ local server = tabdata.lookup[event.row]
+
+ if server then
+ if event.type == "DCL" then
+ if not is_server_protocol_compat_or_error(
+ server.proto_min, server.proto_max) then
+ return true
+ end
+
+ gamedata.address = server.address
+ gamedata.port = server.port
+ gamedata.playername = fields.te_name
+ gamedata.selected_world = 0
+
+ if fields.te_pwd then
+ gamedata.password = fields.te_pwd
+ end
+
+ 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
+ if event.type == "CHG" then
+ set_selected_server(tabdata, event.row, server)
+ return true
+ end
+ end
+ end
+
+ if fields.btn_delete_favorite then
+ 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
+
+ if fields.btn_mp_clear then
+ tabdata.search_for = ""
+ menudata.search_result = nil
+ return true
+ end
+
+ if fields.btn_mp_search or fields.key_enter_field == "te_search" then
+ tabdata.search_for = fields.te_search
+ 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
+
+ return true
+ end
+
+ if fields.btn_mp_refresh then
+ serverlistmgr.sync()
+ return true
+ end
+
+ if (fields.btn_mp_login or fields.key_enter)
+ and fields.te_address ~= "" and fields.te_port then
+ gamedata.playername = fields.te_name
+ gamedata.password = fields.te_pwd
+ gamedata.address = fields.te_address
+ gamedata.port = tonumber(fields.te_port)
+
+ local enable_split_login_register = core.settings:get_bool("enable_split_login_register")
+ gamedata.allow_login_or_register = enable_split_login_register and "login" or "any"
+ gamedata.selected_world = 0
+
+ local idx = core.get_table_index("servers")
+ local server = idx and tabdata.lookup[idx]
+
+ set_selected_server(tabdata)
+
+ if server and server.address == gamedata.address and
+ server.port == gamedata.port then
+
+ serverlistmgr.add_favorite(server)
+
+ gamedata.servername = server.name
+ gamedata.serverdescription = server.description
+
+ if not is_server_protocol_compat_or_error(
+ server.proto_min, server.proto_max) then
+ return true
+ end
+ else
+ gamedata.servername = ""
+ gamedata.serverdescription = ""
+
+ serverlistmgr.add_favorite({
+ address = gamedata.address,
+ port = gamedata.port,
+ })
+ end
+
+ core.settings:set("address", gamedata.address)
+ core.settings:set("remote_port", gamedata.port)
+
+ core.start()
+ return true
+ end
+
+ if fields.btn_mp_register and fields.te_address ~= "" and fields.te_port then
+ local idx = core.get_table_index("servers")
+ local server = idx and tabdata.lookup[idx]
+ if server and (server.address ~= fields.te_address or server.port ~= tonumber(fields.te_port)) then
+ server = nil
+ end
+
+ if server and not is_server_protocol_compat_or_error(
+ server.proto_min, server.proto_max) then
+ return true
+ end
+
+ local dlg = create_register_dialog(fields.te_address, tonumber(fields.te_port), server)
+ dlg:set_parent(tabview)
+ tabview:hide()
+ dlg:show()
+ return true
+ end
+
+ return false
+end
+
+local function on_change(type, old_tab, new_tab)
+ if type == "LEAVE" then return end
+ serverlistmgr.sync()
+end
+
+return {
+ name = "online",
+ caption = fgettext("Join Game"),
+ cbf_formspec = get_formspec,
+ cbf_button_handler = main_button_handler,
+ on_change = on_change
+}
diff --git a/builtin/mainmenu/tab_server.lua b/builtin/mainmenu/tab_server.lua
deleted file mode 100644
index 6b96825a0..000000000
--- a/builtin/mainmenu/tab_server.lua
+++ /dev/null
@@ -1,195 +0,0 @@
---Minetest
---Copyright (C) 2014 sapier
---
---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.
-
---------------------------------------------------------------------------------
-local function get_formspec(tabview, name, tabdata)
-
- local index = menudata.worldlist:get_current_index(
- tonumber(core.setting_get("mainmenu_last_selected_world"))
- )
-
- local retval =
- "button[4,4.15;2.6,0.5;world_delete;" .. fgettext("Delete") .. "]" ..
- "button[6.5,4.15;2.8,0.5;world_create;" .. fgettext("New") .. "]" ..
- "button[9.2,4.15;2.55,0.5;world_configure;" .. fgettext("Configure") .. "]" ..
- "button[8.5,4.95;3.25,0.5;start_server;" .. fgettext("Start Game") .. "]" ..
- "label[4,-0.25;" .. fgettext("Select World:") .. "]" ..
- "checkbox[0.25,0.25;cb_creative_mode;" .. fgettext("Creative Mode") .. ";" ..
- dump(core.setting_getbool("creative_mode")) .. "]" ..
- "checkbox[0.25,0.7;cb_enable_damage;" .. fgettext("Enable Damage") .. ";" ..
- dump(core.setting_getbool("enable_damage")) .. "]" ..
- "checkbox[0.25,1.15;cb_server_announce;" .. fgettext("Public") .. ";" ..
- dump(core.setting_getbool("server_announce")) .. "]" ..
- "label[0.25,2.2;" .. fgettext("Name/Password") .. "]" ..
- "field[0.55,3.2;3.5,0.5;te_playername;;" ..
- core.formspec_escape(core.setting_get("name")) .. "]" ..
- "pwdfield[0.55,4;3.5,0.5;te_passwd;]"
-
- local bind_addr = core.setting_get("bind_address")
- if bind_addr ~= nil and bind_addr ~= "" then
- retval = retval ..
- "field[0.55,5.2;2.25,0.5;te_serveraddr;" .. fgettext("Bind Address") .. ";" ..
- core.formspec_escape(core.setting_get("bind_address")) .. "]" ..
- "field[2.8,5.2;1.25,0.5;te_serverport;" .. fgettext("Port") .. ";" ..
- core.formspec_escape(core.setting_get("port")) .. "]"
- else
- retval = retval ..
- "field[0.55,5.2;3.5,0.5;te_serverport;" .. fgettext("Server Port") .. ";" ..
- core.formspec_escape(core.setting_get("port")) .. "]"
- end
-
- retval = retval ..
- "textlist[4,0.25;7.5,3.7;srv_worlds;" ..
- menu_render_worldlist() ..
- ";" .. index .. "]"
-
- return retval
-end
-
---------------------------------------------------------------------------------
-local function main_button_handler(this, fields, name, tabdata)
-
- local world_doubleclick = false
-
- if fields["srv_worlds"] ~= nil then
- local event = core.explode_textlist_event(fields["srv_worlds"])
- local selected = core.get_textlist_index("srv_worlds")
-
- menu_worldmt_legacy(selected)
-
- if event.type == "DCL" then
- world_doubleclick = true
- end
- if event.type == "CHG" then
- core.setting_set("mainmenu_last_selected_world",
- menudata.worldlist:get_raw_index(core.get_textlist_index("srv_worlds")))
- return true
- end
- end
-
- if menu_handle_key_up_down(fields,"srv_worlds","mainmenu_last_selected_world") then
- return true
- end
-
- if fields["cb_creative_mode"] then
- core.setting_set("creative_mode", fields["cb_creative_mode"])
- local selected = core.get_textlist_index("srv_worlds")
- menu_worldmt(selected, "creative_mode", fields["cb_creative_mode"])
-
- return true
- end
-
- if fields["cb_enable_damage"] then
- core.setting_set("enable_damage", fields["cb_enable_damage"])
- local selected = core.get_textlist_index("srv_worlds")
- menu_worldmt(selected, "enable_damage", fields["cb_enable_damage"])
-
- return true
- end
-
- if fields["cb_server_announce"] then
- core.setting_set("server_announce", fields["cb_server_announce"])
- local selected = core.get_textlist_index("srv_worlds")
- menu_worldmt(selected, "server_announce", fields["cb_server_announce"])
-
- return true
- end
-
- if fields["start_server"] ~= nil or
- world_doubleclick or
- fields["key_enter"] then
- local selected = core.get_textlist_index("srv_worlds")
- gamedata.selected_world = menudata.worldlist:get_raw_index(selected)
- if selected ~= nil and gamedata.selected_world ~= 0 then
- gamedata.playername = fields["te_playername"]
- gamedata.password = fields["te_passwd"]
- gamedata.port = fields["te_serverport"]
- gamedata.address = ""
-
- core.setting_set("port",gamedata.port)
- if fields["te_serveraddr"] ~= nil then
- core.setting_set("bind_address",fields["te_serveraddr"])
- end
-
- --update last game
- local world = menudata.worldlist:get_raw_element(gamedata.selected_world)
- if world then
- local game, index = gamemgr.find_by_gameid(world.gameid)
- core.setting_set("menu_last_game", game.id)
- end
-
- core.start()
- else
- gamedata.errormessage =
- fgettext("No world created or selected!")
- end
- return true
- end
-
- if fields["world_create"] ~= nil then
- local create_world_dlg = create_create_world_dlg(true)
- create_world_dlg:set_parent(this)
- create_world_dlg:show()
- this:hide()
- return true
- end
-
- if fields["world_delete"] ~= nil then
- local selected = core.get_textlist_index("srv_worlds")
- if selected ~= nil and
- selected <= menudata.worldlist:size() then
- local world = menudata.worldlist:get_list()[selected]
- if world ~= nil and
- world.name ~= nil and
- world.name ~= "" then
- local index = menudata.worldlist:get_raw_index(selected)
- local delete_world_dlg = create_delete_world_dlg(world.name,index)
- delete_world_dlg:set_parent(this)
- delete_world_dlg:show()
- this:hide()
- end
- end
-
- return true
- end
-
- if fields["world_configure"] ~= nil then
- local selected = core.get_textlist_index("srv_worlds")
- if selected ~= nil then
- local configdialog =
- create_configure_world_dlg(
- menudata.worldlist:get_raw_index(selected))
-
- if (configdialog ~= nil) then
- configdialog:set_parent(this)
- configdialog:show()
- this:hide()
- end
- end
- return true
- end
- return false
-end
-
---------------------------------------------------------------------------------
-return {
- name = "server",
- caption = fgettext("Server"),
- cbf_formspec = get_formspec,
- cbf_button_handler = main_button_handler,
- on_change = nil
-}
diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua
index af8df0ccb..21c77aa8e 100644
--- a/builtin/mainmenu/tab_settings.lua
+++ b/builtin/mainmenu/tab_settings.lua
@@ -25,7 +25,8 @@ local labels = {
},
node_highlighting = {
fgettext("Node Outlining"),
- fgettext("Node Highlighting")
+ fgettext("Node Highlighting"),
+ fgettext("None")
},
filters = {
fgettext("No Filter"),
@@ -42,6 +43,14 @@ local labels = {
fgettext("2x"),
fgettext("4x"),
fgettext("8x")
+ },
+ shadow_levels = {
+ fgettext("Disabled"),
+ fgettext("Very Low"),
+ fgettext("Low"),
+ fgettext("Medium"),
+ fgettext("High"),
+ fgettext("Very High")
}
}
@@ -52,7 +61,7 @@ local dd_options = {
},
node_highlighting = {
table.concat(labels.node_highlighting, ","),
- {"box", "halo"}
+ {"box", "halo", "none"}
},
filters = {
table.concat(labels.filters, ","),
@@ -65,50 +74,63 @@ local dd_options = {
antialiasing = {
table.concat(labels.antialiasing, ","),
{"0", "2", "4", "8"}
+ },
+ shadow_levels = {
+ table.concat(labels.shadow_levels, ","),
+ { "0", "1", "2", "3", "4", "5" }
}
}
local getSettingIndex = {
Leaves = function()
- local style = core.setting_get("leaves_style")
+ local style = core.settings:get("leaves_style")
for idx, name in pairs(dd_options.leaves[2]) do
if style == name then return idx end
end
return 1
end,
NodeHighlighting = function()
- local style = core.setting_get("node_highlighting")
+ local style = core.settings:get("node_highlighting")
for idx, name in pairs(dd_options.node_highlighting[2]) do
if style == name then return idx end
end
return 1
end,
Filter = function()
- if core.setting_get(dd_options.filters[2][3]) == "true" then
+ if core.settings:get(dd_options.filters[2][3]) == "true" then
return 3
- elseif core.setting_get(dd_options.filters[2][3]) == "false" and
- core.setting_get(dd_options.filters[2][2]) == "true" then
+ elseif core.settings:get(dd_options.filters[2][3]) == "false" and
+ core.settings:get(dd_options.filters[2][2]) == "true" then
return 2
end
return 1
end,
Mipmap = function()
- if core.setting_get(dd_options.mipmap[2][3]) == "true" then
+ if core.settings:get(dd_options.mipmap[2][3]) == "true" then
return 3
- elseif core.setting_get(dd_options.mipmap[2][3]) == "false" and
- core.setting_get(dd_options.mipmap[2][2]) == "true" then
+ elseif core.settings:get(dd_options.mipmap[2][3]) == "false" and
+ core.settings:get(dd_options.mipmap[2][2]) == "true" then
return 2
end
return 1
end,
Antialiasing = function()
- local antialiasing_setting = core.setting_get("fsaa")
+ local antialiasing_setting = core.settings:get("fsaa")
for i = 1, #dd_options.antialiasing[2] do
if antialiasing_setting == dd_options.antialiasing[2][i] then
return i
end
end
return 1
+ end,
+ ShadowMapping = function()
+ local shadow_setting = core.settings:get("shadow_levels")
+ for i = 1, #dd_options.shadow_levels[2] do
+ if shadow_setting == dd_options.shadow_levels[2][i] then
+ return i
+ end
+ end
+ return 1
end
}
@@ -121,139 +143,108 @@ local function antialiasing_fname_to_name(fname)
return 0
end
-local function dlg_confirm_reset_formspec(data)
- return "size[8,3]" ..
- "label[1,1;" .. fgettext("Are you sure to reset your singleplayer world?") .. "]" ..
- "button[1,2;2.6,0.5;dlg_reset_singleplayer_confirm;" .. fgettext("Yes") .. "]" ..
- "button[4,2;2.8,0.5;dlg_reset_singleplayer_cancel;" .. fgettext("No") .. "]"
-end
-
-local function dlg_confirm_reset_btnhandler(this, fields, dialogdata)
-
- if fields["dlg_reset_singleplayer_confirm"] ~= nil then
- local worldlist = core.get_worlds()
- local found_singleplayerworld = false
-
- for i = 1, #worldlist do
- if worldlist[i].name == "singleplayerworld" then
- found_singleplayerworld = true
- gamedata.worldindex = i
- end
- end
-
- if found_singleplayerworld then
- core.delete_world(gamedata.worldindex)
- end
-
- core.create_world("singleplayerworld", 1)
- worldlist = core.get_worlds()
- found_singleplayerworld = false
-
- for i = 1, #worldlist do
- if worldlist[i].name == "singleplayerworld" then
- found_singleplayerworld = true
- gamedata.worldindex = i
- end
- end
- end
-
- this.parent:show()
- this:hide()
- this:delete()
- return true
-end
-
-local function showconfirm_reset(tabview)
- local new_dlg = dialog_create("reset_spworld",
- dlg_confirm_reset_formspec,
- dlg_confirm_reset_btnhandler,
- nil)
- new_dlg:set_parent(tabview)
- tabview:hide()
- new_dlg:show()
-end
-
local function formspec(tabview, name, tabdata)
local tab_string =
- "box[0,0;3.5,4.5;#999999]" ..
+ "box[0,0;3.75,4.5;#999999]" ..
"checkbox[0.25,0;cb_smooth_lighting;" .. fgettext("Smooth Lighting") .. ";"
- .. dump(core.setting_getbool("smooth_lighting")) .. "]" ..
+ .. dump(core.settings:get_bool("smooth_lighting")) .. "]" ..
"checkbox[0.25,0.5;cb_particles;" .. fgettext("Particles") .. ";"
- .. dump(core.setting_getbool("enable_particles")) .. "]" ..
+ .. dump(core.settings:get_bool("enable_particles")) .. "]" ..
"checkbox[0.25,1;cb_3d_clouds;" .. fgettext("3D Clouds") .. ";"
- .. dump(core.setting_getbool("enable_3d_clouds")) .. "]" ..
+ .. dump(core.settings:get_bool("enable_3d_clouds")) .. "]" ..
"checkbox[0.25,1.5;cb_opaque_water;" .. fgettext("Opaque Water") .. ";"
- .. dump(core.setting_getbool("opaque_water")) .. "]" ..
+ .. dump(core.settings:get_bool("opaque_water")) .. "]" ..
"checkbox[0.25,2.0;cb_connected_glass;" .. fgettext("Connected Glass") .. ";"
- .. dump(core.setting_getbool("connected_glass")) .. "]" ..
- "dropdown[0.25,2.8;3.3;dd_node_highlighting;" .. dd_options.node_highlighting[1] .. ";"
+ .. dump(core.settings:get_bool("connected_glass")) .. "]" ..
+ "dropdown[0.25,2.8;3.5;dd_node_highlighting;" .. dd_options.node_highlighting[1] .. ";"
.. getSettingIndex.NodeHighlighting() .. "]" ..
- "dropdown[0.25,3.6;3.3;dd_leaves_style;" .. dd_options.leaves[1] .. ";"
+ "dropdown[0.25,3.6;3.5;dd_leaves_style;" .. dd_options.leaves[1] .. ";"
.. getSettingIndex.Leaves() .. "]" ..
- "box[3.75,0;3.75,3.45;#999999]" ..
- "label[3.85,0.1;" .. fgettext("Texturing:") .. "]" ..
- "dropdown[3.85,0.55;3.85;dd_filters;" .. dd_options.filters[1] .. ";"
+ "box[4,0;3.75,4.9;#999999]" ..
+ "label[4.25,0.1;" .. fgettext("Texturing:") .. "]" ..
+ "dropdown[4.25,0.55;3.5;dd_filters;" .. dd_options.filters[1] .. ";"
.. getSettingIndex.Filter() .. "]" ..
- "dropdown[3.85,1.35;3.85;dd_mipmap;" .. dd_options.mipmap[1] .. ";"
+ "dropdown[4.25,1.35;3.5;dd_mipmap;" .. dd_options.mipmap[1] .. ";"
.. getSettingIndex.Mipmap() .. "]" ..
- "label[3.85,2.15;" .. fgettext("Antialiasing:") .. "]" ..
- "dropdown[3.85,2.6;3.85;dd_antialiasing;" .. dd_options.antialiasing[1] .. ";"
+ "label[4.25,2.15;" .. fgettext("Antialiasing:") .. "]" ..
+ "dropdown[4.25,2.6;3.5;dd_antialiasing;" .. dd_options.antialiasing[1] .. ";"
.. getSettingIndex.Antialiasing() .. "]" ..
- "box[7.75,0;4,4.4;#999999]" ..
- "checkbox[8,0;cb_shaders;" .. fgettext("Shaders") .. ";"
- .. dump(core.setting_getbool("enable_shaders")) .. "]"
+ "box[8,0;3.75,4.5;#999999]"
- if PLATFORM == "Android" then
+ local video_driver = core.settings:get("video_driver")
+ local shaders_enabled = core.settings:get_bool("enable_shaders")
+ if video_driver == "opengl" then
+ tab_string = tab_string ..
+ "checkbox[8.25,0;cb_shaders;" .. fgettext("Shaders") .. ";"
+ .. tostring(shaders_enabled) .. "]"
+ elseif video_driver == "ogles2" then
tab_string = tab_string ..
- "button[8,4.75;3.75,0.5;btn_reset_singleplayer;"
- .. fgettext("Reset singleplayer world") .. "]"
+ "checkbox[8.25,0;cb_shaders;" .. fgettext("Shaders (experimental)") .. ";"
+ .. tostring(shaders_enabled) .. "]"
else
+ core.settings:set_bool("enable_shaders", false)
+ shaders_enabled = false
tab_string = tab_string ..
- "button[8,4.75;3.75,0.5;btn_change_keys;"
- .. fgettext("Change keys") .. "]"
+ "label[8.38,0.2;" .. core.colorize("#888888",
+ fgettext("Shaders (unavailable)")) .. "]"
end
tab_string = tab_string ..
- "button[0,4.75;3.75,0.5;btn_advanced_settings;"
- .. fgettext("Advanced Settings") .. "]"
+ "button[8,4.75;3.95,1;btn_change_keys;"
+ .. fgettext("Change Keys") .. "]"
+
+ tab_string = tab_string ..
+ "button[0,4.75;3.95,1;btn_advanced_settings;"
+ .. fgettext("All Settings") .. "]"
- if core.setting_get("touchscreen_threshold") ~= nil then
+ if core.settings:get("touchscreen_threshold") ~= nil then
+ tab_string = tab_string ..
+ "label[4.25,3.5;" .. fgettext("Touch threshold (px):") .. "]" ..
+ "dropdown[4.25,3.95;3.5;dd_touchthreshold;0,10,20,30,40,50;" ..
+ ((tonumber(core.settings:get("touchscreen_threshold")) / 10) + 1) ..
+ "]"
+ else
tab_string = tab_string ..
- "label[4.3,4.1;" .. fgettext("Touchthreshold (px)") .. "]" ..
- "dropdown[3.85,4.55;3.85;dd_touchthreshold;0,10,20,30,40,50;" ..
- ((tonumber(core.setting_get("touchscreen_threshold")) / 10) + 1) .. "]"
+ "label[4.25,3.65;" .. fgettext("Screen:") .. "]" ..
+ "checkbox[4.25,3.9;cb_autosave_screensize;" .. fgettext("Autosave Screen Size") .. ";"
+ .. dump(core.settings:get_bool("autosave_screensize")) .. "]"
end
- if core.setting_getbool("enable_shaders") then
+ if shaders_enabled then
tab_string = tab_string ..
- "checkbox[8,0.5;cb_bumpmapping;" .. fgettext("Bump Mapping") .. ";"
- .. dump(core.setting_getbool("enable_bumpmapping")) .. "]" ..
- "checkbox[8,1;cb_tonemapping;" .. fgettext("Tone Mapping") .. ";"
- .. dump(core.setting_getbool("tone_mapping")) .. "]" ..
- "checkbox[8,1.5;cb_generate_normalmaps;" .. fgettext("Normal Mapping") .. ";"
- .. dump(core.setting_getbool("generate_normalmaps")) .. "]" ..
- "checkbox[8,2;cb_parallax;" .. fgettext("Parallax Occlusion") .. ";"
- .. dump(core.setting_getbool("enable_parallax_occlusion")) .. "]" ..
- "checkbox[8,2.5;cb_waving_water;" .. fgettext("Waving Water") .. ";"
- .. dump(core.setting_getbool("enable_waving_water")) .. "]" ..
- "checkbox[8,3;cb_waving_leaves;" .. fgettext("Waving Leaves") .. ";"
- .. dump(core.setting_getbool("enable_waving_leaves")) .. "]" ..
- "checkbox[8,3.5;cb_waving_plants;" .. fgettext("Waving Plants") .. ";"
- .. dump(core.setting_getbool("enable_waving_plants")) .. "]"
+ "checkbox[8.25,0.5;cb_tonemapping;" .. fgettext("Tone Mapping") .. ";"
+ .. dump(core.settings:get_bool("tone_mapping")) .. "]" ..
+ "checkbox[8.25,1;cb_waving_water;" .. fgettext("Waving Liquids") .. ";"
+ .. dump(core.settings:get_bool("enable_waving_water")) .. "]" ..
+ "checkbox[8.25,1.5;cb_waving_leaves;" .. fgettext("Waving Leaves") .. ";"
+ .. dump(core.settings:get_bool("enable_waving_leaves")) .. "]" ..
+ "checkbox[8.25,2;cb_waving_plants;" .. fgettext("Waving Plants") .. ";"
+ .. dump(core.settings:get_bool("enable_waving_plants")) .. "]"
+
+ if video_driver == "opengl" then
+ tab_string = tab_string ..
+ "label[8.25,2.8;" .. fgettext("Dynamic shadows:") .. "]" ..
+ "label[8.25,3.2;" .. fgettext("(game support required)") .. "]" ..
+ "dropdown[8.25,3.7;3.5;dd_shadows;" .. dd_options.shadow_levels[1] .. ";"
+ .. getSettingIndex.ShadowMapping() .. "]"
+ else
+ tab_string = tab_string ..
+ "label[8.38,2.7;" .. core.colorize("#888888",
+ fgettext("Dynamic shadows")) .. "]"
+ end
else
tab_string = tab_string ..
- "tablecolumns[color;text]" ..
- "tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
- "table[8.33,0.7;3.5,4;shaders;" ..
- "#888888," .. fgettext("Bump Mapping") .. "," ..
- "#888888," .. fgettext("Tone Mapping") .. "," ..
- "#888888," .. fgettext("Normal Mapping") .. "," ..
- "#888888," .. fgettext("Parallax Occlusion") .. "," ..
- "#888888," .. fgettext("Waving Water") .. "," ..
- "#888888," .. fgettext("Waving Leaves") .. "," ..
- "#888888," .. fgettext("Waving Plants") .. "," ..
- ";1]"
+ "label[8.38,0.7;" .. core.colorize("#888888",
+ fgettext("Tone Mapping")) .. "]" ..
+ "label[8.38,1.2;" .. core.colorize("#888888",
+ fgettext("Waving Liquids")) .. "]" ..
+ "label[8.38,1.7;" .. core.colorize("#888888",
+ fgettext("Waving Leaves")) .. "]" ..
+ "label[8.38,2.2;" .. core.colorize("#888888",
+ fgettext("Waving Plants")) .. "]"..
+ "label[8.38,2.7;" .. core.colorize("#888888",
+ fgettext("Dynamic shadows")) .. "]"
end
return tab_string
@@ -267,64 +258,50 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
adv_settings_dlg:set_parent(this)
this:hide()
adv_settings_dlg:show()
- --mm_texture.update("singleplayer", current_game())
+ --mm_game_theme.update("singleplayer", current_game())
return true
end
if fields["cb_smooth_lighting"] then
- core.setting_set("smooth_lighting", fields["cb_smooth_lighting"])
+ core.settings:set("smooth_lighting", fields["cb_smooth_lighting"])
return true
end
if fields["cb_particles"] then
- core.setting_set("enable_particles", fields["cb_particles"])
+ core.settings:set("enable_particles", fields["cb_particles"])
return true
end
if fields["cb_3d_clouds"] then
- core.setting_set("enable_3d_clouds", fields["cb_3d_clouds"])
+ core.settings:set("enable_3d_clouds", fields["cb_3d_clouds"])
return true
end
if fields["cb_opaque_water"] then
- core.setting_set("opaque_water", fields["cb_opaque_water"])
+ core.settings:set("opaque_water", fields["cb_opaque_water"])
return true
end
if fields["cb_connected_glass"] then
- core.setting_set("connected_glass", fields["cb_connected_glass"])
+ core.settings:set("connected_glass", fields["cb_connected_glass"])
return true
end
- if fields["cb_shaders"] then
- if (core.setting_get("video_driver") == "direct3d8" or
- core.setting_get("video_driver") == "direct3d9") then
- core.setting_set("enable_shaders", "false")
- gamedata.errormessage = fgettext("To enable shaders the OpenGL driver needs to be used.")
- else
- core.setting_set("enable_shaders", fields["cb_shaders"])
- end
+ if fields["cb_autosave_screensize"] then
+ core.settings:set("autosave_screensize", fields["cb_autosave_screensize"])
return true
end
- if fields["cb_bumpmapping"] then
- core.setting_set("enable_bumpmapping", fields["cb_bumpmapping"])
+ if fields["cb_shaders"] then
+ core.settings:set("enable_shaders", fields["cb_shaders"])
return true
end
if fields["cb_tonemapping"] then
- core.setting_set("tone_mapping", fields["cb_tonemapping"])
- return true
- end
- if fields["cb_generate_normalmaps"] then
- core.setting_set("generate_normalmaps", fields["cb_generate_normalmaps"])
- return true
- end
- if fields["cb_parallax"] then
- core.setting_set("enable_parallax_occlusion", fields["cb_parallax"])
+ core.settings:set("tone_mapping", fields["cb_tonemapping"])
return true
end
if fields["cb_waving_water"] then
- core.setting_set("enable_waving_water", fields["cb_waving_water"])
+ core.settings:set("enable_waving_water", fields["cb_waving_water"])
return true
end
if fields["cb_waving_leaves"] then
- core.setting_set("enable_waving_leaves", fields["cb_waving_leaves"])
+ core.settings:set("enable_waving_leaves", fields["cb_waving_leaves"])
end
if fields["cb_waving_plants"] then
- core.setting_set("enable_waving_plants", fields["cb_waving_plants"])
+ core.settings:set("enable_waving_plants", fields["cb_waving_plants"])
return true
end
if fields["btn_change_keys"] then
@@ -332,11 +309,7 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
return true
end
if fields["cb_touchscreen_target"] then
- core.setting_set("touchtarget", fields["cb_touchscreen_target"])
- return true
- end
- if fields["btn_reset_singleplayer"] then
- showconfirm_reset(this)
+ core.settings:set("touchtarget", fields["cb_touchscreen_target"])
return true
end
@@ -345,52 +318,80 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
for i = 1, #labels.leaves do
if fields["dd_leaves_style"] == labels.leaves[i] then
- core.setting_set("leaves_style", dd_options.leaves[2][i])
+ core.settings:set("leaves_style", dd_options.leaves[2][i])
ddhandled = true
end
end
for i = 1, #labels.node_highlighting do
if fields["dd_node_highlighting"] == labels.node_highlighting[i] then
- core.setting_set("node_highlighting", dd_options.node_highlighting[2][i])
+ core.settings:set("node_highlighting", dd_options.node_highlighting[2][i])
ddhandled = true
end
end
if fields["dd_filters"] == labels.filters[1] then
- core.setting_set("bilinear_filter", "false")
- core.setting_set("trilinear_filter", "false")
+ core.settings:set("bilinear_filter", "false")
+ core.settings:set("trilinear_filter", "false")
ddhandled = true
elseif fields["dd_filters"] == labels.filters[2] then
- core.setting_set("bilinear_filter", "true")
- core.setting_set("trilinear_filter", "false")
+ core.settings:set("bilinear_filter", "true")
+ core.settings:set("trilinear_filter", "false")
ddhandled = true
elseif fields["dd_filters"] == labels.filters[3] then
- core.setting_set("bilinear_filter", "false")
- core.setting_set("trilinear_filter", "true")
+ core.settings:set("bilinear_filter", "false")
+ core.settings:set("trilinear_filter", "true")
ddhandled = true
end
if fields["dd_mipmap"] == labels.mipmap[1] then
- core.setting_set("mip_map", "false")
- core.setting_set("anisotropic_filter", "false")
+ core.settings:set("mip_map", "false")
+ core.settings:set("anisotropic_filter", "false")
ddhandled = true
elseif fields["dd_mipmap"] == labels.mipmap[2] then
- core.setting_set("mip_map", "true")
- core.setting_set("anisotropic_filter", "false")
+ core.settings:set("mip_map", "true")
+ core.settings:set("anisotropic_filter", "false")
ddhandled = true
elseif fields["dd_mipmap"] == labels.mipmap[3] then
- core.setting_set("mip_map", "true")
- core.setting_set("anisotropic_filter", "true")
+ core.settings:set("mip_map", "true")
+ core.settings:set("anisotropic_filter", "true")
ddhandled = true
end
if fields["dd_antialiasing"] then
- core.setting_set("fsaa",
+ core.settings:set("fsaa",
antialiasing_fname_to_name(fields["dd_antialiasing"]))
ddhandled = true
end
if fields["dd_touchthreshold"] then
- core.setting_set("touchscreen_threshold", fields["dd_touchthreshold"])
+ core.settings:set("touchscreen_threshold", fields["dd_touchthreshold"])
ddhandled = true
end
+ for i = 1, #labels.shadow_levels do
+ if fields["dd_shadows"] == labels.shadow_levels[i] then
+ core.settings:set("shadow_levels", dd_options.shadow_levels[2][i])
+ ddhandled = true
+ end
+ end
+
+ if fields["dd_shadows"] == labels.shadow_levels[1] then
+ core.settings:set("enable_dynamic_shadows", "false")
+ else
+ local shadow_presets = {
+ [2] = { 62, 512, "true", 0, "false" },
+ [3] = { 93, 1024, "true", 0, "false" },
+ [4] = { 140, 2048, "true", 1, "false" },
+ [5] = { 210, 4096, "true", 2, "true" },
+ [6] = { 300, 8192, "true", 2, "true" },
+ }
+ local s = shadow_presets[table.indexof(labels.shadow_levels, fields["dd_shadows"])]
+ if s then
+ core.settings:set("enable_dynamic_shadows", "true")
+ core.settings:set("shadow_map_max_distance", s[1])
+ core.settings:set("shadow_map_texture_size", s[2])
+ core.settings:set("shadow_map_texture_32bit", s[3])
+ core.settings:set("shadow_filters", s[4])
+ core.settings:set("shadow_map_color", s[5])
+ end
+ end
+
return ddhandled
end
diff --git a/builtin/mainmenu/tab_simple_main.lua b/builtin/mainmenu/tab_simple_main.lua
deleted file mode 100644
index 3818f321f..000000000
--- a/builtin/mainmenu/tab_simple_main.lua
+++ /dev/null
@@ -1,219 +0,0 @@
---Minetest
---Copyright (C) 2013 sapier
---
---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.
-
---------------------------------------------------------------------------------
-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 fav_selected = menudata.favorites[tabdata.fav_selected]
-
- local retval =
- "label[9.5,0;".. fgettext("Name / Password") .. "]" ..
- "field[0.25,3.35;5.5,0.5;te_address;;" ..
- core.formspec_escape(core.setting_get("address")) .."]" ..
- "field[5.75,3.35;2.25,0.5;te_port;;" ..
- core.formspec_escape(core.setting_get("remote_port")) .."]" ..
- "button[10,2.6;2,1.5;btn_mp_connect;".. fgettext("Connect") .. "]" ..
- "field[9.8,1;2.6,0.5;te_name;;" ..
- core.formspec_escape(core.setting_get("name")) .."]" ..
- "pwdfield[9.8,2;2.6,0.5;te_pwd;]"
-
-
- if tabdata.fav_selected and fav_selected then
- if gamedata.fav then
- retval = retval .. "button[7.7,2.6;2.3,1.5;btn_delete_favorite;" ..
- fgettext("Del. Favorite") .. "]"
- end
- end
-
- retval = retval .. "tablecolumns[" ..
- image_column(fgettext("Favorite"), "favorite") .. ";" ..
- "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;" ..
- image_column(fgettext("PvP enabled"), "pvp") .. ",padding=0.25;" ..
- "color,span=1;" ..
- "text,padding=1]" .. -- name
- "table[-0.05,0;9.2,2.75;favourites;"
-
- if #menudata.favorites > 0 then
- local favs = core.get_favorites("local")
- if #favs > 0 then
- for i = 1, #favs do
- for j = 1, #menudata.favorites do
- if menudata.favorites[j].address == favs[i].address and
- menudata.favorites[j].port == favs[i].port then
- table.insert(menudata.favorites, i,
- table.remove(menudata.favorites, j))
- end
- end
- if favs[i].address ~= menudata.favorites[i].address then
- table.insert(menudata.favorites, i, favs[i])
- end
- end
- end
- retval = retval .. render_favorite(menudata.favorites[1], (#favs > 0))
- for i = 2, #menudata.favorites do
- retval = retval .. "," .. render_favorite(menudata.favorites[i], (i <= #favs))
- end
- end
-
- if tabdata.fav_selected then
- retval = retval .. ";" .. tabdata.fav_selected .. "]"
- else
- retval = retval .. ";0]"
- end
-
- -- separator
- retval = retval .. "box[-0.28,3.75;12.4,0.1;#FFFFFF]"
-
- -- checkboxes
- retval = retval ..
- "checkbox[8.0,3.9;cb_creative;".. fgettext("Creative Mode") .. ";" ..
- dump(core.setting_getbool("creative_mode")) .. "]"..
- "checkbox[8.0,4.4;cb_damage;".. fgettext("Enable Damage") .. ";" ..
- dump(core.setting_getbool("enable_damage")) .. "]"
- -- buttons
- retval = retval ..
- "button[0,3.7;8,1.5;btn_start_singleplayer;" .. fgettext("Start Singleplayer") .. "]" ..
- "button[0,4.5;8,1.5;btn_config_sp_world;" .. fgettext("Config mods") .. "]"
-
- return retval
-end
-
---------------------------------------------------------------------------------
-local function main_button_handler(tabview, fields, name, tabdata)
- if fields.btn_start_singleplayer then
- gamedata.selected_world = gamedata.worldindex
- gamedata.singleplayer = true
- core.start()
- return true
- end
-
- if fields.favourites then
- local event = core.explode_table_event(fields.favourites)
- if event.type == "CHG" then
- if event.row <= #menudata.favorites then
- gamedata.fav = false
- local favs = core.get_favorites("local")
- local fav = menudata.favorites[event.row]
- 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.setting_set("address", address)
- core.setting_set("remote_port", port)
- end
- tabdata.fav_selected = event.row
- end
- return true
- end
- end
-
- if fields.btn_delete_favorite then
- local current_favourite = core.get_table_index("favourites")
- if not current_favourite then return end
-
- core.delete_favorite(current_favourite)
- asyncOnlineFavourites()
- tabdata.fav_selected = nil
-
- core.setting_set("address", "")
- core.setting_set("remote_port", "30000")
- return true
- end
-
- if fields.cb_creative then
- core.setting_set("creative_mode", fields.cb_creative)
- return true
- end
-
- if fields.cb_damage then
- core.setting_set("enable_damage", fields.cb_damage)
- return true
- end
-
- if fields.btn_mp_connect or fields.key_enter then
- gamedata.playername = fields.te_name
- gamedata.password = fields.te_pwd
- gamedata.address = fields.te_address
- gamedata.port = fields.te_port
- local fav_idx = core.get_textlist_index("favourites")
-
- if fav_idx and fav_idx <= #menudata.favorites and
- menudata.favorites[fav_idx].address == fields.te_address and
- menudata.favorites[fav_idx].port == fields.te_port then
- local fav = menudata.favorites[fav_idx]
- gamedata.servername = fav.name
- gamedata.serverdescription = fav.description
-
- if menudata.favorites_is_public and
- not is_server_protocol_compat_or_error(
- fav.proto_min, fav.proto_max) then
- return true
- end
- else
- gamedata.servername = ""
- gamedata.serverdescription = ""
- end
-
- gamedata.selected_world = 0
-
- core.setting_set("address", fields.te_address)
- core.setting_set("remote_port", fields.te_port)
-
- core.start()
- return true
- end
-
- if fields.btn_config_sp_world then
- local configdialog = create_configure_world_dlg(1)
- if configdialog then
- configdialog:set_parent(tabview)
- tabview:hide()
- configdialog:show()
- end
- return true
- end
-end
-
---------------------------------------------------------------------------------
-local function on_activate(type,old_tab,new_tab)
- if type == "LEAVE" then return end
- asyncOnlineFavourites()
-end
-
---------------------------------------------------------------------------------
-return {
- name = "main",
- caption = fgettext("Main"),
- cbf_formspec = get_formspec,
- cbf_button_handler = main_button_handler,
- on_change = on_activate
-}
diff --git a/builtin/mainmenu/tab_singleplayer.lua b/builtin/mainmenu/tab_singleplayer.lua
deleted file mode 100644
index 05060cbc6..000000000
--- a/builtin/mainmenu/tab_singleplayer.lua
+++ /dev/null
@@ -1,250 +0,0 @@
---Minetest
---Copyright (C) 2014 sapier
---
---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.
-
-local function current_game()
- local last_game_id = core.setting_get("menu_last_game")
- local game, index = gamemgr.find_by_gameid(last_game_id)
-
- return game
-end
-
-local function singleplayer_refresh_gamebar()
-
- local old_bar = ui.find_by_name("game_button_bar")
-
- if old_bar ~= nil then
- old_bar:delete()
- end
-
- local function game_buttonbar_button_handler(fields)
- for key,value in pairs(fields) do
- for j=1,#gamemgr.games,1 do
- if ("game_btnbar_" .. gamemgr.games[j].id == key) then
- mm_texture.update("singleplayer", gamemgr.games[j])
- core.set_topleft_text(gamemgr.games[j].name)
- core.setting_set("menu_last_game",gamemgr.games[j].id)
- menudata.worldlist:set_filtercriteria(gamemgr.games[j].id)
- local index = filterlist.get_current_index(menudata.worldlist,
- tonumber(core.setting_get("mainmenu_last_selected_world")))
- if not index or index < 1 then
- local selected = core.get_textlist_index("sp_worlds")
- if selected ~= nil and selected < #menudata.worldlist:get_list() then
- index = selected
- else
- index = #menudata.worldlist:get_list()
- end
- end
- menu_worldmt_legacy(index)
- return true
- end
- end
- end
- end
-
- local btnbar = buttonbar_create("game_button_bar",
- game_buttonbar_button_handler,
- {x=-0.3,y=5.65}, "horizontal", {x=12.4,y=1.15})
-
- for i=1,#gamemgr.games,1 do
- local btn_name = "game_btnbar_" .. gamemgr.games[i].id
-
- local image = nil
- local text = nil
- local tooltip = core.formspec_escape(gamemgr.games[i].name)
-
- if gamemgr.games[i].menuicon_path ~= nil and
- gamemgr.games[i].menuicon_path ~= "" then
- image = core.formspec_escape(gamemgr.games[i].menuicon_path)
- else
-
- local part1 = gamemgr.games[i].id:sub(1,5)
- local part2 = gamemgr.games[i].id:sub(6,10)
- local part3 = gamemgr.games[i].id:sub(11)
-
- text = part1 .. "\n" .. part2
- if part3 ~= nil and
- part3 ~= "" then
- text = text .. "\n" .. part3
- end
- end
- btnbar:add_button(btn_name, text, image, tooltip)
- end
-end
-
-local function get_formspec(tabview, name, tabdata)
- local retval = ""
-
- local index = filterlist.get_current_index(menudata.worldlist,
- tonumber(core.setting_get("mainmenu_last_selected_world"))
- )
-
- retval = retval ..
- "button[4,4.15;2.6,0.5;world_delete;".. fgettext("Delete") .. "]" ..
- "button[6.5,4.15;2.8,0.5;world_create;".. fgettext("New") .. "]" ..
- "button[9.2,4.15;2.55,0.5;world_configure;".. fgettext("Configure") .. "]" ..
- "button[8.5,4.95;3.25,0.5;play;".. fgettext("Play") .. "]" ..
- "label[4,-0.25;".. fgettext("Select World:") .. "]"..
- "checkbox[0.25,0.25;cb_creative_mode;".. fgettext("Creative Mode") .. ";" ..
- dump(core.setting_getbool("creative_mode")) .. "]"..
- "checkbox[0.25,0.7;cb_enable_damage;".. fgettext("Enable Damage") .. ";" ..
- dump(core.setting_getbool("enable_damage")) .. "]"..
- "textlist[4,0.25;7.5,3.7;sp_worlds;" ..
- menu_render_worldlist() ..
- ";" .. index .. "]"
- return retval
-end
-
-local function main_button_handler(this, fields, name, tabdata)
-
- assert(name == "singleplayer")
-
- local world_doubleclick = false
-
- if fields["sp_worlds"] ~= nil then
- local event = core.explode_textlist_event(fields["sp_worlds"])
- local selected = core.get_textlist_index("sp_worlds")
-
- menu_worldmt_legacy(selected)
-
- if event.type == "DCL" then
- world_doubleclick = true
- end
-
- if event.type == "CHG" and selected ~= nil then
- core.setting_set("mainmenu_last_selected_world",
- menudata.worldlist:get_raw_index(selected))
- return true
- end
- end
-
- if menu_handle_key_up_down(fields,"sp_worlds","mainmenu_last_selected_world") then
- return true
- end
-
- if fields["cb_creative_mode"] then
- core.setting_set("creative_mode", fields["cb_creative_mode"])
- local selected = core.get_textlist_index("sp_worlds")
- menu_worldmt(selected, "creative_mode", fields["cb_creative_mode"])
-
- return true
- end
-
- if fields["cb_enable_damage"] then
- core.setting_set("enable_damage", fields["cb_enable_damage"])
- local selected = core.get_textlist_index("sp_worlds")
- menu_worldmt(selected, "enable_damage", fields["cb_enable_damage"])
-
- return true
- end
-
- if fields["play"] ~= nil or
- world_doubleclick or
- fields["key_enter"] then
- local selected = core.get_textlist_index("sp_worlds")
- gamedata.selected_world = menudata.worldlist:get_raw_index(selected)
-
- if selected ~= nil and gamedata.selected_world ~= 0 then
- gamedata.singleplayer = true
- core.start()
- else
- gamedata.errormessage =
- fgettext("No world created or selected!")
- end
- return true
- end
-
- if fields["world_create"] ~= nil then
- local create_world_dlg = create_create_world_dlg(true)
- create_world_dlg:set_parent(this)
- this:hide()
- create_world_dlg:show()
- mm_texture.update("singleplayer",current_game())
- return true
- end
-
- if fields["world_delete"] ~= nil then
- local selected = core.get_textlist_index("sp_worlds")
- if selected ~= nil and
- selected <= menudata.worldlist:size() then
- local world = menudata.worldlist:get_list()[selected]
- if world ~= nil and
- world.name ~= nil and
- world.name ~= "" then
- local index = menudata.worldlist:get_raw_index(selected)
- local delete_world_dlg = create_delete_world_dlg(world.name,index)
- delete_world_dlg:set_parent(this)
- this:hide()
- delete_world_dlg:show()
- mm_texture.update("singleplayer",current_game())
- end
- end
-
- return true
- end
-
- if fields["world_configure"] ~= nil then
- local selected = core.get_textlist_index("sp_worlds")
- if selected ~= nil then
- local configdialog =
- create_configure_world_dlg(
- menudata.worldlist:get_raw_index(selected))
-
- if (configdialog ~= nil) then
- configdialog:set_parent(this)
- this:hide()
- configdialog:show()
- mm_texture.update("singleplayer",current_game())
- end
- end
-
- return true
- end
-end
-
-local function on_change(type, old_tab, new_tab)
- local buttonbar = ui.find_by_name("game_button_bar")
-
- if ( buttonbar == nil ) then
- singleplayer_refresh_gamebar()
- buttonbar = ui.find_by_name("game_button_bar")
- end
-
- if (type == "ENTER") then
- local game = current_game()
-
- if game then
- menudata.worldlist:set_filtercriteria(game.id)
- core.set_topleft_text(game.name)
- mm_texture.update("singleplayer",game)
- end
- buttonbar:show()
- else
- menudata.worldlist:set_filtercriteria(nil)
- buttonbar:hide()
- core.set_topleft_text("")
- mm_texture.update(new_tab,nil)
- end
-end
-
---------------------------------------------------------------------------------
-return {
- name = "singleplayer",
- caption = fgettext("Singleplayer"),
- cbf_formspec = get_formspec,
- cbf_button_handler = main_button_handler,
- on_change = on_change
-}
diff --git a/builtin/mainmenu/tab_texturepacks.lua b/builtin/mainmenu/tab_texturepacks.lua
deleted file mode 100644
index 4638beaa1..000000000
--- a/builtin/mainmenu/tab_texturepacks.lua
+++ /dev/null
@@ -1,132 +0,0 @@
---Minetest
---Copyright (C) 2014 sapier
---
---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.
-
---------------------------------------------------------------------------------
-local function filter_texture_pack_list(list)
- local retval = {}
-
- for _, item in ipairs(list) do
- if item ~= "base" then
- retval[#retval + 1] = item
- end
- end
-
- table.sort(retval)
- table.insert(retval, 1, fgettext("None"))
-
- return retval
-end
-
---------------------------------------------------------------------------------
-local function render_texture_pack_list(list)
- local retval = ""
-
- for i, v in ipairs(list) do
- if v:sub(1, 1) ~= "." then
- if retval ~= "" then
- retval = retval .. ","
- end
-
- retval = retval .. core.formspec_escape(v)
- end
- end
-
- return retval
-end
-
---------------------------------------------------------------------------------
-local function get_formspec(tabview, name, tabdata)
-
- local retval = "label[4,-0.25;" .. fgettext("Select texture pack:") .. "]" ..
- "textlist[4,0.25;7.5,5.0;TPs;"
-
- local current_texture_path = core.setting_get("texture_path")
- local list = filter_texture_pack_list(core.get_dir_list(core.get_texturepath(), true))
- local index = tonumber(core.setting_get("mainmenu_last_selected_TP"))
-
- if not index then index = 1 end
-
- if current_texture_path == "" then
- retval = retval ..
- render_texture_pack_list(list) ..
- ";" .. index .. "]"
- return retval
- end
-
- local infofile = current_texture_path .. DIR_DELIM .. "description.txt"
- -- This adds backwards compatibility for old texture pack description files named
- -- "info.txt", and should be removed once all such texture packs have been updated
- if not file_exists(infofile) then
- infofile = current_texture_path .. DIR_DELIM .. "info.txt"
- if file_exists(infofile) then
- core.log("deprecated", "info.txt is deprecated. description.txt should be used instead.")
- end
- end
-
- local infotext = ""
- local f = io.open(infofile, "r")
- if not f then
- infotext = fgettext("No information available")
- else
- infotext = f:read("*all")
- f:close()
- end
-
- local screenfile = current_texture_path .. DIR_DELIM .. "screenshot.png"
- local no_screenshot
- if not file_exists(screenfile) then
- screenfile = nil
- no_screenshot = defaulttexturedir .. "no_screenshot.png"
- end
-
- return retval ..
- render_texture_pack_list(list) ..
- ";" .. index .. "]" ..
- "image[0.25,0.25;4.05,2.7;" .. core.formspec_escape(screenfile or no_screenshot) .. "]" ..
- "textarea[0.6,2.85;3.7,1.5;;" .. core.formspec_escape(infotext or "") .. ";]"
-end
-
---------------------------------------------------------------------------------
-local function main_button_handler(tabview, fields, name, tabdata)
- if fields["TPs"] then
- local event = core.explode_textlist_event(fields["TPs"])
- if event.type == "CHG" or event.type == "DCL" then
- local index = core.get_textlist_index("TPs")
- core.setting_set("mainmenu_last_selected_TP", index)
- local list = filter_texture_pack_list(core.get_dir_list(core.get_texturepath(), true))
- local current_index = core.get_textlist_index("TPs")
- if current_index and #list >= current_index then
- local new_path = core.get_texturepath() .. DIR_DELIM .. list[current_index]
- if list[current_index] == fgettext("None") then
- new_path = ""
- end
- core.setting_set("texture_path", new_path)
- end
- end
- return true
- end
- return false
-end
-
---------------------------------------------------------------------------------
-return {
- name = "texturepacks",
- caption = fgettext("Texturepacks"),
- cbf_formspec = get_formspec,
- cbf_button_handler = main_button_handler,
- on_change = nil
-}
diff --git a/builtin/mainmenu/tests/favorites_wellformed.txt b/builtin/mainmenu/tests/favorites_wellformed.txt
new file mode 100644
index 000000000..8b87b4398
--- /dev/null
+++ b/builtin/mainmenu/tests/favorites_wellformed.txt
@@ -0,0 +1,29 @@
+[server]
+
+127.0.0.1
+30000
+
+
+[server]
+
+localhost
+30000
+
+
+[server]
+
+vps.rubenwardy.com
+30001
+
+
+[server]
+
+gundul.ddnss.de
+39155
+
+
+[server]
+VanessaE's Dreambuilder creative Server
+daconcepts.com
+30000
+VanessaE's Dreambuilder creative-mode server. Lots of mods, whitelisted buckets.
diff --git a/builtin/mainmenu/tests/serverlistmgr_spec.lua b/builtin/mainmenu/tests/serverlistmgr_spec.lua
new file mode 100644
index 000000000..ab7a6c60c
--- /dev/null
+++ b/builtin/mainmenu/tests/serverlistmgr_spec.lua
@@ -0,0 +1,38 @@
+_G.core = {}
+_G.vector = {metatable = {}}
+_G.unpack = table.unpack
+_G.serverlistmgr = {}
+
+dofile("builtin/common/vector.lua")
+dofile("builtin/common/misc_helpers.lua")
+dofile("builtin/mainmenu/serverlistmgr.lua")
+
+local base = "builtin/mainmenu/tests/"
+
+describe("legacy favorites", function()
+ it("loads well-formed correctly", function()
+ local favs = serverlistmgr.read_legacy_favorites(base .. "favorites_wellformed.txt")
+
+ local expected = {
+ {
+ address = "127.0.0.1",
+ port = 30000,
+ },
+
+ { address = "localhost", port = 30000 },
+
+ { address = "vps.rubenwardy.com", port = 30001 },
+
+ { address = "gundul.ddnss.de", port = 39155 },
+
+ {
+ address = "daconcepts.com",
+ port = 30000,
+ name = "VanessaE's Dreambuilder creative Server",
+ description = "VanessaE's Dreambuilder creative-mode server. Lots of mods, whitelisted buckets."
+ },
+ }
+
+ assert.same(expected, favs)
+ end)
+end)
diff --git a/builtin/profiler/init.lua b/builtin/profiler/init.lua
index c1597d280..7f63dfaea 100644
--- a/builtin/profiler/init.lua
+++ b/builtin/profiler/init.lua
@@ -15,10 +15,20 @@
--with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-local profiler_path = core.get_builtin_path()..DIR_DELIM.."profiler"..DIR_DELIM
+local S = core.get_translator("__builtin")
+
+local function get_bool_default(name, default)
+ local val = core.settings:get_bool(name)
+ if val == nil then
+ return default
+ end
+ return val
+end
+
+local profiler_path = core.get_builtin_path().."profiler"..DIR_DELIM
local profiler = {}
local sampler = assert(loadfile(profiler_path .. "sampling.lua"))(profiler)
-local instrumentation = assert(loadfile(profiler_path .. "instrumentation.lua"))(profiler, sampler)
+local instrumentation = assert(loadfile(profiler_path .. "instrumentation.lua"))(profiler, sampler, get_bool_default)
local reporter = dofile(profiler_path .. "reporter.lua")
profiler.instrument = instrumentation.instrument
@@ -27,14 +37,14 @@ profiler.instrument = instrumentation.instrument
-- Is called later, after `core.register_chatcommand` was set up.
--
function profiler.init_chatcommand()
- local instrument_profiler = core.setting_getbool("instrument.profiler") or false
+ local instrument_profiler = get_bool_default("instrument.profiler", false)
if instrument_profiler then
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)
@@ -43,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/instrumentation.lua b/builtin/profiler/instrumentation.lua
index 4311215b2..f80314b32 100644
--- a/builtin/profiler/instrumentation.lua
+++ b/builtin/profiler/instrumentation.lua
@@ -17,8 +17,9 @@
local format, pairs, type = string.format, pairs, type
local core, get_current_modname = core, core.get_current_modname
-local profiler, sampler = ...
-local instrument_builtin = core.setting_getbool("instrument.builtin") or false
+local profiler, sampler, get_bool_default = ...
+
+local instrument_builtin = get_bool_default("instrument.builtin", false)
local register_functions = {
register_globalstep = 0,
@@ -87,7 +88,7 @@ local function instrument(def)
if not def or not def.func then
return
end
- def.mod = def.mod or get_current_modname()
+ def.mod = def.mod or get_current_modname() or "??"
local modname = def.mod
local instrument_name = generate_name(def)
local func = def.func
@@ -101,8 +102,9 @@ local function instrument(def)
-- also called https://en.wikipedia.org/wiki/Continuation_passing_style
-- Compared to table creation and unpacking it won't lose `nil` returns
-- and is expected to be faster
- -- `measure` will be executed after time() and func(...)
- return measure(modname, instrument_name, time(), func(...))
+ -- `measure` will be executed after func(...)
+ local start = time()
+ return measure(modname, instrument_name, start, func(...))
end
end
@@ -116,7 +118,8 @@ end
local function assert_can_be_called(func, func_name, level)
if not can_be_called(func) then
-- Then throw an *helpful* error, by pointing on our caller instead of us.
- error(format("Invalid argument to %s. Expected function-like type instead of '%s'.", func_name, type(func)), level + 1)
+ error(format("Invalid argument to %s. Expected function-like type instead of '%s'.",
+ func_name, type(func)), level + 1)
end
end
@@ -132,12 +135,12 @@ local function instrument_register(func, func_name)
return func(instrument {
func = callback,
func_name = register_name
- }), ...
+ }, ...)
end
end
local function init_chatcommand()
- if core.setting_getbool("instrument.chatcommand") or true then
+ if get_bool_default("instrument.chatcommand", true) then
local orig_register_chatcommand = core.register_chatcommand
core.register_chatcommand = function(cmd, def)
def.func = instrument {
@@ -153,15 +156,15 @@ end
-- Start instrumenting selected functions
--
local function init()
- local is_set = core.setting_getbool
- if is_set("instrument.entity") or true then
+ if get_bool_default("instrument.entity", true) then
-- Explicitly declare entity api-methods.
-- Simple iteration would ignore lookup via __index.
local entity_instrumentation = {
"on_activate",
+ "on_deactivate",
"on_step",
"on_punch",
- "rightclick",
+ "on_rightclick",
"get_staticdata",
}
-- Wrap register_entity() to instrument them on registration.
@@ -180,7 +183,7 @@ local function init()
end
end
- if is_set("instrument.abm") or true then
+ if get_bool_default("instrument.abm", true) then
-- Wrap register_abm() to automatically instrument abms.
local orig_register_abm = core.register_abm
core.register_abm = function(spec)
@@ -193,7 +196,7 @@ local function init()
end
end
- if is_set("instrument.lbm") or true then
+ if get_bool_default("instrument.lbm", true) then
-- Wrap register_lbm() to automatically instrument lbms.
local orig_register_lbm = core.register_lbm
core.register_lbm = function(spec)
@@ -206,13 +209,13 @@ local function init()
end
end
- if is_set("instrument.global_callback") or true then
+ if get_bool_default("instrument.global_callback", true) then
for func_name, _ in pairs(register_functions) do
core[func_name] = instrument_register(core[func_name], func_name)
end
end
- if is_set("instrument.profiler") or false then
+ if get_bool_default("instrument.profiler", false) then
-- Measure overhead of instrumentation, but keep it down for functions
-- So keep the `return` for better optimization.
profiler.empty_instrument = instrument {
diff --git a/builtin/profiler/reporter.lua b/builtin/profiler/reporter.lua
index 5b38ed4df..5928a3718 100644
--- a/builtin/profiler/reporter.lua
+++ b/builtin/profiler/reporter.lua
@@ -15,10 +15,14 @@
--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
-local core, setting_get = core, core.setting_get
+local core, settings = core, core.settings
local reporter = {}
---
@@ -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()
@@ -229,7 +233,7 @@ end
local worldpath = core.get_worldpath()
local function get_save_path(format, filter)
- local report_path = setting_get("profiler.report_path") or ""
+ local report_path = settings:get("profiler.report_path") or ""
if report_path ~= "" then
core.mkdir(sprintf("%s%s%s", worldpath, DIR_DELIM, report_path))
end
@@ -249,7 +253,7 @@ end
--
function reporter.save(profile, format, filter)
if not format or format == "" then
- format = setting_get("profiler.default_report_format") or "txt"
+ format = settings:get("profiler.default_report_format") or "txt"
end
if filter == "" then
filter = nil
@@ -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/profiler/sampling.lua b/builtin/profiler/sampling.lua
index 1d1ef256d..4b53399a5 100644
--- a/builtin/profiler/sampling.lua
+++ b/builtin/profiler/sampling.lua
@@ -185,7 +185,7 @@ end
function sampler.init()
sampler.reset()
- if core.setting_getbool("instrument.profiler") then
+ if core.settings:get_bool("instrument.profiler") then
core.register_globalstep(function()
if logged_time == 0 then
return
diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index e48fc9bc5..52b4b4d9d 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -12,9 +12,12 @@
# - float
# - enum
# - path
+# - filepath
# - key (will be ignored in GUI, since a special key change dialog exists)
# - flags
-# - noise_params
+# - noise_params_2d
+# - noise_params_3d
+# - v3f
#
# `type_args` can be:
# * int:
@@ -31,13 +34,22 @@
# - default value1,value2,...
# * path:
# - default (if default is not specified then "" is set)
+# * filepath:
+# - default (if default is not specified then "" is set)
# * key:
# - default
# * flags:
# Flags are always separated by comma without spaces.
# - default possible_flags
-# * noise_params:
-# TODO: these are currently treated like strings
+# * noise_params_2d:
+# Format is <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, <octaves>, <persistence>, <lacunarity>[, <default flags>]
+# - default
+# * noise_params_3d:
+# Format is <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, <octaves>, <persistence>, <lacunarity>[, <default flags>]
+# - default
+# * v3f:
+# Format is (<X>, <Y>, <Z>)
+# - default
#
# Comments directly above a setting are bound to this setting.
# All other comments are ignored.
@@ -51,25 +63,15 @@
# There shouldn't be too much settings per category; settings that shouldn't be
# modified by the "average user" should be in (sub-)categories called "Advanced".
-[Client]
-[*Controls]
+[Controls]
+
+[*General]
+
# If enabled, you can place blocks at the position (feet + eye level) where you stand.
# This is helpful when working with nodeboxes in small areas.
enable_build_where_you_stand (Build inside player) bool false
-# Player is able to fly without being affected by gravity.
-# This requires the "fly" privilege on the server.
-free_move (Flying) bool false
-
-# Fast movement (via use key).
-# This requires the "fast" privilege on the server.
-fast_move (Fast movement) bool false
-
-# If enabled together with fly mode, player is able to fly through solid nodes.
-# This requires the "noclip" privilege on the server.
-noclip (Noclip) bool false
-
# Smooths camera when looking around. Also called look or mouse smoothing.
# Useful for recording videos.
cinematic (Cinematic mode) bool false
@@ -80,220 +82,222 @@ camera_smoothing (Camera smoothing) float 0.0 0.0 0.99
# Smooths rotation of camera in cinematic mode. 0 to disable.
cinematic_camera_smoothing (Camera smoothing in cinematic mode) float 0.7 0.0 0.99
+# If enabled, "Aux1" key instead of "Sneak" key is used for climbing down and
+# descending.
+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, "Aux1" key is used to fly fast if both fly and fast mode are
+# enabled.
+always_fly_fast (Always fly fast) bool true
+
+# The time in seconds it takes between repeated node placements when holding
+# the place button.
+repeat_place_time (Place repetition interval) float 0.25 0.25 2
+
+# Automatically jump up single-node obstacles.
+autojump (Automatic jumping) bool false
+
+# Prevent digging and placing from repeating when holding the mouse buttons.
+# Enable this when you dig or place too often by accident.
+safe_dig_and_place (Safe digging and placing) bool false
+
+[*Keyboard and Mouse]
+
# Invert vertical mouse movement.
invert_mouse (Invert mouse) bool false
# Mouse sensitivity multiplier.
-mouse_sensitivity (Mouse sensitivity) float 0.2
+mouse_sensitivity (Mouse sensitivity) float 0.2 0.001 10.0
-# If enabled, "use" key instead of "sneak" key is used for climbing down and descending.
-aux1_descends (Key use for climbing/descending) bool false
+[*Touchscreen]
-# Double-tapping the jump key toggles fly mode.
-doubletap_jump (Double tap jump for fly) bool false
+# The length in pixels it takes for touch screen interaction to start.
+touchscreen_threshold (Touch screen threshold) int 20 0 100
-# If disabled "use" key is used to fly fast if both fly and fast mode are enabled.
-always_fly_fast (Always fly and fast) bool true
+# (Android) Fixes the position of virtual joystick.
+# If disabled, virtual joystick will center to first-touch's position.
+fixed_virtual_joystick (Fixed virtual joystick) bool false
-# The time in seconds it takes between repeated right clicks when holding the right mouse button.
-repeat_rightclick_time (Rightclick repetition interval) float 0.25
+# (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 random user input (only used for testing).
-random_input (Random input) bool false
-# Continuous forward movement (only used for testing).
-continuous_forward (Continuous forward) bool false
+[Graphics and Audio]
-# Enable Joysticks
-enable_joysticks (Enable Joysticks) bool false
+[*Graphics]
-# The time in seconds it takes between repeated events
-# when holding down a joystick button combination.
-repeat_joystick_button_time (Joystick button repetition interval) float 0.17
+[**Screen]
-# The sensitivity of the joystick axes for moving the
-# ingame view frustum around.
-joystick_frustum_sensitivity (Joystick frustum sensitivity) float 170
+# Width component of the initial window size. Ignored in fullscreen mode.
+screen_w (Screen width) int 1024 1 65535
-# Key for moving the player forward.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_forward (Forward key) key KEY_KEY_W
+# Height component of the initial window size. Ignored in fullscreen mode.
+screen_h (Screen height) int 600 1 65535
-# Key for moving the player backward.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_backward (Backward key) key KEY_KEY_S
+# Save window size automatically when modified.
+autosave_screensize (Autosave screen size) bool true
-# Key for moving the player left.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_left (Left key) key KEY_KEY_A
+# Fullscreen mode.
+fullscreen (Full screen) bool false
-# Key for moving the player right.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_right (Right key) key KEY_KEY_D
+# Open the pause menu when the window's focus is lost. Does not pause if a formspec is
+# open.
+pause_on_lost_focus (Pause on lost window focus) bool false
-# Key for jumping.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_jump (Jump key) key KEY_SPACE
+[**FPS]
-# Key for sneaking.
-# Also used for climbing down and descending in water if aux1_descends is disabled.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_sneak (Sneak key) key KEY_LSHIFT
+# If FPS would go higher than this, limit it by sleeping
+# to not waste CPU power for no benefit.
+fps_max (Maximum FPS) int 60 1 4294967295
-# Key for opening the inventory.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_inventory (Inventory key) key KEY_KEY_I
+# Vertical screen synchronization.
+vsync (VSync) bool false
-# Key for moving fast in fast mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_special1 (Use key) key KEY_KEY_E
+# Maximum FPS when the window is not focused, or when the game is paused.
+fps_max_unfocused (FPS when unfocused or paused) int 20 1 4294967295
-# Key for opening the chat window.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_chat (Chat key) key KEY_KEY_T
+# View distance in nodes.
+viewing_range (Viewing range) int 190 20 4000
-# Key for opening the chat window to type commands.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_cmd (Command key) key /
+# Undersampling is similar to using a lower screen resolution, but it applies
+# to the game world only, keeping the GUI intact.
+# It should give a significant performance boost at the cost of less detailed image.
+# Higher values result in a less detailed image.
+undersampling (Undersampling) int 1 1 8
-# Key for opening the chat console.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keyman_console (Console key) key KEY_F10
+[**Graphics Effects]
-# Key for toggling unlimited view range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_rangeselect (Range select key) key KEY_KEY_R
+# Makes all liquids opaque
+opaque_water (Opaque liquids) bool false
-# Key for toggling flying.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_freemove (Fly key) key KEY_KEY_K
+# Leaves style:
+# - Fancy: all faces visible
+# - Simple: only outer faces, if defined special_tiles are used
+# - Opaque: disable transparency
+leaves_style (Leaves style) enum fancy fancy,simple,opaque
-# Key for toggling fast mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_fastmove (Fast key) key KEY_KEY_J
+# Connects glass if supported by node.
+connected_glass (Connect glass) bool false
-# Key for toggling noclip mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_noclip (Noclip key) key KEY_KEY_H
+# Enable smooth lighting with simple ambient occlusion.
+# Disable for speed or for different looks.
+smooth_lighting (Smooth lighting) bool true
-# Key for toggling autorun.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_autorun (Autorun key) key
+# Enables tradeoffs that reduce CPU load or increase rendering performance
+# at the expense of minor visual glitches that do not impact game playability.
+performance_tradeoffs (Tradeoffs for performance) bool false
-# Key for toggling cinematic mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_cinematic (Cinematic mode key) key
+# Adds particles when digging a node.
+enable_particles (Digging particles) bool true
-# Key for toggling display of minimap.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_minimap (Minimap key) key KEY_F9
+[**3d]
-# Key for taking screenshots.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_screenshot (Screenshot) key KEY_F12
+# 3D support.
+# Currently supported:
+# - none: no 3d output.
+# - anaglyph: cyan/magenta color 3d.
+# - interlaced: odd/even line based polarisation screen support.
+# - topbottom: split screen top/bottom.
+# - sidebyside: split screen side by side.
+# - crossview: Cross-eyed 3d
+# - pageflip: quadbuffer based 3d.
+# Note that the interlaced mode requires shaders to be enabled.
+3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,crossview,pageflip
-# Key for dropping the currently selected item.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_drop (Drop item key) key KEY_KEY_Q
+# Strength of 3D mode parallax.
+3d_paralax_strength (3D mode parallax strength) float 0.025 -0.087 0.087
-# Key for toggling the display of the HUD.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_hud (HUD toggle key) key KEY_F1
+[**Bobbing]
-# Key for toggling the display of the chat.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_chat (Chat toggle key) key KEY_F2
+# Arm inertia, gives a more realistic movement of
+# the arm when the camera moves.
+arm_inertia (Arm inertia) bool true
-# Key for toggling the display of the fog.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_force_fog_off (Fog toggle key) key KEY_F3
+# Enable view bobbing and amount of view bobbing.
+# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
+view_bobbing_amount (View bobbing factor) float 1.0 0.0 7.9
-# Key for toggling the camera update. Only used for development
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_update_camera (Camera update toggle key) key
+# Multiplier for fall bobbing.
+# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
+fall_bobbing_amount (Fall bobbing factor) float 0.03 0.0 100.0
-# Key for toggling the display of debug info.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_debug (Debug info toggle key) key KEY_F5
+[**Camera]
-# Key for toggling the display of the profiler. Used for development.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_toggle_profiler (Profiler toggle key) key KEY_F6
+# Camera 'near clipping plane' distance in nodes, between 0 and 0.25
+# Only works on GLES platforms. Most users will not need to change this.
+# Increasing can reduce artifacting on weaker GPUs.
+# 0.1 = Default, 0.25 = Good value for weaker tablets.
+near_plane (Near plane) float 0.1 0 0.25
-# Key for switching between first- and third-person camera.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_camera_mode (Toggle camera mode key) key KEY_F7
+# Field of view in degrees.
+fov (Field of view) int 72 45 160
-# Key for increasing the viewing range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_increase_viewing_range_min (View range increase key) key +
+# Alters the light curve by applying 'gamma correction' to it.
+# Higher values make middle and lower light levels brighter.
+# Value '1.0' leaves the light curve unaltered.
+# This only has significant effect on daylight and artificial
+# light, it has very little effect on natural night light.
+display_gamma (Light curve gamma) float 1.0 0.33 3.0
-# Key for decreasing the viewing range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_decrease_viewing_range_min (View range decrease key) key -
+# The strength (darkness) of node ambient-occlusion shading.
+# Lower is darker, Higher is lighter. The valid range of values for this
+# setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
+# set to the nearest valid value.
+ambient_occlusion_gamma (Ambient occlusion gamma) float 2.2 0.25 4.0
-# Key for printing debug stacks. Used for development.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-keymap_print_debug_stacks (Print stacks) key KEY_KEY_P
+[**Screenshots]
-[*Network]
+# Path to save screenshots at. Can be an absolute or relative path.
+# The folder will be created if it doesn't already exist.
+screenshot_path (Screenshot folder) path screenshots
-# Address to connect to.
-# Leave this blank to start a local server.
-# Note that the address field in the main menu overrides this setting.
-address (Server address) string
+# Format of screenshots.
+screenshot_format (Screenshot format) enum png png,jpg
-# Port to connect to (UDP).
-# Note that the port field in the main menu overrides this setting.
-remote_port (Remote port) int 30000 1 65535
+# Screenshot quality. Only used for JPEG format.
+# 1 means worst quality; 100 means best quality.
+# Use 0 for default quality.
+screenshot_quality (Screenshot quality) int 0 0 100
-# Whether to support older servers before protocol version 25.
-# Enable if you want to connect to 0.4.12 servers and before.
-# Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.
-# Disabling this option will protect your password better.
-send_pre_v25_init (Support older servers) bool false
+[**Node and Entity Highlighting]
-# Save the map received by the client on disk.
-enable_local_map_saving (Saving map received from server) bool false
+# Method used to highlight selected object.
+node_highlighting (Node highlighting) enum box box,halo,none
# Show entity selection boxes
-show_entity_selectionbox (Show entity selection boxes) bool true
-
-# Enable usage of remote media server (if provided by server).
-# Remote servers offer a significantly faster way to download media (e.g. textures)
-# when connecting to the server.
-enable_remote_media_server (Connect to external media server) bool true
-
-# URL to the server list displayed in the Multiplayer Tab.
-serverlist_url (Serverlist URL) string servers.minetest.net
+# A restart is required after changing this.
+show_entity_selectionbox (Show entity selection boxes) bool false
-# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab.
-serverlist_file (Serverlist file) string favoriteservers.txt
+# Selection box border color (R,G,B).
+selectionbox_color (Selection box color) string (0,0,0)
-[*Graphics]
+# Width of the selection box lines around nodes.
+selectionbox_width (Selection box width) int 2 1 5
-[**In-Game]
+# Crosshair color (R,G,B).
+# Also controls the object crosshair color
+crosshair_color (Crosshair color) string (255,255,255)
-[***Basic]
+# Crosshair alpha (opaqueness, between 0 and 255).
+# This also applies to the object crosshair.
+crosshair_alpha (Crosshair alpha) int 255 0 255
-# Enable VBO
-enable_vbo (VBO) bool true
+[**Fog]
# Whether to fog out the end of the visible area.
enable_fog (Fog) bool true
-# Leaves style:
-# - Fancy: all faces visible
-# - Simple: only outer faces, if defined special_tiles are used
-# - Opaque: disable transparency
-leaves_style (Leaves style) enum fancy fancy,simple,opaque
+# Make fog and sky colors depend on daytime (dawn/sunset) and view direction.
+directional_colored_fog (Colored fog) bool true
-# Connects glass if supported by node.
-connected_glass (Connect glass) bool false
+# Fraction of the visible distance at which fog starts to be rendered
+fog_start (Fog start) float 0.4 0.0 0.99
-# Enable smooth lighting with simple ambient occlusion.
-# Disable for speed or for different looks.
-smooth_lighting (Smooth lighting) bool true
+[**Clouds]
# Clouds are a client side effect.
enable_clouds (Clouds) bool true
@@ -301,12 +305,11 @@ enable_clouds (Clouds) bool true
# Use 3D cloud look instead of flat.
enable_3d_clouds (3D clouds) bool true
-# Method used to highlight selected object.
-node_highlighting (Node highlighting) enum box box,halo
-
-[***Filtering]
+[**Filtering and Antialiasing]
-# Use mip mapping to scale textures. May slightly increase performance.
+# Use mipmapping to scale textures. May slightly increase performance,
+# especially when using a high resolution texture pack.
+# Gamma correct downscaling is not supported.
mip_map (Mipmapping) bool false
# Use anisotropic filtering when viewing at textures from an angle.
@@ -319,164 +322,201 @@ bilinear_filter (Bilinear filtering) bool false
trilinear_filter (Trilinear filtering) bool false
# Filtered textures can blend RGB values with fully-transparent neighbors,
-# which PNG optimizers usually discard, sometimes resulting in a dark or
-# light edge to transparent textures. Apply this filter to clean that up
-# at texture load time.
+# which PNG optimizers usually discard, often resulting in dark or
+# light edges to transparent textures. Apply a filter to clean that up
+# at texture load time. This is automatically enabled if mipmapping is enabled.
texture_clean_transparent (Clean transparent textures) bool false
# When using bilinear/trilinear/anisotropic filters, low-resolution textures
# can be blurred, so automatically upscale them with nearest-neighbor
-# interpolation to preserve crisp pixels. This sets the minimum texture size
+# interpolation to preserve crisp pixels. This sets the minimum texture size
# for the upscaled textures; higher values look sharper, but require more
-# memory. Powers of 2 are recommended. Setting this higher than 1 may not
-# have a visible effect unless bilinear/trilinear/anisotropic filtering is
-# enabled.
-texture_min_size (Minimum texture size for filters) int 64
-
-# Experimental option, might cause visible spaces between blocks
-# when set to higher number than 0.
+# memory. Powers of 2 are recommended. This setting is ONLY applied if
+# bilinear/trilinear/anisotropic filtering is enabled.
+# This is also used as the base node texture size for world-aligned
+# texture autoscaling.
+texture_min_size (Minimum texture size) int 64 1 32768
+
+# Use multi-sample antialiasing (MSAA) to smooth out block edges.
+# This algorithm smooths out the 3D viewport while keeping the image sharp,
+# but it doesn't affect the insides of textures
+# (which is especially noticeable with transparent textures).
+# Visible spaces appear between nodes when shaders are disabled.
+# If set to 0, MSAA is disabled.
+# A restart is required after changing this option.
fsaa (FSAA) enum 0 0,1,2,4,8,16
-[***Shaders]
-# Shaders allow advanced visual effects and may increase performance on some video cards.
-# Thy only work with the OpenGL video backend.
+[*Shaders]
+
+# Shaders allow advanced visual effects and may increase performance on some video
+# cards.
+# This only works with the OpenGL video backend.
enable_shaders (Shaders) bool true
-[****Tone Mapping]
+[**Tone Mapping]
-# Enables filmic tone mapping
+# Enables Hable's 'Uncharted 2' filmic tone mapping.
+# Simulates the tone curve of photographic film and how this approximates the
+# appearance of high dynamic range images. Mid-range contrast is slightly
+# enhanced, highlights and shadows are gradually compressed.
tone_mapping (Filmic tone mapping) bool false
-[****Bumpmapping]
+[**Waving Nodes]
-# Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack
-# or need to be auto-generated.
+# Set to true to enable waving leaves.
# Requires shaders to be enabled.
-enable_bumpmapping (Bumpmapping) bool false
-
-# Enables on the fly normalmap generation (Emboss effect).
-# Requires bumpmapping to be enabled.
-generate_normalmaps (Generate normalmaps) bool false
-
-# Strength of generated normalmaps.
-normalmaps_strength (Normalmaps strength) float 0.6
-
-# Defines sampling step of texture.
-# A higher value results in smoother normal maps.
-normalmaps_smooth (Normalmaps sampling) int 0 0 2
-
-[****Parallax Occlusion]
+enable_waving_leaves (Waving leaves) bool false
-# Enables parallax occlusion mapping.
+# Set to true to enable waving plants.
# Requires shaders to be enabled.
-enable_parallax_occlusion (Parallax occlusion) bool false
-
-# 0 = parallax occlusion with slope information (faster).
-# 1 = relief mapping (slower, more accurate).
-parallax_occlusion_mode (Parallax occlusion mode) int 1 0 1
-
-# Strength of parallax.
-3d_parallax_strength (Parallax occlusion strength) float 0.025
-
-# Number of parallax occlusion iterations.
-parallax_occlusion_iterations (Parallax occlusion iterations) int 4
-
-# Overall scale of parallax occlusion effect.
-parallax_occlusion_scale (Parallax occlusion Scale) float 0.08
-
-# Overall bias of parallax occlusion effect, usually scale/2.
-parallax_occlusion_bias (Parallax occlusion bias) float 0.04
-
-[****Waving Nodes]
+enable_waving_plants (Waving plants) bool false
-# Set to true enables waving water.
+# Set to true to enable waving liquids (like water).
# Requires shaders to be enabled.
-enable_waving_water (Waving water) bool false
+enable_waving_water (Waving liquids) bool false
-water_wave_height (Waving water height) float 1.0
+# The maximum height of the surface of waving liquids.
+# 4.0 = Wave height is two nodes.
+# 0.0 = Wave doesn't move at all.
+# Default is 1.0 (1/2 node).
+# Requires waving liquids to be enabled.
+water_wave_height (Waving liquids wave height) float 1.0 0.0 4.0
-water_wave_length (Waving water length) float 20.0
+# Length of liquid waves.
+# Requires waving liquids to be enabled.
+water_wave_length (Waving liquids wavelength) float 20.0 0.1
-water_wave_speed (Waving water speed) float 5.0
+# How fast liquid waves will move. Higher = faster.
+# If negative, liquid waves will move backwards.
+# Requires waving liquids to be enabled.
+water_wave_speed (Waving liquids wave speed) float 5.0
-# Set to true enables waving leaves.
-# Requires shaders to be enabled.
-enable_waving_leaves (Waving leaves) bool false
+[**Dynamic shadows]
-# Set to true enables waving plants.
+# Set to true to enable Shadow Mapping.
# Requires shaders to be enabled.
-enable_waving_plants (Waving plants) bool false
+enable_dynamic_shadows (Dynamic shadows) bool false
+
+# Set the shadow strength gamma.
+# Adjusts the intensity of in-game dynamic shadows.
+# Lower value means lighter shadows, higher value means darker shadows.
+shadow_strength_gamma (Shadow strength gamma) float 1.0 0.1 10.0
+
+# Maximum distance to render shadows.
+shadow_map_max_distance (Shadow map max distance in nodes to render shadows) float 120.0 10.0 1000.0
+
+# Texture size to render the shadow map on.
+# This must be a power of two.
+# Bigger numbers create better shadows but it is also more expensive.
+shadow_map_texture_size (Shadow map texture size) int 1024 128 8192
+
+# Sets shadow texture quality to 32 bits.
+# On false, 16 bits texture will be used.
+# This can cause much more artifacts in the shadow.
+shadow_map_texture_32bit (Shadow map texture in 32 bits) bool true
+
+# Enable Poisson disk filtering.
+# On true uses Poisson disk to make "soft shadows". Otherwise uses PCF filtering.
+shadow_poisson_filter (Poisson filtering) bool true
+
+# Define shadow filtering quality.
+# This simulates the soft shadows effect by applying a PCF or Poisson disk
+# but also uses more resources.
+shadow_filters (Shadow filter quality) enum 1 0,1,2
+
+# Enable colored shadows.
+# On true translucent nodes cast colored shadows. This is expensive.
+shadow_map_color (Colored shadows) bool false
+
+# Spread a complete update of shadow map over given amount of frames.
+# Higher values might make shadows laggy, lower values
+# will consume more resources.
+# Minimum value: 1; maximum value: 16
+shadow_update_frames (Map shadows update frames) int 8 1 16
+
+# Set the soft shadow radius size.
+# Lower values mean sharper shadows, bigger values mean softer shadows.
+# Minimum value: 1.0; maximum value: 15.0
+shadow_soft_radius (Soft shadow radius) float 5.0 1.0 15.0
+
+# Set the tilt of Sun/Moon orbit in degrees.
+# Value of 0 means no tilt / vertical orbit.
+# Minimum value: 0.0; maximum value: 60.0
+shadow_sky_body_orbit_tilt (Sky Body Orbit Tilt) float 0.0 0.0 60.0
+
+[*Audio]
+
+# Volume of all sounds.
+# Requires the sound system to be enabled.
+sound_volume (Volume) float 0.7 0.0 1.0
-[***Advanced]
+# Whether to mute sounds. You can unmute sounds at any time, unless the
+# sound system is disabled (enable_sound=false).
+# In-game, you can toggle the mute state with the mute key or by using the
+# pause menu.
+mute_sound (Mute sound) bool false
-# If FPS would go higher than this, limit it by sleeping
-# to not waste CPU power for no benefit.
-fps_max (Maximum FPS) int 60
+[*User Interfaces]
-# Maximum FPS when game is paused.
-pause_fps_max (FPS in pause menu) int 20
+# Set the language. Leave empty to use the system language.
+# A restart is required after changing this.
+language (Language) enum ,be,bg,ca,cs,da,de,el,en,eo,es,et,eu,fi,fr,gd,gl,hu,id,it,ja,jbo,kk,ko,lt,lv,ms,nb,nl,nn,pl,pt,pt_BR,ro,ru,sk,sl,sr_Cyrl,sr_Latn,sv,sw,tr,uk,vi,zh_CN,zh_TW
-# View distance in nodes.
-# Min = 20
-viewing_range (Viewing range) int 100
+[**GUIs]
-# Width component of the initial window size.
-screenW (Screen width) int 800
+# Scale GUI by a user specified value.
+# Use a nearest-neighbor-anti-alias filter to scale the GUI.
+# This will smooth over some of the rough edges, and blend
+# pixels when scaling down, at the cost of blurring some
+# edge pixels when images are scaled by non-integer sizes.
+gui_scaling (GUI scaling) float 1.0 0.5 20
-# Height component of the initial window size.
-screenH (Screen height) int 600
+# Enables animation of inventory items.
+inventory_items_animations (Inventory items animations) bool false
-# Fullscreen mode.
-fullscreen (Full screen) bool false
+# Formspec full-screen background opacity (between 0 and 255).
+formspec_fullscreen_bg_opacity (Formspec Full-Screen Background Opacity) int 140 0 255
-# Bits per pixel (aka color depth) in fullscreen mode.
-fullscreen_bpp (Full screen BPP) int 24
+# Formspec full-screen background color (R,G,B).
+formspec_fullscreen_bg_color (Formspec Full-Screen Background Color) string (0,0,0)
-# Vertical screen synchronization.
-vsync (V-Sync) bool false
+# When gui_scaling_filter is true, all GUI images need to be
+# filtered in software, but some images are generated directly
+# to hardware (e.g. render-to-texture for nodes in inventory).
+gui_scaling_filter (GUI scaling filter) bool false
-# Field of view in degrees.
-fov (Field of view) int 72 30 160
+# When gui_scaling_filter_txr2img is true, copy those images
+# from hardware to software for scaling. When false, fall back
+# to the old scaling method, for video drivers that don't
+# properly support downloading textures back from hardware.
+gui_scaling_filter_txr2img (GUI scaling filter txr2img) bool true
-# Field of view while zooming in degrees.
-# This requires the "zoom" privilege on the server.
-zoom_fov (Field of view for zoom) int 15 15 160
+# Delay showing tooltips, stated in milliseconds.
+tooltip_show_delay (Tooltip delay) int 400 0 18446744073709551615
-# Adjust the gamma encoding for the light tables. Lower numbers are brighter.
-# This setting is for the client only and is ignored by the server.
-display_gamma (Gamma) float 1.8 1.0 3.0
+# Append item name to tooltip.
+tooltip_append_itemname (Append item name) bool false
-# Path to texture directory. All textures are first searched from here.
-texture_path (Texture path) path
+# Use a cloud animation for the main menu background.
+menu_clouds (Clouds in menu) bool true
-# The rendering back-end for Irrlicht.
-video_driver (Video driver) enum opengl null,software,burningsvideo,direct3d8,direct3d9,opengl
+[**HUD]
-# Height on which clouds are appearing.
-cloud_height (Cloud height) int 120
+# Modifies the size of the HUD elements.
+hud_scaling (HUD scaling) float 1.0 0.5 20
-# Radius of cloud area stated in number of 64 node cloud squares.
-# Values larger than 26 will start to produce sharp cutoffs at cloud area corners.
-cloud_radius (Cloud radius) int 12
+# Whether name tag backgrounds should be shown by default.
+# Mods may still set a background.
+show_nametag_backgrounds (Show name tag backgrounds by default) bool true
-# Multiplier for view bobbing.
-# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
-view_bobbing_amount (View bobbing) float 1.0
+[**Chat]
-# Multiplier for fall bobbing.
-# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
-fall_bobbing_amount (Fall bobbing) float 0.0
+# Maximum number of recent chat messages to show
+recent_chat_messages (Recent Chat Messages) int 6 2 20
-# 3D support.
-# Currently supported:
-# - none: no 3d output.
-# - anaglyph: cyan/magenta color 3d.
-# - interlaced: odd/even line based polarisation screen support.
-# - topbottom: split screen top/bottom.
-# - sidebyside: split screen side by side.
-# - pageflip: quadbuffer based 3d.
-3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,pageflip
+# In-game chat console height, between 0.1 (10%) and 1.0 (100%).
+console_height (Console height) float 0.6 0.1 1.0
# In-game chat console background color (R,G,B).
console_color (Console color) string (0,0,0)
@@ -484,136 +524,74 @@ console_color (Console color) string (0,0,0)
# In-game chat console background alpha (opaqueness, between 0 and 255).
console_alpha (Console alpha) int 200 0 255
-# Selection box border color (R,G,B).
-selectionbox_color (Selection box color) string (0,0,0)
-
-# Width of the selectionbox's lines around nodes.
-selectionbox_width (Selection box width) int 2 1 5
-
-# Crosshair color (R,G,B).
-crosshair_color (Crosshair color) string (255,255,255)
-
-# Crosshair alpha (opaqueness, between 0 and 255).
-crosshair_alpha (Crosshair alpha) int 255 0 255
-
-# Whether node texture animations should be desynchronized per mapblock.
-desynchronize_mapblock_texture_animation (Desynchronize block animation) bool true
-
# Maximum proportion of current window to be used for hotbar.
# Useful if there's something to be displayed right or left of hotbar.
-hud_hotbar_max_width (Maximum hotbar width) float 1.0
+hud_hotbar_max_width (Maximum hotbar width) float 1.0 0.001 1.0
-# Enables caching of facedir rotated meshes.
-enable_mesh_cache (Mesh cache) bool false
+# Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console output.
+clickable_chat_weblinks (Chat weblinks) bool true
-# Enables minimap.
-enable_minimap (Minimap) bool true
+# Optional override for chat weblink color.
+chat_weblink_color (Weblink color) string
-# Shape of the minimap. Enabled = round, disabled = square.
-minimap_shape_round (Round minimap) bool true
+# Font size of the recent chat text and chat prompt in point (pt).
+# Value 0 will use the default font size.
+chat_font_size (Chat font size) int 0 0 72
-# True = 256
-# False = 128
-# Useable to make minimap smoother on slower machines.
-minimap_double_scan_height (Minimap scan height) bool true
-# Make fog and sky colors depend on daytime (dawn/sunset) and view direction.
-directional_colored_fog (Colored fog) bool true
-
-# The strength (darkness) of node ambient-occlusion shading.
-# Lower is darker, Higher is lighter. The valid range of values for this
-# setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
-# set to the nearest valid value.
-ambient_occlusion_gamma (Ambient occlusion gamma) float 2.2 0.25 4.0
-
-# Enables animation of inventory items.
-inventory_items_animations (Inventory items animations) bool false
-
-[**Menus]
-
-# Use a cloud animation for the main menu background.
-menu_clouds (Clouds in menu) bool true
-
-# Scale gui by a user specified value.
-# Use a nearest-neighbor-anti-alias filter to scale the GUI.
-# This will smooth over some of the rough edges, and blend
-# pixels when scaling down, at the cost of blurring some
-# edge pixels when images are scaled by non-integer sizes.
-gui_scaling (GUI scaling) float 1.0
-
-# When gui_scaling_filter is true, all GUI images need to be
-# filtered in software, but some images are generated directly
-# to hardware (e.g. render-to-texture for nodes in inventory).
-gui_scaling_filter (GUI scaling filter) bool false
-
-# When gui_scaling_filter_txr2img is true, copy those images
-# from hardware to software for scaling. When false, fall back
-# to the old scaling method, for video drivers that don't
-# properly support downloading textures back from hardware.
-gui_scaling_filter_txr2img (GUI scaling filter txr2img) bool true
-
-# Delay showing tooltips, stated in milliseconds.
-tooltip_show_delay (Tooltip delay) int 400
+[**Content Repository]
-# Whether freetype fonts are used, requires freetype support to be compiled in.
-freetype (Freetype fonts) bool true
+# The URL for the content repository
+contentdb_url (ContentDB URL) string https://content.minetest.net
-# Path to TrueTypeFont or bitmap.
-font_path (Font path) path fonts/liberationsans.ttf
+# Comma-separated list of flags to hide in the content repository.
+# "nonfree" can be used to hide packages which do not qualify as 'free software',
+# as defined by the Free Software Foundation.
+# You can also specify content ratings.
+# These flags are independent from Minetest versions,
+# so see a full list at https://content.minetest.net/help/content_flags/
+contentdb_flag_blacklist (ContentDB Flag Blacklist) string nonfree, desktop_default
-font_size (Font size) int 16
+# Maximum number of concurrent downloads. Downloads exceeding this limit will be queued.
+# This should be lower than curl_parallel_limit.
+contentdb_max_concurrent_downloads (ContentDB Max Concurrent Downloads) int 3 1
-# Font shadow offset, if 0 then shadow will not be drawn.
-font_shadow (Font shadow) int 1
-# Font shadow alpha (opaqueness, between 0 and 255).
-font_shadow_alpha (Font shadow alpha) int 127 0 255
-
-mono_font_path (Monospace font path) path fonts/liberationmono.ttf
-
-mono_font_size (Monospace font size) int 15
-
-# This font will be used for certain languages.
-fallback_font_path (Fallback font) path fonts/DroidSansFallbackFull.ttf
-fallback_font_size (Fallback font size) int 15
-fallback_font_shadow (Fallback font shadow) int 1
-fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255
-
-# Path to save screenshots at.
-screenshot_path (Screenshot folder) path
-
-# Format of screenshots.
-screenshot_format (Screenshot format) enum png png,jpg,bmp,pcx,ppm,tga
-
-# Screenshot quality. Only used for JPEG format.
-# 1 means worst quality; 100 means best quality.
-# Use 0 for default quality.
-screenshot_quality (Screenshot quality) int 0 0 100
+[Client and Server]
-[**Advanced]
+[*Client]
-# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.
-screen_dpi (DPI) int 72
+# Save the map received by the client on disk.
+enable_local_map_saving (Saving map received from server) bool false
-[*Sound]
+# URL to the server list displayed in the Multiplayer Tab.
+serverlist_url (Serverlist URL) string servers.minetest.net
-enable_sound (Sound) bool true
+# If enabled, account registration is separate from login in the UI.
+# If disabled, new accounts will be registered automatically when logging in.
+enable_split_login_register (Enable split login/register) bool true
-sound_volume (Volume) float 0.7 0.0 1.0
+# URL to JSON file which provides information about the newest Minetest release
+update_information_url (Update information URL) string https://www.minetest.net/release_info.json
-[*Advanced]
+# Unix timestamp (integer) of when the client last checked for an update
+# Set this value to "disabled" to never check for updates.
+update_last_checked (Last update check) string
-# Timeout for client to remove unused map data from memory.
-client_unload_unused_data_timeout (Mapblock unload timeout) int 600
+# Version number which was last seen during an update check.
+#
+# Representation: MMMIIIPPP, where M=Major, I=Minor, P=Patch
+# Ex: 5.5.0 is 005005000
+update_last_known (Last known version update) int 0
-# Maximum number of mapblocks for client to be kept in memory.
-# Set to -1 for unlimited amount.
-client_mapblock_limit (Mapblock limit) int 5000
+[*Server]
-# Whether to show the client debug info (has the same effect as hitting F5).
-show_debug (Show debug info) bool false
+# Name of the player.
+# When running a server, clients connecting with this name are admins.
+# When starting from the main menu, this is overridden.
+name (Admin name) string
-[Server / Singleplayer]
+[**Serverlist and MOTD]
# Name of the server, to be displayed when players join and in the serverlist.
server_name (Server name) string Minetest server
@@ -625,25 +603,28 @@ server_description (Server description) string mine here
server_address (Server address) string game.minetest.net
# Homepage of server, to be displayed in the serverlist.
-server_url (Server URL) string http://minetest.net
+server_url (Server URL) string https://minetest.net
-# Automaticaly report to the serverlist.
+# Automatically report to the serverlist.
server_announce (Announce server) bool false
# Announce to this serverlist.
-# If you want to announce your ipv6 address, use serverlist_url = v6.servers.minetest.net.
serverlist_url (Serverlist URL) string servers.minetest.net
-# Disable escape sequences, e.g. chat coloring.
-# Use this if you want to run a server with pre-0.4.14 clients and you want to disable
-# the escape sequences generated by mods.
-disable_escape_sequences (Disable escape sequences) bool false
+# Message of the day displayed to players connecting.
+motd (Message of the day) string
+
+# Maximum number of players that can be connected simultaneously.
+max_users (Maximum users) int 15 0 65535
+
+# If this is set, players will always (re)spawn at the given position.
+static_spawnpoint (Static spawnpoint) string
-[*Network]
+[**Networking]
# Network port to listen (UDP).
# This value will be overridden when starting from the main menu.
-port (Server port) int 30000
+port (Server port) int 30000 1 65535
# The network interface that the server listens on.
bind_address (Bind address) string
@@ -659,513 +640,863 @@ strict_protocol_version_checking (Strict protocol checking) bool false
# Files that are not present will be fetched the usual way.
remote_media (Remote media) string
-# Enable/disable running an IPv6 server. An IPv6 server may be restricted
-# to IPv6 clients, depending on system configuration.
+# Enable/disable running an IPv6 server.
# Ignored if bind_address is set.
+# Needs enable_ipv6 to be enabled.
ipv6_server (IPv6 server) bool false
-[**Advanced]
+[*Server Security]
-# Maximum number of blocks that are simultaneously sent per client.
-max_simultaneous_block_sends_per_client (Maximum simultaneous block sends per client) int 10
+# New users need to input this password.
+default_password (Default password) string
-# Maximum number of blocks that are simultaneously sent in total.
-max_simultaneous_block_sends_server_total (Maximum simultaneous block sends total) int 40
+# If enabled, players cannot join without a password or change theirs to an empty password.
+disallow_empty_password (Disallow empty passwords) bool false
-# To reduce lag, block transfers are slowed down when a player is building something.
-# This determines how long they are slowed down after placing or removing a node.
-full_block_send_enable_min_time_from_building (Delay in sending blocks after building) float 2.0
+# The privileges that new users automatically get.
+# See /privs in game for a full list on your server and mod configuration.
+default_privs (Default privileges) string interact, shout
-# Maximum number of packets sent per send step, if you have a slow connection
-# try reducing it, but don't reduce it to a number below double of targeted
-# client number.
-max_packets_per_iteration (Max. packets per iteration) int 1024
+# Privileges that players with basic_privs can grant
+basic_privs (Basic privileges) string interact, shout
-[*Game]
+# If enabled, disable cheat prevention in multiplayer.
+disable_anticheat (Disable anticheat) bool false
-# Default game when creating a new world.
-# This will be overridden when creating a world from the main menu.
-default_game (Default game) string minetest
+# If enabled, actions are recorded for rollback.
+# This option is only read when server starts.
+enable_rollback_recording (Rollback recording) bool false
-# Message of the day displayed to players connecting.
-motd (Message of the day) string
+[**Client-side Modding]
-# Maximum number of players that can connect simultaneously.
-max_users (Maximum users) int 15
+# Restricts the access of certain client-side functions on servers.
+# Combine the byteflags below to restrict client-side features, or set to 0
+# for no restrictions:
+# LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)
+# CHAT_MESSAGES: 2 (disable send_chat_message call client-side)
+# READ_ITEMDEFS: 4 (disable get_item_def call client-side)
+# READ_NODEDEFS: 8 (disable get_node_def call client-side)
+# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
+# csm_restriction_noderange)
+# READ_PLAYERINFO: 32 (disable get_player_names call client-side)
+csm_restriction_flags (Client side modding restrictions) int 62 0 63
-# World directory (everything in the world is stored here).
-# Not needed if starting from the main menu.
-map-dir (Map directory) path
+# If the CSM restriction for node range is enabled, get_node calls are limited
+# to this distance from the player to the node.
+csm_restriction_noderange (Client side node lookup range restriction) int 0 0 4294967295
+
+[**Chat]
+
+# Remove color codes from incoming chat messages
+# Use this to stop players from being able to use color in their messages
+strip_color_codes (Strip color codes) bool false
+
+# Set the maximum length of a chat message (in characters) sent by clients.
+chat_message_max_size (Chat message max length) int 500 10 65535
+
+# Amount of messages a player may send per 10 seconds.
+chat_message_limit_per_10sec (Chat message count limit) float 10.0 1.0
+
+# Kick players who sent more than X messages per 10 seconds.
+chat_message_limit_trigger_kick (Chat message kick threshold) int 50 1 65535
+
+[*Server Gameplay]
+
+# Controls length of day/night cycle.
+# Examples:
+# 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged.
+time_speed (Time speed) int 72 0
+
+# Time of day when a new world is started, in millihours (0-23999).
+world_start_time (World start time) int 6125 0 23999
# Time in seconds for item entity (dropped items) to live.
# Setting it to -1 disables the feature.
-item_entity_ttl (Item entity TTL) int 900
+item_entity_ttl (Item entity TTL) int 900 -1
-# Enable players getting damage and dying.
-enable_damage (Damage) bool false
+# Specifies the default stack size of nodes, items and tools.
+# Note that mods or games may explicitly set a stack for certain (or all) items.
+default_stack_max (Default stack size) int 99 1 65535
+
+[**Physics]
+
+# Horizontal and vertical acceleration on ground or when climbing,
+# in nodes per second per second.
+movement_acceleration_default (Default acceleration) float 3.0 0.0
+
+# Horizontal acceleration in air when jumping or falling,
+# in nodes per second per second.
+movement_acceleration_air (Acceleration in air) float 2.0 0.0
+
+# Horizontal and vertical acceleration in fast mode,
+# in nodes per second per second.
+movement_acceleration_fast (Fast mode acceleration) float 10.0 0.0
+
+# Walking and flying speed, in nodes per second.
+movement_speed_walk (Walking speed) float 4.0 0.0
+
+# Sneaking speed, in nodes per second.
+movement_speed_crouch (Sneaking speed) float 1.35 0.0
+
+# Walking, flying and climbing speed in fast mode, in nodes per second.
+movement_speed_fast (Fast mode speed) float 20.0 0.0
+
+# Vertical climbing speed, in nodes per second.
+movement_speed_climb (Climbing speed) float 3.0 0.0
+
+# Initial vertical speed when jumping, in nodes per second.
+movement_speed_jump (Jumping speed) float 6.5 0.0
+
+# How much you are slowed down when moving inside a liquid.
+# Decrease this to increase liquid resistance to movement.
+movement_liquid_fluidity (Liquid fluidity) float 1.0 0.001
+
+# Maximum liquid resistance. Controls deceleration when entering liquid at
+# high speed.
+movement_liquid_fluidity_smooth (Liquid fluidity smoothing) float 0.5
+
+# Controls sinking speed in liquid when idling. Negative values will cause
+# you to rise instead.
+movement_liquid_sink (Liquid sinking) float 10.0
+
+# Acceleration of gravity, in nodes per second per second.
+movement_gravity (Gravity) float 9.81
+
+
+[Mapgen]
# A chosen map seed for a new map, leave empty for random.
# Will be overridden when creating a new world in the main menu.
fixed_map_seed (Fixed map seed) string
-# New users need to input this password.
-default_password (Default password) string
+# Name of map generator to be used when creating a new world.
+# Creating a world in the main menu will override this.
+# Current mapgens in a highly unstable state:
+# - The optional floatlands of v7 (disabled by default).
+mg_name (Mapgen name) enum v7 v7,valleys,carpathian,v5,flat,fractal,singlenode,v6
-# The privileges that new users automatically get.
-# See /privs in game for a full list on your server and mod configuration.
-default_privs (Default privileges) string interact, shout
+# Water surface level of the world.
+water_level (Water level) int 1 -31000 31000
-# Privileges that players with basic_privs can grant
-basic_privs (Basic Privileges) string interact, shout
+# From how far blocks are generated for clients, stated in mapblocks (16 nodes).
+max_block_generate_distance (Max block generate distance) int 10 1 32767
-# Whether players are shown to clients without any range limit.
-# Deprecated, use the setting player_transfer_distance instead.
-unlimited_player_transfer_distance (Unlimited player transfer distance) bool true
+# Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).
+# Only mapchunks completely within the mapgen limit are generated.
+# Value is stored per-world.
+mapgen_limit (Map generation limit) int 31007 0 31007
-# Defines the maximal player transfer distance in blocks (0 = unlimited).
-player_transfer_distance (Player transfer distance) int 0
+# Global map generation attributes.
+# In Mapgen v6 the 'decorations' flag controls all decorations except trees
+# and jungle grass, in all other mapgens this flag controls all decorations.
+mg_flags (Mapgen flags) flags caves,dungeons,light,decorations,biomes,ores caves,dungeons,light,decorations,biomes,ores,nocaves,nodungeons,nolight,nodecorations,nobiomes,noores
-# Whether to allow players to damage and kill each other.
-enable_pvp (Player versus Player) bool true
+[*Biome API noise parameters]
-# If this is set, players will always (re)spawn at the given position.
-static_spawnpoint (Static spawnpoint) string
+# Temperature variation for biomes.
+mg_biome_np_heat (Heat noise) noise_params_2d 50, 50, (1000, 1000, 1000), 5349, 3, 0.5, 2.0, eased
-# If enabled, new players cannot join with an empty password.
-disallow_empty_password (Disallow empty passwords) bool false
+# Small-scale temperature variation for blending biomes on borders.
+mg_biome_np_heat_blend (Heat blend noise) noise_params_2d 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0, eased
-# If enabled, disable cheat prevention in multiplayer.
-disable_anticheat (Disable anticheat) bool false
+# Humidity variation for biomes.
+mg_biome_np_humidity (Humidity noise) noise_params_2d 50, 50, (1000, 1000, 1000), 842, 3, 0.5, 2.0, eased
-# If enabled, actions are recorded for rollback.
-# This option is only read when server starts.
-enable_rollback_recording (Rollback recording) bool false
+# Small-scale humidity variation for blending biomes on borders.
+mg_biome_np_humidity_blend (Humidity blend noise) noise_params_2d 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0, eased
-# A message to be displayed to all clients when the server shuts down.
-kick_msg_shutdown (Shutdown message) string Server shutting down.
+[*Mapgen V5]
-# A message to be displayed to all clients when the server crashes.
-kick_msg_crash (Crash message) string This server has experienced an internal error. You will now be disconnected.
+# Map generation attributes specific to Mapgen v5.
+mgv5_spflags (Mapgen V5 specific flags) flags caverns caverns,nocaverns
-# Whether to ask clients to reconnect after a (Lua) crash.
-# Set this to true if your server is set up to restart automatically.
-ask_reconnect_on_crash (Ask to reconnect after crash) bool false
+# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgv5_cave_width (Cave width) float 0.09
-# From how far clients know about objects, stated in mapblocks (16 nodes).
-active_object_send_range_blocks (Active object send range) int 3
+# Y of upper limit of large caves.
+mgv5_large_cave_depth (Large cave depth) int -256 -31000 31000
-# How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes).
-# In active blocks objects are loaded and ABMs run.
-active_block_range (Active block range) int 2
+# Minimum limit of random number of small caves per mapchunk.
+mgv5_small_cave_num_min (Small cave minimum number) int 0 0 256
-# From how far blocks are sent to clients, stated in mapblocks (16 nodes).
-max_block_send_distance (Max block send distance) int 10
+# Maximum limit of random number of small caves per mapchunk.
+mgv5_small_cave_num_max (Small cave maximum number) int 0 0 256
-# Maximum number of forceloaded mapblocks.
-max_forceloaded_blocks (Maximum forceloaded blocks) int 16
+# Minimum limit of random number of large caves per mapchunk.
+mgv5_large_cave_num_min (Large cave minimum number) int 0 0 64
-# Interval of sending time of day to clients.
-time_send_interval (Time send interval) int 5
+# Maximum limit of random number of large caves per mapchunk.
+mgv5_large_cave_num_max (Large cave maximum number) int 2 0 64
-# Controls length of day/night cycle.
-# Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged.
-time_speed (Time speed) int 72
+# Proportion of large caves that contain liquid.
+mgv5_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
-# Interval of saving important changes in the world, stated in seconds.
-server_map_save_interval (Map save interval) float 5.3
+# Y-level of cavern upper limit.
+mgv5_cavern_limit (Cavern limit) int -256 -31000 31000
-# Set the maximum character length of a chat message sent by clients.
-# chat_message_max_size int 500
+# Y-distance over which caverns expand to full size.
+mgv5_cavern_taper (Cavern taper) int 256 0 32767
-# Limit a single player to send X messages per 10 seconds.
-# chat_message_limit_per_10sec float 10.0
+# Defines full size of caverns, smaller values create larger caverns.
+mgv5_cavern_threshold (Cavern threshold) float 0.7
-# Kick player if send more than X messages per 10 seconds.
-# chat_message_limit_trigger_kick int 50
+# Lower Y limit of dungeons.
+mgv5_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
-[**Physics]
+# Upper Y limit of dungeons.
+mgv5_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
-movement_acceleration_default (Default acceleration) float 3
-movement_acceleration_air (Acceleration in air) float 2
-movement_acceleration_fast (Fast mode acceleration) float 10
-movement_speed_walk (Walking speed) float 4
-movement_speed_crouch (Crouch speed) float 1.35
-movement_speed_fast (Fast mode speed) float 20
-movement_speed_climb (Climbing speed) float 2
-movement_speed_jump (Jumping speed) float 6.5
-movement_speed_descend (Descending speed) float 6
-movement_liquid_fluidity (Liquid fluidity) float 1
-movement_liquid_fluidity_smooth (Liquid fluidity smoothing) float 0.5
-movement_liquid_sink (Liquid sink) float 10
-movement_gravity (Gravity) float 9.81
+[**Noises]
-[**Advanced]
+# Variation of biome filler depth.
+mgv5_np_filler_depth (Filler depth noise) noise_params_2d 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0, eased
-# Handling for deprecated lua api calls:
-# - legacy: (try to) mimic old behaviour (default for release).
-# - log: mimic and log backtrace of deprecated call (default for debug).
-# - error: abort on usage of deprecated call (suggested for mod developers).
-deprecated_lua_api_handling (Deprecated Lua API handling) enum legacy legacy,log,error
+# Variation of terrain vertical scale.
+# When noise is < -0.55 terrain is near-flat.
+mgv5_np_factor (Factor noise) noise_params_2d 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0, eased
-# Number of extra blocks that can be loaded by /clearobjects at once.
-# This is a trade-off between sqlite transaction overhead and
-# memory consumption (4096=100MB, as a rule of thumb).
-max_clearobjects_extra_loaded_blocks (Max. clearobjects extra blocks) int 4096
+# Y-level of average terrain surface.
+mgv5_np_height (Height noise) noise_params_2d 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0, eased
-# How much the server will wait before unloading unused mapblocks.
-# Higher value is smoother, but will use more RAM.
-server_unload_unused_data_timeout (Unload unused server data) int 29
+# First of two 3D noises that together define tunnels.
+mgv5_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-# Maximum number of statically stored objects in a block.
-max_objects_per_block (Maximum objects per block) int 64
+# Second of two 3D noises that together define tunnels.
+mgv5_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
-# See http://www.sqlite.org/pragma.html#pragma_synchronous
-sqlite_synchronous (Synchronous SQLite) enum 2 0,1,2
+# 3D noise defining giant caverns.
+mgv5_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
-# Length of a server tick and the interval at which objects are generally updated over network.
-dedicated_server_step (Dedicated server step) float 0.1
+# 3D noise defining terrain.
+mgv5_np_ground (Ground noise) noise_params_3d 0, 40, (80, 80, 80), 983240, 4, 0.55, 2.0, eased
-# Time in between active block management cycles
-active_block_mgmt_interval (Active Block Management interval) float 2.0
+# 3D noise that determines number of dungeons per mapchunk.
+mgv5_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
-# Length of time between ABM execution cycles
-abm_interval (Active Block Modifier interval) float 1.0
+[*Mapgen V6]
-# Length of time between NodeTimer execution cycles
-nodetimer_interval (NodeTimer interval) float 1.0
+# Map generation attributes specific to Mapgen v6.
+# The 'snowbiomes' flag enables the new 5 biome system.
+# When the 'snowbiomes' flag is enabled jungles are automatically enabled and
+# the 'jungles' flag is ignored.
+mgv6_spflags (Mapgen V6 specific flags) flags jungles,biomeblend,mudflow,snowbiomes,noflat,trees jungles,biomeblend,mudflow,snowbiomes,flat,trees,nojungles,nobiomeblend,nomudflow,nosnowbiomes,noflat,notrees
-# If enabled, invalid world data won't cause the server to shut down.
-# Only enable this if you know what you are doing.
-ignore_world_load_errors (Ignore world errors) bool false
+# Deserts occur when np_biome exceeds this value.
+# When the 'snowbiomes' flag is enabled, this is ignored.
+mgv6_freq_desert (Desert noise threshold) float 0.45
-# Max liquids processed per step.
-liquid_loop_max (Liquid loop max) int 100000
+# Sandy beaches occur when np_beach exceeds this value.
+mgv6_freq_beach (Beach noise threshold) float 0.15
-# The time (in seconds) that the liquids queue may grow beyond processing
-# capacity until an attempt is made to decrease its size by dumping old queue
-# items. A value of 0 disables the functionality.
-liquid_queue_purge_time (Liquid queue purge time) int 0
+# Lower Y limit of dungeons.
+mgv6_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
-# Liquid update interval in seconds.
-liquid_update (Liquid update tick) float 1.0
+# Upper Y limit of dungeons.
+mgv6_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
-# At this distance the server will aggressively optimize which blocks are sent to clients.
-# Small values potentially improve performance a lot, at the expense of visible rendering glitches.
-# (some blocks will not be rendered under water and in caves, as well as sometimes on land)
-# Setting this to a value greater than max_block_send_distance disables this optimization.
-# Stated in mapblocks (16 nodes)
-block_send_optimize_distance (block send optimize distance) int 4 2
+[**Noises]
-[*Mapgen]
+# Y-level of lower terrain and seabed.
+mgv6_np_terrain_base (Terrain base noise) noise_params_2d -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0, eased
-# Name of map generator to be used when creating a new world.
-# Creating a world in the main menu will override this.
-mg_name (Mapgen name) enum v6 v5,v6,v7,flat,valleys,fractal,singlenode
+# Y-level of higher terrain that creates cliffs.
+mgv6_np_terrain_higher (Terrain higher noise) noise_params_2d 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0, eased
-# Water surface level of the world.
-water_level (Water level) int 1
+# Varies steepness of cliffs.
+mgv6_np_steepness (Steepness noise) noise_params_2d 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0, eased
-# From how far blocks are generated for clients, stated in mapblocks (16 nodes).
-max_block_generate_distance (Max block generate distance) int 6
+# Defines distribution of higher terrain.
+mgv6_np_height_select (Height select noise) noise_params_2d 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0, eased
-# Where the map generator stops.
-# Please note:
-# - Limited to 31000 (setting above has no effect)
-# - The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).
-# - Those groups have an offset of -32, -32 nodes from the origin.
-# - Only groups which are within the map_generation_limit are generated
-map_generation_limit (Map generation limit) int 31000 0 31000
+# Varies depth of biome surface nodes.
+mgv6_np_mud (Mud noise) noise_params_2d 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0, eased
-# Global map generation attributes.
-# In Mapgen v6 the 'decorations' flag controls all decorations except trees
-# and junglegrass, in all other mapgens this flag controls all decorations.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-mg_flags (Mapgen flags) flags caves,dungeons,light,decorations caves,dungeons,light,decorations,nocaves,nodungeons,nolight,nodecorations
+# Defines areas with sandy beaches.
+mgv6_np_beach (Beach noise) noise_params_2d 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0, eased
-[**Advanced]
+# Temperature variation for biomes.
+mgv6_np_biome (Biome noise) noise_params_2d 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0, eased
-# Size of chunks to be generated at once by mapgen, stated in mapblocks (16 nodes).
-chunksize (Chunk size) int 5
+# Variation of number of caves.
+mgv6_np_cave (Cave noise) noise_params_2d 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0, eased
-# Dump the mapgen debug infos.
-enable_mapgen_debug_info (Mapgen debug) bool false
+# Humidity variation for biomes.
+mgv6_np_humidity (Humidity noise) noise_params_2d 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0, eased
-# Maximum number of blocks that can be queued for loading.
-emergequeue_limit_total (Absolute limit of emerge queues) int 256
+# Defines tree areas and tree density.
+mgv6_np_trees (Trees noise) noise_params_2d 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0, eased
-# Maximum number of blocks to be queued that are to be loaded from file.
-# Set to blank for an appropriate amount to be chosen automatically.
-emergequeue_limit_diskonly (Limit of emerge queues on disk) int 32
+# Defines areas where trees have apples.
+mgv6_np_apple_trees (Apple trees noise) noise_params_2d 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0, eased
-# Maximum number of blocks to be queued that are to be generated.
-# Set to blank for an appropriate amount to be chosen automatically.
-emergequeue_limit_generate (Limit of emerge queues to generate) int 32
+[*Mapgen V7]
-# Number of emerge threads to use. Make this field blank, or increase this number
-# to use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly
-# at the cost of slightly buggy caves.
-num_emerge_threads (Number of emerge threads) int 1
+# Map generation attributes specific to Mapgen v7.
+# 'ridges': Rivers.
+# 'floatlands': Floating land masses in the atmosphere.
+# 'caverns': Giant caves deep underground.
+mgv7_spflags (Mapgen V7 specific flags) flags mountains,ridges,nofloatlands,caverns mountains,ridges,floatlands,caverns,nomountains,noridges,nofloatlands,nocaverns
+
+# Y of mountain density gradient zero level. Used to shift mountains vertically.
+mgv7_mount_zero_level (Mountain zero level) int 0 -31000 31000
+
+# Lower Y limit of floatlands.
+mgv7_floatland_ymin (Floatland minimum Y) int 1024 -31000 31000
+
+# Upper Y limit of floatlands.
+mgv7_floatland_ymax (Floatland maximum Y) int 4096 -31000 31000
+
+# Y-distance over which floatlands taper from full density to nothing.
+# Tapering starts at this distance from the Y limit.
+# For a solid floatland layer, this controls the height of hills/mountains.
+# Must be less than or equal to half the distance between the Y limits.
+mgv7_floatland_taper (Floatland tapering distance) int 256 0 32767
+
+# Exponent of the floatland tapering. Alters the tapering behaviour.
+# Value = 1.0 creates a uniform, linear tapering.
+# Values > 1.0 create a smooth tapering suitable for the default separated
+# floatlands.
+# Values < 1.0 (for example 0.25) create a more defined surface level with
+# flatter lowlands, suitable for a solid floatland layer.
+mgv7_float_taper_exp (Floatland taper exponent) float 2.0
+
+# Adjusts the density of the floatland layer.
+# Increase value to increase density. Can be positive or negative.
+# Value = 0.0: 50% of volume is floatland.
+# Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test
+# to be sure) creates a solid floatland layer.
+mgv7_floatland_density (Floatland density) float -0.6
+
+# Surface level of optional water placed on a solid floatland layer.
+# Water is disabled by default and will only be placed if this value is set
+# to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the
+# upper tapering).
+# ***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:
+# When enabling water placement the floatlands must be configured and tested
+# to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other
+# required value depending on 'mgv7_np_floatland'), to avoid
+# server-intensive extreme water flow and to avoid vast flooding of the
+# world surface below.
+mgv7_floatland_ywater (Floatland water level) int -31000 -31000 31000
-# Noise parameters for biome API temperature, humidity and biome blend.
-mg_biome_np_heat (Mapgen biome heat noise parameters) noise_params 50, 50, (750, 750, 750), 5349, 3, 0.5, 2.0
-mg_biome_np_heat_blend (Mapgen heat blend noise parameters) noise_params 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0
-mg_biome_np_humidity (Mapgen biome humidity noise parameters) noise_params 50, 50, (750, 750, 750), 842, 3, 0.5, 2.0
-mg_biome_np_humidity_blend (Mapgen biome humidity blend noise parameters) noise_params 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0
+# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgv7_cave_width (Cave width) float 0.09
-[***Mapgen v5]
+# Y of upper limit of large caves.
+mgv7_large_cave_depth (Large cave depth) int -33 -31000 31000
-# Controls width of tunnels, a smaller value creates wider tunnels.
-mgv5_cave_width (Mapgen v5 cave width) float 0.125
-
-mgv5_np_filler_depth (Mapgen v5 filler depth noise parameters) noise_params 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0
-mgv5_np_factor (Mapgen v5 factor noise parameters) noise_params 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0
-mgv5_np_height (Mapgen v5 height noise parameters) noise_params 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0
-mgv5_np_cave1 (Mapgen v5 cave1 noise parameters) noise_params 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0
-mgv5_np_cave2 (Mapgen v5 cave2 noise parameters) noise_params 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0
-# TODO
-#mgv5_np_ground = {
-# offset = 0
-# scale = 40
-# spread = (80, 80, 80)
-# seed = 983240
-# octaves = 4
-# persistence = 0.55
-# lacunarity = 2.0
-# flags = "eased"
-#}
-
-[***Mapgen v6]
+# Minimum limit of random number of small caves per mapchunk.
+mgv7_small_cave_num_min (Small cave minimum number) int 0 0 256
-# Map generation attributes specific to Mapgen v6.
-# When snowbiomes are enabled jungles are automatically enabled, the 'jungles' flag is ignored.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-mgv6_spflags (Mapgen v6 flags) flags jungles,biomeblend,mudflow,snowbiomes,trees jungles,biomeblend,mudflow,snowbiomes,flat,trees,nojungles,nobiomeblend,nomudflow,nosnowbiomes,noflat,notrees
-
-# Controls size of deserts and beaches in Mapgen v6.
-# When snowbiomes are enabled 'mgv6_freq_desert' is ignored.
-mgv6_freq_desert (Mapgen v6 desert frequency) float 0.45
-mgv6_freq_beach (Mapgen v6 beach frequency) float 0.15
-
-mgv6_np_terrain_base (Mapgen v6 terrain base noise parameters) noise_params -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0
-mgv6_np_terrain_higher (Mapgen v6 terrain altitude noise parameters) noise_params 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0
-mgv6_np_steepness (Mapgen v6 steepness noise parameters) noise_params 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0
-mgv6_np_height_select (Mapgen v6 height select noise parameters) noise_params 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0
-mgv6_np_mud (Mapgen v6 mud noise parameters) noise_params 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0
-mgv6_np_beach (Mapgen v6 beach noise parameters) noise_params 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0
-mgv6_np_biome (Mapgen v6 biome noise parameters) noise_params 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0
-mgv6_np_cave (Mapgen v6 cave noise parameters) noise_params 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0
-mgv6_np_humidity (Mapgen v6 humidity noise parameters) noise_params 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0
-mgv6_np_trees (Mapgen v6 trees noise parameters) noise_params 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0
-mgv6_np_apple_trees (Mapgen v6 apple trees noise parameters) noise_params 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0
-
-[***Mapgen v7]
+# Maximum limit of random number of small caves per mapchunk.
+mgv7_small_cave_num_max (Small cave maximum number) int 0 0 256
-# Map generation attributes specific to Mapgen v7.
-# The 'ridges' flag controls the rivers.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-mgv7_spflags (Mapgen v7 flags) flags mountains,ridges mountains,ridges,nomountains,noridges
+# Minimum limit of random number of large caves per mapchunk.
+mgv7_large_cave_num_min (Large cave minimum number) int 0 0 64
+
+# Maximum limit of random number of large caves per mapchunk.
+mgv7_large_cave_num_max (Large cave maximum number) int 2 0 64
+
+# Proportion of large caves that contain liquid.
+mgv7_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
+
+# Y-level of cavern upper limit.
+mgv7_cavern_limit (Cavern limit) int -256 -31000 31000
+
+# Y-distance over which caverns expand to full size.
+mgv7_cavern_taper (Cavern taper) int 256 0 32767
+
+# Defines full size of caverns, smaller values create larger caverns.
+mgv7_cavern_threshold (Cavern threshold) float 0.7
+
+# Lower Y limit of dungeons.
+mgv7_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
+
+# Upper Y limit of dungeons.
+mgv7_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
+
+[**Noises]
+
+# Y-level of higher terrain that creates cliffs.
+mgv7_np_terrain_base (Terrain base noise) noise_params_2d 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0, eased
+
+# Y-level of lower terrain and seabed.
+mgv7_np_terrain_alt (Terrain alternative noise) noise_params_2d 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0, eased
+
+# Varies roughness of terrain.
+# Defines the 'persistence' value for terrain_base and terrain_alt noises.
+mgv7_np_terrain_persist (Terrain persistence noise) noise_params_2d 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0, eased
+
+# Defines distribution of higher terrain and steepness of cliffs.
+mgv7_np_height_select (Height select noise) noise_params_2d -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0, eased
+
+# Variation of biome filler depth.
+mgv7_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
+
+# Variation of maximum mountain height (in nodes).
+mgv7_np_mount_height (Mountain height noise) noise_params_2d 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0, eased
+
+# Defines large-scale river channel structure.
+mgv7_np_ridge_uwater (Ridge underwater noise) noise_params_2d 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0, eased
+
+# 3D noise defining mountain structure and height.
+# Also defines structure of floatland mountain terrain.
+mgv7_np_mountain (Mountain noise) noise_params_3d -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0
+
+# 3D noise defining structure of river canyon walls.
+mgv7_np_ridge (Ridge noise) noise_params_3d 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0
+
+# 3D noise defining structure of floatlands.
+# If altered from the default, the noise 'scale' (0.7 by default) may need
+# to be adjusted, as floatland tapering functions best when this noise has
+# a value range of approximately -2.0 to 2.0.
+mgv7_np_floatland (Floatland noise) noise_params_3d 0, 0.7, (384, 96, 384), 1009, 4, 0.75, 1.618
+
+# 3D noise defining giant caverns.
+mgv7_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
+
+# First of two 3D noises that together define tunnels.
+mgv7_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+
+# Second of two 3D noises that together define tunnels.
+mgv7_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+
+# 3D noise that determines number of dungeons per mapchunk.
+mgv7_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
+
+[*Mapgen Carpathian]
+
+# Map generation attributes specific to Mapgen Carpathian.
+mgcarpathian_spflags (Mapgen Carpathian specific flags) flags caverns,norivers caverns,rivers,nocaverns,norivers
+
+# Defines the base ground level.
+mgcarpathian_base_level (Base ground level) float 12.0
+
+# Defines the width of the river channel.
+mgcarpathian_river_width (River channel width) float 0.05
+
+# Defines the depth of the river channel.
+mgcarpathian_river_depth (River channel depth) float 24.0
+
+# Defines the width of the river valley.
+mgcarpathian_valley_width (River valley width) float 0.25
# Controls width of tunnels, a smaller value creates wider tunnels.
-mgv7_cave_width (Mapgen v7 cave width) float 0.2
-
-mgv7_np_terrain_base (Mapgen v7 terrain base noise parameters) noise_params 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0
-mgv7_np_terrain_alt (Mapgen v7 terrain altitude noise parameters) noise_params 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0
-mgv7_np_terrain_persist (Mapgen v7 terrain persistation noise parameters) noise_params 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0
-mgv7_np_height_select (Mapgen v7 height select noise parameters) noise_params -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0
-mgv7_np_filler_depth (Mapgen v7 filler depth noise parameters) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
-mgv7_np_mount_height (Mapgen v7 mount height noise parameters) noise_params 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0
-mgv7_np_ridge_uwater (Mapgen v7 ridge water noise parameters) noise_params 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0
-mgv7_np_mountain (Mapgen v7 mountain noise parameters) noise_params -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0
-mgv7_np_ridge (Mapgen v7 ridge noise parameters) noise_params 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0
-mgv7_np_cave1 (Mapgen v7 cave1 noise parameters) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-mgv7_np_cave2 (Mapgen v7 cave2 noise parameters) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
-
-[***Mapgen flat]
-
-# Map generation attributes specific to Mapgen flat.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgcarpathian_cave_width (Cave width) float 0.09
+
+# Y of upper limit of large caves.
+mgcarpathian_large_cave_depth (Large cave depth) int -33 -31000 31000
+
+# Minimum limit of random number of small caves per mapchunk.
+mgcarpathian_small_cave_num_min (Small cave minimum number) int 0 0 256
+
+# Maximum limit of random number of small caves per mapchunk.
+mgcarpathian_small_cave_num_max (Small cave maximum number) int 0 0 256
+
+# Minimum limit of random number of large caves per mapchunk.
+mgcarpathian_large_cave_num_min (Large cave minimum number) int 0 0 64
+
+# Maximum limit of random number of large caves per mapchunk.
+mgcarpathian_large_cave_num_max (Large cave maximum number) int 2 0 64
+
+# Proportion of large caves that contain liquid.
+mgcarpathian_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
+
+# Y-level of cavern upper limit.
+mgcarpathian_cavern_limit (Cavern limit) int -256 -31000 31000
+
+# Y-distance over which caverns expand to full size.
+mgcarpathian_cavern_taper (Cavern taper) int 256 0 32767
+
+# Defines full size of caverns, smaller values create larger caverns.
+mgcarpathian_cavern_threshold (Cavern threshold) float 0.7
+
+# Lower Y limit of dungeons.
+mgcarpathian_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
+
+# Upper Y limit of dungeons.
+mgcarpathian_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
+
+[**Noises]
+
+# Variation of biome filler depth.
+mgcarpathian_np_filler_depth (Filler depth noise) noise_params_2d 0, 1, (128, 128, 128), 261, 3, 0.7, 2.0, eased
+
+# First of 4 2D noises that together define hill/mountain range height.
+mgcarpathian_np_height1 (Hilliness1 noise) noise_params_2d 0, 5, (251, 251, 251), 9613, 5, 0.5, 2.0, eased
+
+# Second of 4 2D noises that together define hill/mountain range height.
+mgcarpathian_np_height2 (Hilliness2 noise) noise_params_2d 0, 5, (383, 383, 383), 1949, 5, 0.5, 2.0, eased
+
+# Third of 4 2D noises that together define hill/mountain range height.
+mgcarpathian_np_height3 (Hilliness3 noise) noise_params_2d 0, 5, (509, 509, 509), 3211, 5, 0.5, 2.0, eased
+
+# Fourth of 4 2D noises that together define hill/mountain range height.
+mgcarpathian_np_height4 (Hilliness4 noise) noise_params_2d 0, 5, (631, 631, 631), 1583, 5, 0.5, 2.0, eased
+
+# 2D noise that controls the size/occurrence of rolling hills.
+mgcarpathian_np_hills_terrain (Rolling hills spread noise) noise_params_2d 1, 1, (1301, 1301, 1301), 1692, 3, 0.5, 2.0, eased
+
+# 2D noise that controls the size/occurrence of ridged mountain ranges.
+mgcarpathian_np_ridge_terrain (Ridge mountain spread noise) noise_params_2d 1, 1, (1889, 1889, 1889), 3568, 3, 0.5, 2.0, eased
+
+# 2D noise that controls the size/occurrence of step mountain ranges.
+mgcarpathian_np_step_terrain (Step mountain spread noise) noise_params_2d 1, 1, (1889, 1889, 1889), 4157, 3, 0.5, 2.0, eased
+
+# 2D noise that controls the shape/size of rolling hills.
+mgcarpathian_np_hills (Rolling hill size noise) noise_params_2d 0, 3, (257, 257, 257), 6604, 6, 0.5, 2.0, eased
+
+# 2D noise that controls the shape/size of ridged mountains.
+mgcarpathian_np_ridge_mnt (Ridged mountain size noise) noise_params_2d 0, 12, (743, 743, 743), 5520, 6, 0.7, 2.0, eased
+
+# 2D noise that controls the shape/size of step mountains.
+mgcarpathian_np_step_mnt (Step mountain size noise) noise_params_2d 0, 8, (509, 509, 509), 2590, 6, 0.6, 2.0, eased
+
+# 2D noise that locates the river valleys and channels.
+mgcarpathian_np_rivers (River noise) noise_params_2d 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0, eased
+
+# 3D noise for mountain overhangs, cliffs, etc. Usually small variations.
+mgcarpathian_np_mnt_var (Mountain variation noise) noise_params_3d 0, 1, (499, 499, 499), 2490, 5, 0.55, 2.0
+
+# First of two 3D noises that together define tunnels.
+mgcarpathian_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+
+# Second of two 3D noises that together define tunnels.
+mgcarpathian_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+
+# 3D noise defining giant caverns.
+mgcarpathian_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
+
+# 3D noise that determines number of dungeons per mapchunk.
+mgcarpathian_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
+
+[*Mapgen Flat]
+
+# Map generation attributes specific to Mapgen Flat.
# Occasional lakes and hills can be added to the flat world.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-mgflat_spflags (Mapgen flat flags) flags lakes,hills,,nolakes,nohills
+mgflat_spflags (Mapgen Flat specific flags) flags nolakes,nohills,nocaverns lakes,hills,caverns,nolakes,nohills,nocaverns
# Y of flat ground.
-mgflat_ground_level (Mapgen flat ground level) int 8
+mgflat_ground_level (Ground level) int 8 -31000 31000
+
+# Y of upper limit of large caves.
+mgflat_large_cave_depth (Large cave depth) int -33 -31000 31000
+
+# Minimum limit of random number of small caves per mapchunk.
+mgflat_small_cave_num_min (Small cave minimum number) int 0 0 256
-# Y of upper limit of large pseudorandom caves.
-mgflat_large_cave_depth (Mapgen flat large cave depth) int -33
+# Maximum limit of random number of small caves per mapchunk.
+mgflat_small_cave_num_max (Small cave maximum number) int 0 0 256
+
+# Minimum limit of random number of large caves per mapchunk.
+mgflat_large_cave_num_min (Large cave minimum number) int 0 0 64
+
+# Maximum limit of random number of large caves per mapchunk.
+mgflat_large_cave_num_max (Large cave maximum number) int 2 0 64
+
+# Proportion of large caves that contain liquid.
+mgflat_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
# Controls width of tunnels, a smaller value creates wider tunnels.
-mgflat_cave_width (Mapgen flat cave width) float 0.2
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgflat_cave_width (Cave width) float 0.09
# Terrain noise threshold for lakes.
# Controls proportion of world area covered by lakes.
# Adjust towards 0.0 for a larger proportion.
-mgflat_lake_threshold (Mapgen flat lake threshold) float -0.45
+mgflat_lake_threshold (Lake threshold) float -0.45
# Controls steepness/depth of lake depressions.
-mgflat_lake_steepness (Mapgen flat lake steepness) float 48.0
+mgflat_lake_steepness (Lake steepness) float 48.0
# Terrain noise threshold for hills.
# Controls proportion of world area covered by hills.
# Adjust towards 0.0 for a larger proportion.
-mgflat_hill_threshold (Mapgen flat hill threshold) float 0.45
+mgflat_hill_threshold (Hill threshold) float 0.45
# Controls steepness/height of hills.
-mgflat_hill_steepness (Mapgen flat hill steepness) float 64.0
+mgflat_hill_steepness (Hill steepness) float 64.0
-# Determines terrain shape.
-# The 3 numbers in brackets control the scale of the
-# terrain, the 3 numbers should be identical.
-mgflat_np_terrain (Mapgen flat terrain noise parameters) noise_params 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0
+# Y-level of cavern upper limit.
+mgflat_cavern_limit (Cavern limit) int -256 -31000 31000
-mgflat_np_filler_depth (Mapgen flat filler depth noise parameters) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
-mgflat_np_cave1 (Mapgen flat cave1 noise parameters) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-mgflat_np_cave2 (Mapgen flat cave2 noise parameters) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# Y-distance over which caverns expand to full size.
+mgflat_cavern_taper (Cavern taper) int 256 0 32767
-[***Mapgen fractal]
+# Defines full size of caverns, smaller values create larger caverns.
+mgflat_cavern_threshold (Cavern threshold) float 0.7
-# Controls width of tunnels, a smaller value creates wider tunnels.
-mgfractal_cave_width (Mapgen fractal cave width) float 0.2
-
-# Choice of 18 fractals from 9 formulas.
-# 1 = 4D "Roundy" mandelbrot set.
-# 2 = 4D "Roundy" julia set.
-# 3 = 4D "Squarry" mandelbrot set.
-# 4 = 4D "Squarry" julia set.
-# 5 = 4D "Mandy Cousin" mandelbrot set.
-# 6 = 4D "Mandy Cousin" julia set.
-# 7 = 4D "Variation" mandelbrot set.
-# 8 = 4D "Variation" julia set.
-# 9 = 3D "Mandelbrot/Mandelbar" mandelbrot set.
-# 10 = 3D "Mandelbrot/Mandelbar" julia set.
-# 11 = 3D "Christmas Tree" mandelbrot set.
-# 12 = 3D "Christmas Tree" julia set.
-# 13 = 3D "Mandelbulb" mandelbrot set.
-# 14 = 3D "Mandelbulb" julia set.
-# 15 = 3D "Cosine Mandelbulb" mandelbrot set.
-# 16 = 3D "Cosine Mandelbulb" julia set.
-# 17 = 4D "Mandelbulb" mandelbrot set.
-# 18 = 4D "Mandelbulb" julia set.
-mgfractal_fractal (Mapgen fractal fractal) int 1 1 18
+# Lower Y limit of dungeons.
+mgflat_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
-# Iterations of the recursive function.
-# Controls the amount of fine detail.
-mgfractal_iterations (Mapgen fractal iterations) int 11
+# Upper Y limit of dungeons.
+mgflat_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
+
+[**Noises]
+
+# Defines location and terrain of optional hills and lakes.
+mgflat_np_terrain (Terrain noise) noise_params_2d 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0, eased
+
+# Variation of biome filler depth.
+mgflat_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
+
+# First of two 3D noises that together define tunnels.
+mgflat_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+
+# Second of two 3D noises that together define tunnels.
+mgflat_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+
+# 3D noise defining giant caverns.
+mgflat_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
+
+# 3D noise that determines number of dungeons per mapchunk.
+mgflat_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
-# Approximate (X,Y,Z) scale of fractal in nodes.
-mgfractal_scale (Mapgen fractal scale) v3f (4096.0, 1024.0, 4096.0)
+[*Mapgen Fractal]
-# (X,Y,Z) offset of fractal from world centre in units of 'scale'.
-# Used to move a suitable spawn area of low land close to (0, 0).
-# The default is suitable for mandelbrot sets, it needs to be edited for julia sets.
+# Map generation attributes specific to Mapgen Fractal.
+# 'terrain' enables the generation of non-fractal terrain:
+# ocean, islands and underground.
+mgfractal_spflags (Mapgen Fractal specific flags) flags terrain terrain,noterrain
+
+# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgfractal_cave_width (Cave width) float 0.09
+
+# Y of upper limit of large caves.
+mgfractal_large_cave_depth (Large cave depth) int -33 -31000 31000
+
+# Minimum limit of random number of small caves per mapchunk.
+mgfractal_small_cave_num_min (Small cave minimum number) int 0 0 256
+
+# Maximum limit of random number of small caves per mapchunk.
+mgfractal_small_cave_num_max (Small cave maximum number) int 0 0 256
+
+# Minimum limit of random number of large caves per mapchunk.
+mgfractal_large_cave_num_min (Large cave minimum number) int 0 0 64
+
+# Maximum limit of random number of large caves per mapchunk.
+mgfractal_large_cave_num_max (Large cave maximum number) int 2 0 64
+
+# Proportion of large caves that contain liquid.
+mgfractal_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
+
+# Lower Y limit of dungeons.
+mgfractal_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
+
+# Upper Y limit of dungeons.
+mgfractal_dungeon_ymax (Dungeon maximum Y) int 31000 -31000 31000
+
+# Selects one of 18 fractal types.
+# 1 = 4D "Roundy" Mandelbrot set.
+# 2 = 4D "Roundy" Julia set.
+# 3 = 4D "Squarry" Mandelbrot set.
+# 4 = 4D "Squarry" Julia set.
+# 5 = 4D "Mandy Cousin" Mandelbrot set.
+# 6 = 4D "Mandy Cousin" Julia set.
+# 7 = 4D "Variation" Mandelbrot set.
+# 8 = 4D "Variation" Julia set.
+# 9 = 3D "Mandelbrot/Mandelbar" Mandelbrot set.
+# 10 = 3D "Mandelbrot/Mandelbar" Julia set.
+# 11 = 3D "Christmas Tree" Mandelbrot set.
+# 12 = 3D "Christmas Tree" Julia set.
+# 13 = 3D "Mandelbulb" Mandelbrot set.
+# 14 = 3D "Mandelbulb" Julia set.
+# 15 = 3D "Cosine Mandelbulb" Mandelbrot set.
+# 16 = 3D "Cosine Mandelbulb" Julia set.
+# 17 = 4D "Mandelbulb" Mandelbrot set.
+# 18 = 4D "Mandelbulb" Julia set.
+mgfractal_fractal (Fractal type) int 1 1 18
+
+# Iterations of the recursive function.
+# Increasing this increases the amount of fine detail, but also
+# increases processing load.
+# At iterations = 20 this mapgen has a similar load to mapgen V7.
+mgfractal_iterations (Iterations) int 11 1 65535
+
+# (X,Y,Z) scale of fractal in nodes.
+# Actual fractal size will be 2 to 3 times larger.
+# These numbers can be made very large, the fractal does
+# not have to fit inside the world.
+# Increase these to 'zoom' into the detail of the fractal.
+# Default is for a vertically-squashed shape suitable for
+# an island, set all 3 numbers equal for the raw shape.
+mgfractal_scale (Scale) v3f (4096.0, 1024.0, 4096.0)
+
+# (X,Y,Z) offset of fractal from world center in units of 'scale'.
+# Can be used to move a desired point to (0, 0) to create a
+# suitable spawn point, or to allow 'zooming in' on a desired
+# point by increasing 'scale'.
+# The default is tuned for a suitable spawn point for Mandelbrot
+# sets with default parameters, it may need altering in other
+# situations.
# Range roughly -2 to 2. Multiply by 'scale' for offset in nodes.
-mgfractal_offset (Mapgen fractal offset) v3f (1.79, 0.0, 0.0)
+mgfractal_offset (Offset) v3f (1.79, 0.0, 0.0)
-# W co-ordinate of the generated 3D slice of a 4D fractal.
+# W coordinate of the generated 3D slice of a 4D fractal.
# Determines which 3D slice of the 4D shape is generated.
+# Alters the shape of the fractal.
# Has no effect on 3D fractals.
# Range roughly -2 to 2.
-mgfractal_slice_w (Mapgen fractal slice w) float 0.0
+mgfractal_slice_w (Slice w) float 0.0
-# Julia set only: X component of hypercomplex constant determining julia shape.
+# Julia set only.
+# X component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
-mgfractal_julia_x (Mapgen fractal julia x) float 0.33
+mgfractal_julia_x (Julia x) float 0.33
-# Julia set only: Y component of hypercomplex constant determining julia shape.
+# Julia set only.
+# Y component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
-mgfractal_julia_y (Mapgen fractal julia y) float 0.33
+mgfractal_julia_y (Julia y) float 0.33
-# Julia set only: Z component of hypercomplex constant determining julia shape.
+# Julia set only.
+# Z component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
-mgfractal_julia_z (Mapgen fractal julia z) float 0.33
+mgfractal_julia_z (Julia z) float 0.33
-# Julia set only: W component of hypercomplex constant determining julia shape.
+# Julia set only.
+# W component of hypercomplex constant.
+# Alters the shape of the fractal.
# Has no effect on 3D fractals.
# Range roughly -2 to 2.
-mgfractal_julia_w (Mapgen fractal julia w) float 0.33
+mgfractal_julia_w (Julia w) float 0.33
+
+[**Noises]
+
+# Y-level of seabed.
+mgfractal_np_seabed (Seabed noise) noise_params_2d -14, 9, (600, 600, 600), 41900, 5, 0.6, 2.0, eased
+
+# Variation of biome filler depth.
+mgfractal_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
+
+# First of two 3D noises that together define tunnels.
+mgfractal_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-mgfractal_np_seabed (Mapgen fractal seabed noise parameters) noise_params -14, 9, (600, 600, 600), 41900, 5, 0.6, 2.0
-mgfractal_np_filler_depth (Mapgen fractal filler depth noise parameters) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
-mgfractal_np_cave1 (Mapgen fractal cave1 noise parameters) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-mgfractal_np_cave2 (Mapgen fractal cave2 noise parameters) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# Second of two 3D noises that together define tunnels.
+mgfractal_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
-# Mapgen Valleys parameters
-[***Mapgen Valleys]
+# 3D noise that determines number of dungeons per mapchunk.
+mgfractal_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
-# General parameters
-[****General]
+[*Mapgen Valleys]
# Map generation attributes specific to Mapgen Valleys.
-# 'altitude_chill' makes higher elevations colder, which may cause biome issues.
-# 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool,
-# it may interfere with delicately adjusted biomes.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-mg_valleys_spflags (Valleys C Flags) flags altitude_chill,humid_rivers altitude_chill,noaltitude_chill,humid_rivers,nohumid_rivers
+# 'altitude_chill': Reduces heat with altitude.
+# 'humid_rivers': Increases humidity around rivers.
+# 'vary_river_depth': If enabled, low humidity and high heat causes rivers
+# to become shallower and occasionally dry.
+# 'altitude_dry': Reduces humidity with altitude.
+mgvalleys_spflags (Mapgen Valleys specific flags) flags altitude_chill,humid_rivers,vary_river_depth,altitude_dry altitude_chill,humid_rivers,vary_river_depth,altitude_dry,noaltitude_chill,nohumid_rivers,novary_river_depth,noaltitude_dry
-# The altitude at which temperature drops by 20C
-mgvalleys_altitude_chill (Altitude Chill) int 90
+# The vertical distance over which heat drops by 20 if 'altitude_chill' is
+# enabled. Also the vertical distance over which humidity drops by 10 if
+# 'altitude_dry' is enabled.
+mgvalleys_altitude_chill (Altitude chill) int 90 0 65535
-# Depth below which you'll find large caves.
-mgvalleys_large_cave_depth (Large cave depth) int -33
+# Depth below which you'll find large caves.
+mgvalleys_large_cave_depth (Large cave depth) int -33 -31000 31000
-# Creates unpredictable lava features in caves.
-# These can make mining difficult. Zero disables them. (0-10)
-mgvalleys_lava_features (Lava Features) int 0
+# Minimum limit of random number of small caves per mapchunk.
+mgvalleys_small_cave_num_min (Small cave minimum number) int 0 0 256
-# Depth below which you'll find massive caves.
-mgvalleys_massive_cave_depth (Massive cave depth) int -256
+# Maximum limit of random number of small caves per mapchunk.
+mgvalleys_small_cave_num_max (Small cave maximum number) int 0 0 256
-# How deep to make rivers
-mgvalleys_river_depth (River Depth) int 4
+# Minimum limit of random number of large caves per mapchunk.
+mgvalleys_large_cave_num_min (Large cave minimum number) int 0 0 64
-# How wide to make rivers
-mgvalleys_river_size (River Size) int 5
+# Maximum limit of random number of large caves per mapchunk.
+mgvalleys_large_cave_num_max (Large cave maximum number) int 2 0 64
-# Creates unpredictable water features in caves.
-# These can make mining difficult. Zero disables them. (0-10)
-mgvalleys_water_features (Water Features) int 0
+# Proportion of large caves that contain liquid.
+mgvalleys_large_cave_flooded (Large cave proportion flooded) float 0.5 0.0 1.0
+
+# Depth below which you'll find giant caverns.
+mgvalleys_cavern_limit (Cavern upper limit) int -256 -31000 31000
+
+# Y-distance over which caverns expand to full size.
+mgvalleys_cavern_taper (Cavern taper) int 192 0 32767
+
+# Defines full size of caverns, smaller values create larger caverns.
+mgvalleys_cavern_threshold (Cavern threshold) float 0.6
+
+# How deep to make rivers.
+mgvalleys_river_depth (River depth) int 4 0 65535
+
+# How wide to make rivers.
+mgvalleys_river_size (River size) int 5 0 65535
# Controls width of tunnels, a smaller value creates wider tunnels.
-mgvalleys_cave_width (Cave width) float 0.2
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+mgvalleys_cave_width (Cave width) float 0.09
+
+# Lower Y limit of dungeons.
+mgvalleys_dungeon_ymin (Dungeon minimum Y) int -31000 -31000 31000
+
+# Upper Y limit of dungeons.
+mgvalleys_dungeon_ymax (Dungeon maximum Y) int 63 -31000 31000
-# Noise parameters
-[****Noises]
+[**Noises]
-# Caves and tunnels form at the intersection of the two noises
-mgvalleys_np_cave1 (Cave noise #1) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+# First of two 3D noises that together define tunnels.
+mgvalleys_np_cave1 (Cave noise #1) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
-# Caves and tunnels form at the intersection of the two noises
-mgvalleys_np_cave2 (Cave noise #2) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# Second of two 3D noises that together define tunnels.
+mgvalleys_np_cave2 (Cave noise #2) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
-# The depth of dirt or other filler
-mgvalleys_np_filler_depth (Filler Depth) noise_params 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0
+# The depth of dirt or other biome filler node.
+mgvalleys_np_filler_depth (Filler depth) noise_params_2d 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0, eased
-# Massive caves form here.
-mgvalleys_np_massive_caves (Massive cave noise) noise_params 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0
+# 3D noise defining giant caverns.
+mgvalleys_np_cavern (Cavern noise) noise_params_3d 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0
-# River noise -- rivers occur close to zero
-mgvalleys_np_rivers (River Noise) noise_params 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0
+# Defines large-scale river channel structure.
+mgvalleys_np_rivers (River noise) noise_params_2d 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0, eased
-# Base terrain height
-mgvalleys_np_terrain_height (Terrain Height) noise_params -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0
+# Base terrain height.
+mgvalleys_np_terrain_height (Terrain height) noise_params_2d -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0, eased
-# Raises terrain to make valleys around the rivers
-mgvalleys_np_valley_depth (Valley Depth) noise_params 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0
+# Raises terrain to make valleys around the rivers.
+mgvalleys_np_valley_depth (Valley depth) noise_params_2d 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0, eased
-# Slope and fill work together to modify the heights
-mgvalleys_np_inter_valley_fill (Valley Fill) noise_params 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0
+# Slope and fill work together to modify the heights.
+mgvalleys_np_inter_valley_fill (Valley fill) noise_params_3d 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0
-# Amplifies the valleys
-mgvalleys_np_valley_profile (Valley Profile) noise_params 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0
+# Amplifies the valleys.
+mgvalleys_np_valley_profile (Valley profile) noise_params_2d 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0, eased
-# Slope and fill work together to modify the heights
-mgvalleys_np_inter_valley_slope (Valley Slope) noise_params 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0
+# Slope and fill work together to modify the heights.
+mgvalleys_np_inter_valley_slope (Valley slope) noise_params_2d 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0, eased
-[*Security]
+# 3D noise that determines number of dungeons per mapchunk.
+mgvalleys_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), 0, 2, 0.8, 2.0
+
+
+[Advanced]
+
+[*Developer Options]
+
+# Enable Lua modding support on client.
+# This support is experimental and API can change.
+enable_client_modding (Client modding) bool false
+
+# Replaces the default main menu with a custom one.
+main_menu_script (Main menu script) string
+
+[**Mod Security]
# Prevent mods from doing insecure things like running shell commands.
secure.enable_security (Enable mod security) bool true
@@ -1174,13 +1505,46 @@ secure.enable_security (Enable mod security) bool true
# functions even when mod security is on (via request_insecure_environment()).
secure.trusted_mods (Trusted mods) string
-# Comma-separated list of mods that are allowed to access HTTP APIs, which
-# allow them to upload and download data to/from the internet.
-secure.http_mods (HTTP Mods) string
+# Comma-separated list of mods that are allowed to access HTTP APIs, which
+# allow them to upload and download data to/from the internet.
+secure.http_mods (HTTP mods) string
-[*Advanced]
+[**Debugging]
+
+# Level of logging to be written to debug.txt:
+# - <nothing> (no logging)
+# - none (messages with no level)
+# - error
+# - warning
+# - action
+# - info
+# - verbose
+# - trace
+debug_log_level (Debug log level) enum action ,none,error,warning,action,info,verbose,trace
+
+# If the file size of debug.txt exceeds the number of megabytes specified in
+# this setting when it is opened, the file is moved to debug.txt.1,
+# deleting an older debug.txt.1 if it exists.
+# debug.txt is only moved if this setting is positive.
+debug_log_size_max (Debug log file size threshold) int 50 1
+
+# Minimal level of logging to be written to chat.
+chat_log_level (Chat log level) enum error ,none,error,warning,action,info,verbose,trace
+
+# Handling for deprecated Lua API calls:
+# - none: Do not log deprecated calls
+# - log: mimic and log backtrace of deprecated call (default).
+# - error: abort on usage of deprecated call (suggested for mod developers).
+deprecated_lua_api_handling (Deprecated Lua API handling) enum log none,log,error
+
+# Enable random user input (only used for testing).
+random_input (Random input) bool false
+
+# Enable mod channels support.
+enable_mod_channels (Mod channels) bool false
+
+[**Mod Profiler]
-[**Profiling]
# Load the game profiler to collect game profiling data.
# Provides a /profiler command to access the compiled profile.
# Useful for mod developers and server operators.
@@ -1191,11 +1555,8 @@ profiler.load (Load the game profiler) bool false
profiler.default_report_format (Default report format) enum txt txt,csv,lua,json,json_pretty
# The file path relative to your worldpath in which profiles will be saved to.
-#
profiler.report_path (Report path) string ""
-[***Instrumentation]
-
# Instrument the methods of entities on registration.
instrument.entity (Entity methods) bool true
@@ -1205,14 +1566,13 @@ instrument.abm (Active Block Modifiers) bool true
# Instrument the action function of Loading Block Modifiers on registration.
instrument.lbm (Loading Block Modifiers) bool true
-# Instrument chatcommands on registration.
-instrument.chatcommand (Chatcommands) bool true
+# Instrument chat commands on registration.
+instrument.chatcommand (Chat commands) bool true
# Instrument global callback functions on registration.
# (anything you pass to a minetest.register_*() function)
instrument.global_callback (Global callbacks) bool true
-[****Advanced]
# Instrument builtin.
# This is usually only needed by core/builtin contributors
instrument.builtin (Builtin) bool false
@@ -1223,61 +1583,771 @@ instrument.builtin (Builtin) bool false
# * Instrument the sampler being used to update the statistics.
instrument.profiler (Profiler) bool false
-[Client and Server]
+[**Engine profiler]
-# Name of the player.
-# When running a server, clients connecting with this name are admins.
-# When starting from the main menu, this is overridden.
-name (Player name) string
+# Print the engine's profiling data in regular intervals (in seconds).
+# 0 = disable. Useful for developers.
+profiler_print_interval (Engine profiling data print interval) int 0 0
-# Set the language. Leave empty to use the system language.
-# A restart is required after changing this.
-language (Language) enum ,be,ca,cs,da,de,en,eo,es,et,fr,he,hu,id,it,ja,jbo,ko,ky,lt,nb,nl,pl,pt,pt_BR,ro,ru,sr_Cyrl,tr,uk,zh_CN,zh_TW
-# Level of logging to be written to debug.txt:
-# - <nothing> (no logging)
-# - none (messages with no level)
-# - error
-# - warning
-# - action
-# - info
-# - verbose
-debug_log_level (Debug log level) enum action ,warning,action,info,verbose
+[*Advanced]
-# IPv6 support.
+# Enable IPv6 support (for both client and server).
+# Required for IPv6 connections to work at all.
enable_ipv6 (IPv6) bool true
-[*Advanced]
+# If enabled, invalid world data won't cause the server to shut down.
+# Only enable this if you know what you are doing.
+ignore_world_load_errors (Ignore world errors) bool false
-# Default timeout for cURL, stated in milliseconds.
-# Only has an effect if compiled with cURL.
-curl_timeout (cURL timeout) int 5000
+[**Graphics]
+
+# Path to shader directory. If no path is defined, default location will be used.
+shader_path (Shader path) path
+
+# The rendering back-end.
+# A restart is required after changing this.
+# Note: On Android, stick with OGLES1 if unsure! App may fail to start otherwise.
+# On other platforms, OpenGL is recommended.
+# Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)
+video_driver (Video driver) enum opengl opengl,ogles1,ogles2
+
+# Distance in nodes at which transparency depth sorting is enabled
+# Use this to limit the performance impact of transparency depth sorting
+transparency_sorting_distance (Transparency Sorting Distance) int 16 0 128
+
+# Enable vertex buffer objects.
+# This should greatly improve graphics performance.
+enable_vbo (VBO) bool true
+
+# Radius of cloud area stated in number of 64 node cloud squares.
+# Values larger than 26 will start to produce sharp cutoffs at cloud area corners.
+cloud_radius (Cloud radius) int 12 1 62
+
+# Whether node texture animations should be desynchronized per mapblock.
+desynchronize_mapblock_texture_animation (Desynchronize block animation) bool true
+
+# Enables caching of facedir rotated meshes.
+enable_mesh_cache (Mesh cache) bool false
+
+# Delay between mesh updates on the client in ms. Increasing this will slow
+# down the rate of mesh updates, thus reducing jitter on slower clients.
+mesh_generation_interval (Mapblock mesh generation delay) int 0 0 50
+
+# Size of the MapBlock cache of the mesh generator. Increasing this will
+# increase the cache hit %, reducing the data being copied from the main
+# thread, thus reducing jitter.
+meshgen_block_cache_size (Mapblock mesh generator's MapBlock cache size in MB) int 20 0 1000
+
+# True = 256
+# False = 128
+# Usable to make minimap smoother on slower machines.
+minimap_double_scan_height (Minimap scan height) bool true
+
+# Textures on a node may be aligned either to the node or to the world.
+# The former mode suits better things like machines, furniture, etc., while
+# the latter makes stairs and microblocks fit surroundings better.
+# However, as this possibility is new, thus may not be used by older servers,
+# this option allows enforcing it for certain node types. Note though that
+# that is considered EXPERIMENTAL and may not work properly.
+world_aligned_mode (World-aligned textures mode) enum enable disable,enable,force_solid,force_nodebox
+
+# World-aligned textures may be scaled to span several nodes. However,
+# the server may not send the scale you want, especially if you use
+# a specially-designed texture pack; with this option, the client tries
+# to determine the scale automatically basing on the texture size.
+# See also texture_min_size.
+# Warning: This option is EXPERIMENTAL!
+autoscale_mode (Autoscaling mode) enum disable disable,enable,force
+
+[**Font]
+
+font_bold (Font bold by default) bool false
+
+font_italic (Font italic by default) bool false
+
+# Shadow offset (in pixels) of the default font. If 0, then shadow will not be drawn.
+font_shadow (Font shadow) int 1 0 65535
+
+# Opaqueness (alpha) of the shadow behind the default font, between 0 and 255.
+font_shadow_alpha (Font shadow alpha) int 127 0 255
+
+# Font size of the default font where 1 unit = 1 pixel at 96 DPI
+font_size (Font size) int 16 5 72
+
+# For pixel-style fonts that do not scale well, this ensures that font sizes used
+# with this font will always be divisible by this value, in pixels. For instance,
+# a pixel font 16 pixels tall should have this set to 16, so it will only ever be
+# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
+font_size_divisible_by (Font size divisible by) int 1 1
+
+# Path to the default font. Must be a TrueType font.
+# The fallback font will be used if the font cannot be loaded.
+font_path (Regular font path) filepath fonts/Arimo-Regular.ttf
+
+font_path_bold (Bold font path) filepath fonts/Arimo-Bold.ttf
+font_path_italic (Italic font path) filepath fonts/Arimo-Italic.ttf
+font_path_bold_italic (Bold and italic font path) filepath fonts/Arimo-BoldItalic.ttf
+
+# Font size of the monospace font where 1 unit = 1 pixel at 96 DPI
+mono_font_size (Monospace font size) int 16 5 72
+
+# For pixel-style fonts that do not scale well, this ensures that font sizes used
+# with this font will always be divisible by this value, in pixels. For instance,
+# a pixel font 16 pixels tall should have this set to 16, so it will only ever be
+# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
+mono_font_size_divisible_by (Monospace font size divisible by) int 1 1
+
+# Path to the monospace font. Must be a TrueType font.
+# This font is used for e.g. the console and profiler screen.
+mono_font_path (Monospace font path) filepath fonts/Cousine-Regular.ttf
+
+mono_font_path_bold (Bold monospace font path) filepath fonts/Cousine-Bold.ttf
+mono_font_path_italic (Italic monospace font path) filepath fonts/Cousine-Italic.ttf
+mono_font_path_bold_italic (Bold and italic monospace font path) filepath fonts/Cousine-BoldItalic.ttf
+
+# Path of the fallback font. Must be a TrueType font.
+# This font will be used for certain languages or if the default font is unavailable.
+fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf
+
+[**Lighting]
+
+# Gradient of light curve at minimum light level.
+# Controls the contrast of the lowest light levels.
+lighting_alpha (Light curve low gradient) float 0.0 0.0 3.0
+
+# Gradient of light curve at maximum light level.
+# Controls the contrast of the highest light levels.
+lighting_beta (Light curve high gradient) float 1.5 0.0 3.0
+
+# Strength of light curve boost.
+# The 3 'boost' parameters define a range of the light
+# curve that is boosted in brightness.
+lighting_boost (Light curve boost) float 0.2 0.0 0.4
+
+# Center of light curve boost range.
+# Where 0.0 is minimum light level, 1.0 is maximum light level.
+lighting_boost_center (Light curve boost center) float 0.5 0.0 1.0
+
+# Spread of light curve boost range.
+# Controls the width of the range to be boosted.
+# Standard deviation of the light curve boost Gaussian.
+lighting_boost_spread (Light curve boost spread) float 0.2 0.0 0.4
+
+[**Networking]
+
+# Prometheus listener address.
+# If Minetest is compiled with ENABLE_PROMETHEUS option enabled,
+# enable metrics listener for Prometheus on that address.
+# Metrics can be fetched on http://127.0.0.1:30000/metrics
+prometheus_listener_address (Prometheus listener address) string 127.0.0.1:30000
+
+# Maximum size of the out chat queue.
+# 0 to disable queueing and -1 to make the queue size unlimited.
+max_out_chat_queue_size (Maximum size of the out chat queue) int 20 -1 32767
+
+# Timeout for client to remove unused map data from memory, in seconds.
+client_unload_unused_data_timeout (Mapblock unload timeout) float 600.0 0.0
+
+# Maximum number of mapblocks for client to be kept in memory.
+# Set to -1 for unlimited amount.
+client_mapblock_limit (Mapblock limit) int 7500 -1 2147483647
+
+# Whether to show the client debug info (has the same effect as hitting F5).
+show_debug (Show debug info) bool false
+
+# Maximum number of blocks that are simultaneously sent per client.
+# The maximum total count is calculated dynamically:
+# max_total = ceil((#clients + max_users) * per_client / 4)
+max_simultaneous_block_sends_per_client (Maximum simultaneous block sends per client) int 40 1 4294967295
+
+# To reduce lag, block transfers are slowed down when a player is building something.
+# This determines how long they are slowed down after placing or removing a node.
+full_block_send_enable_min_time_from_building (Delay in sending blocks after building) float 2.0 0.0
+
+# Maximum number of packets sent per send step, if you have a slow connection
+# try reducing it, but don't reduce it to a number below double of targeted
+# client number.
+max_packets_per_iteration (Max. packets per iteration) int 1024 1 65535
+
+# Compression level to use when sending mapblocks to the client.
+# -1 - use default compression level
+# 0 - least compression, fastest
+# 9 - best compression, slowest
+map_compression_level_net (Map Compression Level for Network Transfer) int -1 -1 9
+
+[**Server]
+
+# Format of player chat messages. The following strings are valid placeholders:
+# @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 0.0
+
+# A message to be displayed to all clients when the server shuts down.
+kick_msg_shutdown (Shutdown message) string Server shutting down.
+
+# A message to be displayed to all clients when the server crashes.
+kick_msg_crash (Crash message) string This server has experienced an internal error. You will now be disconnected.
+
+# Whether to ask clients to reconnect after a (Lua) crash.
+# Set this to true if your server is set up to restart automatically.
+ask_reconnect_on_crash (Ask to reconnect after crash) bool false
+
+[**Server/Env Performance]
+
+# Length of a server tick and the interval at which objects are generally updated over
+# network, stated in seconds.
+dedicated_server_step (Dedicated server step) float 0.09 0.0
+
+# Whether players are shown to clients without any range limit.
+# Deprecated, use the setting player_transfer_distance instead.
+unlimited_player_transfer_distance (Unlimited player transfer distance) bool true
+
+# Defines the maximal player transfer distance in blocks (0 = unlimited).
+player_transfer_distance (Player transfer distance) int 0 0 65535
+
+# From how far clients know about objects, stated in mapblocks (16 nodes).
+#
+# Setting this larger than active_block_range will also cause the server
+# to maintain active objects up to this distance in the direction the
+# player is looking. (This can avoid mobs suddenly disappearing from view)
+active_object_send_range_blocks (Active object send range) int 8 1 65535
+
+# The radius of the volume of blocks around every player that is subject to the
+# active block stuff, stated in mapblocks (16 nodes).
+# In active blocks objects are loaded and ABMs run.
+# This is also the minimum range in which active objects (mobs) are maintained.
+# This should be configured together with active_object_send_range_blocks.
+active_block_range (Active block range) int 4 1 65535
+
+# From how far blocks are sent to clients, stated in mapblocks (16 nodes).
+max_block_send_distance (Max block send distance) int 12 1 65535
+
+# Maximum number of forceloaded mapblocks.
+max_forceloaded_blocks (Maximum forceloaded blocks) int 16 0
+
+# Interval of sending time of day to clients, stated in seconds.
+time_send_interval (Time send interval) float 5.0 0.001
+
+# Interval of saving important changes in the world, stated in seconds.
+server_map_save_interval (Map save interval) float 5.3 0.001
+
+# How long the server will wait before unloading unused mapblocks, stated in seconds.
+# Higher value is smoother, but will use more RAM.
+server_unload_unused_data_timeout (Unload unused server data) int 29 0 4294967295
+
+# Maximum number of statically stored objects in a block.
+max_objects_per_block (Maximum objects per block) int 256 1 65535
+
+# Length of time between active block management cycles, stated in seconds.
+active_block_mgmt_interval (Active block management interval) float 2.0 0.0
+
+# Length of time between Active Block Modifier (ABM) execution cycles, stated in seconds.
+abm_interval (ABM interval) float 1.0 0.0
+
+# The time budget allowed for ABMs to execute on each step
+# (as a fraction of the ABM Interval)
+abm_time_budget (ABM time budget) float 0.2 0.1 0.9
+
+# Length of time between NodeTimer execution cycles, stated in seconds.
+nodetimer_interval (NodeTimer interval) float 0.2 0.0
+
+# Max liquids processed per step.
+liquid_loop_max (Liquid loop max) int 100000 1 4294967295
+
+# The time (in seconds) that the liquids queue may grow beyond processing
+# capacity until an attempt is made to decrease its size by dumping old queue
+# items. A value of 0 disables the functionality.
+liquid_queue_purge_time (Liquid queue purge time) int 0 0 65535
+
+# Liquid update interval in seconds.
+liquid_update (Liquid update tick) float 1.0 0.001
+
+# At this distance the server will aggressively optimize which blocks are sent to
+# clients.
+# Small values potentially improve performance a lot, at the expense of visible
+# rendering glitches (some blocks will not be rendered under water and in caves,
+# as well as sometimes on land).
+# Setting this to a value greater than max_block_send_distance disables this
+# optimization.
+# Stated in mapblocks (16 nodes).
+block_send_optimize_distance (Block send optimize distance) int 4 2 32767
+
+# If enabled the server will perform map block occlusion culling based on
+# on the eye position of the player. This can reduce the number of blocks
+# sent to the client 50-80%. The client will not longer receive most invisible
+# so that the utility of noclip mode is reduced.
+server_side_occlusion_culling (Server side occlusion culling) bool true
+
+[**Mapgen]
+
+# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
+# WARNING!: There is no benefit, and there are several dangers, in
+# increasing this value above 5.
+# Reducing this value increases cave and dungeon density.
+# Altering this value is for special usage, leaving it unchanged is
+# recommended.
+chunksize (Chunk size) int 5 1 10
+
+# Dump the mapgen debug information.
+enable_mapgen_debug_info (Mapgen debug) bool false
+
+# Maximum number of blocks that can be queued for loading.
+emergequeue_limit_total (Absolute limit of queued blocks to emerge) int 1024 1 1000000
+
+# Maximum number of blocks to be queued that are to be loaded from file.
+# This limit is enforced per player.
+emergequeue_limit_diskonly (Per-player limit of queued blocks load from disk) int 128 1 1000000
+
+# Maximum number of blocks to be queued that are to be generated.
+# This limit is enforced per player.
+emergequeue_limit_generate (Per-player limit of queued blocks to generate) int 128 1 1000000
+
+# Number of emerge threads to use.
+# Value 0:
+# - Automatic selection. The number of emerge threads will be
+# - 'number of processors - 2', with a lower limit of 1.
+# Any other value:
+# - Specifies the number of emerge threads, with a lower limit of 1.
+# WARNING: Increasing the number of emerge threads increases engine mapgen
+# speed, but this may harm game performance by interfering with other
+# processes, especially in singleplayer and/or when running Lua code in
+# 'on_generated'. For many users the optimum setting may be '1'.
+num_emerge_threads (Number of emerge threads) int 1 0 32767
+
+[**cURL]
+
+# Maximum time an interactive request (e.g. server list fetch) may take, stated in milliseconds.
+curl_timeout (cURL interactive timeout) int 20000 100 2147483647
# Limits number of parallel HTTP requests. Affects:
# - Media fetch if server uses remote_media setting.
# - Serverlist download and server announcement.
# - Downloads performed by main menu (e.g. mod manager).
# Only has an effect if compiled with cURL.
-curl_parallel_limit (cURL parallel limit) int 8
+curl_parallel_limit (cURL parallel limit) int 8 1 2147483647
-# Maximum time in ms a file download (e.g. a mod download) may take.
-curl_file_download_timeout (cURL file download timeout) int 300000
+# Maximum time a file download (e.g. a mod download) may take, stated in milliseconds.
+curl_file_download_timeout (cURL file download timeout) int 300000 100 2147483647
-# Makes DirectX work with LuaJIT. Disable if it causes troubles.
-high_precision_fpu (High-precision FPU) bool true
+[**Misc]
-# Replaces the default main menu with a custom one.
-main_menu_script (Main menu script) string
+# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.
+screen_dpi (DPI) int 72 1
-main_menu_game_mgr (Main menu game manager) int 0
+# Adjust the detected display density, used for scaling UI elements.
+display_density_factor (Display Density Scaling Factor) float 1 0.5 5.0
-main_menu_mod_mgr (Main menu mod manager) int 1
+# Windows systems only: Start Minetest with the command line window in the background.
+# Contains the same information as the file debug.txt (default name).
+enable_console (Enable console window) bool false
+
+# Number of extra blocks that can be loaded by /clearobjects at once.
+# This is a trade-off between SQLite transaction overhead and
+# memory consumption (4096=100MB, as a rule of thumb).
+max_clearobjects_extra_loaded_blocks (Max. clearobjects extra blocks) int 4096 0 4294967295
+
+# World directory (everything in the world is stored here).
+# Not needed if starting from the main menu.
+map-dir (Map directory) path
+
+# See https://www.sqlite.org/pragma.html#pragma_synchronous
+sqlite_synchronous (Synchronous SQLite) enum 2 0,1,2
+
+# Compression level to use when saving mapblocks to disk.
+# -1 - use default compression level
+# 0 - least compression, fastest
+# 9 - best compression, slowest
+map_compression_level_disk (Map Compression Level for Disk Storage) int -1 -1 9
+
+# Enable usage of remote media server (if provided by server).
+# Remote servers offer a significantly faster way to download media (e.g. textures)
+# when connecting to the server.
+enable_remote_media_server (Connect to external media server) bool true
-modstore_download_url (Modstore download URL) string https://forum.minetest.net/media/
+# File in client/serverlist/ that contains your favorite servers displayed in the
+# Multiplayer Tab.
+serverlist_file (Serverlist file) string favoriteservers.json
-modstore_listmods_url (Modstore mods list URL) string https://forum.minetest.net/mmdb/mods/
-modstore_details_url (Modstore details URL) string https://forum.minetest.net/mmdb/mod/*/
+[*Gamepads]
-# Print the engine's profiling data in regular intervals (in seconds). 0 = disable. Useful for developers.
-profiler_print_interval (Engine profiling data print interval) int 0
+# Enable joysticks. Requires a restart to take effect
+enable_joysticks (Enable joysticks) bool false
+
+# The identifier of the joystick to use
+joystick_id (Joystick ID) int 0 0 255
+
+# The type of joystick
+joystick_type (Joystick type) enum auto auto,generic,xbox,dragonrise_gamecube
+
+# The time in seconds it takes between repeated events
+# when holding down a joystick button combination.
+repeat_joystick_button_time (Joystick button repetition interval) float 0.17 0.001
+
+# The dead zone of the joystick
+joystick_deadzone (Joystick dead zone) int 2048 0 65535
+
+# The sensitivity of the joystick axes for moving the
+# in-game view frustum around.
+joystick_frustum_sensitivity (Joystick frustum sensitivity) float 170.0 0.001
+
+
+[*Temporary Settings]
+
+# Path to texture directory. All textures are first searched from here.
+texture_path (Texture path) path
+
+# Enables minimap.
+enable_minimap (Minimap) bool true
+
+# Shape of the minimap. Enabled = round, disabled = square.
+minimap_shape_round (Round minimap) bool true
+
+# Address to connect to.
+# Leave this blank to start a local server.
+# Note that the address field in the main menu overrides this setting.
+address (Server address) string
+
+# Port to connect to (UDP).
+# Note that the port field in the main menu overrides this setting.
+remote_port (Remote port) int 30000 1 65535
+
+# Default game when creating a new world.
+# This will be overridden when creating a world from the main menu.
+default_game (Default game) string minetest
+
+# Enable players getting damage and dying.
+enable_damage (Damage) bool false
+
+# Enable creative mode for all players
+creative_mode (Creative) bool false
+
+# Whether to allow players to damage and kill each other.
+enable_pvp (Player versus player) bool true
+
+# Player is able to fly without being affected by gravity.
+# This requires the "fly" privilege on the server.
+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 "Aux1" key).
+# This requires the "fast" privilege on the server.
+fast_move (Fast movement) bool false
+
+# If enabled together with fly mode, player is able to fly through solid nodes.
+# This requires the "noclip" privilege on the server.
+noclip (Noclip) bool false
+
+# Continuous forward movement, toggled by autoforward key.
+# Press the autoforward key again or the backwards movement to disable.
+continuous_forward (Continuous forward) bool false
+
+# Formspec default background opacity (between 0 and 255).
+formspec_default_bg_opacity (Formspec Default Background Opacity) int 140 0 255
+
+# Formspec default background color (R,G,B).
+formspec_default_bg_color (Formspec Default Background Color) string (0,0,0)
+
+# Whether to show technical names.
+# Affects mods and texture packs in the Content and Select Mods menus, as well as
+# setting names in All Settings.
+# Controlled by the checkbox in the "All settings" menu.
+show_technical_names (Show technical names) bool false
+
+# Enables the sound system.
+# If disabled, this completely disables all sounds everywhere and the in-game
+# sound controls will be non-functional.
+# Changing this setting requires a restart.
+enable_sound (Sound) bool true
+
+# Key for moving the player forward.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_forward (Forward key) key KEY_KEY_W
+
+# Key for moving the player backward.
+# Will also disable autoforward, when active.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_backward (Backward key) key KEY_KEY_S
+
+# Key for moving the player left.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_left (Left key) key KEY_KEY_A
+
+# Key for moving the player right.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_right (Right key) key KEY_KEY_D
+
+# Key for jumping.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_jump (Jump key) key KEY_SPACE
+
+# Key for sneaking.
+# Also used for climbing down and descending in water if aux1_descends is disabled.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_sneak (Sneak key) key KEY_LSHIFT
+
+# Key for digging.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_dig (Dig key) key KEY_LBUTTON
+
+# Key for placing.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_place (Place key) key KEY_RBUTTON
+
+# Key for opening the inventory.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+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_aux1 (Aux1 key) key KEY_KEY_E
+
+# Key for opening the chat window.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_chat (Chat key) key KEY_KEY_T
+
+# Key for opening the chat window to type commands.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_cmd (Command key) key /
+
+# Key for opening the chat window to type local commands.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_cmd_local (Command key) key .
+
+# Key for toggling unlimited view range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_rangeselect (Range select key) key KEY_KEY_R
+
+# Key for toggling flying.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_freemove (Fly key) key KEY_KEY_K
+
+# Key for toggling pitch move mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_pitchmove (Pitch move key) key KEY_KEY_P
+
+# Key for toggling fast mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_fastmove (Fast key) key KEY_KEY_J
+
+# Key for toggling noclip mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_noclip (Noclip key) key KEY_KEY_H
+
+# Key for selecting the next item in the hotbar.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_hotbar_next (Hotbar next key) key KEY_KEY_N
+
+# Key for selecting the previous item in the hotbar.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_hotbar_previous (Hotbar previous key) key KEY_KEY_B
+
+# Key for muting the game.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_mute (Mute key) key KEY_KEY_M
+
+# Key for increasing the volume.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_increase_volume (Inc. volume key) key
+
+# Key for decreasing the volume.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_decrease_volume (Dec. volume key) key
+
+# Key for toggling autoforward.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_autoforward (Automatic forward key) key
+
+# Key for toggling cinematic mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_cinematic (Cinematic mode key) key
+
+# Key for toggling display of minimap.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_minimap (Minimap key) key KEY_KEY_V
+
+# Key for taking screenshots.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_screenshot (Screenshot) key KEY_F12
+
+# Key for dropping the currently selected item.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_drop (Drop item key) key KEY_KEY_Q
+
+# Key to use view zoom when possible.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_zoom (View zoom key) key KEY_KEY_Z
+
+# Key for selecting the first hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot1 (Hotbar slot 1 key) key KEY_KEY_1
+
+# Key for selecting the second hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot2 (Hotbar slot 2 key) key KEY_KEY_2
+
+# Key for selecting the third hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot3 (Hotbar slot 3 key) key KEY_KEY_3
+
+# Key for selecting the fourth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot4 (Hotbar slot 4 key) key KEY_KEY_4
+
+# Key for selecting the fifth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot5 (Hotbar slot 5 key) key KEY_KEY_5
+
+# Key for selecting the sixth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot6 (Hotbar slot 6 key) key KEY_KEY_6
+
+# Key for selecting the seventh hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot7 (Hotbar slot 7 key) key KEY_KEY_7
+
+# Key for selecting the eighth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot8 (Hotbar slot 8 key) key KEY_KEY_8
+
+# Key for selecting the ninth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot9 (Hotbar slot 9 key) key KEY_KEY_9
+
+# Key for selecting the tenth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot10 (Hotbar slot 10 key) key KEY_KEY_0
+
+# Key for selecting the 11th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot11 (Hotbar slot 11 key) key
+
+# Key for selecting the 12th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot12 (Hotbar slot 12 key) key
+
+# Key for selecting the 13th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot13 (Hotbar slot 13 key) key
+
+# Key for selecting the 14th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot14 (Hotbar slot 14 key) key
+
+# Key for selecting the 15th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot15 (Hotbar slot 15 key) key
+
+# Key for selecting the 16th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot16 (Hotbar slot 16 key) key
+
+# Key for selecting the 17th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot17 (Hotbar slot 17 key) key
+
+# Key for selecting the 18th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot18 (Hotbar slot 18 key) key
+
+# Key for selecting the 19th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot19 (Hotbar slot 19 key) key
+
+# Key for selecting the 20th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot20 (Hotbar slot 20 key) key
+
+# Key for selecting the 21st hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot21 (Hotbar slot 21 key) key
+
+# Key for selecting the 22nd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot22 (Hotbar slot 22 key) key
+
+# Key for selecting the 23rd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot23 (Hotbar slot 23 key) key
+
+# Key for selecting the 24th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot24 (Hotbar slot 24 key) key
+
+# Key for selecting the 25th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot25 (Hotbar slot 25 key) key
+
+# Key for selecting the 26th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot26 (Hotbar slot 26 key) key
+
+# Key for selecting the 27th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot27 (Hotbar slot 27 key) key
+
+# Key for selecting the 28th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot28 (Hotbar slot 28 key) key
+
+# Key for selecting the 29th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot29 (Hotbar slot 29 key) key
+
+# Key for selecting the 30th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot30 (Hotbar slot 30 key) key
+
+# Key for selecting the 31st hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot31 (Hotbar slot 31 key) key
+
+# Key for selecting the 32nd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_slot32 (Hotbar slot 32 key) key
+
+# Key for toggling the display of the HUD.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_hud (HUD toggle key) key KEY_F1
+
+# Key for toggling the display of chat.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_chat (Chat toggle key) key KEY_F2
+
+# Key for toggling the display of the large chat console.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_console (Large chat console key) key KEY_F10
+
+# Key for toggling the display of fog.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_force_fog_off (Fog toggle key) key KEY_F3
+
+# Key for toggling the camera update. Only used for development
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_update_camera (Camera update toggle key) key
+
+# Key for toggling the display of debug info.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_debug (Debug info toggle key) key KEY_F5
+
+# Key for toggling the display of the profiler. Used for development.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_toggle_profiler (Profiler toggle key) key KEY_F6
+
+# Key for switching between first- and third-person camera.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_camera_mode (Toggle camera mode key) key KEY_KEY_C
+
+# Key for increasing the viewing range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_increase_viewing_range_min (View range increase key) key +
+
+# Key for decreasing the viewing range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+keymap_decrease_viewing_range_min (View range decrease key) key -
diff --git a/client/shaders/3d_interlaced_merge/opengl_fragment.glsl b/client/shaders/3d_interlaced_merge/opengl_fragment.glsl
new file mode 100644
index 000000000..6d3ae5093
--- /dev/null
+++ b/client/shaders/3d_interlaced_merge/opengl_fragment.glsl
@@ -0,0 +1,23 @@
+uniform sampler2D baseTexture;
+uniform sampler2D normalTexture;
+uniform sampler2D textureFlags;
+
+#define leftImage baseTexture
+#define rightImage normalTexture
+#define maskImage textureFlags
+
+varying mediump vec4 varTexCoord;
+
+void main(void)
+{
+ vec2 uv = varTexCoord.st;
+ vec4 left = texture2D(leftImage, uv).rgba;
+ vec4 right = texture2D(rightImage, uv).rgba;
+ vec4 mask = texture2D(maskImage, uv).rgba;
+ vec4 color;
+ if (mask.r > 0.5)
+ color = right;
+ else
+ color = left;
+ gl_FragColor = color;
+}
diff --git a/client/shaders/3d_interlaced_merge/opengl_vertex.glsl b/client/shaders/3d_interlaced_merge/opengl_vertex.glsl
new file mode 100644
index 000000000..224b7d183
--- /dev/null
+++ b/client/shaders/3d_interlaced_merge/opengl_vertex.glsl
@@ -0,0 +1,7 @@
+varying mediump vec4 varTexCoord;
+
+void main(void)
+{
+ varTexCoord = inTexCoord0;
+ gl_Position = inVertexPosition;
+}
diff --git a/client/shaders/default_shader/opengl_fragment.glsl b/client/shaders/default_shader/opengl_fragment.glsl
index 925ab6e1d..5018ac6ea 100644
--- a/client/shaders/default_shader/opengl_fragment.glsl
+++ b/client/shaders/default_shader/opengl_fragment.glsl
@@ -1,4 +1,6 @@
+varying lowp vec4 varColor;
+
void main(void)
{
- gl_FragColor = gl_Color;
+ gl_FragColor = varColor;
}
diff --git a/client/shaders/default_shader/opengl_vertex.glsl b/client/shaders/default_shader/opengl_vertex.glsl
index d0b16c8b0..a908ac953 100644
--- a/client/shaders/default_shader/opengl_vertex.glsl
+++ b/client/shaders/default_shader/opengl_vertex.glsl
@@ -1,9 +1,11 @@
-uniform mat4 mWorldViewProj;
+varying lowp vec4 varColor;
void main(void)
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_Position = mWorldViewProj * gl_Vertex;
-
- gl_FrontColor = gl_BackColor = gl_Color;
+ gl_Position = mWorldViewProj * inVertexPosition;
+#ifdef GL_ES
+ varColor = inVertexColor.bgra;
+#else
+ varColor = inVertexColor;
+#endif
}
diff --git a/client/shaders/minimap_shader/opengl_fragment.glsl b/client/shaders/minimap_shader/opengl_fragment.glsl
index fa4f9cb1a..cef359e8a 100644
--- a/client/shaders/minimap_shader/opengl_fragment.glsl
+++ b/client/shaders/minimap_shader/opengl_fragment.glsl
@@ -2,9 +2,12 @@ uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform vec3 yawVec;
+varying lowp vec4 varColor;
+varying mediump vec2 varTexCoord;
+
void main (void)
{
- vec2 uv = gl_TexCoord[0].st;
+ vec2 uv = varTexCoord.st;
//texture sampling rate
const float step = 1.0 / 256.0;
@@ -27,6 +30,6 @@ void main (void)
vec3 color = (1.1 * diffuse + 0.05 * height + 0.5 * specular) * base.rgb;
vec4 col = vec4(color.rgb, base.a);
- col *= gl_Color;
+ col *= varColor;
gl_FragColor = vec4(col.rgb, base.a);
}
diff --git a/client/shaders/minimap_shader/opengl_vertex.glsl b/client/shaders/minimap_shader/opengl_vertex.glsl
index 88f9356d5..b23d27181 100644
--- a/client/shaders/minimap_shader/opengl_vertex.glsl
+++ b/client/shaders/minimap_shader/opengl_vertex.glsl
@@ -1,9 +1,15 @@
-uniform mat4 mWorldViewProj;
uniform mat4 mWorld;
+varying lowp vec4 varColor;
+varying mediump vec2 varTexCoord;
+
void main(void)
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_Position = mWorldViewProj * gl_Vertex;
- gl_FrontColor = gl_BackColor = gl_Color;
+ varTexCoord = inTexCoord0.st;
+ gl_Position = mWorldViewProj * inVertexPosition;
+#ifdef GL_ES
+ varColor = inVertexColor.bgra;
+#else
+ varColor = inVertexColor;
+#endif
}
diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl
index 4d9ce1c12..c4b947e72 100644
--- a/client/shaders/nodes_shader/opengl_fragment.glsl
+++ b/client/shaders/nodes_shader/opengl_fragment.glsl
@@ -1,26 +1,365 @@
uniform sampler2D baseTexture;
-uniform sampler2D normalTexture;
-uniform sampler2D textureFlags;
+uniform vec3 dayLight;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
+// The cameraOffset is the current center of the visible world.
+uniform vec3 cameraOffset;
+uniform float animationTimer;
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ // shadow texture
+ uniform sampler2D ShadowMapSampler;
+ // shadow uniforms
+ uniform vec3 v_LightDirection;
+ uniform float f_textureresolution;
+ uniform mat4 m_ShadowViewProj;
+ uniform float f_shadowfar;
+ uniform float f_shadow_strength;
+ uniform vec4 CameraPos;
+ uniform float xyPerspectiveBias0;
+ uniform float xyPerspectiveBias1;
+
+ varying float adj_shadow_strength;
+ varying float cosLight;
+ varying float f_normal_length;
+ varying vec3 shadow_position;
+ varying float perspective_factor;
+#endif
+
+
+varying vec3 vNormal;
varying vec3 vPosition;
+// World position in the visible world (i.e. relative to the cameraOffset.)
+// This can be used for many shader effects without loss of precision.
+// If the absolute position is required it can be calculated with
+// cameraOffset + worldPosition (for large coordinates the limits of float
+// precision must be considered).
varying vec3 worldPosition;
-varying float area_enable_parallax;
-
+varying lowp vec4 varColor;
+#ifdef GL_ES
+varying mediump vec2 varTexCoord;
+#else
+centroid varying vec2 varTexCoord;
+#endif
varying vec3 eyeVec;
-varying vec3 tsEyeVec;
-varying vec3 lightVec;
-varying vec3 tsLightVec;
+varying float nightRatio;
+
+const float fogStart = FOG_START;
+const float fogShadingParameter = 1.0 / ( 1.0 - fogStart);
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+
+// assuming near is always 1.0
+float getLinearDepth()
+{
+ return 2.0 * f_shadowfar / (f_shadowfar + 1.0 - (2.0 * gl_FragCoord.z - 1.0) * (f_shadowfar - 1.0));
+}
+
+vec3 getLightSpacePosition()
+{
+ return shadow_position * 0.5 + 0.5;
+}
+// custom smoothstep implementation because it's not defined in glsl1.2
+// https://docs.gl/sl4/smoothstep
+float mtsmoothstep(in float edge0, in float edge1, in float x)
+{
+ float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
+ return t * t * (3.0 - 2.0 * t);
+}
+
+#ifdef COLORED_SHADOWS
+
+// c_precision of 128 fits within 7 base-10 digits
+const float c_precision = 128.0;
+const float c_precisionp1 = c_precision + 1.0;
-bool normalTexturePresent = false;
+float packColor(vec3 color)
+{
+ return floor(color.b * c_precision + 0.5)
+ + floor(color.g * c_precision + 0.5) * c_precisionp1
+ + floor(color.r * c_precision + 0.5) * c_precisionp1 * c_precisionp1;
+}
+
+vec3 unpackColor(float value)
+{
+ vec3 color;
+ color.b = mod(value, c_precisionp1) / c_precision;
+ color.g = mod(floor(value / c_precisionp1), c_precisionp1) / c_precision;
+ color.r = floor(value / (c_precisionp1 * c_precisionp1)) / c_precision;
+ return color;
+}
+
+vec4 getHardShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ vec4 texDepth = texture2D(shadowsampler, smTexCoord.xy).rgba;
-const float e = 2.718281828459;
-const float BS = 10.0;
+ float visibility = step(0.0, realDistance - texDepth.r);
+ vec4 result = vec4(visibility, vec3(0.0,0.0,0.0));//unpackColor(texDepth.g));
+ if (visibility < 0.1) {
+ visibility = step(0.0, realDistance - texDepth.b);
+ result = vec4(visibility, unpackColor(texDepth.a));
+ }
+ return result;
+}
-#ifdef ENABLE_TONE_MAPPING
+#else
+
+float getHardShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float texDepth = texture2D(shadowsampler, smTexCoord.xy).r;
+ float visibility = step(0.0, realDistance - texDepth);
+ return visibility;
+}
+
+#endif
+
+
+#if SHADOW_FILTER == 2
+ #define PCFBOUND 2.0 // 5x5
+ #define PCFSAMPLES 25
+#elif SHADOW_FILTER == 1
+ #define PCFBOUND 1.0 // 3x3
+ #define PCFSAMPLES 9
+#else
+ #define PCFBOUND 0.0
+ #define PCFSAMPLES 1
+#endif
+
+#ifdef COLORED_SHADOWS
+float getHardShadowDepth(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ vec4 texDepth = texture2D(shadowsampler, smTexCoord.xy);
+ float depth = max(realDistance - texDepth.r, realDistance - texDepth.b);
+ return depth;
+}
+#else
+float getHardShadowDepth(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float texDepth = texture2D(shadowsampler, smTexCoord.xy).r;
+ float depth = realDistance - texDepth;
+ return depth;
+}
+#endif
+
+#define BASEFILTERRADIUS 1.0
+
+float getPenumbraRadius(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ // Return fast if sharp shadows are requested
+ if (PCFBOUND == 0.0 || SOFTSHADOWRADIUS <= 0.0)
+ return 0.0;
+
+ vec2 clampedpos;
+ float y, x;
+ float depth = getHardShadowDepth(shadowsampler, smTexCoord.xy, realDistance);
+ // A factor from 0 to 1 to reduce blurring of short shadows
+ float sharpness_factor = 1.0;
+ // conversion factor from shadow depth to blur radius
+ float depth_to_blur = f_shadowfar / SOFTSHADOWRADIUS / xyPerspectiveBias0;
+ if (depth > 0.0 && f_normal_length > 0.0)
+ // 5 is empirical factor that controls how fast shadow loses sharpness
+ sharpness_factor = clamp(5 * depth * depth_to_blur, 0.0, 1.0);
+ depth = 0.0;
+
+ float world_to_texture = xyPerspectiveBias1 / perspective_factor / perspective_factor
+ * f_textureresolution / 2.0 / f_shadowfar;
+ float world_radius = 0.2; // shadow blur radius in world float coordinates, e.g. 0.2 = 0.02 of one node
+
+ return max(BASEFILTERRADIUS * f_textureresolution / 4096.0, sharpness_factor * world_radius * world_to_texture * SOFTSHADOWRADIUS);
+}
+
+#ifdef POISSON_FILTER
+const vec2[64] poissonDisk = vec2[64](
+ vec2(0.170019, -0.040254),
+ vec2(-0.299417, 0.791925),
+ vec2(0.645680, 0.493210),
+ vec2(-0.651784, 0.717887),
+ vec2(0.421003, 0.027070),
+ vec2(-0.817194, -0.271096),
+ vec2(-0.705374, -0.668203),
+ vec2(0.977050, -0.108615),
+ vec2(0.063326, 0.142369),
+ vec2(0.203528, 0.214331),
+ vec2(-0.667531, 0.326090),
+ vec2(-0.098422, -0.295755),
+ vec2(-0.885922, 0.215369),
+ vec2(0.566637, 0.605213),
+ vec2(0.039766, -0.396100),
+ vec2(0.751946, 0.453352),
+ vec2(0.078707, -0.715323),
+ vec2(-0.075838, -0.529344),
+ vec2(0.724479, -0.580798),
+ vec2(0.222999, -0.215125),
+ vec2(-0.467574, -0.405438),
+ vec2(-0.248268, -0.814753),
+ vec2(0.354411, -0.887570),
+ vec2(0.175817, 0.382366),
+ vec2(0.487472, -0.063082),
+ vec2(0.355476, 0.025357),
+ vec2(-0.084078, 0.898312),
+ vec2(0.488876, -0.783441),
+ vec2(0.470016, 0.217933),
+ vec2(-0.696890, -0.549791),
+ vec2(-0.149693, 0.605762),
+ vec2(0.034211, 0.979980),
+ vec2(0.503098, -0.308878),
+ vec2(-0.016205, -0.872921),
+ vec2(0.385784, -0.393902),
+ vec2(-0.146886, -0.859249),
+ vec2(0.643361, 0.164098),
+ vec2(0.634388, -0.049471),
+ vec2(-0.688894, 0.007843),
+ vec2(0.464034, -0.188818),
+ vec2(-0.440840, 0.137486),
+ vec2(0.364483, 0.511704),
+ vec2(0.034028, 0.325968),
+ vec2(0.099094, -0.308023),
+ vec2(0.693960, -0.366253),
+ vec2(0.678884, -0.204688),
+ vec2(0.001801, 0.780328),
+ vec2(0.145177, -0.898984),
+ vec2(0.062655, -0.611866),
+ vec2(0.315226, -0.604297),
+ vec2(-0.780145, 0.486251),
+ vec2(-0.371868, 0.882138),
+ vec2(0.200476, 0.494430),
+ vec2(-0.494552, -0.711051),
+ vec2(0.612476, 0.705252),
+ vec2(-0.578845, -0.768792),
+ vec2(-0.772454, -0.090976),
+ vec2(0.504440, 0.372295),
+ vec2(0.155736, 0.065157),
+ vec2(0.391522, 0.849605),
+ vec2(-0.620106, -0.328104),
+ vec2(0.789239, -0.419965),
+ vec2(-0.545396, 0.538133),
+ vec2(-0.178564, -0.596057)
+);
+
+#ifdef COLORED_SHADOWS
+
+vec4 getShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadowColor(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ vec4 visibility = vec4(0.0);
+ float scale_factor = radius / f_textureresolution;
+
+ int samples = (1 + 1 * int(SOFTSHADOWRADIUS > 1.0)) * PCFSAMPLES; // scale max samples for the soft shadows
+ samples = int(clamp(pow(4.0 * radius + 1.0, 2.0), 1.0, float(samples)));
+ int init_offset = int(floor(mod(((smTexCoord.x * 34.0) + 1.0) * smTexCoord.y, 64.0-samples)));
+ int end_offset = int(samples) + init_offset;
+
+ for (int x = init_offset; x < end_offset; x++) {
+ clampedpos = poissonDisk[x] * scale_factor + smTexCoord.xy;
+ visibility += getHardShadowColor(shadowsampler, clampedpos.xy, realDistance);
+ }
+
+ return visibility / samples;
+}
+
+#else
+
+float getShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadow(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ float visibility = 0.0;
+ float scale_factor = radius / f_textureresolution;
+
+ int samples = (1 + 1 * int(SOFTSHADOWRADIUS > 1.0)) * PCFSAMPLES; // scale max samples for the soft shadows
+ samples = int(clamp(pow(4.0 * radius + 1.0, 2.0), 1.0, float(samples)));
+ int init_offset = int(floor(mod(((smTexCoord.x * 34.0) + 1.0) * smTexCoord.y, 64.0-samples)));
+ int end_offset = int(samples) + init_offset;
+
+ for (int x = init_offset; x < end_offset; x++) {
+ clampedpos = poissonDisk[x] * scale_factor + smTexCoord.xy;
+ visibility += getHardShadow(shadowsampler, clampedpos.xy, realDistance);
+ }
+
+ return visibility / samples;
+}
+
+#endif
+
+#else
+/* poisson filter disabled */
+
+#ifdef COLORED_SHADOWS
+
+vec4 getShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadowColor(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ vec4 visibility = vec4(0.0);
+ float x, y;
+ float bound = (1 + 0.5 * int(SOFTSHADOWRADIUS > 1.0)) * PCFBOUND; // scale max bound for soft shadows
+ bound = clamp(0.5 * (4.0 * radius - 1.0), 0.5, bound);
+ float scale_factor = radius / bound / f_textureresolution;
+ float n = 0.0;
+
+ // basic PCF filter
+ for (y = -bound; y <= bound; y += 1.0)
+ for (x = -bound; x <= bound; x += 1.0) {
+ clampedpos = vec2(x,y) * scale_factor + smTexCoord.xy;
+ visibility += getHardShadowColor(shadowsampler, clampedpos.xy, realDistance);
+ n += 1.0;
+ }
+
+ return visibility / max(n, 1.0);
+}
+
+#else
+float getShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadow(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ float visibility = 0.0;
+ float x, y;
+ float bound = (1 + 0.5 * int(SOFTSHADOWRADIUS > 1.0)) * PCFBOUND; // scale max bound for soft shadows
+ bound = clamp(0.5 * (4.0 * radius - 1.0), 0.5, bound);
+ float scale_factor = radius / bound / f_textureresolution;
+ float n = 0.0;
+
+ // basic PCF filter
+ for (y = -bound; y <= bound; y += 1.0)
+ for (x = -bound; x <= bound; x += 1.0) {
+ clampedpos = vec2(x,y) * scale_factor + smTexCoord.xy;
+ visibility += getHardShadow(shadowsampler, clampedpos.xy, realDistance);
+ n += 1.0;
+ }
+
+ return visibility / max(n, 1.0);
+}
+
+#endif
+
+#endif
+#endif
+
+#if ENABLE_TONE_MAPPING
/* Hable's UC2 Tone mapping parameters
A = 0.22;
@@ -35,7 +374,7 @@ const float BS = 10.0;
vec3 uncharted2Tonemap(vec3 x)
{
- return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03334;
+ return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03333;
}
vec4 applyToneMapping(vec4 color)
@@ -44,7 +383,7 @@ vec4 applyToneMapping(vec4 color)
const float gamma = 1.6;
const float exposureBias = 5.5;
color.rgb = uncharted2Tonemap(exposureBias * color.rgb);
- // Precalculated white_scale from
+ // Precalculated white_scale from
//vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
vec3 whiteScale = vec3(1.036015346);
color.rgb *= whiteScale;
@@ -52,156 +391,101 @@ vec4 applyToneMapping(vec4 color)
}
#endif
-void get_texture_flags()
-{
- vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0));
- if (flags.r > 0.5) {
- normalTexturePresent = true;
- }
-}
-
-float intensity(vec3 color)
-{
- return (color.r + color.g + color.b) / 3.0;
-}
-
-float get_rgb_height(vec2 uv)
-{
- return intensity(texture2D(baseTexture, uv).rgb);
-}
-vec4 get_normal_map(vec2 uv)
-{
- vec4 bump = texture2D(normalTexture, uv).rgba;
- bump.xyz = normalize(bump.xyz * 2.0 - 1.0);
- return bump;
-}
-
-float find_intersection(vec2 dp, vec2 ds)
-{
- float depth = 1.0;
- float best_depth = 0.0;
- float size = 0.0625;
- for (int i = 0; i < 15; i++) {
- depth -= size;
- float h = texture2D(normalTexture, dp + ds * depth).a;
- if (depth <= h) {
- best_depth = depth;
- break;
- }
- }
- depth = best_depth;
- for (int i = 0; i < 4; i++) {
- size *= 0.5;
- float h = texture2D(normalTexture,dp + ds * depth).a;
- if (depth <= h) {
- best_depth = depth;
- depth += size;
- } else {
- depth -= size;
- }
- }
- return best_depth;
-}
-
-float find_intersectionRGB(vec2 dp, vec2 ds)
-{
- const float depth_step = 1.0 / 24.0;
- float depth = 1.0;
- for (int i = 0 ; i < 24 ; i++) {
- float h = get_rgb_height(dp + ds * depth);
- if (h >= depth)
- break;
- depth -= depth_step;
- }
- return depth;
-}
void main(void)
{
vec3 color;
- vec4 bump;
- vec2 uv = gl_TexCoord[0].st;
- bool use_normalmap = false;
- get_texture_flags();
-
-#ifdef ENABLE_PARALLAX_OCCLUSION
- vec2 eyeRay = vec2 (tsEyeVec.x, -tsEyeVec.y);
- const float scale = PARALLAX_OCCLUSION_SCALE / PARALLAX_OCCLUSION_ITERATIONS;
- const float bias = PARALLAX_OCCLUSION_BIAS / PARALLAX_OCCLUSION_ITERATIONS;
-
-#if PARALLAX_OCCLUSION_MODE == 0
- // Parallax occlusion with slope information
- if (normalTexturePresent && area_enable_parallax > 0.0) {
- for (int i = 0; i < PARALLAX_OCCLUSION_ITERATIONS; i++) {
- vec4 normal = texture2D(normalTexture, uv.xy);
- float h = normal.a * scale - bias;
- uv += h * normal.z * eyeRay;
- }
-#endif
+ vec2 uv = varTexCoord.st;
-#if PARALLAX_OCCLUSION_MODE == 1
- // Relief mapping
- if (normalTexturePresent && area_enable_parallax > 0.0) {
- vec2 ds = eyeRay * PARALLAX_OCCLUSION_SCALE;
- float dist = find_intersection(uv, ds);
- uv += dist * ds;
+ vec4 base = texture2D(baseTexture, uv).rgba;
+ // If alpha is zero, we can just discard the pixel. This fixes transparency
+ // on GPUs like GC7000L, where GL_ALPHA_TEST is not implemented in mesa,
+ // and also on GLES 2, where GL_ALPHA_TEST is missing entirely.
+#ifdef USE_DISCARD
+ if (base.a == 0.0)
+ discard;
#endif
- } else if (GENERATE_NORMALMAPS == 1 && area_enable_parallax > 0.0) {
- vec2 ds = eyeRay * PARALLAX_OCCLUSION_SCALE;
- float dist = find_intersectionRGB(uv, ds);
- uv += dist * ds;
- }
+#ifdef USE_DISCARD_REF
+ if (base.a < 0.5)
+ discard;
#endif
-#if USE_NORMALMAPS == 1
- if (normalTexturePresent) {
- bump = get_normal_map(uv);
- use_normalmap = true;
- }
+ color = base.rgb;
+ vec4 col = vec4(color.rgb * varColor.rgb, 1.0);
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ if (f_shadow_strength > 0.0) {
+ float shadow_int = 0.0;
+ vec3 shadow_color = vec3(0.0, 0.0, 0.0);
+ vec3 posLightSpace = getLightSpacePosition();
+
+ float distance_rate = (1.0 - pow(clamp(2.0 * length(posLightSpace.xy - 0.5),0.0,1.0), 10.0));
+ if (max(abs(posLightSpace.x - 0.5), abs(posLightSpace.y - 0.5)) > 0.5)
+ distance_rate = 0.0;
+ float f_adj_shadow_strength = max(adj_shadow_strength-mtsmoothstep(0.9,1.1, posLightSpace.z),0.0);
+
+ if (distance_rate > 1e-7) {
+
+#ifdef COLORED_SHADOWS
+ vec4 visibility;
+ if (cosLight > 0.0 || f_normal_length < 1e-3)
+ visibility = getShadowColor(ShadowMapSampler, posLightSpace.xy, posLightSpace.z);
+ else
+ visibility = vec4(1.0, 0.0, 0.0, 0.0);
+ shadow_int = visibility.r;
+ shadow_color = visibility.gba;
+#else
+ if (cosLight > 0.0 || f_normal_length < 1e-3)
+ shadow_int = getShadow(ShadowMapSampler, posLightSpace.xy, posLightSpace.z);
+ else
+ shadow_int = 1.0;
#endif
+ shadow_int *= distance_rate;
+ shadow_int = clamp(shadow_int, 0.0, 1.0);
- if (GENERATE_NORMALMAPS == 1 && normalTexturePresent == false) {
- float tl = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y + SAMPLE_STEP));
- float t = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float tr = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y + SAMPLE_STEP));
- float r = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y));
- float br = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float b = get_rgb_height(vec2(uv.x, uv.y - SAMPLE_STEP));
- float bl = get_rgb_height(vec2(uv.x -SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float l = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y));
- float dX = (tr + 2.0 * r + br) - (tl + 2.0 * l + bl);
- float dY = (bl + 2.0 * b + br) - (tl + 2.0 * t + tr);
- bump = vec4(normalize(vec3 (dX, dY, NORMALMAPS_STRENGTH)), 1.0);
- use_normalmap = true;
- }
+ }
- vec4 base = texture2D(baseTexture, uv).rgba;
+ // turns out that nightRatio falls off much faster than
+ // actual brightness of artificial light in relation to natual light.
+ // Power ratio was measured on torches in MTG (brightness = 14).
+ float adjusted_night_ratio = pow(max(0.0, nightRatio), 0.6);
+
+ // Apply self-shadowing when light falls at a narrow angle to the surface
+ // Cosine of the cut-off angle.
+ const float self_shadow_cutoff_cosine = 0.035;
+ if (f_normal_length != 0 && cosLight < self_shadow_cutoff_cosine) {
+ shadow_int = max(shadow_int, 1 - clamp(cosLight, 0.0, self_shadow_cutoff_cosine)/self_shadow_cutoff_cosine);
+ shadow_color = mix(vec3(0.0), shadow_color, min(cosLight, self_shadow_cutoff_cosine)/self_shadow_cutoff_cosine);
+ }
+
+ shadow_int *= f_adj_shadow_strength;
-#ifdef ENABLE_BUMPMAPPING
- if (use_normalmap) {
- vec3 L = normalize(lightVec);
- vec3 E = normalize(eyeVec);
- float specular = pow(clamp(dot(reflect(L, bump.xyz), E), 0.0, 1.0), 1.0);
- float diffuse = dot(-E,bump.xyz);
- color = (diffuse + 0.1 * specular) * base.rgb;
- } else {
- color = base.rgb;
+ // calculate fragment color from components:
+ col.rgb =
+ adjusted_night_ratio * col.rgb + // artificial light
+ (1.0 - adjusted_night_ratio) * ( // natural light
+ col.rgb * (1.0 - shadow_int * (1.0 - shadow_color)) + // filtered texture color
+ dayLight * shadow_color * shadow_int); // reflected filtered sunlight/moonlight
}
-#else
- color = base.rgb;
#endif
- vec4 col = vec4(color.rgb * gl_Color.rgb, 1.0);
-
-#ifdef ENABLE_TONE_MAPPING
+#if ENABLE_TONE_MAPPING
col = applyToneMapping(col);
#endif
- if (fogDistance != 0.0) {
- float d = clamp((fogDistance - length(eyeVec)) / (fogDistance * 0.6), 0.0, 1.0);
- col = mix(skyBgColor, col, d);
- }
+ // Due to a bug in some (older ?) graphics stacks (possibly in the glsl compiler ?),
+ // the fog will only be rendered correctly if the last operation before the
+ // clamp() is an addition. Else, the clamp() seems to be ignored.
+ // E.g. the following won't work:
+ // float clarity = clamp(fogShadingParameter
+ // * (fogDistance - length(eyeVec)) / fogDistance), 0.0, 1.0);
+ // As additions usually come for free following a multiplication, the new formula
+ // should be more efficient as well.
+ // Note: clarity = (1 - fogginess)
+ float clarity = clamp(fogShadingParameter
+ - fogShadingParameter * length(eyeVec) / fogDistance, 0.0, 1.0);
+ col = mix(skyBgColor, col, clarity);
col = vec4(col.rgb, base.a);
gl_FragColor = col;
diff --git a/client/shaders/nodes_shader/opengl_vertex.glsl b/client/shaders/nodes_shader/opengl_vertex.glsl
index 44c48cc4c..d1fba2830 100644
--- a/client/shaders/nodes_shader/opengl_vertex.glsl
+++ b/client/shaders/nodes_shader/opengl_vertex.glsl
@@ -1,21 +1,94 @@
-uniform mat4 mWorldViewProj;
uniform mat4 mWorld;
-
-uniform float dayNightRatio;
+// Color of the light emitted by the sun.
+uniform vec3 dayLight;
uniform vec3 eyePosition;
+
+// The cameraOffset is the current center of the visible world.
+uniform vec3 cameraOffset;
uniform float animationTimer;
+varying vec3 vNormal;
varying vec3 vPosition;
+// World position in the visible world (i.e. relative to the cameraOffset.)
+// This can be used for many shader effects without loss of precision.
+// If the absolute position is required it can be calculated with
+// cameraOffset + worldPosition (for large coordinates the limits of float
+// precision must be considered).
varying vec3 worldPosition;
+varying lowp vec4 varColor;
+// The centroid keyword ensures that after interpolation the texture coordinates
+// lie within the same bounds when MSAA is en- and disabled.
+// This fixes the stripes problem with nearest-neighbour textures and MSAA.
+#ifdef GL_ES
+varying mediump vec2 varTexCoord;
+#else
+centroid varying vec2 varTexCoord;
+#endif
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ // shadow uniforms
+ uniform vec3 v_LightDirection;
+ uniform float f_textureresolution;
+ uniform mat4 m_ShadowViewProj;
+ uniform float f_shadowfar;
+ uniform float f_shadow_strength;
+ uniform float f_timeofday;
+ uniform vec4 CameraPos;
+
+ varying float cosLight;
+ varying float normalOffsetScale;
+ varying float adj_shadow_strength;
+ varying float f_normal_length;
+ varying vec3 shadow_position;
+ varying float perspective_factor;
+#endif
-varying vec3 eyeVec;
-varying vec3 lightVec;
-varying vec3 tsEyeVec;
-varying vec3 tsLightVec;
-varying float area_enable_parallax;
+varying vec3 eyeVec;
+varying float nightRatio;
+// Color of the light emitted by the light sources.
+const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
const float e = 2.718281828459;
const float BS = 10.0;
+uniform float xyPerspectiveBias0;
+uniform float xyPerspectiveBias1;
+uniform float zPerspectiveBias;
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+
+vec4 getRelativePosition(in vec4 position)
+{
+ vec2 l = position.xy - CameraPos.xy;
+ vec2 s = l / abs(l);
+ s = (1.0 - s * CameraPos.xy);
+ l /= s;
+ return vec4(l, s);
+}
+
+float getPerspectiveFactor(in vec4 relativePosition)
+{
+ float pDistance = length(relativePosition.xy);
+ float pFactor = pDistance * xyPerspectiveBias0 + xyPerspectiveBias1;
+ return pFactor;
+}
+
+vec4 applyPerspectiveDistortion(in vec4 position)
+{
+ vec4 l = getRelativePosition(position);
+ float pFactor = getPerspectiveFactor(l);
+ l.xy /= pFactor;
+ position.xy = l.xy * l.zw + CameraPos.xy;
+ position.z *= zPerspectiveBias;
+ return position;
+}
+
+// custom smoothstep implementation because it's not defined in glsl1.2
+// https://docs.gl/sl4/smoothstep
+float mtsmoothstep(in float edge0, in float edge1, in float x)
+{
+ float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
+ return t * t * (3.0 - 2.0 * t);
+}
+#endif
float smoothCurve(float x)
@@ -35,27 +108,55 @@ float smoothTriangleWave(float x)
return smoothCurve(triangleWave(x)) * 2.0 - 1.0;
}
+// OpenGL < 4.3 does not support continued preprocessor lines
+#if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_OPAQUE || MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_BASIC) && ENABLE_WAVING_WATER
-void main(void)
+//
+// Simple, fast noise function.
+// See: https://gist.github.com/patriciogonzalezvivo/670c22f3966e662d2f83
+//
+vec4 perm(vec4 x)
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
- //TODO: make offset depending on view angle and parallax uv displacement
- //thats for textures that doesnt align vertically, like dirt with grass
- //gl_TexCoord[0].y += 0.008;
-
- //Allow parallax/relief mapping only for certain kind of nodes
- //Variable is also used to control area of the effect
-#if (DRAW_TYPE == NDT_NORMAL || DRAW_TYPE == NDT_LIQUID || DRAW_TYPE == NDT_FLOWINGLIQUID)
- area_enable_parallax = 1.0;
-#else
- area_enable_parallax = 0.0;
+ return mod(((x * 34.0) + 1.0) * x, 289.0);
+}
+
+float snoise(vec3 p)
+{
+ vec3 a = floor(p);
+ vec3 d = p - a;
+ d = d * d * (3.0 - 2.0 * d);
+
+ vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
+ vec4 k1 = perm(b.xyxy);
+ vec4 k2 = perm(k1.xyxy + b.zzww);
+
+ vec4 c = k2 + a.zzzz;
+ vec4 k3 = perm(c);
+ vec4 k4 = perm(c + 1.0);
+
+ vec4 o1 = fract(k3 * (1.0 / 41.0));
+ vec4 o2 = fract(k4 * (1.0 / 41.0));
+
+ vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
+ vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
+
+ return o4.y * d.y + o4.x * (1.0 - d.y);
+}
+
#endif
-float disp_x;
-float disp_z;
+
+
+void main(void)
+{
+ varTexCoord = inTexCoord0.st;
+
+ float disp_x;
+ float disp_z;
+// OpenGL < 4.3 does not support continued preprocessor lines
#if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES) || (MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS)
- vec4 pos2 = mWorld * gl_Vertex;
+ vec4 pos2 = mWorld * inVertexPosition;
float tOffset = (pos2.x + pos2.y) * 0.001 + pos2.z * 0.002;
disp_x = (smoothTriangleWave(animationTimer * 23.0 + tOffset) +
smoothTriangleWave(animationTimer * 11.0 + tOffset)) * 0.4;
@@ -64,86 +165,108 @@ float disp_z;
smoothTriangleWave(animationTimer * 13.0 + tOffset)) * 0.5;
#endif
-
-#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER
- vec4 pos = gl_Vertex;
- pos.y -= 2.0;
- float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);
- pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;
+ worldPosition = (mWorld * inVertexPosition).xyz;
+
+// OpenGL < 4.3 does not support continued preprocessor lines
+#if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_OPAQUE || MATERIAL_TYPE == TILE_MATERIAL_WAVING_LIQUID_BASIC) && ENABLE_WAVING_WATER
+ // Generate waves with Perlin-type noise.
+ // The constants are calibrated such that they roughly
+ // correspond to the old sine waves.
+ vec4 pos = inVertexPosition;
+ vec3 wavePos = worldPosition + cameraOffset;
+ // The waves are slightly compressed along the z-axis to get
+ // wave-fronts along the x-axis.
+ wavePos.x /= WATER_WAVE_LENGTH * 3.0;
+ wavePos.z /= WATER_WAVE_LENGTH * 2.0;
+ wavePos.z += animationTimer * WATER_WAVE_SPEED * 10.0;
+ pos.y += (snoise(wavePos) - 1.0) * WATER_WAVE_HEIGHT * 5.0;
gl_Position = mWorldViewProj * pos;
#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES
- vec4 pos = gl_Vertex;
+ vec4 pos = inVertexPosition;
pos.x += disp_x;
pos.y += disp_z * 0.1;
pos.z += disp_z;
gl_Position = mWorldViewProj * pos;
#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS
- vec4 pos = gl_Vertex;
- if (gl_TexCoord[0].y < 0.05) {
+ vec4 pos = inVertexPosition;
+ if (varTexCoord.y < 0.05) {
pos.x += disp_x;
pos.z += disp_z;
}
gl_Position = mWorldViewProj * pos;
#else
- gl_Position = mWorldViewProj * gl_Vertex;
+ gl_Position = mWorldViewProj * inVertexPosition;
#endif
-
vPosition = gl_Position.xyz;
- worldPosition = (mWorld * gl_Vertex).xyz;
-
- // Don't generate heightmaps when too far from the eye
- float dist = distance (vec3(0.0, 0.0, 0.0), vPosition);
- if (dist > 150.0) {
- area_enable_parallax = 0.0;
- }
-
- vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
-
- vec3 normal, tangent, binormal;
- normal = normalize(gl_NormalMatrix * gl_Normal);
- tangent = normalize(gl_NormalMatrix * gl_MultiTexCoord1.xyz);
- binormal = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz);
-
- vec3 v;
-
- lightVec = sunPosition - worldPosition;
- v.x = dot(lightVec, tangent);
- v.y = dot(lightVec, binormal);
- v.z = dot(lightVec, normal);
- tsLightVec = normalize (v);
-
- eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz;
- v.x = dot(eyeVec, tangent);
- v.y = dot(eyeVec, binormal);
- v.z = dot(eyeVec, normal);
- tsEyeVec = normalize (v);
-
- vec4 color;
- float day = gl_Color.r;
- float night = gl_Color.g;
- float light_source = gl_Color.b;
-
- float rg = mix(night, day, dayNightRatio);
- rg += light_source * 2.5; // Make light sources brighter
- float b = rg;
-
- // Moonlight is blue
- b += (day - night) / 13.0;
- rg -= (day - night) / 23.0;
+ eyeVec = -(mWorldView * inVertexPosition).xyz;
+ vNormal = inVertexNormal;
+
+ // Calculate color.
+ // Red, green and blue components are pre-multiplied with
+ // the brightness, so now we have to multiply these
+ // colors with the color of the incoming light.
+ // The pre-baked colors are halved to prevent overflow.
+#ifdef GL_ES
+ vec4 color = inVertexColor.bgra;
+#else
+ vec4 color = inVertexColor;
+#endif
+ // The alpha gives the ratio of sunlight in the incoming light.
+ nightRatio = 1.0 - color.a;
+ color.rgb = color.rgb * (color.a * dayLight.rgb +
+ nightRatio * artificialLight.rgb) * 2.0;
+ color.a = 1.0;
// Emphase blue a bit in darker places
- // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
- b += max(0.0, (1.0 - abs(b - 0.13) / 0.17) * 0.025);
-
- // Artificial light is yellow-ish
- // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
- rg += max(0.0, (1.0 - abs(rg - 0.85) / 0.15) * 0.065);
-
- color.r = rg;
- color.g = rg;
- color.b = b;
-
- color.a = gl_Color.a;
- gl_FrontColor = gl_BackColor = clamp(color, 0.0, 1.0);
+ // See C++ implementation in mapblock_mesh.cpp final_color_blend()
+ float brightness = (color.r + color.g + color.b) / 3.0;
+ color.b += max(0.0, 0.021 - abs(0.2 * brightness - 0.021) +
+ 0.07 * brightness);
+
+ varColor = clamp(color, 0.0, 1.0);
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ if (f_shadow_strength > 0.0) {
+ vec3 nNormal;
+ f_normal_length = length(vNormal);
+
+ /* normalOffsetScale is in world coordinates (1/10th of a meter)
+ z_bias is in light space coordinates */
+ float normalOffsetScale, z_bias;
+ float pFactor = getPerspectiveFactor(getRelativePosition(m_ShadowViewProj * mWorld * inVertexPosition));
+ if (f_normal_length > 0.0) {
+ nNormal = normalize(vNormal);
+ cosLight = dot(nNormal, -v_LightDirection);
+ float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
+ normalOffsetScale = 2.0 * pFactor * pFactor * sinLight * min(f_shadowfar, 500.0) /
+ xyPerspectiveBias1 / f_textureresolution;
+ z_bias = 1.0 * sinLight / cosLight;
+ }
+ else {
+ nNormal = vec3(0.0);
+ cosLight = clamp(dot(v_LightDirection, normalize(vec3(v_LightDirection.x, 0.0, v_LightDirection.z))), 1e-2, 1.0);
+ float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
+ normalOffsetScale = 0.0;
+ z_bias = 3.6e3 * sinLight / cosLight;
+ }
+ z_bias *= pFactor * pFactor / f_textureresolution / f_shadowfar;
+
+ shadow_position = applyPerspectiveDistortion(m_ShadowViewProj * mWorld * (inVertexPosition + vec4(normalOffsetScale * nNormal, 0.0))).xyz;
+ shadow_position.z -= z_bias;
+ perspective_factor = pFactor;
+
+ if (f_timeofday < 0.2) {
+ adj_shadow_strength = f_shadow_strength * 0.5 *
+ (1.0 - mtsmoothstep(0.18, 0.2, f_timeofday));
+ } else if (f_timeofday >= 0.8) {
+ adj_shadow_strength = f_shadow_strength * 0.5 *
+ mtsmoothstep(0.8, 0.83, f_timeofday);
+ } else {
+ adj_shadow_strength = f_shadow_strength *
+ mtsmoothstep(0.20, 0.25, f_timeofday) *
+ (1.0 - mtsmoothstep(0.7, 0.8, f_timeofday));
+ }
+ }
+#endif
}
diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl
new file mode 100644
index 000000000..1fefc764b
--- /dev/null
+++ b/client/shaders/object_shader/opengl_fragment.glsl
@@ -0,0 +1,495 @@
+uniform sampler2D baseTexture;
+
+uniform vec3 dayLight;
+uniform vec4 skyBgColor;
+uniform float fogDistance;
+uniform vec3 eyePosition;
+
+// The cameraOffset is the current center of the visible world.
+uniform vec3 cameraOffset;
+uniform float animationTimer;
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ // shadow texture
+ uniform sampler2D ShadowMapSampler;
+ // shadow uniforms
+ uniform vec3 v_LightDirection;
+ uniform float f_textureresolution;
+ uniform mat4 m_ShadowViewProj;
+ uniform float f_shadowfar;
+ uniform float f_shadow_strength;
+ uniform vec4 CameraPos;
+ uniform float xyPerspectiveBias0;
+ uniform float xyPerspectiveBias1;
+
+ varying float adj_shadow_strength;
+ varying float cosLight;
+ varying float f_normal_length;
+ varying vec3 shadow_position;
+ varying float perspective_factor;
+#endif
+
+
+varying vec3 vNormal;
+varying vec3 vPosition;
+// World position in the visible world (i.e. relative to the cameraOffset.)
+// This can be used for many shader effects without loss of precision.
+// If the absolute position is required it can be calculated with
+// cameraOffset + worldPosition (for large coordinates the limits of float
+// precision must be considered).
+varying vec3 worldPosition;
+varying lowp vec4 varColor;
+#ifdef GL_ES
+varying mediump vec2 varTexCoord;
+#else
+centroid varying vec2 varTexCoord;
+#endif
+varying vec3 eyeVec;
+varying float nightRatio;
+
+varying float vIDiff;
+
+const float fogStart = FOG_START;
+const float fogShadingParameter = 1.0 / (1.0 - fogStart);
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+
+// assuming near is always 1.0
+float getLinearDepth()
+{
+ return 2.0 * f_shadowfar / (f_shadowfar + 1.0 - (2.0 * gl_FragCoord.z - 1.0) * (f_shadowfar - 1.0));
+}
+
+vec3 getLightSpacePosition()
+{
+ return shadow_position * 0.5 + 0.5;
+}
+// custom smoothstep implementation because it's not defined in glsl1.2
+// https://docs.gl/sl4/smoothstep
+float mtsmoothstep(in float edge0, in float edge1, in float x)
+{
+ float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
+ return t * t * (3.0 - 2.0 * t);
+}
+
+#ifdef COLORED_SHADOWS
+
+// c_precision of 128 fits within 7 base-10 digits
+const float c_precision = 128.0;
+const float c_precisionp1 = c_precision + 1.0;
+
+float packColor(vec3 color)
+{
+ return floor(color.b * c_precision + 0.5)
+ + floor(color.g * c_precision + 0.5) * c_precisionp1
+ + floor(color.r * c_precision + 0.5) * c_precisionp1 * c_precisionp1;
+}
+
+vec3 unpackColor(float value)
+{
+ vec3 color;
+ color.b = mod(value, c_precisionp1) / c_precision;
+ color.g = mod(floor(value / c_precisionp1), c_precisionp1) / c_precision;
+ color.r = floor(value / (c_precisionp1 * c_precisionp1)) / c_precision;
+ return color;
+}
+
+vec4 getHardShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ vec4 texDepth = texture2D(shadowsampler, smTexCoord.xy).rgba;
+
+ float visibility = step(0.0, realDistance - texDepth.r);
+ vec4 result = vec4(visibility, vec3(0.0,0.0,0.0));//unpackColor(texDepth.g));
+ if (visibility < 0.1) {
+ visibility = step(0.0, realDistance - texDepth.b);
+ result = vec4(visibility, unpackColor(texDepth.a));
+ }
+ return result;
+}
+
+#else
+
+float getHardShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float texDepth = texture2D(shadowsampler, smTexCoord.xy).r;
+ float visibility = step(0.0, realDistance - texDepth);
+ return visibility;
+}
+
+#endif
+
+
+#if SHADOW_FILTER == 2
+ #define PCFBOUND 2.0 // 5x5
+ #define PCFSAMPLES 25
+#elif SHADOW_FILTER == 1
+ #define PCFBOUND 1.0 // 3x3
+ #define PCFSAMPLES 9
+#else
+ #define PCFBOUND 0.0
+ #define PCFSAMPLES 1
+#endif
+
+#ifdef COLORED_SHADOWS
+float getHardShadowDepth(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ vec4 texDepth = texture2D(shadowsampler, smTexCoord.xy);
+ float depth = max(realDistance - texDepth.r, realDistance - texDepth.b);
+ return depth;
+}
+#else
+float getHardShadowDepth(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float texDepth = texture2D(shadowsampler, smTexCoord.xy).r;
+ float depth = realDistance - texDepth;
+ return depth;
+}
+#endif
+
+#define BASEFILTERRADIUS 1.0
+
+float getPenumbraRadius(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ // Return fast if sharp shadows are requested
+ if (PCFBOUND == 0.0 || SOFTSHADOWRADIUS <= 0.0)
+ return 0.0;
+
+ vec2 clampedpos;
+ float y, x;
+ float depth = getHardShadowDepth(shadowsampler, smTexCoord.xy, realDistance);
+ // A factor from 0 to 1 to reduce blurring of short shadows
+ float sharpness_factor = 1.0;
+ // conversion factor from shadow depth to blur radius
+ float depth_to_blur = f_shadowfar / SOFTSHADOWRADIUS / xyPerspectiveBias0;
+ if (depth > 0.0 && f_normal_length > 0.0)
+ // 5 is empirical factor that controls how fast shadow loses sharpness
+ sharpness_factor = clamp(5 * depth * depth_to_blur, 0.0, 1.0);
+ depth = 0.0;
+
+ float world_to_texture = xyPerspectiveBias1 / perspective_factor / perspective_factor
+ * f_textureresolution / 2.0 / f_shadowfar;
+ float world_radius = 0.2; // shadow blur radius in world float coordinates, e.g. 0.2 = 0.02 of one node
+
+ return max(BASEFILTERRADIUS * f_textureresolution / 4096.0, sharpness_factor * world_radius * world_to_texture * SOFTSHADOWRADIUS);
+}
+
+#ifdef POISSON_FILTER
+const vec2[64] poissonDisk = vec2[64](
+ vec2(0.170019, -0.040254),
+ vec2(-0.299417, 0.791925),
+ vec2(0.645680, 0.493210),
+ vec2(-0.651784, 0.717887),
+ vec2(0.421003, 0.027070),
+ vec2(-0.817194, -0.271096),
+ vec2(-0.705374, -0.668203),
+ vec2(0.977050, -0.108615),
+ vec2(0.063326, 0.142369),
+ vec2(0.203528, 0.214331),
+ vec2(-0.667531, 0.326090),
+ vec2(-0.098422, -0.295755),
+ vec2(-0.885922, 0.215369),
+ vec2(0.566637, 0.605213),
+ vec2(0.039766, -0.396100),
+ vec2(0.751946, 0.453352),
+ vec2(0.078707, -0.715323),
+ vec2(-0.075838, -0.529344),
+ vec2(0.724479, -0.580798),
+ vec2(0.222999, -0.215125),
+ vec2(-0.467574, -0.405438),
+ vec2(-0.248268, -0.814753),
+ vec2(0.354411, -0.887570),
+ vec2(0.175817, 0.382366),
+ vec2(0.487472, -0.063082),
+ vec2(0.355476, 0.025357),
+ vec2(-0.084078, 0.898312),
+ vec2(0.488876, -0.783441),
+ vec2(0.470016, 0.217933),
+ vec2(-0.696890, -0.549791),
+ vec2(-0.149693, 0.605762),
+ vec2(0.034211, 0.979980),
+ vec2(0.503098, -0.308878),
+ vec2(-0.016205, -0.872921),
+ vec2(0.385784, -0.393902),
+ vec2(-0.146886, -0.859249),
+ vec2(0.643361, 0.164098),
+ vec2(0.634388, -0.049471),
+ vec2(-0.688894, 0.007843),
+ vec2(0.464034, -0.188818),
+ vec2(-0.440840, 0.137486),
+ vec2(0.364483, 0.511704),
+ vec2(0.034028, 0.325968),
+ vec2(0.099094, -0.308023),
+ vec2(0.693960, -0.366253),
+ vec2(0.678884, -0.204688),
+ vec2(0.001801, 0.780328),
+ vec2(0.145177, -0.898984),
+ vec2(0.062655, -0.611866),
+ vec2(0.315226, -0.604297),
+ vec2(-0.780145, 0.486251),
+ vec2(-0.371868, 0.882138),
+ vec2(0.200476, 0.494430),
+ vec2(-0.494552, -0.711051),
+ vec2(0.612476, 0.705252),
+ vec2(-0.578845, -0.768792),
+ vec2(-0.772454, -0.090976),
+ vec2(0.504440, 0.372295),
+ vec2(0.155736, 0.065157),
+ vec2(0.391522, 0.849605),
+ vec2(-0.620106, -0.328104),
+ vec2(0.789239, -0.419965),
+ vec2(-0.545396, 0.538133),
+ vec2(-0.178564, -0.596057)
+);
+
+#ifdef COLORED_SHADOWS
+
+vec4 getShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadowColor(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ vec4 visibility = vec4(0.0);
+ float scale_factor = radius / f_textureresolution;
+
+ int samples = (1 + 1 * int(SOFTSHADOWRADIUS > 1.0)) * PCFSAMPLES; // scale max samples for the soft shadows
+ samples = int(clamp(pow(4.0 * radius + 1.0, 2.0), 1.0, float(samples)));
+ int init_offset = int(floor(mod(((smTexCoord.x * 34.0) + 1.0) * smTexCoord.y, 64.0-samples)));
+ int end_offset = int(samples) + init_offset;
+
+ for (int x = init_offset; x < end_offset; x++) {
+ clampedpos = poissonDisk[x] * scale_factor + smTexCoord.xy;
+ visibility += getHardShadowColor(shadowsampler, clampedpos.xy, realDistance);
+ }
+
+ return visibility / samples;
+}
+
+#else
+
+float getShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadow(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ float visibility = 0.0;
+ float scale_factor = radius / f_textureresolution;
+
+ int samples = (1 + 1 * int(SOFTSHADOWRADIUS > 1.0)) * PCFSAMPLES; // scale max samples for the soft shadows
+ samples = int(clamp(pow(4.0 * radius + 1.0, 2.0), 1.0, float(samples)));
+ int init_offset = int(floor(mod(((smTexCoord.x * 34.0) + 1.0) * smTexCoord.y, 64.0-samples)));
+ int end_offset = int(samples) + init_offset;
+
+ for (int x = init_offset; x < end_offset; x++) {
+ clampedpos = poissonDisk[x] * scale_factor + smTexCoord.xy;
+ visibility += getHardShadow(shadowsampler, clampedpos.xy, realDistance);
+ }
+
+ return visibility / samples;
+}
+
+#endif
+
+#else
+/* poisson filter disabled */
+
+#ifdef COLORED_SHADOWS
+
+vec4 getShadowColor(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadowColor(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ vec4 visibility = vec4(0.0);
+ float x, y;
+ float bound = (1 + 0.5 * int(SOFTSHADOWRADIUS > 1.0)) * PCFBOUND; // scale max bound for soft shadows
+ bound = clamp(0.5 * (4.0 * radius - 1.0), 0.5, bound);
+ float scale_factor = radius / bound / f_textureresolution;
+ float n = 0.0;
+
+ // basic PCF filter
+ for (y = -bound; y <= bound; y += 1.0)
+ for (x = -bound; x <= bound; x += 1.0) {
+ clampedpos = vec2(x,y) * scale_factor + smTexCoord.xy;
+ visibility += getHardShadowColor(shadowsampler, clampedpos.xy, realDistance);
+ n += 1.0;
+ }
+
+ return visibility / max(n, 1.0);
+}
+
+#else
+float getShadow(sampler2D shadowsampler, vec2 smTexCoord, float realDistance)
+{
+ float radius = getPenumbraRadius(shadowsampler, smTexCoord, realDistance);
+ if (radius < 0.1) {
+ // we are in the middle of even brightness, no need for filtering
+ return getHardShadow(shadowsampler, smTexCoord.xy, realDistance);
+ }
+
+ vec2 clampedpos;
+ float visibility = 0.0;
+ float x, y;
+ float bound = (1 + 0.5 * int(SOFTSHADOWRADIUS > 1.0)) * PCFBOUND; // scale max bound for soft shadows
+ bound = clamp(0.5 * (4.0 * radius - 1.0), 0.5, bound);
+ float scale_factor = radius / bound / f_textureresolution;
+ float n = 0.0;
+
+ // basic PCF filter
+ for (y = -bound; y <= bound; y += 1.0)
+ for (x = -bound; x <= bound; x += 1.0) {
+ clampedpos = vec2(x,y) * scale_factor + smTexCoord.xy;
+ visibility += getHardShadow(shadowsampler, clampedpos.xy, realDistance);
+ n += 1.0;
+ }
+
+ return visibility / max(n, 1.0);
+}
+
+#endif
+
+#endif
+#endif
+
+#if ENABLE_TONE_MAPPING
+
+/* Hable's UC2 Tone mapping parameters
+ A = 0.22;
+ B = 0.30;
+ C = 0.10;
+ D = 0.20;
+ E = 0.01;
+ F = 0.30;
+ W = 11.2;
+ equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F
+*/
+
+vec3 uncharted2Tonemap(vec3 x)
+{
+ return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03333;
+}
+
+vec4 applyToneMapping(vec4 color)
+{
+ color = vec4(pow(color.rgb, vec3(2.2)), color.a);
+ const float gamma = 1.6;
+ const float exposureBias = 5.5;
+ color.rgb = uncharted2Tonemap(exposureBias * color.rgb);
+ // Precalculated white_scale from
+ //vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
+ vec3 whiteScale = vec3(1.036015346);
+ color.rgb *= whiteScale;
+ return vec4(pow(color.rgb, vec3(1.0 / gamma)), color.a);
+}
+#endif
+
+
+
+void main(void)
+{
+ vec3 color;
+ vec2 uv = varTexCoord.st;
+
+ vec4 base = texture2D(baseTexture, uv).rgba;
+ // If alpha is zero, we can just discard the pixel. This fixes transparency
+ // on GPUs like GC7000L, where GL_ALPHA_TEST is not implemented in mesa,
+ // and also on GLES 2, where GL_ALPHA_TEST is missing entirely.
+#ifdef USE_DISCARD
+ if (base.a == 0.0)
+ discard;
+#endif
+#ifdef USE_DISCARD_REF
+ if (base.a < 0.5)
+ discard;
+#endif
+
+ color = base.rgb;
+ vec4 col = vec4(color.rgb * varColor.rgb, 1.0);
+ col.rgb *= vIDiff;
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ if (f_shadow_strength > 0.0) {
+ float shadow_int = 0.0;
+ vec3 shadow_color = vec3(0.0, 0.0, 0.0);
+ vec3 posLightSpace = getLightSpacePosition();
+
+ float distance_rate = (1.0 - pow(clamp(2.0 * length(posLightSpace.xy - 0.5),0.0,1.0), 10.0));
+ if (max(abs(posLightSpace.x - 0.5), abs(posLightSpace.y - 0.5)) > 0.5)
+ distance_rate = 0.0;
+ float f_adj_shadow_strength = max(adj_shadow_strength-mtsmoothstep(0.9,1.1, posLightSpace.z),0.0);
+
+ if (distance_rate > 1e-7) {
+
+#ifdef COLORED_SHADOWS
+ vec4 visibility;
+ if (cosLight > 0.0 || f_normal_length < 1e-3)
+ visibility = getShadowColor(ShadowMapSampler, posLightSpace.xy, posLightSpace.z);
+ else
+ visibility = vec4(1.0, 0.0, 0.0, 0.0);
+ shadow_int = visibility.r;
+ shadow_color = visibility.gba;
+#else
+ if (cosLight > 0.0 || f_normal_length < 1e-3)
+ shadow_int = getShadow(ShadowMapSampler, posLightSpace.xy, posLightSpace.z);
+ else
+ shadow_int = 1.0;
+#endif
+ shadow_int *= distance_rate;
+ shadow_int = clamp(shadow_int, 0.0, 1.0);
+
+ }
+
+ // turns out that nightRatio falls off much faster than
+ // actual brightness of artificial light in relation to natual light.
+ // Power ratio was measured on torches in MTG (brightness = 14).
+ float adjusted_night_ratio = pow(max(0.0, nightRatio), 0.6);
+
+ // Apply self-shadowing when light falls at a narrow angle to the surface
+ // Cosine of the cut-off angle.
+ const float self_shadow_cutoff_cosine = 0.14;
+ if (f_normal_length != 0 && cosLight < self_shadow_cutoff_cosine) {
+ shadow_int = max(shadow_int, 1 - clamp(cosLight, 0.0, self_shadow_cutoff_cosine)/self_shadow_cutoff_cosine);
+ shadow_color = mix(vec3(0.0), shadow_color, min(cosLight, self_shadow_cutoff_cosine)/self_shadow_cutoff_cosine);
+ }
+
+ shadow_int *= f_adj_shadow_strength;
+
+ // calculate fragment color from components:
+ col.rgb =
+ adjusted_night_ratio * col.rgb + // artificial light
+ (1.0 - adjusted_night_ratio) * ( // natural light
+ col.rgb * (1.0 - shadow_int * (1.0 - shadow_color)) + // filtered texture color
+ dayLight * shadow_color * shadow_int); // reflected filtered sunlight/moonlight
+ }
+#endif
+
+#if ENABLE_TONE_MAPPING
+ col = applyToneMapping(col);
+#endif
+
+ // Due to a bug in some (older ?) graphics stacks (possibly in the glsl compiler ?),
+ // the fog will only be rendered correctly if the last operation before the
+ // clamp() is an addition. Else, the clamp() seems to be ignored.
+ // E.g. the following won't work:
+ // float clarity = clamp(fogShadingParameter
+ // * (fogDistance - length(eyeVec)) / fogDistance), 0.0, 1.0);
+ // As additions usually come for free following a multiplication, the new formula
+ // should be more efficient as well.
+ // Note: clarity = (1 - fogginess)
+ float clarity = clamp(fogShadingParameter
+ - fogShadingParameter * length(eyeVec) / fogDistance, 0.0, 1.0);
+ col = mix(skyBgColor, col, clarity);
+ col = vec4(col.rgb, base.a);
+
+ gl_FragColor = col;
+}
diff --git a/client/shaders/object_shader/opengl_vertex.glsl b/client/shaders/object_shader/opengl_vertex.glsl
new file mode 100644
index 000000000..dc9c70cdf
--- /dev/null
+++ b/client/shaders/object_shader/opengl_vertex.glsl
@@ -0,0 +1,181 @@
+uniform mat4 mWorld;
+uniform vec3 dayLight;
+uniform vec3 eyePosition;
+uniform float animationTimer;
+uniform vec4 emissiveColor;
+uniform vec3 cameraOffset;
+
+
+varying vec3 vNormal;
+varying vec3 vPosition;
+varying vec3 worldPosition;
+varying lowp vec4 varColor;
+#ifdef GL_ES
+varying mediump vec2 varTexCoord;
+#else
+centroid varying vec2 varTexCoord;
+#endif
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ // shadow uniforms
+ uniform vec3 v_LightDirection;
+ uniform float f_textureresolution;
+ uniform mat4 m_ShadowViewProj;
+ uniform float f_shadowfar;
+ uniform float f_shadow_strength;
+ uniform float f_timeofday;
+ uniform vec4 CameraPos;
+
+ varying float cosLight;
+ varying float adj_shadow_strength;
+ varying float f_normal_length;
+ varying vec3 shadow_position;
+ varying float perspective_factor;
+#endif
+
+varying vec3 eyeVec;
+varying float nightRatio;
+// Color of the light emitted by the light sources.
+const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
+varying float vIDiff;
+const float e = 2.718281828459;
+const float BS = 10.0;
+uniform float xyPerspectiveBias0;
+uniform float xyPerspectiveBias1;
+uniform float zPerspectiveBias;
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+
+vec4 getRelativePosition(in vec4 position)
+{
+ vec2 l = position.xy - CameraPos.xy;
+ vec2 s = l / abs(l);
+ s = (1.0 - s * CameraPos.xy);
+ l /= s;
+ return vec4(l, s);
+}
+
+float getPerspectiveFactor(in vec4 relativePosition)
+{
+ float pDistance = length(relativePosition.xy);
+ float pFactor = pDistance * xyPerspectiveBias0 + xyPerspectiveBias1;
+ return pFactor;
+}
+
+vec4 applyPerspectiveDistortion(in vec4 position)
+{
+ vec4 l = getRelativePosition(position);
+ float pFactor = getPerspectiveFactor(l);
+ l.xy /= pFactor;
+ position.xy = l.xy * l.zw + CameraPos.xy;
+ position.z *= zPerspectiveBias;
+ return position;
+}
+
+// custom smoothstep implementation because it's not defined in glsl1.2
+// https://docs.gl/sl4/smoothstep
+float mtsmoothstep(in float edge0, in float edge1, in float x)
+{
+ float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
+ return t * t * (3.0 - 2.0 * t);
+}
+#endif
+
+
+float directional_ambient(vec3 normal)
+{
+ vec3 v = normal * normal;
+
+ if (normal.y < 0.0)
+ return dot(v, vec3(0.670820, 0.447213, 0.836660));
+
+ return dot(v, vec3(0.670820, 1.000000, 0.836660));
+}
+
+void main(void)
+{
+ varTexCoord = (mTexture * inTexCoord0).st;
+ gl_Position = mWorldViewProj * inVertexPosition;
+
+ vPosition = gl_Position.xyz;
+ vNormal = (mWorld * vec4(inVertexNormal, 0.0)).xyz;
+ worldPosition = (mWorld * inVertexPosition).xyz;
+ eyeVec = -(mWorldView * inVertexPosition).xyz;
+
+#if (MATERIAL_TYPE == TILE_MATERIAL_PLAIN) || (MATERIAL_TYPE == TILE_MATERIAL_PLAIN_ALPHA)
+ vIDiff = 1.0;
+#else
+ // This is intentional comparison with zero without any margin.
+ // If normal is not equal to zero exactly, then we assume it's a valid, just not normalized vector
+ vIDiff = length(inVertexNormal) == 0.0
+ ? 1.0
+ : directional_ambient(normalize(inVertexNormal));
+#endif
+
+#ifdef GL_ES
+ vec4 color = inVertexColor.bgra;
+#else
+ vec4 color = inVertexColor;
+#endif
+
+ color *= emissiveColor;
+
+ // The alpha gives the ratio of sunlight in the incoming light.
+ nightRatio = 1.0 - color.a;
+ color.rgb = color.rgb * (color.a * dayLight.rgb +
+ nightRatio * artificialLight.rgb) * 2.0;
+ color.a = 1.0;
+
+ // Emphase blue a bit in darker places
+ // See C++ implementation in mapblock_mesh.cpp final_color_blend()
+ float brightness = (color.r + color.g + color.b) / 3.0;
+ color.b += max(0.0, 0.021 - abs(0.2 * brightness - 0.021) +
+ 0.07 * brightness);
+
+ varColor = clamp(color, 0.0, 1.0);
+
+
+#ifdef ENABLE_DYNAMIC_SHADOWS
+ if (f_shadow_strength > 0.0) {
+ vec3 nNormal = normalize(vNormal);
+ f_normal_length = length(vNormal);
+
+ /* normalOffsetScale is in world coordinates (1/10th of a meter)
+ z_bias is in light space coordinates */
+ float normalOffsetScale, z_bias;
+ float pFactor = getPerspectiveFactor(getRelativePosition(m_ShadowViewProj * mWorld * inVertexPosition));
+ if (f_normal_length > 0.0) {
+ nNormal = normalize(vNormal);
+ cosLight = dot(nNormal, -v_LightDirection);
+ float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
+ normalOffsetScale = 0.1 * pFactor * pFactor * sinLight * min(f_shadowfar, 500.0) /
+ xyPerspectiveBias1 / f_textureresolution;
+ z_bias = 1e3 * sinLight / cosLight * (0.5 + f_textureresolution / 1024.0);
+ }
+ else {
+ nNormal = vec3(0.0);
+ cosLight = clamp(dot(v_LightDirection, normalize(vec3(v_LightDirection.x, 0.0, v_LightDirection.z))), 1e-2, 1.0);
+ float sinLight = pow(1 - pow(cosLight, 2.0), 0.5);
+ normalOffsetScale = 0.0;
+ z_bias = 3.6e3 * sinLight / cosLight;
+ }
+ z_bias *= pFactor * pFactor / f_textureresolution / f_shadowfar;
+
+ shadow_position = applyPerspectiveDistortion(m_ShadowViewProj * mWorld * (inVertexPosition + vec4(normalOffsetScale * nNormal, 0.0))).xyz;
+ shadow_position.z -= z_bias;
+ perspective_factor = pFactor;
+
+ if (f_timeofday < 0.2) {
+ adj_shadow_strength = f_shadow_strength * 0.5 *
+ (1.0 - mtsmoothstep(0.18, 0.2, f_timeofday));
+ } else if (f_timeofday >= 0.8) {
+ adj_shadow_strength = f_shadow_strength * 0.5 *
+ mtsmoothstep(0.8, 0.83, f_timeofday);
+ } else {
+ adj_shadow_strength = f_shadow_strength *
+ mtsmoothstep(0.20, 0.25, f_timeofday) *
+ (1.0 - mtsmoothstep(0.7, 0.8, f_timeofday));
+ }
+ }
+#endif
+}
diff --git a/client/shaders/selection_shader/opengl_fragment.glsl b/client/shaders/selection_shader/opengl_fragment.glsl
index c679d0e12..35b1f8902 100644
--- a/client/shaders/selection_shader/opengl_fragment.glsl
+++ b/client/shaders/selection_shader/opengl_fragment.glsl
@@ -1,9 +1,12 @@
uniform sampler2D baseTexture;
+varying lowp vec4 varColor;
+varying mediump vec2 varTexCoord;
+
void main(void)
{
- vec2 uv = gl_TexCoord[0].st;
+ vec2 uv = varTexCoord.st;
vec4 color = texture2D(baseTexture, uv);
- color.rgb *= gl_Color.rgb;
+ color.rgb *= varColor.rgb;
gl_FragColor = color;
}
diff --git a/client/shaders/selection_shader/opengl_vertex.glsl b/client/shaders/selection_shader/opengl_vertex.glsl
index d0b16c8b0..39dde3056 100644
--- a/client/shaders/selection_shader/opengl_vertex.glsl
+++ b/client/shaders/selection_shader/opengl_vertex.glsl
@@ -1,9 +1,14 @@
-uniform mat4 mWorldViewProj;
+varying lowp vec4 varColor;
+varying mediump vec2 varTexCoord;
void main(void)
{
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_Position = mWorldViewProj * gl_Vertex;
+ varTexCoord = inTexCoord0.st;
+ gl_Position = mWorldViewProj * inVertexPosition;
- gl_FrontColor = gl_BackColor = gl_Color;
+#ifdef GL_ES
+ varColor = inVertexColor.bgra;
+#else
+ varColor = inVertexColor;
+#endif
}
diff --git a/client/shaders/shadow_shaders/pass1_fragment.glsl b/client/shaders/shadow_shaders/pass1_fragment.glsl
new file mode 100644
index 000000000..2105def96
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass1_fragment.glsl
@@ -0,0 +1,13 @@
+uniform sampler2D ColorMapSampler;
+varying vec4 tPos;
+
+void main()
+{
+ vec4 col = texture2D(ColorMapSampler, gl_TexCoord[0].st);
+
+ if (col.a < 0.70)
+ discard;
+
+ float depth = 0.5 + tPos.z * 0.5;
+ gl_FragColor = vec4(depth, 0.0, 0.0, 1.0);
+}
diff --git a/client/shaders/shadow_shaders/pass1_trans_fragment.glsl b/client/shaders/shadow_shaders/pass1_trans_fragment.glsl
new file mode 100644
index 000000000..b267c2214
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass1_trans_fragment.glsl
@@ -0,0 +1,42 @@
+uniform sampler2D ColorMapSampler;
+varying vec4 tPos;
+
+#ifdef COLORED_SHADOWS
+varying vec3 varColor;
+
+// c_precision of 128 fits within 7 base-10 digits
+const float c_precision = 128.0;
+const float c_precisionp1 = c_precision + 1.0;
+
+float packColor(vec3 color)
+{
+ return floor(color.b * c_precision + 0.5)
+ + floor(color.g * c_precision + 0.5) * c_precisionp1
+ + floor(color.r * c_precision + 0.5) * c_precisionp1 * c_precisionp1;
+}
+
+const vec3 black = vec3(0.0);
+#endif
+
+void main()
+{
+ vec4 col = texture2D(ColorMapSampler, gl_TexCoord[0].st);
+#ifndef COLORED_SHADOWS
+ if (col.a < 0.5)
+ discard;
+#endif
+
+ float depth = 0.5 + tPos.z * 0.5;
+ // ToDo: Liso: Apply movement on waving plants
+ // depth in [0, 1] for texture
+
+ //col.rgb = col.a == 1.0 ? vec3(1.0) : col.rgb;
+#ifdef COLORED_SHADOWS
+ col.rgb *= varColor.rgb;
+ // premultiply color alpha (see-through side)
+ float packedColor = packColor(col.rgb * (1.0 - col.a));
+ gl_FragColor = vec4(depth, packedColor, 0.0,1.0);
+#else
+ gl_FragColor = vec4(depth, 0.0, 0.0, 1.0);
+#endif
+}
diff --git a/client/shaders/shadow_shaders/pass1_trans_vertex.glsl b/client/shaders/shadow_shaders/pass1_trans_vertex.glsl
new file mode 100644
index 000000000..244d2562a
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass1_trans_vertex.glsl
@@ -0,0 +1,50 @@
+uniform mat4 LightMVP; // world matrix
+uniform vec4 CameraPos;
+varying vec4 tPos;
+#ifdef COLORED_SHADOWS
+varying vec3 varColor;
+#endif
+
+uniform float xyPerspectiveBias0;
+uniform float xyPerspectiveBias1;
+uniform float zPerspectiveBias;
+
+vec4 getRelativePosition(in vec4 position)
+{
+ vec2 l = position.xy - CameraPos.xy;
+ vec2 s = l / abs(l);
+ s = (1.0 - s * CameraPos.xy);
+ l /= s;
+ return vec4(l, s);
+}
+
+float getPerspectiveFactor(in vec4 relativePosition)
+{
+ float pDistance = length(relativePosition.xy);
+ float pFactor = pDistance * xyPerspectiveBias0 + xyPerspectiveBias1;
+ return pFactor;
+}
+
+vec4 applyPerspectiveDistortion(in vec4 position)
+{
+ vec4 l = getRelativePosition(position);
+ float pFactor = getPerspectiveFactor(l);
+ l.xy /= pFactor;
+ position.xy = l.xy * l.zw + CameraPos.xy;
+ position.z *= zPerspectiveBias;
+ return position;
+}
+
+void main()
+{
+ vec4 pos = LightMVP * gl_Vertex;
+
+ tPos = applyPerspectiveDistortion(LightMVP * gl_Vertex);
+
+ gl_Position = vec4(tPos.xyz, 1.0);
+ gl_TexCoord[0].st = gl_MultiTexCoord0.st;
+
+#ifdef COLORED_SHADOWS
+ varColor = gl_Color.rgb;
+#endif
+}
diff --git a/client/shaders/shadow_shaders/pass1_vertex.glsl b/client/shaders/shadow_shaders/pass1_vertex.glsl
new file mode 100644
index 000000000..1dceb93c6
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass1_vertex.glsl
@@ -0,0 +1,43 @@
+uniform mat4 LightMVP; // world matrix
+uniform vec4 CameraPos; // camera position
+varying vec4 tPos;
+
+uniform float xyPerspectiveBias0;
+uniform float xyPerspectiveBias1;
+uniform float zPerspectiveBias;
+
+vec4 getRelativePosition(in vec4 position)
+{
+ vec2 l = position.xy - CameraPos.xy;
+ vec2 s = l / abs(l);
+ s = (1.0 - s * CameraPos.xy);
+ l /= s;
+ return vec4(l, s);
+}
+
+float getPerspectiveFactor(in vec4 relativePosition)
+{
+ float pDistance = length(relativePosition.xy);
+ float pFactor = pDistance * xyPerspectiveBias0 + xyPerspectiveBias1;
+ return pFactor;
+}
+
+vec4 applyPerspectiveDistortion(in vec4 position)
+{
+ vec4 l = getRelativePosition(position);
+ float pFactor = getPerspectiveFactor(l);
+ l.xy /= pFactor;
+ position.xy = l.xy * l.zw + CameraPos.xy;
+ position.z *= zPerspectiveBias;
+ return position;
+}
+
+void main()
+{
+ vec4 pos = LightMVP * gl_Vertex;
+
+ tPos = applyPerspectiveDistortion(pos);
+
+ gl_Position = vec4(tPos.xyz, 1.0);
+ gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+}
diff --git a/client/shaders/shadow_shaders/pass2_fragment.glsl b/client/shaders/shadow_shaders/pass2_fragment.glsl
new file mode 100644
index 000000000..00b4f9f6c
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass2_fragment.glsl
@@ -0,0 +1,23 @@
+uniform sampler2D ShadowMapClientMap;
+#ifdef COLORED_SHADOWS
+uniform sampler2D ShadowMapClientMapTraslucent;
+#endif
+uniform sampler2D ShadowMapSamplerdynamic;
+
+void main() {
+
+#ifdef COLORED_SHADOWS
+ vec2 first_depth = texture2D(ShadowMapClientMap, gl_TexCoord[0].st).rg;
+ vec2 depth_splitdynamics = vec2(texture2D(ShadowMapSamplerdynamic, gl_TexCoord[2].st).r, 0.0);
+ if (first_depth.r > depth_splitdynamics.r)
+ first_depth = depth_splitdynamics;
+ vec2 depth_color = texture2D(ShadowMapClientMapTraslucent, gl_TexCoord[1].st).rg;
+ gl_FragColor = vec4(first_depth.r, first_depth.g, depth_color.r, depth_color.g);
+#else
+ float first_depth = texture2D(ShadowMapClientMap, gl_TexCoord[0].st).r;
+ float depth_splitdynamics = texture2D(ShadowMapSamplerdynamic, gl_TexCoord[2].st).r;
+ first_depth = min(first_depth, depth_splitdynamics);
+ gl_FragColor = vec4(first_depth, 0.0, 0.0, 1.0);
+#endif
+
+}
diff --git a/client/shaders/shadow_shaders/pass2_vertex.glsl b/client/shaders/shadow_shaders/pass2_vertex.glsl
new file mode 100644
index 000000000..ac445c9c7
--- /dev/null
+++ b/client/shaders/shadow_shaders/pass2_vertex.glsl
@@ -0,0 +1,9 @@
+
+void main()
+{
+ vec4 uv = vec4(gl_Vertex.xyz, 1.0) * 0.5 + 0.5;
+ gl_TexCoord[0] = uv;
+ gl_TexCoord[1] = uv;
+ gl_TexCoord[2] = uv;
+ gl_Position = vec4(gl_Vertex.xyz, 1.0);
+}
diff --git a/client/shaders/stars_shader/opengl_fragment.glsl b/client/shaders/stars_shader/opengl_fragment.glsl
new file mode 100644
index 000000000..a9ed741bf
--- /dev/null
+++ b/client/shaders/stars_shader/opengl_fragment.glsl
@@ -0,0 +1,6 @@
+uniform vec4 starColor;
+
+void main(void)
+{
+ gl_FragColor = starColor;
+}
diff --git a/client/shaders/stars_shader/opengl_vertex.glsl b/client/shaders/stars_shader/opengl_vertex.glsl
new file mode 100644
index 000000000..77c401f34
--- /dev/null
+++ b/client/shaders/stars_shader/opengl_vertex.glsl
@@ -0,0 +1,4 @@
+void main(void)
+{
+ gl_Position = mWorldViewProj * inVertexPosition;
+}
diff --git a/client/shaders/water_surface_shader/opengl_fragment.glsl b/client/shaders/water_surface_shader/opengl_fragment.glsl
deleted file mode 100644
index b4c0cc4f8..000000000
--- a/client/shaders/water_surface_shader/opengl_fragment.glsl
+++ /dev/null
@@ -1,164 +0,0 @@
-uniform sampler2D baseTexture;
-uniform sampler2D normalTexture;
-uniform sampler2D textureFlags;
-
-uniform vec4 skyBgColor;
-uniform float fogDistance;
-uniform vec3 eyePosition;
-
-varying vec3 vPosition;
-varying vec3 worldPosition;
-
-varying vec3 eyeVec;
-varying vec3 tsEyeVec;
-varying vec3 lightVec;
-varying vec3 tsLightVec;
-
-bool normalTexturePresent = false;
-bool texTileableHorizontal = false;
-bool texTileableVertical = false;
-bool texSeamless = false;
-
-const float e = 2.718281828459;
-const float BS = 10.0;
-
-#ifdef ENABLE_TONE_MAPPING
-
-/* Hable's UC2 Tone mapping parameters
- A = 0.22;
- B = 0.30;
- C = 0.10;
- D = 0.20;
- E = 0.01;
- F = 0.30;
- W = 11.2;
- equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F
-*/
-
-vec3 uncharted2Tonemap(vec3 x)
-{
- return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03334;
-}
-
-vec4 applyToneMapping(vec4 color)
-{
- color = vec4(pow(color.rgb, vec3(2.2)), color.a);
- const float gamma = 1.6;
- const float exposureBias = 5.5;
- color.rgb = uncharted2Tonemap(exposureBias * color.rgb);
- // Precalculated white_scale from
- //vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
- vec3 whiteScale = vec3(1.036015346);
- color.rgb *= whiteScale;
- return vec4(pow(color.rgb, vec3(1.0 / gamma)), color.a);
-}
-#endif
-
-void get_texture_flags()
-{
- vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0));
- if (flags.r > 0.5) {
- normalTexturePresent = true;
- }
- if (flags.g > 0.5) {
- texTileableHorizontal = true;
- }
- if (flags.b > 0.5) {
- texTileableVertical = true;
- }
- if (texTileableHorizontal && texTileableVertical) {
- texSeamless = true;
- }
-}
-
-float intensity(vec3 color)
-{
- return (color.r + color.g + color.b) / 3.0;
-}
-
-float get_rgb_height(vec2 uv)
-{
- return intensity(texture2D(baseTexture,uv).rgb);
-}
-
-vec4 get_normal_map(vec2 uv)
-{
- vec4 bump = texture2D(normalTexture, uv).rgba;
- bump.xyz = normalize(bump.xyz * 2.0 -1.0);
- bump.y = -bump.y;
- return bump;
-}
-
-void main(void)
-{
- vec3 color;
- vec4 bump;
- vec2 uv = gl_TexCoord[0].st;
- bool use_normalmap = false;
- get_texture_flags();
-
-#ifdef ENABLE_PARALLAX_OCCLUSION
- if (normalTexturePresent) {
- vec3 tsEye = normalize(tsEyeVec);
- float height = PARALLAX_OCCLUSION_SCALE * texture2D(normalTexture, uv).a - PARALLAX_OCCLUSION_BIAS;
- uv = uv + texture2D(normalTexture, uv).z * height * vec2(tsEye.x,-tsEye.y);
- }
-#endif
-
-#ifdef USE_NORMALMAPS
- if (normalTexturePresent) {
- bump = get_normal_map(uv);
- use_normalmap = true;
- }
-#endif
-
- if (GENERATE_NORMALMAPS == 1 && use_normalmap == false) {
- float tl = get_rgb_height (vec2(uv.x-SAMPLE_STEP,uv.y+SAMPLE_STEP));
- float t = get_rgb_height (vec2(uv.x-SAMPLE_STEP,uv.y-SAMPLE_STEP));
- float tr = get_rgb_height (vec2(uv.x+SAMPLE_STEP,uv.y+SAMPLE_STEP));
- float r = get_rgb_height (vec2(uv.x+SAMPLE_STEP,uv.y));
- float br = get_rgb_height (vec2(uv.x+SAMPLE_STEP,uv.y-SAMPLE_STEP));
- float b = get_rgb_height (vec2(uv.x,uv.y-SAMPLE_STEP));
- float bl = get_rgb_height (vec2(uv.x-SAMPLE_STEP,uv.y-SAMPLE_STEP));
- float l = get_rgb_height (vec2(uv.x-SAMPLE_STEP,uv.y));
- float dX = (tr + 2.0 * r + br) - (tl + 2.0 * l + bl);
- float dY = (bl + 2.0 * b + br) - (tl + 2.0 * t + tr);
- bump = vec4 (normalize(vec3 (dX, -dY, NORMALMAPS_STRENGTH)),1.0);
- use_normalmap = true;
- }
-
-vec4 base = texture2D(baseTexture, uv).rgba;
-
-#ifdef ENABLE_BUMPMAPPING
- if (use_normalmap) {
- vec3 L = normalize(lightVec);
- vec3 E = normalize(eyeVec);
- float specular = pow(clamp(dot(reflect(L, bump.xyz), E), 0.0, 1.0),0.5);
- float diffuse = dot(E,bump.xyz);
- /* Mathematic optimization
- * Original: color = 0.05*base.rgb + diffuse*base.rgb + 0.2*specular*base.rgb;
- * This optimization save 2 multiplications (orig: 4 multiplications + 3 additions
- * end: 2 multiplications + 3 additions)
- */
- color = (0.05 + diffuse + 0.2 * specular) * base.rgb;
- } else {
- color = base.rgb;
- }
-#else
- color = base.rgb;
-#endif
-
- vec4 col = vec4(color.rgb * gl_Color.rgb, 1.0);
-
-#ifdef ENABLE_TONE_MAPPING
- col = applyToneMapping(col);
-#endif
-
- if (fogDistance != 0.0) {
- float d = clamp((fogDistance - length(eyeVec)) / (fogDistance * 0.6), 0.0, 1.0);
- col = mix(skyBgColor, col, d);
- }
- col = vec4(col.rgb, base.a);
-
- gl_FragColor = col;
-}
diff --git a/client/shaders/water_surface_shader/opengl_vertex.glsl b/client/shaders/water_surface_shader/opengl_vertex.glsl
deleted file mode 100644
index a930e7b8f..000000000
--- a/client/shaders/water_surface_shader/opengl_vertex.glsl
+++ /dev/null
@@ -1,142 +0,0 @@
-uniform mat4 mWorldViewProj;
-uniform mat4 mWorld;
-
-uniform float dayNightRatio;
-uniform vec3 eyePosition;
-uniform float animationTimer;
-
-varying vec3 vPosition;
-varying vec3 worldPosition;
-
-varying vec3 eyeVec;
-varying vec3 lightVec;
-varying vec3 tsEyeVec;
-varying vec3 tsLightVec;
-
-const float e = 2.718281828459;
-const float BS = 10.0;
-
-float smoothCurve(float x)
-{
- return x * x * (3.0 - 2.0 * x);
-}
-float triangleWave(float x)
-{
- return abs(fract( x + 0.5 ) * 2.0 - 1.0);
-}
-float smoothTriangleWave(float x)
-{
- return smoothCurve(triangleWave( x )) * 2.0 - 1.0;
-}
-
-void main(void)
-{
- gl_TexCoord[0] = gl_MultiTexCoord0;
-
-#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER
- vec4 pos = gl_Vertex;
- pos.y -= 2.0;
-
- float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);
-
- pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;
- gl_Position = mWorldViewProj * pos;
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES
- vec4 pos = gl_Vertex;
- vec4 pos2 = mWorld * gl_Vertex;
- /*
- * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)
- * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)
- * And bufferize calcul to a float
- */
- float pos2XpZ = pos2.x + pos2.z;
- pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * 0.01) * 2.0 - 1.0) * 0.4;
- pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.2;
- pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.4;
- gl_Position = mWorldViewProj * pos;
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS
- vec4 pos = gl_Vertex;
- vec4 pos2 = mWorld * gl_Vertex;
- if (gl_TexCoord[0].y < 0.05) {
- /*
- * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)
- * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)
- * And bufferize calcul to a float
- */
- float pos2XpZ = pos2.x + pos2.z;
- pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2XpZ * 0.1) * 2.0 - 1.0) * 0.8;
- pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2XpZ * -0.5) * 2.0 - 1.0) * 0.4;
- }
- gl_Position = mWorldViewProj * pos;
-#else
- gl_Position = mWorldViewProj * gl_Vertex;
-#endif
-
- vPosition = gl_Position.xyz;
- worldPosition = (mWorld * gl_Vertex).xyz;
- vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
-
- vec3 normal, tangent, binormal;
- normal = normalize(gl_NormalMatrix * gl_Normal);
- if (gl_Normal.x > 0.5) {
- // 1.0, 0.0, 0.0
- tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, -1.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
- } else if (gl_Normal.x < -0.5) {
- // -1.0, 0.0, 0.0
- tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
- } else if (gl_Normal.y > 0.5) {
- // 0.0, 1.0, 0.0
- tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
- } else if (gl_Normal.y < -0.5) {
- // 0.0, -1.0, 0.0
- tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
- } else if (gl_Normal.z > 0.5) {
- // 0.0, 0.0, 1.0
- tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
- } else if (gl_Normal.z < -0.5) {
- // 0.0, 0.0, -1.0
- tangent = normalize(gl_NormalMatrix * vec3(-1.0, 0.0, 0.0));
- binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
- }
- mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x,
- tangent.y, binormal.y, normal.y,
- tangent.z, binormal.z, normal.z);
-
- lightVec = sunPosition - worldPosition;
- tsLightVec = lightVec * tbnMatrix;
- eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
- tsEyeVec = eyeVec * tbnMatrix;
-
- vec4 color;
- float day = gl_Color.r;
- float night = gl_Color.g;
- float light_source = gl_Color.b;
-
- float rg = mix(night, day, dayNightRatio);
- rg += light_source * 2.5; // Make light sources brighter
- float b = rg;
-
- // Moonlight is blue
- b += (day - night) / 13.0;
- rg -= (day - night) / 23.0;
-
- // Emphase blue a bit in darker places
- // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
- b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
-
- // Artificial light is yellow-ish
- // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
- rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
-
- color.r = rg;
- color.g = rg;
- color.b = b;
-
- color.a = gl_Color.a;
- gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0);
-}
diff --git a/client/shaders/wielded_shader/opengl_fragment.glsl b/client/shaders/wielded_shader/opengl_fragment.glsl
deleted file mode 100644
index bd9741441..000000000
--- a/client/shaders/wielded_shader/opengl_fragment.glsl
+++ /dev/null
@@ -1,114 +0,0 @@
-uniform sampler2D baseTexture;
-uniform sampler2D normalTexture;
-uniform sampler2D textureFlags;
-
-uniform vec4 skyBgColor;
-uniform float fogDistance;
-uniform vec3 eyePosition;
-
-varying vec3 vPosition;
-varying vec3 worldPosition;
-
-varying vec3 eyeVec;
-varying vec3 lightVec;
-
-bool normalTexturePresent = false;
-bool texTileableHorizontal = false;
-bool texTileableVertical = false;
-bool texSeamless = false;
-
-const float e = 2.718281828459;
-const float BS = 10.0;
-
-void get_texture_flags()
-{
- vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0));
- if (flags.r > 0.5) {
- normalTexturePresent = true;
- }
- if (flags.g > 0.5) {
- texTileableHorizontal = true;
- }
- if (flags.b > 0.5) {
- texTileableVertical = true;
- }
- if (texTileableHorizontal && texTileableVertical) {
- texSeamless = true;
- }
-}
-
-float intensity(vec3 color)
-{
- return (color.r + color.g + color.b) / 3.0;
-}
-
-float get_rgb_height(vec2 uv)
-{
- if (texSeamless) {
- return intensity(texture2D(baseTexture, uv).rgb);
- } else {
- return intensity(texture2D(baseTexture, clamp(uv, 0.0, 0.999)).rgb);
- }
-}
-
-vec4 get_normal_map(vec2 uv)
-{
- vec4 bump = texture2D(normalTexture, uv).rgba;
- bump.xyz = normalize(bump.xyz * 2.0 - 1.0);
- return bump;
-}
-
-void main(void)
-{
- vec3 color;
- vec4 bump;
- vec2 uv = gl_TexCoord[0].st;
- bool use_normalmap = false;
- get_texture_flags();
-
-#if USE_NORMALMAPS == 1
- if (normalTexturePresent) {
- bump = get_normal_map(uv);
- use_normalmap = true;
- }
-#endif
-
- if (GENERATE_NORMALMAPS == 1 && normalTexturePresent == false) {
- float tl = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y + SAMPLE_STEP));
- float t = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float tr = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y + SAMPLE_STEP));
- float r = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y));
- float br = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float b = get_rgb_height(vec2(uv.x, uv.y - SAMPLE_STEP));
- float bl = get_rgb_height(vec2(uv.x -SAMPLE_STEP, uv.y - SAMPLE_STEP));
- float l = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y));
- float dX = (tr + 2.0 * r + br) - (tl + 2.0 * l + bl);
- float dY = (bl + 2.0 * b + br) - (tl + 2.0 * t + tr);
- bump = vec4(normalize(vec3 (dX, dY, NORMALMAPS_STRENGTH)), 1.0);
- use_normalmap = true;
- }
-
- vec4 base = texture2D(baseTexture, uv).rgba;
-
-#ifdef ENABLE_BUMPMAPPING
- if (use_normalmap) {
- vec3 L = normalize(lightVec);
- vec3 E = normalize(eyeVec);
- float specular = pow(clamp(dot(reflect(L, bump.xyz), E), 0.0, 1.0), 1.0);
- float diffuse = dot(-E,bump.xyz);
- color = (diffuse + 0.1 * specular) * base.rgb;
- } else {
- color = base.rgb;
- }
-#else
- color = base.rgb;
-#endif
-
- vec4 col = vec4(color.rgb, base.a);
- col *= gl_Color;
- if (fogDistance != 0.0) {
- float d = clamp((fogDistance - length(eyeVec)) / (fogDistance * 0.6), 0.0, 1.0);
- col = mix(skyBgColor, col, d);
- }
- gl_FragColor = vec4(col.rgb, base.a);
-}
diff --git a/client/shaders/wielded_shader/opengl_vertex.glsl b/client/shaders/wielded_shader/opengl_vertex.glsl
deleted file mode 100644
index 86c626896..000000000
--- a/client/shaders/wielded_shader/opengl_vertex.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-uniform mat4 mWorldViewProj;
-uniform mat4 mWorld;
-
-uniform float dayNightRatio;
-uniform vec3 eyePosition;
-uniform float animationTimer;
-
-varying vec3 vPosition;
-varying vec3 worldPosition;
-
-varying vec3 eyeVec;
-varying vec3 lightVec;
-varying vec3 tsEyeVec;
-varying vec3 tsLightVec;
-
-const float e = 2.718281828459;
-const float BS = 10.0;
-
-void main(void)
-{
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_Position = mWorldViewProj * gl_Vertex;
-
- vPosition = gl_Position.xyz;
- worldPosition = (mWorld * gl_Vertex).xyz;
-
- vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
-
- lightVec = sunPosition - worldPosition;
- eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz;
-
- gl_FrontColor = gl_BackColor = gl_Color;
-}
diff --git a/clientmods/preview/example.lua b/clientmods/preview/example.lua
new file mode 100644
index 000000000..2f42eef64
--- /dev/null
+++ b/clientmods/preview/example.lua
@@ -0,0 +1,2 @@
+print("Loaded example file!, loading more examples")
+dofile(core.get_modpath(core.get_current_modname()) .. "/examples/first.lua")
diff --git a/clientmods/preview/examples/first.lua b/clientmods/preview/examples/first.lua
new file mode 100644
index 000000000..c24f461e6
--- /dev/null
+++ b/clientmods/preview/examples/first.lua
@@ -0,0 +1 @@
+print("loaded first.lua example file")
diff --git a/clientmods/preview/init.lua b/clientmods/preview/init.lua
new file mode 100644
index 000000000..46d59ec9a
--- /dev/null
+++ b/clientmods/preview/init.lua
@@ -0,0 +1,206 @@
+local modname = assert(core.get_current_modname())
+local modstorage = core.get_mod_storage()
+local mod_channel
+
+dofile(core.get_modpath(modname) .. "example.lua")
+
+core.register_on_shutdown(function()
+ print("[PREVIEW] shutdown client")
+end)
+local id = nil
+
+do
+ local server_info = core.get_server_info()
+ print("Server version: " .. server_info.protocol_version)
+ print("Server ip: " .. server_info.ip)
+ print("Server address: " .. server_info.address)
+ print("Server port: " .. server_info.port)
+
+ print("CSM restrictions: " .. dump(core.get_csm_restrictions()))
+
+ local l1, l2 = core.get_language()
+ print("Configured language: " .. l1 .. " / " .. l2)
+end
+
+mod_channel = core.mod_channel_join("experimental_preview")
+
+core.after(4, function()
+ if mod_channel:is_writeable() then
+ mod_channel:send_all("preview talk to experimental")
+ end
+end)
+
+core.after(1, function()
+ print("armor: " .. dump(core.localplayer:get_armor_groups()))
+ id = core.localplayer:hud_add({
+ hud_elem_type = "text",
+ name = "example",
+ number = 0xff0000,
+ position = {x=0, y=1},
+ offset = {x=8, y=-8},
+ text = "You are using the preview mod",
+ scale = {x=200, y=60},
+ alignment = {x=1, y=-1},
+ })
+end)
+
+core.register_on_modchannel_message(function(channel, sender, message)
+ print("[PREVIEW][modchannels] Received message `" .. message .. "` on channel `"
+ .. channel .. "` from sender `" .. sender .. "`")
+ core.after(1, function()
+ mod_channel:send_all("CSM preview received " .. message)
+ end)
+end)
+
+core.register_on_modchannel_signal(function(channel, signal)
+ print("[PREVIEW][modchannels] Received signal id `" .. signal .. "` on channel `"
+ .. channel)
+end)
+
+core.register_on_inventory_open(function(inventory)
+ print("INVENTORY OPEN")
+ print(dump(inventory))
+ return false
+end)
+
+core.register_on_placenode(function(pointed_thing, node)
+ print("The local player place a node!")
+ print("pointed_thing :" .. dump(pointed_thing))
+ print("node placed :" .. dump(node))
+ return false
+end)
+
+core.register_on_item_use(function(itemstack, pointed_thing)
+ print("The local player used an item!")
+ print("pointed_thing :" .. dump(pointed_thing))
+ print("item = " .. itemstack:get_name())
+
+ if not itemstack:is_empty() then
+ return false
+ end
+
+ local pos = core.camera:get_pos()
+ local pos2 = vector.add(pos, vector.multiply(core.camera:get_look_dir(), 100))
+
+ local rc = core.raycast(pos, pos2)
+ local i = rc:next()
+ print("[PREVIEW] raycast next: " .. dump(i))
+ if i then
+ print("[PREVIEW] line of sight: " .. (core.line_of_sight(pos, i.above) and "yes" or "no"))
+
+ local n1 = core.find_nodes_in_area(pos, i.under, {"default:stone"})
+ local n2 = core.find_nodes_in_area_under_air(pos, i.under, {"default:stone"})
+ print(("[PREVIEW] found %s nodes, %s nodes under air"):format(
+ n1 and #n1 or "?", n2 and #n2 or "?"))
+ end
+
+ return false
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_on_receiving_chat_message(function(message)
+ print("[PREVIEW] Received message " .. message)
+ return false
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_on_sending_chat_message(function(message)
+ print("[PREVIEW] Sending message " .. message)
+ return false
+end)
+
+core.register_on_chatcommand(function(command, params)
+ print("[PREVIEW] caught command '"..command.."'. Parameters: '"..params.."'")
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_on_hp_modification(function(hp)
+ print("[PREVIEW] HP modified " .. hp)
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_on_damage_taken(function(hp)
+ print("[PREVIEW] Damage taken " .. hp)
+end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_chatcommand("dump", {
+ func = function(param)
+ return true, dump(_G)
+ end,
+})
+
+local function preview_minimap()
+ local minimap = core.ui.minimap
+ if not minimap then
+ print("[PREVIEW] Minimap is disabled. Skipping.")
+ return
+ end
+ minimap:set_mode(4)
+ minimap:show()
+ minimap:set_pos({x=5, y=50, z=5})
+ minimap:set_shape(math.random(0, 1))
+
+ print("[PREVIEW] Minimap: mode => " .. dump(minimap:get_mode()) ..
+ " position => " .. dump(minimap:get_pos()) ..
+ " angle => " .. dump(minimap:get_angle()))
+end
+
+core.after(2, function()
+ print("[PREVIEW] loaded " .. modname .. " mod")
+ modstorage:set_string("current_mod", modname)
+ assert(modstorage:get_string("current_mod") == modname)
+ preview_minimap()
+end)
+
+core.after(5, function()
+ if core.ui.minimap then
+ core.ui.minimap:show()
+ end
+
+ print("[PREVIEW] Time of day " .. core.get_timeofday())
+
+ print("[PREVIEW] Node level: " .. core.get_node_level({x=0, y=20, z=0}) ..
+ " max level " .. core.get_node_max_level({x=0, y=20, z=0}))
+
+ print("[PREVIEW] Find node near: " .. dump(core.find_node_near({x=0, y=20, z=0}, 10,
+ {"group:tree", "default:dirt", "default:stone"})))
+
+ print("[PREVIEW] Settings: preview_csm_test_setting = " ..
+ tostring(core.settings:get_bool("preview_csm_test_setting", false)))
+end)
+
+core.register_on_dignode(function(pos, node)
+ print("The local player dug a node!")
+ print("pos:" .. dump(pos))
+ print("node:" .. dump(node))
+ return false
+end)
+
+core.register_on_punchnode(function(pos, node)
+ print("The local player punched a node!")
+ local itemstack = core.localplayer:get_wielded_item()
+ print(dump(itemstack:to_table()))
+ print("pos:" .. dump(pos))
+ print("node:" .. dump(node))
+ local meta = core.get_meta(pos)
+ print("punched meta: " .. (meta and dump(meta:to_table()) or "(missing)"))
+ return false
+end)
+
+core.register_chatcommand("privs", {
+ func = function(param)
+ return true, core.privs_to_string(minetest.get_privilege_list())
+ end,
+})
+
+core.register_chatcommand("text", {
+ func = function(param)
+ return core.localplayer:hud_change(id, "text", param)
+ end,
+})
+
+
+core.register_on_mods_loaded(function()
+ core.log("Yeah preview mod is loaded with other CSM mods.")
+end)
diff --git a/clientmods/preview/mod.conf b/clientmods/preview/mod.conf
new file mode 100644
index 000000000..23a5c3e90
--- /dev/null
+++ b/clientmods/preview/mod.conf
@@ -0,0 +1 @@
+name = preview
diff --git a/clientmods/preview/settingtypes.txt b/clientmods/preview/settingtypes.txt
new file mode 100644
index 000000000..fea9e71f3
--- /dev/null
+++ b/clientmods/preview/settingtypes.txt
@@ -0,0 +1 @@
+preview_csm_test_setting (Test CSM setting) bool false \ No newline at end of file
diff --git a/cmake/Modules/FindCURL.cmake b/cmake/Modules/FindCURL.cmake
index 2ec866ef9..43aaf3e18 100644
--- a/cmake/Modules/FindCURL.cmake
+++ b/cmake/Modules/FindCURL.cmake
@@ -1,19 +1,16 @@
mark_as_advanced(CURL_LIBRARY CURL_INCLUDE_DIR)
-find_library(CURL_LIBRARY NAMES curl)
+find_library(CURL_LIBRARY NAMES curl libcurl)
find_path(CURL_INCLUDE_DIR NAMES curl/curl.h)
-set(CURL_REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR)
-
if(WIN32)
- find_file(CURL_DLL NAMES libcurl-4.dll
- PATHS
- "C:/Windows/System32"
- DOC "Path to the cURL DLL (for installation)")
- mark_as_advanced(CURL_DLL)
- set(CURL_REQUIRED_VARS ${CURL_REQUIRED_VARS} CURL_DLL)
+ # If VCPKG_APPLOCAL_DEPS is ON, dll's are automatically handled by VCPKG
+ if(NOT VCPKG_APPLOCAL_DEPS)
+ find_file(CURL_DLL NAMES libcurl-4.dll libcurl.dll
+ DOC "Path to the cURL DLL (for installation)")
+ mark_as_advanced(CURL_DLL)
+ endif()
endif()
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(CURL DEFAULT_MSG ${CURL_REQUIRED_VARS})
-
+find_package_handle_standard_args(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR)
diff --git a/cmake/Modules/FindGMP.cmake b/cmake/Modules/FindGMP.cmake
index bb48289c5..190b7c548 100644
--- a/cmake/Modules/FindGMP.cmake
+++ b/cmake/Modules/FindGMP.cmake
@@ -1,10 +1,9 @@
-
option(ENABLE_SYSTEM_GMP "Use GMP from system" TRUE)
mark_as_advanced(GMP_LIBRARY GMP_INCLUDE_DIR)
set(USE_SYSTEM_GMP FALSE)
if(ENABLE_SYSTEM_GMP)
- find_library(GMP_LIBRARY NAMES libgmp.so)
+ find_library(GMP_LIBRARY NAMES gmp)
find_path(GMP_INCLUDE_DIR NAMES gmp.h)
if(GMP_LIBRARY AND GMP_INCLUDE_DIR)
@@ -13,15 +12,13 @@ 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)
message(STATUS "Using bundled mini-gmp library.")
- set(GMP_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/gmp)
+ set(GMP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/gmp)
set(GMP_LIBRARY gmp)
- add_subdirectory(gmp)
+ add_subdirectory(lib/gmp)
endif()
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindGettextLib.cmake b/cmake/Modules/FindGettextLib.cmake
index cb1ce7b91..b7681827c 100644
--- a/cmake/Modules/FindGettextLib.cmake
+++ b/cmake/Modules/FindGettextLib.cmake
@@ -42,25 +42,16 @@ 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)
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(GetText DEFAULT_MSG ${GETTEXT_REQUIRED_VARS})
+find_package_handle_standard_args(GettextLib DEFAULT_MSG ${GETTEXT_REQUIRED_VARS})
-if(GETTEXT_FOUND)
+if(GETTEXTLIB_FOUND)
# BSD variants require special linkage as they don't use glibc
- if(${CMAKE_SYSTEM_NAME} MATCHES "BSD")
+ if(${CMAKE_SYSTEM_NAME} MATCHES "BSD|DragonFly")
set(GETTEXT_LIBRARY "intl")
endif()
diff --git a/cmake/Modules/FindIrrlicht.cmake b/cmake/Modules/FindIrrlicht.cmake
deleted file mode 100644
index 8dda15722..000000000
--- a/cmake/Modules/FindIrrlicht.cmake
+++ /dev/null
@@ -1,71 +0,0 @@
-
-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
-
-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()
- find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
- PATHS
- /usr/local/include/irrlicht
- /usr/include/irrlicht
- )
-
- find_library(IRRLICHT_LIBRARY NAMES libIrrlicht.so libIrrlicht.a Irrlicht
- PATHS
- /usr/local/lib
- /usr/lib
- )
-endif()
-
-
-# On Windows, find the DLL for installation
-if(WIN32)
- 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(WIN32)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Irrlicht DEFAULT_MSG IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR)
-
diff --git a/cmake/Modules/FindJson.cmake b/cmake/Modules/FindJson.cmake
index e69d6c4c0..cce2d387f 100644
--- a/cmake/Modules/FindJson.cmake
+++ b/cmake/Modules/FindJson.cmake
@@ -1,27 +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/features.h PATH_SUFFIXES jsoncpp)
+ find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(JSONCPP DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)
-
- if(JSONCPP_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 JSONCPP_FOUND)
- message(STATUS "Using bundled JSONCPP library.")
- set(JSON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/jsoncpp)
+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(jsoncpp/json)
+ add_subdirectory(lib/jsoncpp)
endif()
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)
diff --git a/cmake/Modules/FindLua.cmake b/cmake/Modules/FindLua.cmake
new file mode 100644
index 000000000..be5d92d8c
--- /dev/null
+++ b/cmake/Modules/FindLua.cmake
@@ -0,0 +1,28 @@
+# Look for Lua library to use
+# This selects LuaJIT by default
+
+option(ENABLE_LUAJIT "Enable LuaJIT support" TRUE)
+set(USE_LUAJIT FALSE)
+option(REQUIRE_LUAJIT "Require LuaJIT support" FALSE)
+if(REQUIRE_LUAJIT)
+ set(ENABLE_LUAJIT TRUE)
+endif()
+if(ENABLE_LUAJIT)
+ find_package(LuaJIT)
+ if(LUAJIT_FOUND)
+ set(USE_LUAJIT TRUE)
+ message (STATUS "Using LuaJIT provided by system.")
+ elseif(REQUIRE_LUAJIT)
+ message(FATAL_ERROR "LuaJIT not found whereas REQUIRE_LUAJIT=\"TRUE\" is used.\n"
+ "To continue, either install LuaJIT or do not use REQUIRE_LUAJIT=\"TRUE\".")
+ endif()
+else()
+ message (STATUS "LuaJIT detection disabled! (ENABLE_LUAJIT=0)")
+endif()
+
+if(NOT USE_LUAJIT)
+ message(STATUS "LuaJIT not found, using bundled Lua.")
+ set(LUA_LIBRARY lua)
+ set(LUA_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/lua/src)
+ add_subdirectory(lib/lua)
+endif()
diff --git a/cmake/Modules/FindLuaJIT.cmake b/cmake/Modules/FindLuaJIT.cmake
index e4335d834..217415d14 100644
--- a/cmake/Modules/FindLuaJIT.cmake
+++ b/cmake/Modules/FindLuaJIT.cmake
@@ -1,15 +1,15 @@
# Locate LuaJIT library
# This module defines
# LUAJIT_FOUND, if false, do not try to link to Lua
+# LUA_LIBRARY, where to find the lua library
# LUA_INCLUDE_DIR, where to find lua.h
-# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# This module is similar to FindLua51.cmake except that it finds LuaJit instead.
FIND_PATH(LUA_INCLUDE_DIR luajit.h
HINTS
$ENV{LUA_DIR}
- PATH_SUFFIXES include/luajit-2.0 include/luajit-5_1-2.0 include
+ PATH_SUFFIXES include/luajit-2.1 include/luajit-2.0 include/luajit-5_1-2.1 include/luajit-5_1-2.0 include luajit
PATHS
~/Library/Frameworks
/Library/Frameworks
@@ -19,32 +19,35 @@ FIND_PATH(LUA_INCLUDE_DIR luajit.h
/opt
)
-FIND_LIBRARY(LUA_LIBRARY
- NAMES luajit-5.1
- HINTS
- $ENV{LUA_DIR}
- PATH_SUFFIXES lib64 lib
- PATHS
- ~/Library/Frameworks
- /Library/Frameworks
- /sw
- /opt/local
- /opt/csw
- /opt
-)
-
-IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/luajit.h")
- FILE(STRINGS "${LUA_INCLUDE_DIR}/luajit.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT .+\"")
-
- STRING(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
- UNSET(lua_version_str)
-ENDIF()
+# Test if running on vcpkg toolchain
+if(DEFINED VCPKG_TARGET_TRIPLET AND DEFINED VCPKG_APPLOCAL_DEPS)
+ # On vcpkg luajit is 'lua51' and normal lua is 'lua'
+ FIND_LIBRARY(LUA_LIBRARY
+ NAMES lua51
+ HINTS
+ $ENV{LUA_DIR}
+ PATH_SUFFIXES lib
+ )
+else()
+ FIND_LIBRARY(LUA_LIBRARY
+ NAMES luajit-5.1
+ HINTS
+ $ENV{LUA_DIR}
+ PATH_SUFFIXES lib64 lib
+ PATHS
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /sw
+ /opt/local
+ /opt/csw
+ /opt
+ )
+endif()
INCLUDE(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if
-# all listed variables are TRUE
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit
- REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR
- VERSION_VAR LUA_VERSION_STRING)
+# all listed variables exist
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJIT
+ REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR)
-MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY)
+MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARY)
diff --git a/cmake/Modules/FindOpenGLES2.cmake b/cmake/Modules/FindOpenGLES2.cmake
deleted file mode 100644
index a8622f3b2..000000000
--- a/cmake/Modules/FindOpenGLES2.cmake
+++ /dev/null
@@ -1,112 +0,0 @@
-#-------------------------------------------------------------------
-# This file is stolen from part of the CMake build system for OGRE (Object-oriented Graphics Rendering Engine) http://www.ogre3d.org/
-#
-# The contents of this file are placed in the public domain. Feel
-# free to make use of it in any way you like.
-#-------------------------------------------------------------------
-
-# - Try to find OpenGLES and EGL
-# Once done this will define
-#
-# OPENGLES2_FOUND - system has OpenGLES
-# OPENGLES2_INCLUDE_DIR - the GL include directory
-# OPENGLES2_LIBRARIES - Link these to use OpenGLES
-#
-# EGL_FOUND - system has EGL
-# EGL_INCLUDE_DIR - the EGL include directory
-# EGL_LIBRARIES - Link these to use EGL
-
-# Win32, Apple, and Android are not tested!
-# Linux tested and works
-
-if(WIN32)
- if(CYGWIN)
- find_path(OPENGLES2_INCLUDE_DIR GLES2/gl2.h)
- find_library(OPENGLES2_LIBRARY libGLESv2)
- else()
- if(BORLAND)
- set(OPENGLES2_LIBRARY import32 CACHE STRING "OpenGL ES 2.x library for Win32")
- else()
- # TODO
- # set(OPENGLES_LIBRARY ${SOURCE_DIR}/Dependencies/lib/release/libGLESv2.lib CACHE STRING "OpenGL ES 2.x library for win32"
- endif()
- endif()
-elseif(APPLE)
- create_search_paths(/Developer/Platforms)
- findpkg_framework(OpenGLES2)
- set(OPENGLES2_LIBRARY "-framework OpenGLES")
-else()
- find_path(OPENGLES2_INCLUDE_DIR GLES2/gl2.h
- PATHS /usr/openwin/share/include
- /opt/graphics/OpenGL/include
- /usr/X11R6/include
- /usr/include
- )
-
- find_library(OPENGLES2_LIBRARY
- NAMES GLESv2
- PATHS /opt/graphics/OpenGL/lib
- /usr/openwin/lib
- /usr/shlib /usr/X11R6/lib
- /usr/lib
- )
-
- if(NOT BUILD_ANDROID)
- find_path(EGL_INCLUDE_DIR EGL/egl.h
- PATHS /usr/openwin/share/include
- /opt/graphics/OpenGL/include
- /usr/X11R6/include
- /usr/include
- )
-
- find_library(EGL_LIBRARY
- NAMES EGL
- PATHS /opt/graphics/OpenGL/lib
- /usr/openwin/lib
- /usr/shlib
- /usr/X11R6/lib
- /usr/lib
- )
-
- # On Unix OpenGL usually requires X11.
- # It doesn't require X11 on OSX.
-
- if(OPENGLES2_LIBRARY)
- if(NOT X11_FOUND)
- include(FindX11)
- endif()
- if(X11_FOUND)
- set(OPENGLES2_LIBRARIES ${X11_LIBRARIES})
- endif()
- endif()
- endif()
-endif()
-
-set(OPENGLES2_LIBRARIES ${OPENGLES2_LIBRARIES} ${OPENGLES2_LIBRARY})
-
-if(BUILD_ANDROID)
- if(OPENGLES2_LIBRARY)
- set(EGL_LIBRARIES)
- set(OPENGLES2_FOUND TRUE)
- endif()
-else()
- if(OPENGLES2_LIBRARY AND EGL_LIBRARY)
- set(OPENGLES2_LIBRARIES ${OPENGLES2_LIBRARY} ${OPENGLES2_LIBRARIES})
- set(EGL_LIBRARIES ${EGL_LIBRARY} ${EGL_LIBRARIES})
- set(OPENGLES2_FOUND TRUE)
- endif()
-endif()
-
-mark_as_advanced(
- OPENGLES2_INCLUDE_DIR
- OPENGLES2_LIBRARY
- EGL_INCLUDE_DIR
- EGL_LIBRARY
-)
-
-if(OPENGLES2_FOUND)
- message(STATUS "Found system OpenGL ES 2 library: ${OPENGLES2_LIBRARIES}")
-else()
- set(OPENGLES2_LIBRARIES "")
-endif()
-
diff --git a/cmake/Modules/FindSQLite3.cmake b/cmake/Modules/FindSQLite3.cmake
index b23553a80..8a66cb241 100644
--- a/cmake/Modules/FindSQLite3.cmake
+++ b/cmake/Modules/FindSQLite3.cmake
@@ -1,4 +1,4 @@
-mark_as_advanced(SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR)
+mark_as_advanced(SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR)
find_path(SQLITE3_INCLUDE_DIR sqlite3.h)
diff --git a/cmake/Modules/FindVorbis.cmake b/cmake/Modules/FindVorbis.cmake
index 8f3813694..222ddd9d5 100644
--- a/cmake/Modules/FindVorbis.cmake
+++ b/cmake/Modules/FindVorbis.cmake
@@ -20,27 +20,26 @@ if(NOT GP2XWIZ)
# Handle the QUIETLY and REQUIRED arguments and set VORBIS_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(VORBIS DEFAULT_MSG
+ find_package_handle_standard_args(Vorbis DEFAULT_MSG
OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR
OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY)
else(NOT GP2XWIZ)
find_path(VORBIS_INCLUDE_DIR tremor/ivorbisfile.h)
find_library(VORBIS_LIBRARY NAMES vorbis_dec)
- find_package_handle_standard_args(VORBIS DEFAULT_MSG
+ find_package_handle_standard_args(Vorbis DEFAULT_MSG
VORBIS_INCLUDE_DIR VORBIS_LIBRARY)
endif(NOT GP2XWIZ)
-
+
if(VORBIS_FOUND)
- if(NOT GP2XWIZ)
- set(VORBIS_LIBRARIES ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY}
- ${OGG_LIBRARY})
- else(NOT GP2XWIZ)
- set(VORBIS_LIBRARIES ${VORBIS_LIBRARY})
- endif(NOT GP2XWIZ)
+ if(NOT GP2XWIZ)
+ set(VORBIS_LIBRARIES ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY}
+ ${OGG_LIBRARY})
+ else(NOT GP2XWIZ)
+ set(VORBIS_LIBRARIES ${VORBIS_LIBRARY})
+ endif(NOT GP2XWIZ)
else(VORBIS_FOUND)
- set(VORBIS_LIBRARIES)
+ set(VORBIS_LIBRARIES)
endif(VORBIS_FOUND)
mark_as_advanced(OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR)
mark_as_advanced(OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY)
-
diff --git a/cmake/Modules/FindZstd.cmake b/cmake/Modules/FindZstd.cmake
new file mode 100644
index 000000000..e28e1334b
--- /dev/null
+++ b/cmake/Modules/FindZstd.cmake
@@ -0,0 +1,25 @@
+mark_as_advanced(ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
+
+find_path(ZSTD_INCLUDE_DIR NAMES zstd.h)
+
+find_library(ZSTD_LIBRARY NAMES zstd)
+
+if(ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY)
+ # Check that the API we use exists
+ include(CheckSymbolExists)
+ unset(HAVE_ZSTD_INITCSTREAM CACHE)
+ set(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
+ check_symbol_exists(ZSTD_initCStream zstd.h HAVE_ZSTD_INITCSTREAM)
+ unset(CMAKE_REQUIRED_INCLUDES)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
+ if(NOT HAVE_ZSTD_INITCSTREAM)
+ unset(ZSTD_INCLUDE_DIR CACHE)
+ unset(ZSTD_LIBRARY CACHE)
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Zstd DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
+
diff --git a/cmake/Modules/MinetestFindIrrlichtHeaders.cmake b/cmake/Modules/MinetestFindIrrlichtHeaders.cmake
new file mode 100644
index 000000000..e434b582f
--- /dev/null
+++ b/cmake/Modules/MinetestFindIrrlichtHeaders.cmake
@@ -0,0 +1,18 @@
+# Locate IrrlichtMt headers on system.
+
+find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
+ DOC "Path to the directory with IrrlichtMt includes"
+ PATHS
+ /usr/local/include/irrlichtmt
+ /usr/include/irrlichtmt
+ /system/develop/headers/irrlichtmt #Haiku
+ PATH_SUFFIXES "include/irrlichtmt"
+)
+
+# Handholding for users
+if(IRRLICHT_INCLUDE_DIR AND (NOT IS_DIRECTORY "${IRRLICHT_INCLUDE_DIR}" OR
+ NOT EXISTS "${IRRLICHT_INCLUDE_DIR}/irrlicht.h"))
+ message(WARNING "IRRLICHT_INCLUDE_DIR was set to ${IRRLICHT_INCLUDE_DIR} "
+ "but irrlicht.h does not exist inside. The path will not be used.")
+ unset(IRRLICHT_INCLUDE_DIR CACHE)
+endif()
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 3618b852d..ae36fd6bf 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -16,22 +16,13 @@ PREDEFINED = "USE_SPATIAL=1" \
"USE_REDIS=1" \
"USE_SOUND=1" \
"USE_CURL=1" \
- "USE_FREETYPE=1" \
"USE_GETTEXT=1"
# Input
-RECURSIVE = NO
+RECURSIVE = YES
STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@/src
INPUT = @CMAKE_CURRENT_SOURCE_DIR@/doc/main_page.dox \
- @CMAKE_CURRENT_SOURCE_DIR@/src/ \
- @CMAKE_CURRENT_SOURCE_DIR@/src/client \
- @CMAKE_CURRENT_SOURCE_DIR@/src/network \
- @CMAKE_CURRENT_SOURCE_DIR@/src/util \
- @CMAKE_CURRENT_SOURCE_DIR@/src/script \
- @CMAKE_CURRENT_SOURCE_DIR@/src/script/common \
- @CMAKE_CURRENT_SOURCE_DIR@/src/script/cpp_api \
- @CMAKE_CURRENT_SOURCE_DIR@/src/script/lua_api \
- @CMAKE_CURRENT_SOURCE_DIR@/src/threading
+ @CMAKE_CURRENT_SOURCE_DIR@/src/
# Dot graphs
HAVE_DOT = @DOXYGEN_DOT_FOUND@
diff --git a/doc/README.android b/doc/README.android
index 0b17647c0..3833688b1 100644
--- a/doc/README.android
+++ b/doc/README.android
@@ -1,6 +1,5 @@
-Minetest Android port
-=====================
-Date: 2014 06 28
+Minetest: Android version
+=========================
Controls
--------
@@ -39,27 +38,6 @@ file can usually be found at /mnt/sdcard/Minetest.
* gui_scaling: this is a user-specified scaling factor for the GUI- In case
main menu is too big or small on your device, try changing this
value.
-* inventory_image_hack: if your inventory items are messed up, try setting
- this to true
-
-Known issues
-------------
-Not all issues are fixed by now:
-
-* Unable to exit from volume menu -- don't use the volume menu, use Android's
- volume controls instead.
-* 512 MB RAM seems to be inadequate -- this depends on the server you join.
- Try to play on more lightweight servers.
-
-Versioning
-----------
-Android version numbers are 4 digits instead of Minetest's 3 digits. The last
-number of Android's version represents the Android internal version code. This
-version code is strictly incremental. It's incremented for each official
-Minetest Android build.
-
-E.g. prerelease Minetest Android builds have been 0.4.9.3, while the first
-official version most likely will be 0.4.10.4
Requirements
------------
@@ -71,9 +49,9 @@ following software packages. The version number in parenthesis denotes the
version that was tested at the time this README was drafted; newer/older
versions may or may not work.
-* android SDK (x86_64 20131030)
-* android NDK (r9d)
-* wget (1.13.4)
+* Android SDK 29
+* Android NDK r21
+* Android Studio 3 [optional]
Additionally, you'll need to have an Internet connection available on the
build system, as the Android build will download some source packages.
@@ -81,50 +59,23 @@ build system, as the Android build will download some source packages.
Build
-----
-Debug build:
-* Enter "build/android" subdirectory
-* Execute "make"
-* Answer the questions about where SDK and NDK are located on your filesystem
-* Wait for build to finish
-
-After the build is finished, the resulting apk can be fond in
-build/android/bin/. It will be called Minetest-debug.apk
+The new build system Minetest Android is fully functional and is designed to
+speed up and simplify the work, as well as adding the possibility of
+cross-platform build.
+You can use `./gradlew assemblerelease` or `./gradlew assembledebug` from the
+command line or use Android Studio and click the build button.
-Release build:
+When using gradlew, the newest NDK will be downloaded and installed
+automatically. Or you can create a `local.properties` file and specify
+`sdk.dir` and `ndk.dir` yourself.
* In order to make a release build you'll have to have a keystore setup to sign
the resulting apk package. How this is done is not part of this README. There
are different tutorials on the web explaining how to do it
- choose one yourself.
-* Once your keystore is setup, enter build/android subdirectory and create a new
+* Once your keystore is setup, enter the android subdirectory and create a new
file "ant.properties" there. Add following lines to that file:
-
+
> key.store=<path to your keystore>
> key.alias=Minetest
-
-* Execute "make release"
-* Enter your keystore as well as your Mintest key password once asked. Be
- careful it's shown on console in clear text!
-* The result can be found at "bin/Minetest-release.apk"
-
-Other things that may be nice to know
-------------
-* The environment for Android development tools is saved within Android build
- build folder. If you want direct access to it do:
-
- > make envpaths
- > . and_env
-
- After you've done this you'll have your path and path variables set correct
- to use adb and all other Android development tools
-
-* You can build a single dependency by calling make and the dependency's name,
- e.g.:
-
- > make irrlicht
-
-* You can completely cleanup a dependency by calling make and the "clean" target,
- e.g.:
-
- > make clean_irrlicht
diff --git a/doc/breakages.md b/doc/breakages.md
new file mode 100644
index 000000000..f7078f1e9
--- /dev/null
+++ b/doc/breakages.md
@@ -0,0 +1,8 @@
+# Minetest Major Breakages List
+
+This document contains a list of breaking changes to be made in the next major version.
+
+* Remove attachment space multiplier (*10)
+* `get_sky()` returns a table (without arg)
+* `game.conf` name/id mess
+* remove `depends.txt` / `description.txt` (would simplify ContentDB and Minetest code a little)
diff --git a/doc/builtin_entities.txt b/doc/builtin_entities.txt
new file mode 100644
index 000000000..be3f73357
--- /dev/null
+++ b/doc/builtin_entities.txt
@@ -0,0 +1,101 @@
+# Builtin Entities
+Minetest registers two entities by default: Falling nodes and dropped items.
+This document describes how they behave and what you can do with them.
+
+## Falling node (`__builtin:falling_node`)
+
+This entity is created by `minetest.check_for_falling` in place of a node
+with the special group `falling_node=1`. Falling nodes can also be created
+artificially with `minetest.spawn_falling_node`.
+
+Needs manual initialization when spawned using `/spawnentity`.
+
+Default behaviour:
+
+* Falls down in a straight line (gravity = `movement_gravity` setting)
+* Collides with `walkable` node
+* Collides with all physical objects except players
+* If the node group `float=1` is set, it also collides with liquid nodes
+* When it hits a solid (=`walkable`) node, it will try to place itself as a
+ node, replacing the node above.
+ * If the falling node cannot replace the destination node, it is dropped.
+ * If the destination node is a leveled node (`paramtype2="leveled"`) of the
+ same node name, the levels of both are summed.
+
+### Entity fields
+
+* `set_node(self, node[, meta])`
+ * Function to initialize the falling node
+ * `node` and `meta` are explained below.
+ * The `meta` argument is optional.
+* `node`: Node table of the node (`name`, `param1`, `param2`) that this
+ entity represents. Read-only.
+* `meta`: Node metadata of the falling node. Will be used when the falling
+ nodes tries to place itself as a node. Read-only.
+
+### Rendering / supported nodes
+
+Falling nodes have visuals to look as close as possible to the original node.
+This works for most drawtypes, but there are limitations.
+
+Supported drawtypes:
+
+* `normal`
+* `signlike`
+* `torchlike`
+* `nodebox`
+* `raillike`
+* `glasslike`
+* `glasslike_framed`
+* `glasslike_framed_optional`
+* `allfaces`
+* `allfaces_optional`
+* `firelike`
+* `mesh`
+* `fencelike`
+* `liquid`
+* `airlike` (not pointable)
+
+Other drawtypes still kinda work, but they might look weird.
+
+Supported `paramtype2` values:
+
+* `wallmounted`
+* `facedir`
+* `colorwallmounted`
+* `colorfacedir`
+* `color`
+
+## Dropped item stack (`__builtin:item`)
+
+This is an item stack in a collectable form.
+
+Common cases that spawn a dropped item:
+
+* Item dropped by player
+* The root node of a node with the group `attached_node=1` is removed
+* `minetest.add_item` is called
+
+Needs manual initialization when spawned using `/spawnentity`.
+
+### Behavior
+
+* Players can collect it by punching
+* Lifespan is defined by the setting `item_entity_ttl`
+* Slides on `slippery` nodes
+* Subject to gravity (uses `movement_gravity` setting)
+* Collides with `walkable` nodes
+* Does not collide physical objects
+* When it's inside a solid (`walkable=true`) node, it tries to escape to a
+ neighboring non-solid (`walkable=false`) node
+
+### Entity fields
+
+* `set_item(self, item)`:
+ * Function to initialize the dropped item
+ * `item` (type `ItemStack`) specifies the item to represent
+* `age`: Age in seconds. Behaviour according to the setting `item_entity_ttl`
+* `itemstring`: Itemstring of the item that this item entity represents.
+ Read-only.
+
+Other fields are for internal use only.
diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt
new file mode 100644
index 000000000..8a450ba13
--- /dev/null
+++ b/doc/client_lua_api.txt
@@ -0,0 +1,1527 @@
+Minetest Lua Client Modding API Reference 5.6.0
+================================================
+* More information at <http://www.minetest.net/>
+* Developer Wiki: <http://dev.minetest.net/>
+
+Introduction
+------------
+
+** WARNING: The client API is currently unstable, and may break/change without warning. **
+
+Content and functionality can be added to Minetest 0.4.15-dev+ by using Lua
+scripting in run-time loaded mods.
+
+A mod is a self-contained bunch of scripts, textures and other related
+things that is loaded by and interfaces with Minetest.
+
+Transferring client-sided mods from the server to the client is planned, but not implemented yet.
+
+If you see a deficiency in the API, feel free to attempt to add the
+functionality in the engine and API. You can send such improvements as
+source code patches on GitHub (https://github.com/minetest/minetest).
+
+Programming in Lua
+------------------
+If you have any difficulty in understanding this, please read
+[Programming in Lua](http://www.lua.org/pil/).
+
+Startup
+-------
+Mods are loaded during client startup from the mod load paths by running
+the `init.lua` scripts in a shared environment.
+
+In order to load client-side mods, the following conditions need to be satisfied:
+
+1) `$path_user/minetest.conf` contains the setting `enable_client_modding = true`
+
+2) The client-side mod located in `$path_user/clientmods/<modname>` is added to
+ `$path_user/clientmods/mods.conf` as `load_mod_<modname> = true`.
+
+Note: Depending on the remote server's settings, client-side mods might not
+be loaded or have limited functionality. See setting `csm_restriction_flags` for reference.
+
+Paths
+-----
+* `RUN_IN_PLACE=1` (Windows release, local build)
+ * `$path_user`: `<build directory>`
+ * `$path_share`: `<build directory>`
+* `RUN_IN_PLACE=0`: (Linux release)
+ * `$path_share`:
+ * Linux: `/usr/share/minetest`
+ * Windows: `<install directory>/minetest-0.4.x`
+ * `$path_user`:
+ * Linux: `$HOME/.minetest`
+ * Windows: `C:/users/<user>/AppData/minetest` (maybe)
+
+Mod load path
+-------------
+Generic:
+
+* `$path_share/clientmods/`
+* `$path_user/clientmods/` (User-installed mods)
+
+In a run-in-place version (e.g. the distributed windows version):
+
+* `minetest-0.4.x/clientmods/` (User-installed mods)
+
+On an installed version on Linux:
+
+* `/usr/share/minetest/clientmods/`
+* `$HOME/.minetest/clientmods/` (User-installed mods)
+
+Modpack support
+----------------
+
+Mods can be put in a subdirectory, if the parent directory, which otherwise
+should be a mod, contains a file named `modpack.conf`.
+The file is a key-value store of modpack details.
+
+* `name`: The modpack name.
+* `description`: Description of mod to be shown in the Mods tab of the main
+ menu.
+
+Mod directory structure
+------------------------
+
+ clientmods
+ ├── modname
+ │   ├── mod.conf
+ │   ├── init.lua
+ └── another
+
+### modname
+
+The location of this directory.
+
+### mod.conf
+
+An (optional) settings file that provides meta information about the mod.
+
+* `name`: The mod name. Allows Minetest to determine the mod name even if the
+ folder is wrongly named.
+* `description`: Description of mod to be shown in the Mods tab of the main
+ menu.
+* `depends`: A comma separated list of dependencies. These are mods that must be
+ loaded before this mod.
+* `optional_depends`: A comma separated list of optional dependencies.
+ Like a dependency, but no error if the mod doesn't exist.
+
+### `init.lua`
+
+The main Lua script. Running this script should register everything it
+wants to register. Subsequent execution depends on minetest calling the
+registered callbacks.
+
+**NOTE**: Client mods currently can't provide textures, sounds, or models by
+themselves. Any media referenced in function calls must already be loaded
+(provided by mods that exist on the server).
+
+Naming convention for registered textual names
+----------------------------------------------
+Registered names should generally be in this format:
+
+ "modname:<whatever>" (<whatever> can have characters a-zA-Z0-9_)
+
+This is to prevent conflicting names from corrupting maps and is
+enforced by the mod loader.
+
+### Example
+In the mod `experimental`, there is the ideal item/node/entity name `tnt`.
+So the name should be `experimental:tnt`.
+
+Enforcement can be overridden by prefixing the name with `:`. This can
+be used for overriding the registrations of some other mod.
+
+Example: Any mod can redefine `experimental:tnt` by using the name
+
+ :experimental:tnt
+
+when registering it.
+(also that mod is required to have `experimental` as a dependency)
+
+The `:` prefix can also be used for maintaining backwards compatibility.
+
+Sounds
+------
+**NOTE: Connecting sounds to objects is not implemented.**
+
+Only Ogg Vorbis files are supported.
+
+For positional playing of sounds, only single-channel (mono) files are
+supported. Otherwise OpenAL will play them non-positionally.
+
+Mods should generally prefix their sounds with `modname_`, e.g. given
+the mod name "`foomod`", a sound could be called:
+
+ foomod_foosound.ogg
+
+Sounds are referred to by their name with a dot, a single digit and the
+file extension stripped out. When a sound is played, the actual sound file
+is chosen randomly from the matching sounds.
+
+When playing the sound `foomod_foosound`, the sound is chosen randomly
+from the available ones of the following files:
+
+* `foomod_foosound.ogg`
+* `foomod_foosound.0.ogg`
+* `foomod_foosound.1.ogg`
+* (...)
+* `foomod_foosound.9.ogg`
+
+Examples of sound parameter tables:
+
+ -- Play locationless
+ {
+ gain = 1.0, -- default
+ }
+ -- Play locationless, looped
+ {
+ gain = 1.0, -- default
+ loop = true,
+ }
+ -- Play in a location
+ {
+ pos = {x = 1, y = 2, z = 3},
+ gain = 1.0, -- default
+ }
+ -- Play connected to an object, looped
+ {
+ object = <an ObjectRef>,
+ gain = 1.0, -- default
+ loop = true,
+ }
+
+Looped sounds must either be connected to an object or played locationless.
+
+### SimpleSoundSpec
+* e.g. `""`
+* e.g. `"default_place_node"`
+* e.g. `{}`
+* e.g. `{name = "default_place_node"}`
+* e.g. `{name = "default_place_node", gain = 1.0}`
+
+Representations of simple things
+--------------------------------
+
+### Position/vector
+
+ {x=num, y=num, z=num}
+
+For helper functions see "Vector helpers".
+
+### pointed_thing
+* `{type="nothing"}`
+* `{type="node", under=pos, above=pos}`
+* `{type="object", id=ObjectID}`
+
+Flag Specifier Format
+---------------------
+Flags using the standardized flag specifier format can be specified in either of
+two ways, by string or table.
+
+The string format is a comma-delimited set of flag names; whitespace and
+unrecognized flag fields are ignored. Specifying a flag in the string sets the
+flag, and specifying a flag prefixed by the string `"no"` explicitly
+clears the flag from whatever the default may be.
+
+In addition to the standard string flag format, the schematic flags field can
+also be a table of flag names to boolean values representing whether or not the
+flag is set. Additionally, if a field with the flag name prefixed with `"no"`
+is present, mapped to a boolean of any value, the specified flag is unset.
+
+E.g. A flag field of value
+
+ {place_center_x = true, place_center_y=false, place_center_z=true}
+
+is equivalent to
+
+ {place_center_x = true, noplace_center_y=true, place_center_z=true}
+
+which is equivalent to
+
+ "place_center_x, noplace_center_y, place_center_z"
+
+or even
+
+ "place_center_x, place_center_z"
+
+since, by default, no schematic attributes are set.
+
+Formspec
+--------
+Formspec defines a menu. It is a string, with a somewhat strange format.
+
+Spaces and newlines can be inserted between the blocks, as is used in the
+examples.
+
+### Examples
+
+#### Chest
+
+ size[8,9]
+ list[context;main;0,0;8,4;]
+ list[current_player;main;0,5;8,4;]
+
+#### Furnace
+
+ size[8,9]
+ list[context;fuel;2,3;1,1;]
+ list[context;src;2,1;1,1;]
+ list[context;dst;5,1;2,2;]
+ list[current_player;main;0,5;8,4;]
+
+#### Minecraft-like player inventory
+
+ size[8,7.5]
+ image[1,0.6;1,2;player.png]
+ list[current_player;main;0,3.5;8,4;]
+ list[current_player;craft;3,0;3,3;]
+ list[current_player;craftpreview;7,1;1,1;]
+
+### Elements
+
+#### `size[<W>,<H>,<fixed_size>]`
+* Define the size of the menu in inventory slots
+* `fixed_size`: `true`/`false` (optional)
+* deprecated: `invsize[<W>,<H>;]`
+
+#### `container[<X>,<Y>]`
+* Start of a container block, moves all physical elements in the container by (X, Y)
+* Must have matching container_end
+* Containers can be nested, in which case the offsets are added
+ (child containers are relative to parent containers)
+
+#### `container_end[]`
+* End of a container, following elements are no longer relative to this container
+
+#### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;]`
+* Show an inventory list
+
+#### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;<starting item index>]`
+* Show an inventory list
+
+#### `listring[<inventory location>;<list name>]`
+* Allows to create a ring of inventory lists
+* Shift-clicking on items in one element of the ring
+ will send them to the next inventory list inside the ring
+* The first occurrence of an element inside the ring will
+ determine the inventory where items will be sent to
+
+#### `listring[]`
+* Shorthand for doing `listring[<inventory location>;<list name>]`
+ for the last two inventory lists added by list[...]
+
+#### `listcolors[<slot_bg_normal>;<slot_bg_hover>]`
+* Sets background color of slots as `ColorString`
+* Sets background color of slots on mouse hovering
+
+#### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>]`
+* Sets background color of slots as `ColorString`
+* Sets background color of slots on mouse hovering
+* Sets color of slots border
+
+#### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>;<tooltip_bgcolor>;<tooltip_fontcolor>]`
+* Sets background color of slots as `ColorString`
+* Sets background color of slots on mouse hovering
+* Sets color of slots border
+* Sets default background color of tooltips
+* Sets default font color of tooltips
+
+#### `tooltip[<gui_element_name>;<tooltip_text>;<bgcolor>,<fontcolor>]`
+* Adds tooltip for an element
+* `<bgcolor>` tooltip background color as `ColorString` (optional)
+* `<fontcolor>` tooltip font color as `ColorString` (optional)
+
+#### `image[<X>,<Y>;<W>,<H>;<texture name>]`
+* Show an image
+* Position and size units are inventory slots
+
+#### `item_image[<X>,<Y>;<W>,<H>;<item name>]`
+* Show an inventory image of registered item/node
+* Position and size units are inventory slots
+
+#### `bgcolor[<color>;<fullscreen>]`
+* Sets background color of formspec as `ColorString`
+* If `true`, the background color is drawn fullscreen (does not effect the size of the formspec)
+
+#### `background[<X>,<Y>;<W>,<H>;<texture name>]`
+* Use a background. Inventory rectangles are not drawn then.
+* Position and size units are inventory slots
+* Example for formspec 8x4 in 16x resolution: image shall be sized
+ 8 times 16px times 4 times 16px.
+
+#### `background[<X>,<Y>;<W>,<H>;<texture name>;<auto_clip>]`
+* Use a background. Inventory rectangles are not drawn then.
+* Position and size units are inventory slots
+* Example for formspec 8x4 in 16x resolution:
+ image shall be sized 8 times 16px times 4 times 16px
+* If `true` the background is clipped to formspec size
+ (`x` and `y` are used as offset values, `w` and `h` are ignored)
+
+#### `pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>]`
+* Textual password style field; will be sent to server when a button is clicked
+* When enter is pressed in field, fields.key_enter_field will be sent with the name
+ of this field.
+* `x` and `y` position the field relative to the top left of the menu
+* `w` and `h` are the size of the field
+* Fields are a set height, but will be vertically centred on `h`
+* Position and size units are inventory slots
+* `name` is the name of the field as returned in fields to `on_receive_fields`
+* `label`, if not blank, will be text printed on the top left above the field
+* See field_close_on_enter to stop enter closing the formspec
+
+#### `field[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
+* Textual field; will be sent to server when a button is clicked
+* When enter is pressed in field, fields.key_enter_field will be sent with the name
+ of this field.
+* `x` and `y` position the field relative to the top left of the menu
+* `w` and `h` are the size of the field
+* Fields are a set height, but will be vertically centred on `h`
+* Position and size units are inventory slots
+* `name` is the name of the field as returned in fields to `on_receive_fields`
+* `label`, if not blank, will be text printed on the top left above the field
+* `default` is the default value of the field
+ * `default` may contain variable references such as `${text}'` which
+ will fill the value from the metadata value `text`
+ * **Note**: no extra text or more than a single variable is supported ATM.
+* See field_close_on_enter to stop enter closing the formspec
+
+#### `field[<name>;<label>;<default>]`
+* As above, but without position/size units
+* When enter is pressed in field, fields.key_enter_field will be sent with the name
+ of this field.
+* Special field for creating simple forms, such as sign text input
+* Must be used without a `size[]` element
+* A "Proceed" button will be added automatically
+* See field_close_on_enter to stop enter closing the formspec
+
+#### `field_close_on_enter[<name>;<close_on_enter>]`
+* <name> is the name of the field
+* if <close_on_enter> is false, pressing enter in the field will submit the form but not close it
+* defaults to true when not specified (ie: no tag for a field)
+
+#### `textarea[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
+* Same as fields above, but with multi-line input
+
+#### `label[<X>,<Y>;<label>]`
+* `x` and `y` work as per field
+* `label` is the text on the label
+* Position and size units are inventory slots
+
+#### `vertlabel[<X>,<Y>;<label>]`
+* Textual label drawn vertically
+* `x` and `y` work as per field
+* `label` is the text on the label
+* Position and size units are inventory slots
+
+#### `button[<X>,<Y>;<W>,<H>;<name>;<label>]`
+* Clickable button. When clicked, fields will be sent.
+* `x`, `y` and `name` work as per field
+* `w` and `h` are the size of the button
+* Fixed button height. It will be vertically centred on `h`
+* `label` is the text on the button
+* Position and size units are inventory slots
+
+#### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
+* `x`, `y`, `w`, `h`, and `name` work as per button
+* `texture name` is the filename of an image
+* Position and size units are inventory slots
+
+#### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>;<noclip>;<drawborder>;<pressed texture name>]`
+* `x`, `y`, `w`, `h`, and `name` work as per button
+* `texture name` is the filename of an image
+* Position and size units are inventory slots
+* `noclip=true` means the image button doesn't need to be within specified formsize
+* `drawborder`: draw button border or not
+* `pressed texture name` is the filename of an image on pressed state
+
+#### `item_image_button[<X>,<Y>;<W>,<H>;<item name>;<name>;<label>]`
+* `x`, `y`, `w`, `h`, `name` and `label` work as per button
+* `item name` is the registered name of an item/node,
+ tooltip will be made out of its description
+ to override it use tooltip element
+* Position and size units are inventory slots
+
+#### `button_exit[<X>,<Y>;<W>,<H>;<name>;<label>]`
+* When clicked, fields will be sent and the form will quit.
+
+#### `image_button_exit[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
+* When clicked, fields will be sent and the form will quit.
+
+#### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>]`
+* Scrollable item list showing arbitrary text elements
+* `x` and `y` position the itemlist relative to the top left of the menu
+* `w` and `h` are the size of the itemlist
+* `name` fieldname sent to server on doubleclick value is current selected element
+* `listelements` can be prepended by #color in hexadecimal format RRGGBB (only),
+ * if you want a listelement to start with "#" write "##".
+
+#### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>]`
+* Scrollable itemlist showing arbitrary text elements
+* `x` and `y` position the item list relative to the top left of the menu
+* `w` and `h` are the size of the item list
+* `name` fieldname sent to server on doubleclick value is current selected element
+* `listelements` can be prepended by #RRGGBB (only) in hexadecimal format
+ * if you want a listelement to start with "#" write "##"
+* Index to be selected within textlist
+* `true`/`false`: draw transparent background
+* See also `minetest.explode_textlist_event` (main menu: `engine.explode_textlist_event`)
+
+#### `tabheader[<X>,<Y>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
+* Show a tab**header** at specific position (ignores formsize)
+* `x` and `y` position the itemlist relative to the top left of the menu
+* `name` fieldname data is transferred to Lua
+* `caption 1`...: name shown on top of tab
+* `current_tab`: index of selected tab 1...
+* `transparent` (optional): show transparent
+* `draw_border` (optional): draw border
+
+#### `box[<X>,<Y>;<W>,<H>;<color>]`
+* Simple colored semitransparent box
+* `x` and `y` position the box relative to the top left of the menu
+* `w` and `h` are the size of box
+* `color` is color specified as a `ColorString`
+
+#### `dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]`
+* Show a dropdown field
+* **Important note**: There are two different operation modes:
+ 1. handle directly on change (only changed dropdown is submitted)
+ 2. read the value on pressing a button (all dropdown values are available)
+* `x` and `y` position of dropdown
+* Width of dropdown
+* Fieldname data is transferred to Lua
+* Items to be shown in dropdown
+* Index of currently selected dropdown item
+
+#### `checkbox[<X>,<Y>;<name>;<label>;<selected>]`
+* Show a checkbox
+* `x` and `y`: position of checkbox
+* `name` fieldname data is transferred to Lua
+* `label` to be shown left of checkbox
+* `selected` (optional): `true`/`false`
+
+#### `scrollbar[<X>,<Y>;<W>,<H>;<orientation>;<name>;<value>]`
+* Show a scrollbar
+* There are two ways to use it:
+ 1. handle the changed event (only changed scrollbar is available)
+ 2. read the value on pressing a button (all scrollbars are available)
+* `x` and `y`: position of trackbar
+* `w` and `h`: width and height
+* `orientation`: `vertical`/`horizontal`
+* Fieldname data is transferred to Lua
+* Value this trackbar is set to (`0`-`1000`)
+* See also `minetest.explode_scrollbar_event` (main menu: `engine.explode_scrollbar_event`)
+
+#### `table[<X>,<Y>;<W>,<H>;<name>;<cell 1>,<cell 2>,...,<cell n>;<selected idx>]`
+* Show scrollable table using options defined by the previous `tableoptions[]`
+* Displays cells as defined by the previous `tablecolumns[]`
+* `x` and `y`: position the itemlist relative to the top left of the menu
+* `w` and `h` are the size of the itemlist
+* `name`: fieldname sent to server on row select or doubleclick
+* `cell 1`...`cell n`: cell contents given in row-major order
+* `selected idx`: index of row to be selected within table (first row = `1`)
+* See also `minetest.explode_table_event` (main menu: `engine.explode_table_event`)
+
+#### `tableoptions[<opt 1>;<opt 2>;...]`
+* Sets options for `table[]`
+* `color=#RRGGBB`
+ * default text color (`ColorString`), defaults to `#FFFFFF`
+* `background=#RRGGBB`
+ * table background color (`ColorString`), defaults to `#000000`
+* `border=<true/false>`
+ * should the table be drawn with a border? (default: `true`)
+* `highlight=#RRGGBB`
+ * highlight background color (`ColorString`), defaults to `#466432`
+* `highlight_text=#RRGGBB`
+ * highlight text color (`ColorString`), defaults to `#FFFFFF`
+* `opendepth=<value>`
+ * all subtrees up to `depth < value` are open (default value = `0`)
+ * only useful when there is a column of type "tree"
+
+#### `tablecolumns[<type 1>,<opt 1a>,<opt 1b>,...;<type 2>,<opt 2a>,<opt 2b>;...]`
+* Sets columns for `table[]`
+* Types: `text`, `image`, `color`, `indent`, `tree`
+ * `text`: show cell contents as text
+ * `image`: cell contents are an image index, use column options to define images
+ * `color`: cell contents are a ColorString and define color of following cell
+ * `indent`: cell contents are a number and define indentation of following cell
+ * `tree`: same as indent, but user can open and close subtrees (treeview-like)
+* Column options:
+ * `align=<value>`
+ * for `text` and `image`: content alignment within cells.
+ Available values: `left` (default), `center`, `right`, `inline`
+ * `width=<value>`
+ * for `text` and `image`: minimum width in em (default: `0`)
+ * for `indent` and `tree`: indent width in em (default: `1.5`)
+ * `padding=<value>`: padding left of the column, in em (default `0.5`).
+ Exception: defaults to 0 for indent columns
+ * `tooltip=<value>`: tooltip text (default: empty)
+ * `image` column options:
+ * `0=<value>` sets image for image index 0
+ * `1=<value>` sets image for image index 1
+ * `2=<value>` sets image for image index 2
+ * and so on; defined indices need not be contiguous empty or
+ non-numeric cells are treated as `0`.
+ * `color` column options:
+ * `span=<value>`: number of following columns to affect (default: infinite)
+
+**Note**: do _not_ use a element name starting with `key_`; those names are reserved to
+pass key press events to formspec!
+
+Spatial Vectors
+---------------
+* `vector.new(a[, b, c])`: returns a vector:
+ * A copy of `a` if `a` is a vector.
+ * `{x = a, y = b, z = c}`, if all `a, b, c` are defined
+* `vector.direction(p1, p2)`: returns a vector
+* `vector.distance(p1, p2)`: returns a number
+* `vector.length(v)`: returns a number
+* `vector.normalize(v)`: returns a vector
+* `vector.floor(v)`: returns a vector, each dimension rounded down
+* `vector.round(v)`: returns a vector, each dimension rounded to nearest int
+* `vector.apply(v, func)`: returns a vector
+* `vector.combine(v, w, func)`: returns a vector
+* `vector.equals(v1, v2)`: returns a boolean
+
+For the following functions `x` can be either a vector or a number:
+
+* `vector.add(v, x)`: returns a vector
+* `vector.subtract(v, x)`: returns a vector
+* `vector.multiply(v, x)`: returns a scaled vector or Schur product
+* `vector.divide(v, x)`: returns a scaled vector or Schur quotient
+
+Helper functions
+----------------
+* `dump2(obj, name="_", dumped={})`
+ * Return object serialized as a string, handles reference loops
+* `dump(obj, dumped={})`
+ * Return object serialized as a string
+* `math.hypot(x, y)`
+ * Get the hypotenuse of a triangle with legs x and y.
+ Useful for distance calculation.
+* `math.sign(x, tolerance)`
+ * Get the sign of a number.
+ Optional: Also returns `0` when the absolute value is within the tolerance (default: `0`)
+* `string.split(str, separator=",", include_empty=false, max_splits=-1, sep_is_pattern=false)`
+ * If `max_splits` is negative, do not limit splits.
+ * `sep_is_pattern` specifies if separator is a plain string or a pattern (regex).
+ * e.g. `string:split("a,b", ",") == {"a","b"}`
+* `string:trim()`
+ * e.g. `string.trim("\n \t\tfoo bar\t ") == "foo bar"`
+* `minetest.wrap_text(str, limit)`: returns a string
+ * Adds new lines to the string to keep it within the specified character limit
+ * limit: Maximal amount of characters in one line
+* `minetest.pos_to_string({x=X,y=Y,z=Z}, decimal_places))`: returns string `"(X,Y,Z)"`
+ * Convert position to a printable string
+ Optional: 'decimal_places' will round the x, y and z of the pos to the given decimal place.
+* `minetest.string_to_pos(string)`: returns a position
+ * Same but in reverse. Returns `nil` if the string can't be parsed to a position.
+* `minetest.string_to_area("(X1, Y1, Z1) (X2, Y2, Z2)")`: returns two positions
+ * Converts a string representing an area box into two positions
+* `minetest.is_yes(arg)`
+ * returns whether `arg` can be interpreted as yes
+* `minetest.is_nan(arg)`
+ * returns true when the passed number represents NaN.
+* `table.copy(table)`: returns a table
+ * returns a deep copy of `table`
+
+Minetest namespace reference
+------------------------------
+
+### Utilities
+
+* `minetest.get_current_modname()`: returns the currently loading mod's name, when we are loading a mod
+* `minetest.get_modpath(modname)`: returns virtual path of given mod including
+ the trailing separator. This is useful to load additional Lua files
+ contained in your mod:
+ e.g. `dofile(minetest.get_modpath(minetest.get_current_modname()) .. "stuff.lua")`
+* `minetest.get_language()`: returns two strings
+ * the current gettext locale
+ * the current language code (the same as used for client-side translations)
+* `minetest.get_version()`: returns a table containing components of the
+ engine version. Components:
+ * `project`: Name of the project, eg, "Minetest"
+ * `string`: Simple version, eg, "1.2.3-dev"
+ * `hash`: Full git version (only set if available), eg, "1.2.3-dev-01234567-dirty"
+ Use this for informational purposes only. The information in the returned
+ table does not represent the capabilities of the engine, nor is it
+ reliable or verifiable. Compatible forks will have a different name and
+ version entirely. To check for the presence of engine features, test
+ whether the functions exported by the wanted features exist. For example:
+ `if minetest.check_for_falling then ... end`.
+* `minetest.sha1(data, [raw])`: returns the sha1 hash of data
+ * `data`: string of data to hash
+ * `raw`: return raw bytes instead of hex digits, default: false
+* `minetest.colorspec_to_colorstring(colorspec)`: Converts a ColorSpec to a
+ ColorString. If the ColorSpec is invalid, returns `nil`.
+ * `colorspec`: The ColorSpec to convert
+* `minetest.get_csm_restrictions()`: returns a table of `Flags` indicating the
+ restrictions applied to the current mod.
+ * If a flag in this table is set to true, the feature is RESTRICTED.
+ * Possible flags: `load_client_mods`, `chat_messages`, `read_itemdefs`,
+ `read_nodedefs`, `lookup_nodes`, `read_playerinfo`
+
+### Logging
+* `minetest.debug(...)`
+ * Equivalent to `minetest.log(table.concat({...}, "\t"))`
+* `minetest.log([level,] text)`
+ * `level` is one of `"none"`, `"error"`, `"warning"`, `"action"`,
+ `"info"`, or `"verbose"`. Default is `"none"`.
+
+### Global callback registration functions
+Call these functions only at load time!
+
+* `minetest.register_globalstep(function(dtime))`
+ * Called every client environment step, usually interval of 0.1s
+* `minetest.register_on_mods_loaded(function())`
+ * Called just after mods have finished loading.
+* `minetest.register_on_shutdown(function())`
+ * Called before client shutdown
+ * **Warning**: If the client terminates abnormally (i.e. crashes), the registered
+ callbacks **will likely not be run**. Data should be saved at
+ semi-frequent intervals as well as on server shutdown.
+* `minetest.register_on_receiving_chat_message(function(message))`
+ * Called always when a client receive a message
+ * Return `true` to mark the message as handled, which means that it will not be shown to chat
+* `minetest.register_on_sending_chat_message(function(message))`
+ * Called always when a client send a message from chat
+ * Return `true` to mark the message as handled, which means that it will not be sent to server
+* `minetest.register_chatcommand(cmd, chatcommand definition)`
+ * Adds definition to minetest.registered_chatcommands
+* `minetest.unregister_chatcommand(name)`
+ * Unregisters a chatcommands registered with register_chatcommand.
+* `minetest.register_on_chatcommand(function(command, params))`
+ * Called always when a chatcommand is triggered, before `minetest.registered_chatcommands`
+ is checked to see if that the command exists, but after the input is parsed.
+ * Return `true` to mark the command as handled, which means that the default
+ handlers will be prevented.
+* `minetest.register_on_death(function())`
+ * Called when the local player dies
+* `minetest.register_on_hp_modification(function(hp))`
+ * Called when server modified player's HP
+* `minetest.register_on_damage_taken(function(hp))`
+ * Called when the local player take damages
+* `minetest.register_on_formspec_input(function(formname, fields))`
+ * Called when a button is pressed in the local player's inventory form
+ * Newest functions are called first
+ * If function returns `true`, remaining functions are not called
+* `minetest.register_on_dignode(function(pos, node))`
+ * Called when the local player digs a node
+ * Newest functions are called first
+ * If any function returns true, the node isn't dug
+* `minetest.register_on_punchnode(function(pos, node))`
+ * Called when the local player punches a node
+ * Newest functions are called first
+ * If any function returns true, the punch is ignored
+* `minetest.register_on_placenode(function(pointed_thing, node))`
+ * Called when a node has been placed
+* `minetest.register_on_item_use(function(item, pointed_thing))`
+ * Called when the local player uses an item.
+ * Newest functions are called first.
+ * If any function returns true, the item use is not sent to server.
+* `minetest.register_on_modchannel_message(function(channel_name, sender, message))`
+ * Called when an incoming mod channel message is received
+ * You must have joined some channels before, and server must acknowledge the
+ join request.
+ * If message comes from a server mod, `sender` field is an empty string.
+* `minetest.register_on_modchannel_signal(function(channel_name, signal))`
+ * Called when a valid incoming mod channel signal is received
+ * Signal id permit to react to server mod channel events
+ * Possible values are:
+ 0: join_ok
+ 1: join_failed
+ 2: leave_ok
+ 3: leave_failed
+ 4: event_on_not_joined_channel
+ 5: state_changed
+* `minetest.register_on_inventory_open(function(inventory))`
+ * Called when the local player open inventory
+ * Newest functions are called first
+ * If any function returns true, inventory doesn't open
+### Sounds
+* `minetest.sound_play(spec, parameters)`: returns a handle
+ * `spec` is a `SimpleSoundSpec`
+ * `parameters` is a sound parameter table
+* `minetest.sound_stop(handle)`
+ * `handle` is a handle returned by `minetest.sound_play`
+* `minetest.sound_fade(handle, step, gain)`
+ * `handle` is a handle returned by `minetest.sound_play`
+ * `step` determines how fast a sound will fade.
+ Negative step will lower the sound volume, positive step will increase
+ the sound volume.
+ * `gain` the target gain for the fade.
+
+### Timing
+* `minetest.after(time, func, ...)`
+ * Call the function `func` after `time` seconds, may be fractional
+ * Optional: Variable number of arguments that are passed to `func`
+* `minetest.get_us_time()`
+ * Returns time with microsecond precision. May not return wall time.
+* `minetest.get_timeofday()`
+ * Returns the time of day: `0` for midnight, `0.5` for midday
+
+### Map
+* `minetest.get_node_or_nil(pos)`
+ * Returns the node at the given position as table in the format
+ `{name="node_name", param1=0, param2=0}`, returns `nil`
+ for unloaded areas or flavor limited areas.
+* `minetest.get_node_light(pos, timeofday)`
+ * Gets the light value at the given position. Note that the light value
+ "inside" the node at the given position is returned, so you usually want
+ to get the light value of a neighbor.
+ * `pos`: The position where to measure the light.
+ * `timeofday`: `nil` for current time, `0` for night, `0.5` for day
+ * Returns a number between `0` and `15` or `nil`
+* `minetest.find_node_near(pos, radius, nodenames, [search_center])`: returns pos or `nil`
+ * `radius`: using a maximum metric
+ * `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
+ * `search_center` is an optional boolean (default: `false`)
+ If true `pos` is also checked for the nodes
+* `minetest.find_nodes_in_area(pos1, pos2, nodenames, [grouped])`
+ * `pos1` and `pos2` are the min and max positions of the area to search.
+ * `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
+ * If `grouped` is true the return value is a table indexed by node name
+ which contains lists of positions.
+ * If `grouped` is false or absent the return values are as follows:
+ first value: Table with all node positions
+ second value: Table with the count of each node with the node name
+ as index
+ * Area volume is limited to 4,096,000 nodes
+* `minetest.find_nodes_in_area_under_air(pos1, pos2, nodenames)`: returns a
+ list of positions.
+ * `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
+ * Return value: Table with all node positions with a node air above
+ * Area volume is limited to 4,096,000 nodes
+* `minetest.line_of_sight(pos1, pos2)`: returns `boolean, pos`
+ * Checks if there is anything other than air between pos1 and pos2.
+ * Returns false if something is blocking the sight.
+ * Returns the position of the blocking node when `false`
+ * `pos1`: First position
+ * `pos2`: Second position
+* `minetest.raycast(pos1, pos2, objects, liquids)`: returns `Raycast`
+ * Creates a `Raycast` object.
+ * `pos1`: start of the ray
+ * `pos2`: end of the ray
+ * `objects`: if false, only nodes will be returned. Default is `true`.
+ * `liquids`: if false, liquid nodes won't be returned. Default is `false`.
+
+* `minetest.find_nodes_with_meta(pos1, pos2)`
+ * Get a table of positions of nodes that have metadata within a region
+ {pos1, pos2}.
+* `minetest.get_meta(pos)`
+ * Get a `NodeMetaRef` at that position
+* `minetest.get_node_level(pos)`
+ * get level of leveled node (water, snow)
+* `minetest.get_node_max_level(pos)`
+ * get max available level for leveled node
+
+### Player
+* `minetest.send_chat_message(message)`
+ * Act as if `message` was typed by the player into the terminal.
+* `minetest.run_server_chatcommand(cmd, param)`
+ * Alias for `minetest.send_chat_message("/" .. cmd .. " " .. param)`
+* `minetest.clear_out_chat_queue()`
+ * Clears the out chat queue
+* `minetest.localplayer`
+ * Reference to the LocalPlayer object. See [`LocalPlayer`](#localplayer) class reference for methods.
+
+### Privileges
+* `minetest.get_privilege_list()`
+ * Returns a list of privileges the current player has in the format `{priv1=true,...}`
+* `minetest.string_to_privs(str)`: returns `{priv1=true,...}`
+* `minetest.privs_to_string(privs)`: returns `"priv1,priv2,..."`
+ * Convert between two privilege representations
+
+### Client Environment
+* `minetest.get_player_names()`
+ * Returns list of player names on server (nil if CSM_RF_READ_PLAYERINFO is enabled by server)
+* `minetest.disconnect()`
+ * Disconnect from the server and exit to main menu.
+ * Returns `false` if the client is already disconnecting otherwise returns `true`.
+* `minetest.get_server_info()`
+ * Returns [server info](#server-info).
+* `minetest.send_respawn()`
+ * Sends a respawn request to the server.
+
+### Storage API
+* `minetest.get_mod_storage()`:
+ * returns reference to mod private `StorageRef`
+ * must be called during mod load time
+
+### Mod channels
+![Mod channels communication scheme](docs/mod channels.png)
+
+* `minetest.mod_channel_join(channel_name)`
+ * Client joins channel `channel_name`, and creates it, if necessary. You
+ should listen from incoming messages with `minetest.register_on_modchannel_message`
+ call to receive incoming messages. Warning, this function is asynchronous.
+
+### Particles
+* `minetest.add_particle(particle definition)`
+
+* `minetest.add_particlespawner(particlespawner definition)`
+ * Add a `ParticleSpawner`, an object that spawns an amount of particles over `time` seconds
+ * Returns an `id`, and -1 if adding didn't succeed
+
+* `minetest.delete_particlespawner(id)`
+ * Delete `ParticleSpawner` with `id` (return value from `minetest.add_particlespawner`)
+
+### Misc.
+* `minetest.parse_json(string[, nullvalue])`: returns something
+ * Convert a string containing JSON data into the Lua equivalent
+ * `nullvalue`: returned in place of the JSON null; defaults to `nil`
+ * On success returns a table, a string, a number, a boolean or `nullvalue`
+ * On failure outputs an error message and returns `nil`
+ * Example: `parse_json("[10, {\"a\":false}]")`, returns `{10, {a = false}}`
+* `minetest.write_json(data[, styled])`: returns a string or `nil` and an error message
+ * Convert a Lua table into a JSON string
+ * styled: Outputs in a human-readable format if this is set, defaults to false
+ * Unserializable things like functions and userdata are saved as null.
+ * **Warning**: JSON is more strict than the Lua table format.
+ 1. You can only use strings and positive integers of at least one as keys.
+ 2. You can not mix string and integer keys.
+ This is due to the fact that JSON has two distinct array and object values.
+ * Example: `write_json({10, {a = false}})`, returns `"[10, {\"a\": false}]"`
+* `minetest.serialize(table)`: returns a string
+ * Convert a table containing tables, strings, numbers, booleans and `nil`s
+ into string form readable by `minetest.deserialize`
+ * Example: `serialize({foo='bar'})`, returns `'return { ["foo"] = "bar" }'`
+* `minetest.deserialize(string)`: returns a table
+ * Convert a string returned by `minetest.deserialize` into a table
+ * `string` is loaded in an empty sandbox environment.
+ * Will load functions, but they cannot access the global environment.
+ * Example: `deserialize('return { ["foo"] = "bar" }')`, returns `{foo='bar'}`
+ * Example: `deserialize('print("foo")')`, returns `nil` (function call fails)
+ * `error:[string "print("foo")"]:1: attempt to call global 'print' (a nil value)`
+* `minetest.compress(data, method, ...)`: returns `compressed_data`
+ * Compress a string of data.
+ * `method` is a string identifying the compression method to be used.
+ * Supported compression methods:
+ * Deflate (zlib): `"deflate"`
+ * `...` indicates method-specific arguments. Currently defined arguments are:
+ * Deflate: `level` - Compression level, `0`-`9` or `nil`.
+* `minetest.decompress(compressed_data, method, ...)`: returns data
+ * Decompress a string of data (using ZLib).
+ * See documentation on `minetest.compress()` for supported compression methods.
+ * currently supported.
+ * `...` indicates method-specific arguments. Currently, no methods use this.
+* `minetest.rgba(red, green, blue[, alpha])`: returns a string
+ * Each argument is a 8 Bit unsigned integer
+ * Returns the ColorString from rgb or rgba values
+ * Example: `minetest.rgba(10, 20, 30, 40)`, returns `"#0A141E28"`
+* `minetest.encode_base64(string)`: returns string encoded in base64
+ * Encodes a string in base64.
+* `minetest.decode_base64(string)`: returns string or nil on failure
+ * Padding characters are only supported starting at version 5.4.0, where
+ 5.5.0 and newer perform proper checks.
+ * Decodes a string encoded in base64.
+* `minetest.gettext(string)` : returns string
+ * look up the translation of a string in the gettext message catalog
+* `fgettext_ne(string, ...)`
+ * call minetest.gettext(string), replace "$1"..."$9" with the given
+ extra arguments and return the result
+* `fgettext(string, ...)` : returns string
+ * same as fgettext_ne(), but calls minetest.formspec_escape before returning result
+* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a position
+ * returns the exact position on the surface of a pointed node
+* `minetest.global_exists(name)`
+ * Checks if a global variable has been set, without triggering a warning.
+
+### UI
+* `minetest.ui.minimap`
+ * Reference to the minimap object. See [`Minimap`](#minimap) class reference for methods.
+ * If client disabled minimap (using enable_minimap setting) this reference will be nil.
+* `minetest.camera`
+ * Reference to the camera object. See [`Camera`](#camera) class reference for methods.
+* `minetest.show_formspec(formname, formspec)` : returns true on success
+ * Shows a formspec to the player
+* `minetest.display_chat_message(message)` returns true on success
+ * Shows a chat message to the current player.
+
+Setting-related
+---------------
+
+* `minetest.settings`: Settings object containing all of the settings from the
+ main config file (`minetest.conf`). Check lua_api.txt for class reference.
+* `minetest.setting_get_pos(name)`: Loads a setting from the main settings and
+ parses it as a position (in the format `(1,2,3)`). Returns a position or nil.
+
+Class reference
+---------------
+
+### ModChannel
+
+An interface to use mod channels on client and server
+
+#### Methods
+* `leave()`: leave the mod channel.
+ * Client leaves channel `channel_name`.
+ * No more incoming or outgoing messages can be sent to this channel from client mods.
+ * This invalidate all future object usage
+ * Ensure your set mod_channel to nil after that to free Lua resources
+* `is_writeable()`: returns true if channel is writable and mod can send over it.
+* `send_all(message)`: Send `message` though the mod channel.
+ * If mod channel is not writable or invalid, message will be dropped.
+ * Message size is limited to 65535 characters by protocol.
+
+### Minimap
+An interface to manipulate minimap on client UI
+
+#### Methods
+* `show()`: shows the minimap (if not disabled by server)
+* `hide()`: hides the minimap
+* `set_pos(pos)`: sets the minimap position on screen
+* `get_pos()`: returns the minimap current position
+* `set_angle(deg)`: sets the minimap angle in degrees
+* `get_angle()`: returns the current minimap angle in degrees
+* `set_mode(mode)`: sets the minimap mode (0 to 6)
+* `get_mode()`: returns the current minimap mode
+* `set_shape(shape)`: Sets the minimap shape. (0 = square, 1 = round)
+* `get_shape()`: Gets the minimap shape. (0 = square, 1 = round)
+
+### Camera
+An interface to get or set information about the camera and camera-node.
+Please do not try to access the reference until the camera is initialized, otherwise the reference will be nil.
+
+#### Methods
+* `set_camera_mode(mode)`
+ * Pass `0` for first-person, `1` for third person, and `2` for third person front
+* `get_camera_mode()`
+ * Returns 0, 1, or 2 as described above
+* `get_fov()`
+ * Returns a table with X, Y, maximum and actual FOV in degrees:
+
+```lua
+ {
+ x = number,
+ y = number,
+ max = number,
+ actual = number
+ }
+```
+
+* `get_pos()`
+ * Returns position of camera with view bobbing
+* `get_offset()`
+ * Returns eye offset vector
+* `get_look_dir()`
+ * Returns eye direction unit vector
+* `get_look_vertical()`
+ * Returns pitch in radians
+* `get_look_horizontal()`
+ * Returns yaw in radians
+* `get_aspect_ratio()`
+ * Returns aspect ratio of screen
+
+### LocalPlayer
+An interface to retrieve information about the player.
+This object will only be available after the client is initialized. Earlier accesses will yield a `nil` value.
+
+Methods:
+
+* `get_pos()`
+ * returns current player current position
+* `get_velocity()`
+ * returns player speed vector
+* `get_hp()`
+ * returns player HP
+* `get_name()`
+ * returns player name
+* `get_wield_index()`
+ * returns the index of the wielded item
+* `get_wielded_item()`
+ * returns the itemstack the player is holding
+* `is_attached()`
+ * returns true if player is attached
+* `is_touching_ground()`
+ * returns true if player touching ground
+* `is_in_liquid()`
+ * returns true if player is in a liquid (This oscillates so that the player jumps a bit above the surface)
+* `is_in_liquid_stable()`
+ * returns true if player is in a stable liquid (This is more stable and defines the maximum speed of the player)
+* `get_move_resistance()`
+ * returns move resistance of current node, the higher the slower the player moves
+* `is_climbing()`
+ * returns true if player is climbing
+* `swimming_vertical()`
+ * returns true if player is swimming in vertical
+* `get_physics_override()`
+ * returns:
+
+```lua
+ {
+ speed = float,
+ jump = float,
+ gravity = float,
+ sneak = boolean,
+ sneak_glitch = boolean,
+ new_move = boolean,
+ }
+```
+
+* `get_override_pos()`
+ * returns override position
+* `get_last_pos()`
+ * returns last player position before the current client step
+* `get_last_velocity()`
+ * returns last player speed
+* `get_breath()`
+ * returns the player's breath
+* `get_movement_acceleration()`
+ * returns acceleration of the player in different environments:
+
+```lua
+ {
+ fast = float,
+ air = float,
+ default = float,
+ }
+```
+
+* `get_movement_speed()`
+ * returns player's speed in different environments:
+
+```lua
+ {
+ walk = float,
+ jump = float,
+ crouch = float,
+ fast = float,
+ climb = float,
+ }
+```
+
+* `get_movement()`
+ * returns player's movement in different environments:
+
+```lua
+ {
+ liquid_fluidity = float,
+ liquid_sink = float,
+ liquid_fluidity_smooth = float,
+ gravity = float,
+ }
+```
+
+* `get_last_look_horizontal()`:
+ * returns last look horizontal angle
+* `get_last_look_vertical()`:
+ * returns last look vertical angle
+* `get_control()`:
+ * returns pressed player controls
+
+```lua
+ {
+ up = boolean,
+ down = boolean,
+ left = boolean,
+ right = boolean,
+ jump = boolean,
+ aux1 = boolean,
+ sneak = boolean,
+ zoom = boolean,
+ dig = boolean,
+ place = boolean,
+ }
+```
+
+* `get_armor_groups()`
+ * returns a table with the armor group ratings
+* `hud_add(definition)`
+ * add a HUD element described by HUD def, returns ID number on success and `nil` on failure.
+ * See [`HUD definition`](#hud-definition-hud_add-hud_get)
+* `hud_get(id)`
+ * returns the [`definition`](#hud-definition-hud_add-hud_get) of the HUD with that ID number or `nil`, if non-existent.
+* `hud_remove(id)`
+ * remove the HUD element of the specified id, returns `true` on success
+* `hud_change(id, stat, value)`
+ * change a value of a previously added HUD element
+ * element `stat` values: `position`, `name`, `scale`, `text`, `number`, `item`, `dir`
+ * Returns `true` on success, otherwise returns `nil`
+
+### Settings
+An interface to read config files in the format of `minetest.conf`.
+
+It can be created via `Settings(filename)`.
+
+#### Methods
+* `get(key)`: returns a value
+* `get_bool(key)`: returns a boolean
+* `set(key, value)`
+* `remove(key)`: returns a boolean (`true` for success)
+* `get_names()`: returns `{key1,...}`
+* `write()`: returns a boolean (`true` for success)
+ * write changes to file
+* `to_table()`: returns `{[key1]=value1,...}`
+
+### NodeMetaRef
+Node metadata: reference extra data and functionality stored in a node.
+Can be obtained via `minetest.get_meta(pos)`.
+
+#### Methods
+* `get_string(name)`
+* `get_int(name)`
+* `get_float(name)`
+* `to_table()`: returns `nil` or a table with keys:
+ * `fields`: key-value storage
+ * `inventory`: `{list1 = {}, ...}}`
+
+### `Raycast`
+
+A raycast on the map. It works with selection boxes.
+Can be used as an iterator in a for loop as:
+
+ local ray = Raycast(...)
+ for pointed_thing in ray do
+ ...
+ end
+
+The map is loaded as the ray advances. If the map is modified after the
+`Raycast` is created, the changes may or may not have an effect on the object.
+
+It can be created via `Raycast(pos1, pos2, objects, liquids)` or
+`minetest.raycast(pos1, pos2, objects, liquids)` where:
+
+* `pos1`: start of the ray
+* `pos2`: end of the ray
+* `objects`: if false, only nodes will be returned. Default is true.
+* `liquids`: if false, liquid nodes won't be returned. Default is false.
+
+#### Methods
+
+* `next()`: returns a `pointed_thing` with exact pointing location
+ * Returns the next thing pointed by the ray or nil.
+
+-----------------
+### Definitions
+* `minetest.get_node_def(nodename)`
+ * Returns [node definition](#node-definition) table of `nodename`
+* `minetest.get_item_def(itemstring)`
+ * Returns item definition table of `itemstring`
+
+#### Node Definition
+
+```lua
+ {
+ has_on_construct = bool, -- Whether the node has the on_construct callback defined
+ has_on_destruct = bool, -- Whether the node has the on_destruct callback defined
+ has_after_destruct = bool, -- Whether the node has the after_destruct callback defined
+ name = string, -- The name of the node e.g. "air", "default:dirt"
+ groups = table, -- The groups of the node
+ paramtype = string, -- Paramtype of the node
+ paramtype2 = string, -- ParamType2 of the node
+ drawtype = string, -- Drawtype of the node
+ mesh = <string>, -- Mesh name if existant
+ minimap_color = <Color>, -- Color of node on minimap *May not exist*
+ visual_scale = number, -- Visual scale of node
+ alpha = number, -- Alpha of the node. Only used for liquids
+ color = <Color>, -- Color of node *May not exist*
+ palette_name = <string>, -- Filename of palette *May not exist*
+ palette = <{ -- List of colors
+ Color,
+ Color
+ }>,
+ waving = number, -- 0 of not waving, 1 if waving
+ connect_sides = number, -- Used for connected nodes
+ connects_to = { -- List of nodes to connect to
+ "node1",
+ "node2"
+ },
+ post_effect_color = Color, -- Color overlayed on the screen when the player is in the node
+ leveled = number, -- Max level for node
+ sunlight_propogates = bool, -- Whether light passes through the block
+ light_source = number, -- Light emitted by the block
+ is_ground_content = bool, -- Whether caves should cut through the node
+ walkable = bool, -- Whether the player collides with the node
+ pointable = bool, -- Whether the player can select the node
+ diggable = bool, -- Whether the player can dig the node
+ climbable = bool, -- Whether the player can climb up the node
+ buildable_to = bool, -- Whether the player can replace the node by placing a node on it
+ rightclickable = bool, -- Whether the player can place nodes pointing at this node
+ damage_per_second = number, -- HP of damage per second when the player is in the node
+ liquid_type = <string>, -- A string containing "none", "flowing", or "source" *May not exist*
+ liquid_alternative_flowing = <string>, -- Alternative node for liquid *May not exist*
+ liquid_alternative_source = <string>, -- Alternative node for liquid *May not exist*
+ liquid_viscosity = <number>, -- How slow the liquid flows *May not exist*
+ liquid_renewable = <boolean>, -- Whether the liquid makes an infinite source *May not exist*
+ liquid_range = <number>, -- How far the liquid flows *May not exist*
+ drowning = bool, -- Whether the player will drown in the node
+ floodable = bool, -- Whether nodes will be replaced by liquids (flooded)
+ node_box = table, -- Nodebox to draw the node with
+ collision_box = table, -- Nodebox to set the collision area
+ selection_box = table, -- Nodebox to set the area selected by the player
+ sounds = { -- Table of sounds that the block makes
+ sound_footstep = SimpleSoundSpec,
+ sound_dig = SimpleSoundSpec,
+ sound_dug = SimpleSoundSpec
+ },
+ legacy_facedir_simple = bool, -- Whether to use old facedir
+ legacy_wallmounted = bool -- Whether to use old wallmounted
+ move_resistance = <number>, -- How slow players can move through the node *May not exist*
+ }
+```
+
+#### Item Definition
+
+```lua
+ {
+ name = string, -- Name of the item e.g. "default:stone"
+ description = string, -- Description of the item e.g. "Stone"
+ type = string, -- Item type: "none", "node", "craftitem", "tool"
+ inventory_image = string, -- Image in the inventory
+ wield_image = string, -- Image in wieldmesh
+ palette_image = string, -- Image for palette
+ color = Color, -- Color for item
+ wield_scale = Vector, -- Wieldmesh scale
+ stack_max = number, -- Number of items stackable together
+ usable = bool, -- Has on_use callback defined
+ liquids_pointable = bool, -- Whether you can point at liquids with the item
+ tool_capabilities = <table>, -- If the item is a tool, tool capabilities of the item
+ groups = table, -- Groups of the item
+ sound_place = SimpleSoundSpec, -- Sound played when placed
+ sound_place_failed = SimpleSoundSpec, -- Sound played when placement failed
+ node_placement_prediction = string -- Node placed in client until server catches up
+ }
+```
+-----------------
+
+### Chat command definition (`register_chatcommand`)
+
+ {
+ params = "<name> <privilege>", -- Short parameter description
+ description = "Remove privilege from player", -- Full description
+ func = function(param), -- Called when command is run.
+ -- Returns boolean success and text output.
+ }
+### Server info
+```lua
+{
+ address = "minetest.example.org", -- The domain name/IP address of a remote server or "" for a local server.
+ ip = "203.0.113.156", -- The IP address of the server.
+ port = 30000, -- The port the client is connected to.
+ protocol_version = 30 -- Will not be accurate at start up as the client might not be connected to the server yet, in that case it will be 0.
+}
+```
+
+### HUD Definition (`hud_add`, `hud_get`)
+```lua
+ {
+ hud_elem_type = "image", -- see HUD element types, default "text"
+ -- ^ type of HUD element, can be either of "image", "text", "statbar", or "inventory"
+ position = {x=0.5, y=0.5},
+ -- ^ Left corner position of element, default `{x=0,y=0}`.
+ name = "<name>", -- default ""
+ scale = {x=2, y=2}, -- default {x=0,y=0}
+ text = "<text>", -- default ""
+ number = 2, -- default 0
+ item = 3, -- default 0
+ -- ^ Selected item in inventory. 0 for no item selected.
+ direction = 0, -- default 0
+ -- ^ Direction: 0: left-right, 1: right-left, 2: top-bottom, 3: bottom-top
+ alignment = {x=0, y=0}, -- default {x=0, y=0}
+ -- ^ See "HUD Element Types"
+ offset = {x=0, y=0}, -- default {x=0, y=0}
+ -- ^ See "HUD Element Types"
+ size = { x=100, y=100 }, -- default {x=0, y=0}
+ -- ^ Size of element in pixels
+ style = 0,
+ -- ^ For "text" elements sets font style: bitfield with 1 = bold, 2 = italic, 4 = monospace
+ }
+```
+
+Escape sequences
+----------------
+Most text can contain escape sequences, that can for example color the text.
+There are a few exceptions: tab headers, dropdowns and vertical labels can't.
+The following functions provide escape sequences:
+* `minetest.get_color_escape_sequence(color)`:
+ * `color` is a [ColorString](#colorstring)
+ * The escape sequence sets the text color to `color`
+* `minetest.colorize(color, message)`:
+ * Equivalent to:
+ `minetest.get_color_escape_sequence(color) ..
+ message ..
+ minetest.get_color_escape_sequence("#ffffff")`
+* `minetest.get_background_escape_sequence(color)`
+ * `color` is a [ColorString](#colorstring)
+ * The escape sequence sets the background of the whole text element to
+ `color`. Only defined for item descriptions and tooltips.
+* `minetest.strip_foreground_colors(str)`
+ * Removes foreground colors added by `get_color_escape_sequence`.
+* `minetest.strip_background_colors(str)`
+ * Removes background colors added by `get_background_escape_sequence`.
+* `minetest.strip_colors(str)`
+ * Removes all color escape sequences.
+
+`ColorString`
+-------------
+`#RGB` defines a color in hexadecimal format.
+
+`#RGBA` defines a color in hexadecimal format and alpha channel.
+
+`#RRGGBB` defines a color in hexadecimal format.
+
+`#RRGGBBAA` defines a color in hexadecimal format and alpha channel.
+
+Named colors are also supported and are equivalent to
+[CSS Color Module Level 4](http://dev.w3.org/csswg/css-color/#named-colors).
+To specify the value of the alpha channel, append `#A` or `#AA` to the end of
+the color name (e.g. `colorname#08`).
+
+`Color`
+-------------
+`{a = alpha, r = red, g = green, b = blue}` defines an ARGB8 color.
+
+HUD element types
+-----------------
+The position field is used for all element types.
+
+To account for differing resolutions, the position coordinates are the percentage
+of the screen, ranging in value from `0` to `1`.
+
+The name field is not yet used, but should contain a description of what the
+HUD element represents. The direction field is the direction in which something
+is drawn.
+
+`0` draws from left to right, `1` draws from right to left, `2` draws from
+top to bottom, and `3` draws from bottom to top.
+
+The `alignment` field specifies how the item will be aligned. It ranges from `-1` to `1`,
+with `0` being the center, `-1` is moved to the left/up, and `1` is to the right/down.
+Fractional values can be used.
+
+The `offset` field specifies a pixel offset from the position. Contrary to position,
+the offset is not scaled to screen size. This allows for some precisely-positioned
+items in the HUD.
+
+**Note**: `offset` _will_ adapt to screen DPI as well as user defined scaling factor!
+
+Below are the specific uses for fields in each type; fields not listed for that type are ignored.
+
+**Note**: Future revisions to the HUD API may be incompatible; the HUD API is still
+in the experimental stages.
+
+### `image`
+Displays an image on the HUD.
+
+* `scale`: The scale of the image, with 1 being the original texture size.
+ Only the X coordinate scale is used (positive values).
+ Negative values represent that percentage of the screen it
+ should take; e.g. `x=-100` means 100% (width).
+* `text`: The name of the texture that is displayed.
+* `alignment`: The alignment of the image.
+* `offset`: offset in pixels from position.
+
+### `text`
+Displays text on the HUD.
+
+* `scale`: Defines the bounding rectangle of the text.
+ A value such as `{x=100, y=100}` should work.
+* `text`: The text to be displayed in the HUD element.
+* `number`: An integer containing the RGB value of the color used to draw the text.
+ Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
+* `alignment`: The alignment of the text.
+* `offset`: offset in pixels from position.
+
+### `statbar`
+Displays a horizontal bar made up of half-images.
+
+* `text`: The name of the texture that is used.
+* `number`: The number of half-textures that are displayed.
+ If odd, will end with a vertically center-split texture.
+* `direction`
+* `offset`: offset in pixels from position.
+* `size`: If used, will force full-image size to this value (override texture pack image size)
+
+### `inventory`
+* `text`: The name of the inventory list to be displayed.
+* `number`: Number of items in the inventory to be displayed.
+* `item`: Position of item that is selected.
+* `direction`
+* `offset`: offset in pixels from position.
+
+### `waypoint`
+
+Displays distance to selected world position.
+
+* `name`: The name of the waypoint.
+* `text`: Distance suffix. Can be blank.
+* `precision`: Waypoint precision, integer >= 0. Defaults to 10.
+ If set to 0, distance is not shown. Shown value is `floor(distance*precision)/precision`.
+ When the precision is an integer multiple of 10, there will be `log_10(precision)` digits after the decimal point.
+ `precision = 1000`, for example, will show 3 decimal places (eg: `0.999`).
+ `precision = 2` will show multiples of `0.5`; precision = 5 will show multiples of `0.2` and so on:
+ `precision = n` will show multiples of `1/n`
+* `number:` An integer containing the RGB value of the color used to draw the
+ text.
+* `world_pos`: World position of the waypoint.
+* `offset`: offset in pixels from position.
+* `alignment`: The alignment of the waypoint.
+
+### `image_waypoint`
+
+Same as `image`, but does not accept a `position`; the position is instead determined by `world_pos`, the world position of the waypoint.
+
+* `scale`: The scale of the image, with 1 being the original texture size.
+ Only the X coordinate scale is used (positive values).
+ Negative values represent that percentage of the screen it
+ should take; e.g. `x=-100` means 100% (width).
+* `text`: The name of the texture that is displayed.
+* `alignment`: The alignment of the image.
+* `world_pos`: World position of the waypoint.
+* `offset`: offset in pixels from position.
+
+### Particle definition (`add_particle`)
+
+ {
+ pos = {x=0, y=0, z=0},
+ velocity = {x=0, y=0, z=0},
+ acceleration = {x=0, y=0, z=0},
+ -- ^ Spawn particle at pos with velocity and acceleration
+ expirationtime = 1,
+ -- ^ Disappears after expirationtime seconds
+ size = 1,
+ collisiondetection = false,
+ -- ^ collisiondetection: if true collides with physical objects
+ collision_removal = false,
+ -- ^ collision_removal: if true then particle is removed when it collides,
+ -- ^ requires collisiondetection = true to have any effect
+ vertical = false,
+ -- ^ vertical: if true faces player using y axis only
+ texture = "image.png",
+ -- ^ Uses texture (string)
+ animation = {Tile Animation definition},
+ -- ^ optional, specifies how to animate the particle texture
+ glow = 0
+ -- ^ optional, specify particle self-luminescence in darkness
+ }
+
+### `ParticleSpawner` definition (`add_particlespawner`)
+
+ {
+ amount = 1,
+ time = 1,
+ -- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base
+ minpos = {x=0, y=0, z=0},
+ maxpos = {x=0, y=0, z=0},
+ minvel = {x=0, y=0, z=0},
+ maxvel = {x=0, y=0, z=0},
+ minacc = {x=0, y=0, z=0},
+ maxacc = {x=0, y=0, z=0},
+ minexptime = 1,
+ maxexptime = 1,
+ minsize = 1,
+ maxsize = 1,
+ -- ^ The particle's properties are random values in between the bounds:
+ -- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration),
+ -- ^ minsize/maxsize, minexptime/maxexptime (expirationtime)
+ collisiondetection = false,
+ -- ^ collisiondetection: if true uses collision detection
+ collision_removal = false,
+ -- ^ collision_removal: if true then particle is removed when it collides,
+ -- ^ requires collisiondetection = true to have any effect
+ vertical = false,
+ -- ^ vertical: if true faces player using y axis only
+ texture = "image.png",
+ -- ^ Uses texture (string)
+ }
diff --git a/doc/direction.md b/doc/direction.md
new file mode 100644
index 000000000..826dd47b3
--- /dev/null
+++ b/doc/direction.md
@@ -0,0 +1,69 @@
+# Minetest Direction Document
+
+## 1. Long-term Roadmap
+
+The long-term roadmaps, aims, and guiding philosophies are set out using the
+following documents:
+
+* [What is Minetest?](http://c55.me/blog/?p=1491)
+* [celeron55's roadmap](https://forum.minetest.net/viewtopic.php?t=9177)
+* [celeron55's comment in "A clear mission statement for Minetest is missing"](https://github.com/minetest/minetest/issues/3476#issuecomment-167399287)
+* [Core developer to-do/wish lists](https://forum.minetest.net/viewforum.php?f=7)
+
+## 2. Medium-term Roadmap
+
+These are the current medium-term goals for Minetest development, in no
+particular order.
+
+These goals were created from the top points in a
+[roadmap brainstorm](https://github.com/minetest/minetest/issues/10461).
+This should be reviewed approximately yearly, or when goals are achieved.
+
+Pull requests that address one of these goals will be labelled as "Roadmap".
+PRs that are not on the roadmap will be closed unless they receive a concept
+approval within a week, issues can be used for preapproval.
+Bug fixes are exempt for this, and are always accepted and prioritised.
+See [CONTRIBUTING.md](../.github/CONTRIBUTING.md) for more info.
+
+### 2.1 Rendering/Graphics improvements
+
+The priority is fixing the issues, performance, and general correctness.
+Once that is done, fancier features can be worked on, such as water shaders,
+shadows, and improved lighting.
+
+Examples include
+[transparency sorting](https://github.com/minetest/minetest/issues/95),
+[particle performance](https://github.com/minetest/minetest/issues/1414),
+[general view distance](https://github.com/minetest/minetest/issues/7222).
+
+This includes work on maintaining
+[our Irrlicht fork](https://github.com/minetest/irrlicht), and switching to
+alternative libraries to replace Irrlicht functionality as needed
+
+### 2.2 Internal code refactoring
+
+To ensure sustainable development, Minetest's code needs to be
+[refactored and improved](https://github.com/minetest/minetest/pulls?q=is%3Aopen+sort%3Aupdated-desc+label%3A%22Code+quality%22+).
+This will remove code rot and allow for more efficient development.
+
+### 2.3 UI Improvements
+
+A [formspec replacement](https://github.com/minetest/minetest/issues/6527) is
+needed to make GUIs better and easier to create. This replacement could also
+be a replacement for HUDs, allowing for a unified API.
+
+A [new mainmenu](https://github.com/minetest/minetest/issues/6733) is needed to
+improve user experience. First impressions matter, and the current main menu
+doesn't do a very good job at selling Minetest or explaining what it is.
+A new main menu should promote games to users, allowing Minetest Game to no
+longer be bundled by default.
+
+The UI code is undergoing rapid changes, so it is especially important to make
+an issue for any large changes before spending lots of time.
+
+### 2.4 Object and entity improvements
+
+There are still a significant number of issues with objects.
+Collisions,
+[performance](https://github.com/minetest/minetest/issues/6453),
+API convenience, and discrepancies between players and entities.
diff --git a/doc/fst_api.txt b/doc/fst_api.txt
index c8bcb1e91..6f9aa14b3 100644
--- a/doc/fst_api.txt
+++ b/doc/fst_api.txt
@@ -101,6 +101,9 @@ dialog_create(name, cbf_formspec, cbf_button_handler, cbf_events)
^ cbf_events: function to handle events
function(dialog, event)
+messagebox(name, message)
+^ creates a message dialog
+
Class reference dialog:
methods:
@@ -113,13 +116,13 @@ methods:
^ hide dialog
- delete()
^ delete dialog from ui
-
+
members:
- data
^ variable data attached to this dialog
- parent
^ parent component to return to on exit
-
+
File: fst/buttonbar.lua
-----------------------
diff --git a/doc/lgpl-2.1.txt b/doc/lgpl-2.1.txt
index 4362b4915..e5ab03e12 100644
--- a/doc/lgpl-2.1.txt
+++ b/doc/lgpl-2.1.txt
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
-
+
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
@@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
-
+
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@@ -158,7 +158,7 @@ Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
-
+
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
@@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
-
+
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
-
+
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
-
+
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
@@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
-
+
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
-
+
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
@@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
-
+
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index b9208dbad..9e1633a14 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -1,235 +1,415 @@
-Minetest Lua Modding API Reference 0.4.14
-=========================================
+Minetest Lua Modding API Reference
+==================================
+
* More information at <http://www.minetest.net/>
* Developer Wiki: <http://dev.minetest.net/>
+* (Unofficial) Minetest Modding Book by rubenwardy: <https://rubenwardy.com/minetest_modding_book/>
Introduction
------------
-Content and functionality can be added to Minetest 0.4 by using Lua
-scripting in run-time loaded mods.
+
+Content and functionality can be added to Minetest using Lua scripting
+in run-time loaded mods.
A mod is a self-contained bunch of scripts, textures and other related
-things that is loaded by and interfaces with Minetest.
+things, which is loaded by and interfaces with Minetest.
Mods are contained and ran solely on the server side. Definitions and media
files are automatically transferred to the client.
If you see a deficiency in the API, feel free to attempt to add the
-functionality in the engine and API. You can send such improvements as
-source code patches to <celeron55@gmail.com>.
+functionality in the engine and API, and to document it here.
Programming in Lua
------------------
+
If you have any difficulty in understanding this, please read
[Programming in Lua](http://www.lua.org/pil/).
Startup
-------
+
Mods are loaded during server startup from the mod load paths by running
the `init.lua` scripts in a shared environment.
Paths
-----
-* `RUN_IN_PLACE=1` (Windows release, local build)
- * `$path_user`:
- * Linux: `<build directory>`
- * Windows: `<build directory>`
- * `$path_share`
- * Linux: `<build directory>`
- * Windows: `<build directory>`
-* `RUN_IN_PLACE=0`: (Linux release)
- * `$path_share`
- * Linux: `/usr/share/minetest`
- * Windows: `<install directory>/minetest-0.4.x`
- * `$path_user`:
- * Linux: `$HOME/.minetest`
- * Windows: `C:/users/<user>/AppData/minetest` (maybe)
-Games
------
-Games are looked up from:
+Minetest keeps and looks for files mostly in two paths. `path_share` or `path_user`.
-* `$path_share/games/gameid/`
-* `$path_user/games/gameid/`
+`path_share` contains possibly read-only content for the engine (incl. games and mods).
+`path_user` contains mods or games installed by the user but also the users
+worlds or settings.
-where `gameid` is unique to each game.
+With a local build (`RUN_IN_PLACE=1`) `path_share` and `path_user` both point to
+the build directory. For system-wide builds on Linux the share path is usually at
+`/usr/share/minetest` while the user path resides in `.minetest` in the home directory.
+Paths on other operating systems will differ.
-The game directory contains the file `game.conf`, which contains these fields:
+Games
+=====
- name = <Human-readable full name of the game>
+Games are looked up from:
-e.g.
+* `$path_share/games/<gameid>/`
+* `$path_user/games/<gameid>/`
+
+Where `<gameid>` is unique to each game.
+
+The game directory can contain the following files:
+
+* `game.conf`, with the following keys:
+ * `title`: Required, a human-readable title to address the game, e.g. `title = Minetest Game`.
+ * `name`: (Deprecated) same as title.
+ * `description`: Short description to be shown in the content tab
+ * `allowed_mapgens = <comma-separated mapgens>`
+ e.g. `allowed_mapgens = v5,v6,flat`
+ Mapgens not in this list are removed from the list of mapgens for the
+ game.
+ If not specified, all mapgens are allowed.
+ * `disallowed_mapgens = <comma-separated mapgens>`
+ e.g. `disallowed_mapgens = v5,v6,flat`
+ These mapgens are removed from the list of mapgens for the game.
+ When both `allowed_mapgens` and `disallowed_mapgens` are
+ specified, `allowed_mapgens` is applied before
+ `disallowed_mapgens`.
+ * `disallowed_mapgen_settings= <comma-separated mapgen settings>`
+ e.g. `disallowed_mapgen_settings = mgv5_spflags`
+ These mapgen settings are hidden for this game in the world creation
+ dialog and game start menu. Add `seed` to hide the seed input field.
+ * `disabled_settings = <comma-separated settings>`
+ e.g. `disabled_settings = enable_damage, creative_mode`
+ These settings are hidden for this game in the "Start game" tab
+ and will be initialized as `false` when the game is started.
+ Prepend a setting name with an exclamation mark to initialize it to `true`
+ (this does not work for `enable_server`).
+ Only these settings are supported:
+ `enable_damage`, `creative_mode`, `enable_server`.
+ * `author`: The author of the game. It only appears when downloaded from
+ ContentDB.
+ * `release`: Ignore this: Should only ever be set by ContentDB, as it is
+ an internal ID used to track versions.
+* `minetest.conf`:
+ Used to set default settings when running this game.
+* `settingtypes.txt`:
+ In the same format as the one in builtin.
+ This settingtypes.txt will be parsed by the menu and the settings will be
+ displayed in the "Games" category in the advanced settings tab.
+* If the game contains a folder called `textures` the server will load it as a
+ texturepack, overriding mod textures.
+ Any server texturepack will override mod textures and the game texturepack.
+
+Menu images
+-----------
- name = Minetest
+Games can provide custom main menu images. They are put inside a `menu`
+directory inside the game directory.
-The game directory can contain the file minetest.conf, which will be used
-to set default settings when running the particular game.
-It can also contain a settingtypes.txt in the same format as the one in builtin.
-This settingtypes.txt will be parsed by the menu and the settings will be displayed
-in the "Games" category in the settings tab.
+The images are named `$identifier.png`, where `$identifier` is one of
+`overlay`, `background`, `footer`, `header`.
+If you want to specify multiple images for one identifier, add additional
+images named like `$identifier.$n.png`, with an ascending number $n starting
+with 1, and a random image will be chosen from the provided ones.
-### Menu images
+Menu music
+-----------
-Games can provide custom main menu images. They are put inside a `menu` directory
-inside the game directory.
+Games can provide custom main menu music. They are put inside a `menu`
+directory inside the game directory.
-The images are named `$identifier.png`, where `$identifier` is
-one of `overlay,background,footer,header`.
-If you want to specify multiple images for one identifier, add additional images named
-like `$identifier.$n.png`, with an ascending number $n starting with 1, and a random
-image will be chosen from the provided ones.
+The music files are named `theme.ogg`.
+If you want to specify multiple music files for one game, add additional
+images named like `theme.$n.ogg`, with an ascending number $n starting
+with 1 (max 10), and a random music file will be chosen from the provided ones.
+Mods
+====
Mod load path
-------------
-Generic:
-* `$path_share/games/gameid/mods/`
-* `$path_share/mods/`
-* `$path_user/games/gameid/mods/`
-* `$path_user/mods/` (User-installed mods)
-* `$worldpath/worldmods/`
+Paths are relative to the directories listed in the [Paths] section above.
-In a run-in-place version (e.g. the distributed windows version):
+* `games/<gameid>/mods/`
+* `mods/`
+* `worlds/<worldname>/worldmods/`
-* `minetest-0.4.x/games/gameid/mods/`
-* `minetest-0.4.x/mods/` (User-installed mods)
-* `minetest-0.4.x/worlds/worldname/worldmods/`
-
-On an installed version on Linux:
-
-* `/usr/share/minetest/games/gameid/mods/`
-* `$HOME/.minetest/mods/` (User-installed mods)
-* `$HOME/.minetest/worlds/worldname/worldmods`
+World-specific games
+--------------------
-Mod load path for world-specific games
---------------------------------------
It is possible to include a game in a world; in this case, no mods or
games are loaded or checked from anywhere else.
-This is useful for e.g. adventure worlds.
+This is useful for e.g. adventure worlds and happens if the `<worldname>/game/`
+directory exists.
-This happens if the following directory exists:
+Mods should then be placed in `<worldname>/game/mods/`.
- $world/game/
+Modpacks
+--------
-Mods should be then be placed in:
+Mods can be put in a subdirectory, if the parent directory, which otherwise
+should be a mod, contains a file named `modpack.conf`.
+The file is a key-value store of modpack details.
- $world/game/mods/
+* `name`: The modpack name. Allows Minetest to determine the modpack name even
+ if the folder is wrongly named.
+* `description`: Description of mod to be shown in the Mods tab of the main
+ menu.
+* `author`: The author of the modpack. It only appears when downloaded from
+ ContentDB.
+* `release`: Ignore this: Should only ever be set by ContentDB, as it is an
+ internal ID used to track versions.
+* `title`: A human-readable title to address the modpack.
-Modpack support
-----------------
-Mods can be put in a subdirectory, if the parent directory, which otherwise
-should be a mod, contains a file named `modpack.txt`. This file shall be
-empty, except for lines starting with `#`, which are comments.
+Note: to support 0.4.x, please also create an empty modpack.txt file.
Mod directory structure
-------------------------
+-----------------------
mods
- |-- modname
- | |-- depends.txt
- | |-- screenshot.png
- | |-- description.txt
- | |-- settingtypes.txt
- | |-- init.lua
- | |-- models
- | |-- textures
- | | |-- modname_stuff.png
- | | `-- modname_something_else.png
- | |-- sounds
- | |-- media
- | `-- <custom data>
- `-- another
-
+ ├── modname
+ │   ├── mod.conf
+ │   ├── screenshot.png
+ │   ├── settingtypes.txt
+ │   ├── init.lua
+ │   ├── models
+ │   ├── textures
+ │   │   ├── modname_stuff.png
+ │   │   ├── modname_stuff_normal.png
+ │   │   ├── modname_something_else.png
+ │   │   ├── subfolder_foo
+ │   │   │ ├── modname_more_stuff.png
+ │   │   │ └── another_subfolder
+ │   │   └── bar_subfolder
+ │   ├── sounds
+ │   ├── media
+ │   ├── locale
+ │   └── <custom data>
+ └── another
### modname
+
The location of this directory can be fetched by using
`minetest.get_modpath(modname)`.
-### `depends.txt`
-List of mods that have to be loaded before loading this mod.
+### mod.conf
-A single line contains a single modname.
+A `Settings` file that provides meta information about the mod.
-Optional dependencies can be defined by appending a question mark
-to a single modname. Their meaning is that if the specified mod
-is missing, that does not prevent this mod from being loaded.
+* `name`: The mod name. Allows Minetest to determine the mod name even if the
+ folder is wrongly named.
+* `description`: Description of mod to be shown in the Mods tab of the main
+ menu.
+* `depends`: A comma separated list of dependencies. These are mods that must be
+ loaded before this mod.
+* `optional_depends`: A comma separated list of optional dependencies.
+ Like a dependency, but no error if the mod doesn't exist.
+* `author`: The author of the mod. It only appears when downloaded from
+ ContentDB.
+* `release`: Ignore this: Should only ever be set by ContentDB, as it is an
+ internal ID used to track versions.
+* `title`: A human-readable title to address the mod.
### `screenshot.png`
+
A screenshot shown in the mod manager within the main menu. It should
have an aspect ratio of 3:2 and a minimum size of 300×200 pixels.
+### `depends.txt`
+
+**Deprecated:** you should use mod.conf instead.
+
+This file is used if there are no dependencies in mod.conf.
+
+List of mods that have to be loaded before loading this mod.
+
+A single line contains a single modname.
+
+Optional dependencies can be defined by appending a question mark
+to a single modname. This means that if the specified mod
+is missing, it does not prevent this mod from being loaded.
+
### `description.txt`
-A File containing description to be shown within mainmenu.
+
+**Deprecated:** you should use mod.conf instead.
+
+This file is used if there is no description in mod.conf.
+
+A file containing a description to be shown in the Mods tab of the main menu.
### `settingtypes.txt`
-A file in the same format as the one in builtin. It will be parsed by the
-settings menu and the settings will be displayed in the "Mods" category.
+
+The format is documented in `builtin/settingtypes.txt`.
+It is parsed by the main menu settings dialogue to list mod-specific
+settings in the "Mods" category.
### `init.lua`
+
The main Lua script. Running this script should register everything it
wants to register. Subsequent execution depends on minetest calling the
registered callbacks.
-`minetest.setting_get(name)` and `minetest.setting_getbool(name)` can be used
-to read custom or existing settings at load time, if necessary.
+`minetest.settings` can be used to read custom or existing settings at load
+time, if necessary. (See [`Settings`])
-### `models`
-Models for entities or meshnodes.
+### `textures`, `sounds`, `media`, `models`, `locale`
-### `textures`, `sounds`, `media`
Media files (textures, sounds, whatever) that will be transferred to the
-client and will be available for use by the mod.
+client and will be available for use by the mod and translation files for
+the clients (see [Translations]).
+
+It is suggested to use the folders for the purpose they are thought for,
+eg. put textures into `textures`, translation files into `locale`,
+models for entities or meshnodes into `models` et cetera.
+
+These folders and subfolders can contain subfolders.
+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
+------------------
-Naming convention for registered textual names
-----------------------------------------------
Registered names should generally be in this format:
- "modname:<whatever>" (<whatever> can have characters a-zA-Z0-9_)
+ modname:<whatever>
+
+`<whatever>` can have these characters:
+
+ a-zA-Z0-9_
This is to prevent conflicting names from corrupting maps and is
enforced by the mod loader.
+Registered names can be overridden by prefixing the name with `:`. This can
+be used for overriding the registrations of some other mod.
+
+The `:` prefix can also be used for maintaining backwards compatibility.
+
### Example
+
In the mod `experimental`, there is the ideal item/node/entity name `tnt`.
So the name should be `experimental:tnt`.
-Enforcement can be overridden by prefixing the name with `:`. This can
-be used for overriding the registrations of some other mod.
-
-Example: Any mod can redefine `experimental:tnt` by using the name
+Any mod can redefine `experimental:tnt` by using the name
:experimental:tnt
-when registering it.
-(also that mod is required to have `experimental` as a dependency)
+when registering it. For this to work correctly, that mod must have
+`experimental` as a dependency.
+
+
-The `:` prefix can also be used for maintaining backwards compatibility.
-### Aliases
-Aliases can be added by using `minetest.register_alias(name, convert_to)` or
-`minetest.register_alias_force(name, convert_to).
+Aliases
+=======
-This will make Minetest to convert things called name to things called
-`convert_to`.
+Aliases of itemnames can be added by using
+`minetest.register_alias(alias, original_name)` or
+`minetest.register_alias_force(alias, original_name)`.
+
+This adds an alias `alias` for the item called `original_name`.
+From now on, you can use `alias` to refer to the item `original_name`.
The only difference between `minetest.register_alias` and
-`minetest.register_alias_force` is that if an item called `name` exists,
+`minetest.register_alias_force` is that if an item named `alias` already exists,
`minetest.register_alias` will do nothing while
`minetest.register_alias_force` will unregister it.
This can be used for maintaining backwards compatibility.
-This can be also used for setting quick access names for things, e.g. if
+This can also set quick access names for things, e.g. if
you have an item called `epiclylongmodname:stuff`, you could do
minetest.register_alias("stuff", "epiclylongmodname:stuff")
and be able to use `/giveme stuff`.
+Mapgen aliases
+--------------
+
+In a game, a certain number of these must be set to tell core mapgens which
+of the game's nodes are to be used for core mapgen generation. For example:
+
+ minetest.register_alias("mapgen_stone", "default:stone")
+
+### Aliases for non-V6 mapgens
+
+#### Essential aliases
+
+* `mapgen_stone`
+* `mapgen_water_source`
+* `mapgen_river_water_source`
+
+`mapgen_river_water_source` is required for mapgens with sloping rivers where
+it is necessary to have a river liquid node with a short `liquid_range` and
+`liquid_renewable = false` to avoid flooding.
+
+#### Optional aliases
+
+* `mapgen_lava_source`
+
+Fallback lava node used if cave liquids are not defined in biome definitions.
+Deprecated, define cave liquids in biome definitions instead.
+
+* `mapgen_cobble`
+
+Fallback node used if dungeon nodes are not defined in biome definitions.
+Deprecated, define dungeon nodes in biome definitions instead.
+
+### Aliases for Mapgen V6
+
+#### Essential
+
+* `mapgen_stone`
+* `mapgen_water_source`
+* `mapgen_lava_source`
+* `mapgen_dirt`
+* `mapgen_dirt_with_grass`
+* `mapgen_sand`
+
+* `mapgen_tree`
+* `mapgen_leaves`
+* `mapgen_apple`
+
+* `mapgen_cobble`
+
+#### Optional
+
+* `mapgen_gravel` (falls back to stone)
+* `mapgen_desert_stone` (falls back to stone)
+* `mapgen_desert_sand` (falls back to sand)
+* `mapgen_dirt_with_snow` (falls back to dirt_with_grass)
+* `mapgen_snowblock` (falls back to dirt_with_grass)
+* `mapgen_snow` (not placed if missing)
+* `mapgen_ice` (falls back to water_source)
+
+* `mapgen_jungletree` (falls back to tree)
+* `mapgen_jungleleaves` (falls back to leaves)
+* `mapgen_junglegrass` (not placed if missing)
+* `mapgen_pine_tree` (falls back to tree)
+* `mapgen_pine_needles` (falls back to leaves)
+
+* `mapgen_stair_cobble` (falls back to cobble)
+* `mapgen_mossycobble` (falls back to cobble)
+* `mapgen_stair_desert_stone` (falls backto desert_stone)
+
+### Setting the node used in Mapgen Singlenode
+
+By default the world is filled with air nodes. To set a different node use e.g.:
+
+ minetest.register_alias("mapgen_singlenode", "default:stone")
+
+
+
+
Textures
---------
+========
+
Mods should generally prefix their textures with `modname_`, e.g. given
the mod name `foomod`, a texture could be called:
@@ -241,23 +421,32 @@ stripping out the file extension:
* e.g. `foomod_foothing.png`
* e.g. `foomod_foothing`
+Supported texture formats are PNG (`.png`), JPEG (`.jpg`), Bitmap (`.bmp`)
+and Targa (`.tga`).
+Since better alternatives exist, the latter two may be removed in the future.
+
Texture modifiers
-----------------
+
There are various texture modifiers that can be used
-to generate textures on-the-fly.
+to let the client generate textures on-the-fly.
+The modifiers are applied directly in sRGB colorspace,
+i.e. without gamma-correction.
### Texture overlaying
+
Textures can be overlaid by putting a `^` between them.
Example:
default_dirt.png^default_grass_side.png
-`default_grass_side.png` is overlayed over `default_dirt.png`.
+`default_grass_side.png` is overlaid over `default_dirt.png`.
The texture with the lower resolution will be automatically upscaled to
the higher resolution texture.
### Texture grouping
+
Textures can be grouped together by enclosing them in `(` and `)`.
Example: `cobble.png^(thing1.png^thing2.png)`
@@ -266,6 +455,7 @@ A texture for `thing1.png^thing2.png` is created and the resulting
texture is overlaid on top of `cobble.png`.
### Escaping
+
Modifiers that accept texture names (e.g. `[combine`) accept escaping to allow
passing complex texture names as arguments. Escaping is done with backslash and
is required for `^` and `:`.
@@ -277,22 +467,34 @@ on top of `cobble.png`.
### Advanced texture modifiers
-#### `[crack:<n>:<p>`
-* `<n>` = animation frame count
-* `<p>` = current animation frame
+#### Crack
+
+* `[crack:<n>:<p>`
+* `[cracko:<n>:<p>`
+* `[crack:<t>:<n>:<p>`
+* `[cracko:<t>:<n>:<p>`
+
+Parameters:
+
+* `<t>`: tile count (in each direction)
+* `<n>`: animation frame count
+* `<p>`: current animation frame
Draw a step of the crack animation on the texture.
+`crack` draws it normally, while `cracko` lays it over, keeping transparent
+pixels intact.
Example:
default_cobble.png^[crack:10:1
#### `[combine:<w>x<h>:<x1>,<y1>=<file1>:<x2>,<y2>=<file2>:...`
-* `<w>` = width
-* `<h>` = height
-* `<x>` = x position
-* `<y>` = y position
-* `<file>` = texture to combine
+
+* `<w>`: width
+* `<h>`: height
+* `<x>`: x position
+* `<y>`: y position
+* `<file>`: texture to combine
Creates a texture of size `<w>` times `<h>` and blits the listed files to their
specified coordinates.
@@ -302,6 +504,7 @@ Example:
[combine:16x32:0,0=default_cobble.png:0,16=default_wood.png
#### `[resize:<w>x<h>`
+
Resizes the texture to the given dimensions.
Example:
@@ -309,25 +512,27 @@ Example:
default_sandstone.png^[resize:16x16
#### `[opacity:<r>`
- Makes the base image transparent according to the given ratio.
- r must be between 0 and 255.
- 0 means totally transparent.
- 255 means totally opaque.
+
+Makes the base image transparent according to the given ratio.
+
+`r` must be between 0 (transparent) and 255 (opaque).
Example:
default_sandstone.png^[opacity:127
#### `[invert:<mode>`
+
Inverts the given channels of the base image.
Mode may contain the characters "r", "g", "b", "a".
Only the channels that are mentioned in the mode string will be inverted.
Example:
- default_apple.png^[invert:rgb
+ default_apple.png^[invert:rgb
#### `[brighten`
+
Brightens the texture.
Example:
@@ -335,6 +540,7 @@ Example:
tnt_tnt_side.png^[brighten
#### `[noalpha`
+
Makes the texture completely opaque.
Example:
@@ -342,6 +548,7 @@ Example:
default_leaves.png^[noalpha
#### `[makealpha:<r>,<g>,<b>`
+
Convert one color to transparency.
Example:
@@ -349,7 +556,8 @@ Example:
default_cobble.png^[makealpha:128,128,128
#### `[transform<t>`
-* `<t>` = transformation(s) to apply
+
+* `<t>`: transformation(s) to apply
Rotates and/or flips the image.
@@ -370,7 +578,9 @@ Example:
default_stone.png^[transformFXR90
#### `[inventorycube{<top>{<left>{<right>`
-Escaping does not apply here and `^` is replaced by `&` in texture names instead.
+
+Escaping does not apply here and `^` is replaced by `&` in texture names
+instead.
Create an inventory cube texture using the side textures.
@@ -382,6 +592,7 @@ Creates an inventorycube with `grass.png`, `dirt.png^grass_side.png` and
`dirt.png^grass_side.png` textures
#### `[lowpart:<percent>:<file>`
+
Blit the lower `<percent>`% part of `<file>` on the texture.
Example:
@@ -389,8 +600,9 @@ Example:
base.png^[lowpart:25:overlay.png
#### `[verticalframe:<t>:<n>`
-* `<t>` = animation frame count
-* `<n>` = current animation frame
+
+* `<t>`: animation frame count
+* `<n>`: current animation frame
Crops the texture to a frame of a vertical animation.
@@ -399,11 +611,18 @@ Example:
default_torch_animated.png^[verticalframe:16:8
#### `[mask:<file>`
+
Apply a mask to the base image.
The mask is applied using binary AND.
+#### `[sheet:<w>x<h>:<x>,<y>`
+
+Retrieves a tile at position x,y from the base image
+which it assumes to be a tilesheet with dimensions w,h.
+
#### `[colorize:<color>:<ratio>`
+
Colorize the textures with the given color.
`<color>` is specified as a `ColorString`.
`<ratio>` is an int ranging from 0 to 255 or the word "`alpha`". If
@@ -414,8 +633,233 @@ the word "`alpha`", then each texture pixel will contain the RGB of
`<color>` and the alpha of `<color>` multiplied by the alpha of the
texture pixel.
+#### `[multiply:<color>`
+
+Multiplies texture colors with the given color.
+`<color>` is specified as a `ColorString`.
+Result is more like what you'd expect if you put a color on top of another
+color, meaning white surfaces get a lot of your new color while black parts
+don't change very much.
+
+#### `[png:<base64>`
+
+Embed a base64 encoded PNG image in the texture string.
+You can produce a valid string for this by calling
+`minetest.encode_base64(minetest.encode_png(tex))`,
+refer to the documentation of these functions for details.
+You can use this to send disposable images such as captchas
+to individual clients, or render things that would be too
+expensive to compose with `[combine:`.
+
+IMPORTANT: Avoid sending large images this way.
+This is not a replacement for asset files, do not use it to do anything
+that you could instead achieve by just using a file.
+In particular consider `minetest.dynamic_add_media` and test whether
+using other texture modifiers could result in a shorter string than
+embedding a whole image, this may vary by use case.
+
+Hardware coloring
+-----------------
+
+The goal of hardware coloring is to simplify the creation of
+colorful nodes. If your textures use the same pattern, and they only
+differ in their color (like colored wool blocks), you can use hardware
+coloring instead of creating and managing many texture files.
+All of these methods use color multiplication (so a white-black texture
+with red coloring will result in red-black color).
+
+### Static coloring
+
+This method is useful if you wish to create nodes/items with
+the same texture, in different colors, each in a new node/item definition.
+
+#### Global color
+
+When you register an item or node, set its `color` field (which accepts a
+`ColorSpec`) to the desired color.
+
+An `ItemStack`'s static color can be overwritten by the `color` metadata
+field. If you set that field to a `ColorString`, that color will be used.
+
+#### Tile color
+
+Each tile may have an individual static color, which overwrites every
+other coloring method. To disable the coloring of a face,
+set its color to white (because multiplying with white does nothing).
+You can set the `color` property of the tiles in the node's definition
+if the tile is in table format.
+
+### Palettes
+
+For nodes and items which can have many colors, a palette is more
+suitable. A palette is a texture, which can contain up to 256 pixels.
+Each pixel is one possible color for the node/item.
+You can register one node/item, which can have up to 256 colors.
+
+#### Palette indexing
+
+When using palettes, you always provide a pixel index for the given
+node or `ItemStack`. The palette is read from left to right and from
+top to bottom. If the palette has less than 256 pixels, then it is
+stretched to contain exactly 256 pixels (after arranging the pixels
+to one line). The indexing starts from 0.
+
+Examples:
+
+* 16x16 palette, index = 0: the top left corner
+* 16x16 palette, index = 4: the fifth pixel in the first row
+* 16x16 palette, index = 16: the pixel below the top left corner
+* 16x16 palette, index = 255: the bottom right corner
+* 2 (width) x 4 (height) palette, index = 31: the top left corner.
+ The palette has 8 pixels, so each pixel is stretched to 32 pixels,
+ to ensure the total 256 pixels.
+* 2x4 palette, index = 32: the top right corner
+* 2x4 palette, index = 63: the top right corner
+* 2x4 palette, index = 64: the pixel below the top left corner
+
+#### Using palettes with items
+
+When registering an item, set the item definition's `palette` field to
+a texture. You can also use texture modifiers.
+
+The `ItemStack`'s color depends on the `palette_index` field of the
+stack's metadata. `palette_index` is an integer, which specifies the
+index of the pixel to use.
+
+#### Linking palettes with nodes
+
+When registering a node, set the item definition's `palette` field to
+a texture. You can also use texture modifiers.
+The node's color depends on its `param2`, so you also must set an
+appropriate `paramtype2`:
+
+* `paramtype2 = "color"` for nodes which use their full `param2` for
+ palette indexing. These nodes can have 256 different colors.
+ The palette should contain 256 pixels.
+* `paramtype2 = "colorwallmounted"` for nodes which use the first
+ five bits (most significant) of `param2` for palette indexing.
+ The remaining three bits are describing rotation, as in `wallmounted`
+ paramtype2. Division by 8 yields the palette index (without stretching the
+ palette). These nodes can have 32 different colors, and the palette
+ should contain 32 pixels.
+ Examples:
+ * `param2 = 17` is 2 * 8 + 1, so the rotation is 1 and the third (= 2 + 1)
+ pixel will be picked from the palette.
+ * `param2 = 35` is 4 * 8 + 3, so the rotation is 3 and the fifth (= 4 + 1)
+ pixel will be picked from the palette.
+* `paramtype2 = "colorfacedir"` for nodes which use the first
+ three bits of `param2` for palette indexing. The remaining
+ five bits are describing rotation, as in `facedir` paramtype2.
+ Division by 32 yields the palette index (without stretching the
+ palette). These nodes can have 8 different colors, and the
+ palette should contain 8 pixels.
+ Examples:
+ * `param2 = 17` is 0 * 32 + 17, so the rotation is 17 and the
+ first (= 0 + 1) pixel will be picked from the palette.
+ * `param2 = 35` is 1 * 32 + 3, so the rotation is 3 and the
+ second (= 1 + 1) pixel will be picked from the palette.
+
+To colorize a node on the map, set its `param2` value (according
+to the node's paramtype2).
+
+### Conversion between nodes in the inventory and on the map
+
+Static coloring is the same for both cases, there is no need
+for conversion.
+
+If the `ItemStack`'s metadata contains the `color` field, it will be
+lost on placement, because nodes on the map can only use palettes.
+
+If the `ItemStack`'s metadata contains the `palette_index` field, it is
+automatically transferred between node and item forms by the engine,
+when a player digs or places a colored node.
+You can disable this feature by setting the `drop` field of the node
+to itself (without metadata).
+To transfer the color to a special drop, you need a drop table.
+
+Example:
+
+ minetest.register_node("mod:stone", {
+ description = "Stone",
+ tiles = {"default_stone.png"},
+ paramtype2 = "color",
+ palette = "palette.png",
+ drop = {
+ items = {
+ -- assume that mod:cobblestone also has the same palette
+ {items = {"mod:cobblestone"}, inherit_color = true },
+ }
+ }
+ })
+
+### Colored items in craft recipes
+
+Craft recipes only support item strings, but fortunately item strings
+can also contain metadata. Example craft recipe registration:
+
+ minetest.register_craft({
+ output = minetest.itemstring_with_palette("wool:block", 3),
+ type = "shapeless",
+ recipe = {
+ "wool:block",
+ "dye:red",
+ },
+ })
+
+To set the `color` field, you can use `minetest.itemstring_with_color`.
+
+Metadata field filtering in the `recipe` field are not supported yet,
+so the craft output is independent of the color of the ingredients.
+
+Soft texture overlay
+--------------------
+
+Sometimes hardware coloring is not enough, because it affects the
+whole tile. Soft texture overlays were added to Minetest to allow
+the dynamic coloring of only specific parts of the node's texture.
+For example a grass block may have colored grass, while keeping the
+dirt brown.
+
+These overlays are 'soft', because unlike texture modifiers, the layers
+are not merged in the memory, but they are simply drawn on top of each
+other. This allows different hardware coloring, but also means that
+tiles with overlays are drawn slower. Using too much overlays might
+cause FPS loss.
+
+For inventory and wield images you can specify overlays which
+hardware coloring does not modify. You have to set `inventory_overlay`
+and `wield_overlay` fields to an image name.
+
+To define a node overlay, simply set the `overlay_tiles` field of the node
+definition. These tiles are defined in the same way as plain tiles:
+they can have a texture name, color etc.
+To skip one face, set that overlay tile to an empty string.
+
+Example (colored grass block):
+
+ minetest.register_node("default:dirt_with_grass", {
+ description = "Dirt with Grass",
+ -- Regular tiles, as usual
+ -- The dirt tile disables palette coloring
+ tiles = {{name = "default_grass.png"},
+ {name = "default_dirt.png", color = "white"}},
+ -- Overlay tiles: define them in the same style
+ -- The top and bottom tile does not have overlay
+ overlay_tiles = {"", "",
+ {name = "default_grass_side.png"}},
+ -- Global color, used in inventory
+ color = "green",
+ -- Palette in the world
+ paramtype2 = "color",
+ palette = "default_foilage.png",
+ })
+
+
+
+
Sounds
-------
+======
+
Only Ogg Vorbis files are supported.
For positional playing of sounds, only single-channel (mono) files are
@@ -441,237 +885,377 @@ from the available ones of the following files:
Examples of sound parameter tables:
- -- Play location-less on all clients
+ -- Play locationless on all clients
{
- gain = 1.0, -- default
+ gain = 1.0, -- default
+ fade = 0.0, -- default, change to a value > 0 to fade the sound in
+ pitch = 1.0, -- default
}
- -- Play location-less to a player
+ -- Play locationless to one player
{
to_player = name,
- gain = 1.0, -- default
+ gain = 1.0, -- default
+ fade = 0.0, -- default, change to a value > 0 to fade the sound in
+ pitch = 1.0, -- default
}
- -- Play in a location
+ -- Play locationless to one player, looped
{
- pos = {x=1,y=2,z=3},
- gain = 1.0, -- default
- max_hear_distance = 32, -- default, uses an euclidean metric
+ to_player = name,
+ gain = 1.0, -- default
+ loop = true,
+ }
+ -- Play at a location
+ {
+ pos = {x = 1, y = 2, z = 3},
+ gain = 1.0, -- default
+ max_hear_distance = 32, -- default, uses an euclidean metric
}
-- Play connected to an object, looped
{
object = <an ObjectRef>,
- gain = 1.0, -- default
- max_hear_distance = 32, -- default, uses an euclidean metric
- loop = true, -- only sounds connected to objects can be looped
+ gain = 1.0, -- default
+ max_hear_distance = 32, -- default, uses an euclidean metric
+ loop = true,
+ }
+ -- Play at a location, heard by anyone *but* the given player
+ {
+ pos = {x = 32, y = 0, z = 100},
+ max_hear_distance = 40,
+ exclude_player = name,
}
-### `SimpleSoundSpec`
-* e.g. `""`
-* e.g. `"default_place_node"`
-* e.g. `{}`
-* e.g. `{name="default_place_node"}`
-* e.g. `{name="default_place_node", gain=1.0}`
+Looped sounds must either be connected to an object or played locationless to
+one player using `to_player = name`.
-Registered definitions of stuff
--------------------------------
-Anything added using certain `minetest.register_*` functions get added to
-the global `minetest.registered_*` tables.
+A positional sound will only be heard by players that are within
+`max_hear_distance` of the sound position, at the start of the sound.
-* `minetest.register_entity(name, prototype table)`
- * added to `minetest.registered_entities[name]`
+`exclude_player = name` can be applied to locationless, positional and object-
+bound sounds to exclude a single player from hearing them.
-* `minetest.register_node(name, node definition)`
- * added to `minetest.registered_items[name]`
- * added to `minetest.registered_nodes[name]`
+`SimpleSoundSpec`
+-----------------
-* `minetest.register_tool(name, item definition)`
- * added to `minetest.registered_items[name]`
+Specifies a sound name, gain (=volume) and pitch.
+This is either a string or a table.
-* `minetest.register_craftitem(name, item definition)`
- * added to `minetest.registered_items[name]`
+In string form, you just specify the sound name or
+the empty string for no sound.
-* `minetest.unregister_item(name)`
- * Unregisters the item name from engine, and deletes the entry with key
- * `name` from `minetest.registered_items` and from the associated item
- * table according to its nature: minetest.registered_nodes[] etc
+Table form has the following fields:
-* `minetest.register_biome(biome definition)`
- * returns an integer uniquely identifying the registered biome
- * added to `minetest.registered_biome` with the key of `biome.name`
- * if `biome.name` is nil, the key is the returned ID
+* `name`: Sound name
+* `gain`: Volume (`1.0` = 100%)
+* `pitch`: Pitch (`1.0` = 100%)
-* `minetest.register_ore(ore definition)`
- * returns an integer uniquely identifying the registered ore
- * added to `minetest.registered_ores` with the key of `ore.name`
- * if `ore.name` is nil, the key is the returned ID
+`gain` and `pitch` are optional and default to `1.0`.
-* `minetest.register_decoration(decoration definition)`
- * returns an integer uniquely identifying the registered decoration
- * added to `minetest.registered_decorations` with the key of `decoration.name`
- * if `decoration.name` is nil, the key is the returned ID
+Examples:
-* `minetest.register_schematic(schematic definition)`
- * returns an integer uniquely identifying the registered schematic
- * added to `minetest.registered_schematic` with the key of `schematic.name`
- * if `schematic.name` is nil, the key is the returned ID
- * if the schematic is loaded from a file, schematic.name is set to the filename
- * if the function is called when loading the mod, and schematic.name is a relative
- path, then the current mod path will be prepended to the schematic filename
+* `""`: No sound
+* `{}`: No sound
+* `"default_place_node"`: Play e.g. `default_place_node.ogg`
+* `{name = "default_place_node"}`: Same as above
+* `{name = "default_place_node", gain = 0.5}`: 50% volume
+* `{name = "default_place_node", gain = 0.9, pitch = 1.1}`: 90% volume, 110% pitch
-* `minetest.clear_registered_biomes()`
- * clears all biomes currently registered
+Special sound files
+-------------------
-* `minetest.clear_registered_ores()`
- * clears all ores currently registered
+These sound files are played back by the engine if provided.
-* `minetest.clear_registered_decorations()`
- * clears all decorations currently registered
+ * `player_damage`: Played when the local player takes damage (gain = 0.5)
+ * `player_falling_damage`: Played when the local player takes
+ damage by falling (gain = 0.5)
+ * `player_jump`: Played when the local player jumps
+ * `default_dig_<groupname>`: Default node digging sound
+ (see node sound definition for details)
-* `minetest.clear_registered_schematics()`
- * clears all schematics currently registered
+Registered definitions
+======================
+
+Anything added using certain [Registration functions] gets added to one or more
+of the global [Registered definition tables].
Note that in some cases you will stumble upon things that are not contained
in these tables (e.g. when a mod has been removed). Always check for
existence before trying to access the fields.
-Example: If you want to check the drawtype of a node, you could do:
+Example:
+
+All nodes register with `minetest.register_node` get added to the table
+`minetest.registered_nodes`.
+
+If you want to check the drawtype of a node, you could do it like this:
+
+ local def = minetest.registered_nodes[nodename]
+ local drawtype = def and def.drawtype
- local function get_nodedef_field(nodename, fieldname)
- if not minetest.registered_nodes[nodename] then
- return nil
- end
- return minetest.registered_nodes[nodename][fieldname]
- end
- local drawtype = get_nodedef_field(nodename, "drawtype")
-Example: `minetest.get_item_group(name, group)` has been implemented as:
- function minetest.get_item_group(name, group)
- if not minetest.registered_items[name] or not
- minetest.registered_items[name].groups[group] then
- return 0
- end
- return minetest.registered_items[name].groups[group]
- end
Nodes
------
+=====
+
Nodes are the bulk data of the world: cubes and other things that take the
space of a cube. Huge amounts of them are handled efficiently, but they
are quite static.
-The definition of a node is stored and can be accessed by name in
+The definition of a node is stored and can be accessed by using
minetest.registered_nodes[node.name]
-See "Registered definitions of stuff".
+See [Registered definitions].
Nodes are passed by value between Lua and the engine.
They are represented by a table:
{name="name", param1=num, param2=num}
-`param1` and `param2` are 8-bit integers. The engine uses them for certain
-automated functions. If you don't use these functions, you can use them to
-store arbitrary values.
+`param1` and `param2` are 8-bit integers ranging from 0 to 255. The engine uses
+them for certain automated functions. If you don't use these functions, you can
+use them to store arbitrary values.
-The functions of `param1` and `param2` are determined by certain fields in the
-node definition:
-
-`param1` is reserved for the engine when `paramtype != "none"`:
-
- paramtype = "light"
- ^ The value stores light with and without sun in its upper and lower 4 bits
- respectively. Allows light to propagate from or through the node with
- light value falling by 1 per node. This is essential for a light source
- node to spread its light.
-
-`param2` is reserved for the engine when any of these are used:
-
- liquidtype == "flowing"
- ^ The level and some flags of the liquid is stored in param2
- drawtype == "flowingliquid"
- ^ The drawn liquid level is read from param2
- drawtype == "torchlike"
- drawtype == "signlike"
- paramtype2 == "wallmounted"
- ^ The rotation of the node is stored in param2. You can make this value
- by using minetest.dir_to_wallmounted().
- paramtype2 == "facedir"
- ^ The rotation of the node is stored in param2. Furnaces and chests are
- rotated this way. Can be made by using minetest.dir_to_facedir().
- Values range 0 - 23
- facedir / 4 = axis direction:
- 0 = y+ 1 = z+ 2 = z- 3 = x+ 4 = x- 5 = y-
- facedir modulo 4 = rotation around that axis
- paramtype2 == "leveled"
- paramtype2 == "degrotate"
- ^ The rotation of this node is stored in param2. Plants are rotated this way.
- Values range 0 - 179. The value stored in param2 is multiplied by two to
- get the actual rotation of the node.
- paramtype2 == "meshoptions"
- ^ Only valid for "plantlike". The value of param2 becomes a bitfield which can
- be used to change how the client draws plantlike nodes. Bits 0, 1 and 2 form
- a mesh selector. Currently the following meshes are choosable:
- 0 = a "x" shaped plant (ordinary plant)
- 1 = a "+" shaped plant (just rotated 45 degrees)
- 2 = a "*" shaped plant with 3 faces instead of 2
- 3 = a "#" shaped plant with 4 faces instead of 2
- 4 = a "#" shaped plant with 4 faces that lean outwards
- 5-7 are unused and reserved for future meshes.
- Bits 3 through 7 are optional flags that can be combined and give these
- effects:
- bit 3 (0x08) - Makes the plant slightly vary placement horizontally
- bit 4 (0x10) - Makes the plant mesh 1.4x larger
- bit 5 (0x20) - Moves each face randomly a small bit down (1/8 max)
- bits 6-7 are reserved for future use.
- collision_box = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
- },
- },
- ^ defines list of collision boxes for the node. If empty, collision boxes
- will be the same as nodeboxes, in case of any other nodes will be full cube
- as in the example above.
+Node paramtypes
+---------------
-Nodes can also contain extra data. See "Node Metadata".
+The functions of `param1` and `param2` are determined by certain fields in the
+node definition.
+
+The function of `param1` is determined by `paramtype` in node definition.
+`param1` is reserved for the engine when `paramtype != "none"`.
+
+* `paramtype = "light"`
+ * The value stores light with and without sun in its lower and upper 4 bits
+ respectively.
+ * Required by a light source node to enable spreading its light.
+ * Required by the following drawtypes as they determine their visual
+ brightness from their internal light value:
+ * torchlike
+ * signlike
+ * firelike
+ * fencelike
+ * raillike
+ * nodebox
+ * mesh
+ * plantlike
+ * plantlike_rooted
+* `paramtype = "none"`
+ * `param1` will not be used by the engine and can be used to store
+ an arbitrary value
+
+The function of `param2` is determined by `paramtype2` in node definition.
+`param2` is reserved for the engine when `paramtype2 != "none"`.
+
+* `paramtype2 = "flowingliquid"`
+ * Used by `drawtype = "flowingliquid"` and `liquidtype = "flowing"`
+ * The liquid level and a flag of the liquid are stored in `param2`
+ * Bits 0-2: Liquid level (0-7). The higher, the more liquid is in this node;
+ see `minetest.get_node_level`, `minetest.set_node_level` and `minetest.add_node_level`
+ to access/manipulate the content of this field
+ * Bit 3: If set, liquid is flowing downwards (no graphical effect)
+* `paramtype2 = "wallmounted"`
+ * Supported drawtypes: "torchlike", "signlike", "plantlike",
+ "plantlike_rooted", "normal", "nodebox", "mesh"
+ * The rotation of the node is stored in `param2`
+ * You can make this value by using `minetest.dir_to_wallmounted()`
+ * Values range 0 - 5
+ * The value denotes at which direction the node is "mounted":
+ 0 = y+, 1 = y-, 2 = x+, 3 = x-, 4 = z+, 5 = z-
+* `paramtype2 = "facedir"`
+ * Supported drawtypes: "normal", "nodebox", "mesh"
+ * The rotation of the node is stored in `param2`. Furnaces and chests are
+ rotated this way. Can be made by using `minetest.dir_to_facedir()`.
+ * Values range 0 - 23
+ * facedir / 4 = axis direction:
+ 0 = y+, 1 = z+, 2 = z-, 3 = x+, 4 = x-, 5 = y-
+ * facedir modulo 4 = rotation around that axis
+* `paramtype2 = "leveled"`
+ * Only valid for "nodebox" with 'type = "leveled"', and "plantlike_rooted".
+ * Leveled nodebox:
+ * The level of the top face of the nodebox is stored in `param2`.
+ * The other faces are defined by 'fixed = {}' like 'type = "fixed"'
+ nodeboxes.
+ * The nodebox height is (`param2` / 64) nodes.
+ * The maximum accepted value of `param2` is 127.
+ * Rooted plantlike:
+ * The height of the 'plantlike' section is stored in `param2`.
+ * The height is (`param2` / 16) nodes.
+* `paramtype2 = "degrotate"`
+ * Valid for `plantlike` and `mesh` drawtypes. The rotation of the node is
+ stored in `param2`.
+ * Values range 0–239. The value stored in `param2` is multiplied by 1.5 to
+ get the actual rotation in degrees of the node.
+* `paramtype2 = "meshoptions"`
+ * Only valid for "plantlike" drawtype. `param2` encodes the shape and
+ optional modifiers of the "plant". `param2` is a bitfield.
+ * Bits 0 to 2 select the shape.
+ Use only one of the values below:
+ * 0 = a "x" shaped plant (ordinary plant)
+ * 1 = a "+" shaped plant (just rotated 45 degrees)
+ * 2 = a "*" shaped plant with 3 faces instead of 2
+ * 3 = a "#" shaped plant with 4 faces instead of 2
+ * 4 = a "#" shaped plant with 4 faces that lean outwards
+ * 5-7 are unused and reserved for future meshes.
+ * Bits 3 to 7 are used to enable any number of optional modifiers.
+ Just add the corresponding value(s) below to `param2`:
+ * 8 - Makes the plant slightly vary placement horizontally
+ * 16 - Makes the plant mesh 1.4x larger
+ * 32 - Moves each face randomly a small bit down (1/8 max)
+ * values 64 and 128 (bits 6-7) are reserved for future use.
+ * Example: `param2 = 0` selects a normal "x" shaped plant
+ * Example: `param2 = 17` selects a "+" shaped plant, 1.4x larger (1+16)
+* `paramtype2 = "color"`
+ * `param2` tells which color is picked from the palette.
+ The palette should have 256 pixels.
+* `paramtype2 = "colorfacedir"`
+ * Same as `facedir`, but with colors.
+ * The first three bits of `param2` tells which color is picked from the
+ palette. The palette should have 8 pixels.
+* `paramtype2 = "colorwallmounted"`
+ * Same as `wallmounted`, but with colors.
+ * The first five bits of `param2` tells which color is picked from the
+ palette. The palette should have 32 pixels.
+* `paramtype2 = "glasslikeliquidlevel"`
+ * Only valid for "glasslike_framed" or "glasslike_framed_optional"
+ drawtypes. "glasslike_framed_optional" nodes are only affected if the
+ "Connected Glass" setting is enabled.
+ * Bits 0-5 define 64 levels of internal liquid, 0 being empty and 63 being
+ full.
+ * Bits 6 and 7 modify the appearance of the frame and node faces. One or
+ both of these values may be added to `param2`:
+ * 64 - Makes the node not connect with neighbors above or below it.
+ * 128 - Makes the node not connect with neighbors to its sides.
+ * Liquid texture is defined using `special_tiles = {"modname_tilename.png"}`
+* `paramtype2 = "colordegrotate"`
+ * Same as `degrotate`, but with colors.
+ * The first (most-significant) three bits of `param2` tells which color
+ is picked from the palette. The palette should have 8 pixels.
+ * Remaining 5 bits store rotation in range 0–23 (i.e. in 15° steps)
+* `paramtype2 = "none"`
+ * `param2` will not be used by the engine and can be used to store
+ an arbitrary value
+
+Nodes can also contain extra data. See [Node Metadata].
Node drawtypes
----------------
+--------------
+
There are a bunch of different looking node types.
-Look for examples in `games/minimal` or `games/minetest_game`.
+Look for examples in `games/devtest` or `games/minetest_game`.
* `normal`
+ * A node-sized cube.
* `airlike`
+ * Invisible, uses no texture.
* `liquid`
+ * The cubic source node for a liquid.
+ * Faces bordering to the same node are never rendered.
+ * Connects to node specified in `liquid_alternative_flowing`.
+ * Use `backface_culling = false` for the tiles you want to make
+ visible when inside the node.
* `flowingliquid`
+ * The flowing version of a liquid, appears with various heights and slopes.
+ * Faces bordering to the same node are never rendered.
+ * Connects to node specified in `liquid_alternative_source`.
+ * Node textures are defined with `special_tiles` where the first tile
+ is for the top and bottom faces and the second tile is for the side
+ faces.
+ * `tiles` is used for the item/inventory/wield image rendering.
+ * Use `backface_culling = false` for the special tiles you want to make
+ visible when inside the node
* `glasslike`
+ * Often used for partially-transparent nodes.
+ * Only external sides of textures are visible.
* `glasslike_framed`
+ * All face-connected nodes are drawn as one volume within a surrounding
+ frame.
+ * The frame appearance is generated from the edges of the first texture
+ specified in `tiles`. The width of the edges used are 1/16th of texture
+ size: 1 pixel for 16x16, 2 pixels for 32x32 etc.
+ * The glass 'shine' (or other desired detail) on each node face is supplied
+ by the second texture specified in `tiles`.
* `glasslike_framed_optional`
+ * This switches between the above 2 drawtypes according to the menu setting
+ 'Connected Glass'.
* `allfaces`
+ * Often used for partially-transparent nodes.
+ * External and internal sides of textures are visible.
* `allfaces_optional`
+ * Often used for leaves nodes.
+ * This switches between `normal`, `glasslike` and `allfaces` according to
+ the menu setting: Opaque Leaves / Simple Leaves / Fancy Leaves.
+ * With 'Simple Leaves' selected, the texture specified in `special_tiles`
+ is used instead, if present. This allows a visually thicker texture to be
+ used to compensate for how `glasslike` reduces visual thickness.
* `torchlike`
+ * A single vertical texture.
+ * If `paramtype2="[color]wallmounted"`:
+ * If placed on top of a node, uses the first texture specified in `tiles`.
+ * If placed against the underside of a node, uses the second texture
+ specified in `tiles`.
+ * If placed on the side of a node, uses the third texture specified in
+ `tiles` and is perpendicular to that node.
+ * If `paramtype2="none"`:
+ * Will be rendered as if placed on top of a node (see
+ above) and only the first texture is used.
* `signlike`
+ * A single texture parallel to, and mounted against, the top, underside or
+ side of a node.
+ * If `paramtype2="[color]wallmounted"`, it rotates according to `param2`
+ * If `paramtype2="none"`, it will always be on the floor.
* `plantlike`
+ * Two vertical and diagonal textures at right-angles to each other.
+ * See `paramtype2 = "meshoptions"` above for other options.
* `firelike`
+ * When above a flat surface, appears as 6 textures, the central 2 as
+ `plantlike` plus 4 more surrounding those.
+ * If not above a surface the central 2 do not appear, but the texture
+ appears against the faces of surrounding nodes if they are present.
* `fencelike`
+ * A 3D model suitable for a wooden fence.
+ * One placed node appears as a single vertical post.
+ * Adjacently-placed nodes cause horizontal bars to appear between them.
* `raillike`
-* `nodebox` -- See below. (**Experimental!**)
-* `mesh` -- use models for nodes
-
-`*_optional` drawtypes need less rendering time if deactivated (always client side).
+ * Often used for tracks for mining carts.
+ * Requires 4 textures to be specified in `tiles`, in order: Straight,
+ curved, t-junction, crossing.
+ * Each placed node automatically switches to a suitable rotated texture
+ determined by the adjacent `raillike` nodes, in order to create a
+ continuous track network.
+ * Becomes a sloping node if placed against stepped nodes.
+* `nodebox`
+ * Often used for stairs and slabs.
+ * Allows defining nodes consisting of an arbitrary number of boxes.
+ * See [Node boxes] below for more information.
+* `mesh`
+ * Uses models for nodes.
+ * Tiles should hold model materials textures.
+ * Only static meshes are implemented.
+ * For supported model formats see Irrlicht engine documentation.
+* `plantlike_rooted`
+ * Enables underwater `plantlike` without air bubbles around the nodes.
+ * Consists of a base cube at the co-ordinates of the node plus a
+ `plantlike` extension above
+ * If `paramtype2="leveled", the `plantlike` extension has a height
+ of `param2 / 16` nodes, otherwise it's the height of 1 node
+ * If `paramtype2="wallmounted"`, the `plantlike` extension
+ will be at one of the corresponding 6 sides of the base cube.
+ Also, the base cube rotates like a `normal` cube would
+ * The `plantlike` extension visually passes through any nodes above the
+ base cube without affecting them.
+ * The base cube texture tiles are defined as normal, the `plantlike`
+ extension uses the defined special tile, for example:
+ `special_tiles = {{name = "default_papyrus.png"}},`
+
+`*_optional` drawtypes need less rendering time if deactivated
+(always client-side).
Node boxes
------------
-Node selection boxes are defined using "node boxes"
-
-The `nodebox` node drawtype allows defining visual of nodes consisting of
-arbitrary number of boxes. It allows defining stuff like stairs. Only the
-`fixed` and `leveled` box type is supported for these.
+----------
-Please note that this is still experimental, and may be incompatibly
-changed in the future.
+Node selection boxes are defined using "node boxes".
A nodebox is defined as any of:
@@ -680,11 +1264,19 @@ A nodebox is defined as any of:
type = "regular"
}
{
- -- A fixed box (facedir param2 is used, if applicable)
+ -- A fixed box (or boxes) (facedir param2 is used, if applicable)
type = "fixed",
fixed = box OR {box1, box2, ...}
}
{
+ -- A variable height box (or boxes) with the top face position defined
+ -- by the node parameter 'leveled = ', or if 'paramtype2 == "leveled"'
+ -- by param2.
+ -- Other faces are defined by 'fixed = {}' as with 'type = "fixed"'.
+ type = "leveled",
+ fixed = box OR {box1, box2, ...}
+ }
+ {
-- A box like the selection box for torches
-- (wallmounted param2 is used, if applicable)
type = "wallmounted",
@@ -703,6 +1295,18 @@ A nodebox is defined as any of:
connect_left = box OR {box1, box2, ...}
connect_back = box OR {box1, box2, ...}
connect_right = box OR {box1, box2, ...}
+ -- The following `disconnected_*` boxes are the opposites of the
+ -- `connect_*` ones above, i.e. when a node has no suitable neighbour
+ -- on the respective side, the corresponding disconnected box is drawn.
+ disconnected_top = box OR {box1, box2, ...}
+ disconnected_bottom = box OR {box1, box2, ...}
+ disconnected_front = box OR {box1, box2, ...}
+ disconnected_left = box OR {box1, box2, ...}
+ disconnected_back = box OR {box1, box2, ...}
+ disconnected_right = box OR {box1, box2, ...}
+ disconnected = box OR {box1, box2, ...} -- when there is *no* neighbour
+ disconnected_sides = box OR {box1, box2, ...} -- when there are *no*
+ -- neighbours to the sides
}
A `box` is defined as:
@@ -713,272 +1317,122 @@ A box of a regular node would look like:
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
-`type = "leveled"` is same as `type = "fixed"`, but `y2` will be automatically
-set to level from `param2`.
-
-
-Meshes
-------
-If drawtype `mesh` is used, tiles should hold model materials textures.
-Only static meshes are implemented.
-For supported model formats see Irrlicht engine documentation.
-
-
-Noise Parameters
-----------------
-Noise Parameters, or commonly called "`NoiseParams`", define the properties of
-perlin noise.
-
-### `offset`
-Offset that the noise is translated by (i.e. added) after calculation.
-
-### `scale`
-Factor that the noise is scaled by (i.e. multiplied) after calculation.
-
-### `spread`
-Vector containing values by which each coordinate is divided by before calculation.
-Higher spread values result in larger noise features.
-
-A value of `{x=250, y=250, z=250}` is common.
-
-### `seed`
-Random seed for the noise. Add the world seed to a seed offset for world-unique noise.
-In the case of `minetest.get_perlin()`, this value has the world seed automatically added.
-
-### `octaves`
-Number of times the noise gradient is accumulated into the noise.
-
-Increase this number to increase the amount of detail in the resulting noise.
-
-A value of `6` is common.
+To avoid collision issues, keep each value within the range of +/- 1.45.
+This also applies to leveled nodeboxes, where the final height shall not
+exceed this soft limit.
-### `persistence`
-Factor by which the effect of the noise gradient function changes with each successive octave.
-
-Values less than `1` make the details of successive octaves' noise diminish, while values
-greater than `1` make successive octaves stronger.
-
-A value of `0.6` is common.
-
-### `lacunarity`
-Factor by which the noise feature sizes change with each successive octave.
-
-A value of `2.0` is common.
-
-### `flags`
-Leave this field unset for no special handling.
-
-Currently supported are `defaults`, `eased` and `absvalue`.
-
-#### `defaults`
-Specify this if you would like to keep auto-selection of eased/not-eased while specifying
-some other flags.
-
-#### `eased`
-Maps noise gradient values onto a quintic S-curve before performing interpolation.
-This results in smooth, rolling noise. Disable this (`noeased`) for sharp-looking noise.
-If no flags are specified (or defaults is), 2D noise is eased and 3D noise is not eased.
-
-#### `absvalue`
-Accumulates the absolute value of each noise gradient result.
-
-Noise parameters format example for 2D or 3D perlin noise or perlin noise maps:
- np_terrain = {
- offset = 0,
- scale = 1,
- spread = {x=500, y=500, z=500},
- seed = 571347,
- octaves = 5,
- persist = 0.63,
- lacunarity = 2.0,
- flags = "defaults, absvalue"
- }
- ^ A single noise parameter table can be used to get 2D or 3D noise,
- when getting 2D noise spread.z is ignored.
-
-
-Ore types
----------
-These tell in what manner the ore is generated.
-
-All default ores are of the uniformly-distributed scatter type.
-
-### `scatter`
-Randomly chooses a location and generates a cluster of ore.
-
-If `noise_params` is specified, the ore will be placed if the 3D perlin noise at
-that point is greater than the `noise_threshold`, giving the ability to create
-a non-equal distribution of ore.
-
-### `sheet`
-Creates a sheet of ore in a blob shape according to the 2D perlin noise
-described by `noise_params` and `noise_threshold`. This is essentially an
-improved version of the so-called "stratus" ore seen in some unofficial mods.
-
-This sheet consists of vertical columns of uniform randomly distributed height,
-varying between the inclusive range `column_height_min` and `column_height_max`.
-If `column_height_min` is not specified, this parameter defaults to 1.
-If `column_height_max` is not specified, this parameter defaults to `clust_size`
-for reverse compatibility. New code should prefer `column_height_max`.
-The `column_midpoint_factor` parameter controls the position of the column at which
-ore eminates from. If 1, columns grow upward. If 0, columns grow downward. If 0.5,
-columns grow equally starting from each direction. `column_midpoint_factor` is a
-decimal number ranging in value from 0 to 1. If this parameter is not specified,
-the default is 0.5.
-The ore parameters `clust_scarcity` and `clust_num_ores` are ignored for this ore type.
+Map terminology and coordinates
+===============================
-### `puff`
-Creates a sheet of ore in a cloud-like puff shape.
-
-As with the `sheet` ore type, the size and shape of puffs are described by
-`noise_params` and `noise_threshold` and are placed at random vertical positions
-within the currently generated chunk.
+Nodes, mapblocks, mapchunks
+---------------------------
-The vertical top and bottom displacement of each puff are determined by the noise
-parameters `np_puff_top` and `np_puff_bottom`, respectively.
+A 'node' is the fundamental cubic unit of a world and appears to a player as
+roughly 1x1x1 meters in size.
+A 'mapblock' (often abbreviated to 'block') is 16x16x16 nodes and is the
+fundamental region of a world that is stored in the world database, sent to
+clients and handled by many parts of the engine.
+'mapblock' is preferred terminology to 'block' to help avoid confusion with
+'node', however 'block' often appears in the API.
-### `blob`
-Creates a deformed sphere of ore according to 3d perlin noise described by
-`noise_params`. The maximum size of the blob is `clust_size`, and
-`clust_scarcity` has the same meaning as with the `scatter` type.
+A 'mapchunk' (sometimes abbreviated to 'chunk') is usually 5x5x5 mapblocks
+(80x80x80 nodes) and is the volume of world generated in one operation by
+the map generator.
+The size in mapblocks has been chosen to optimise map generation.
-### `vein`
-Creates veins of ore varying in density by according to the intersection of two
-instances of 3d perlin noise with diffferent seeds, both described by
-`noise_params`. `random_factor` varies the influence random chance has on
-placement of an ore inside the vein, which is `1` by default. Note that
-modifying this parameter may require adjusting `noise_threshold`.
-The parameters `clust_scarcity`, `clust_num_ores`, and `clust_size` are ignored
-by this ore type. This ore type is difficult to control since it is sensitive
-to small changes. The following is a decent set of parameters to work from:
-
- noise_params = {
- offset = 0,
- scale = 3,
- spread = {x=200, y=200, z=200},
- seed = 5390,
- octaves = 4,
- persist = 0.5,
- flags = "eased",
- },
- noise_threshold = 1.6
-
-WARNING: Use this ore type *very* sparingly since it is ~200x more
-computationally expensive than any other ore.
+Coordinates
+-----------
-Ore attributes
---------------
-See section "Flag Specifier Format".
+### Orientation of axes
-Currently supported flags: `absheight`
+For node and mapblock coordinates, +X is East, +Y is up, +Z is North.
-### `absheight`
-Also produce this same ore between the height range of `-y_max` and `-y_min`.
+### Node coordinates
-Useful for having ore in sky realms without having to duplicate ore entries.
+Almost all positions used in the API use node coordinates.
-### `puff_cliffs`
-If set, puff ore generation will not taper down large differences in displacement
-when approaching the edge of a puff. This flag has no effect for ore types other
-than `puff`.
+### Mapblock coordinates
-### `puff_additive_composition`
-By default, when noise described by `np_puff_top` or `np_puff_bottom` results in a
-negative displacement, the sub-column at that point is not generated. With this
-attribute set, puff ore generation will instead generate the absolute difference in
-noise displacement values. This flag has no effect for ore types other than `puff`.
+Occasionally the API uses 'blockpos' which refers to mapblock coordinates that
+specify a particular mapblock.
+For example blockpos (0,0,0) specifies the mapblock that extends from
+node position (0,0,0) to node position (15,15,15).
-Decoration types
-----------------
-The varying types of decorations that can be placed.
+#### Converting node position to the containing blockpos
-### `simple`
-Creates a 1 times `H` times 1 column of a specified node (or a random node from
-a list, if a decoration list is specified). Can specify a certain node it must
-spawn next to, such as water or lava, for example. Can also generate a
-decoration of random height between a specified lower and upper bound.
-This type of decoration is intended for placement of grass, flowers, cacti,
-papyri, waterlilies and so on.
+To calculate the blockpos of the mapblock that contains the node at 'nodepos',
+for each axis:
-### `schematic`
-Copies a box of `MapNodes` from a specified schematic file (or raw description).
-Can specify a probability of a node randomly appearing when placed.
-This decoration type is intended to be used for multi-node sized discrete
-structures, such as trees, cave spikes, rocks, and so on.
+* blockpos = math.floor(nodepos / 16)
+#### Converting blockpos to min/max node positions
-Schematic specifier
---------------------
-A schematic specifier identifies a schematic by either a filename to a
-Minetest Schematic file (`.mts`) or through raw data supplied through Lua,
-in the form of a table. This table specifies the following fields:
+To calculate the min/max node positions contained in the mapblock at 'blockpos',
+for each axis:
-* The `size` field is a 3D vector containing the dimensions of the provided schematic. (required)
-* The `yslice_prob` field is a table of {ypos, prob} which sets the `ypos`th vertical slice
- of the schematic to have a `prob / 256 * 100` chance of occuring. (default: 255)
-* The `data` field is a flat table of MapNode tables making up the schematic,
- in the order of `[z [y [x]]]`. (required)
- Each MapNode table contains:
- * `name`: the name of the map node to place (required)
- * `prob` (alias `param1`): the probability of this node being placed (default: 255)
- * `param2`: the raw param2 value of the node being placed onto the map (default: 0)
- * `force_place`: boolean representing if the node should forcibly overwrite any
- previous contents (default: false)
-
-About probability values:
-* A probability value of `0` or `1` means that node will never appear (0% chance).
-* A probability value of `254` or `255` means the node will always appear (100% chance).
-* If the probability value `p` is greater than `1`, then there is a
- `(p / 256 * 100)` percent chance that node will appear when the schematic is
- placed on the map.
+* Minimum:
+ nodepos = blockpos * 16
+* Maximum:
+ nodepos = blockpos * 16 + 15
-Schematic attributes
---------------------
-See section "Flag Specifier Format".
-
-Currently supported flags: `place_center_x`, `place_center_y`, `place_center_z`,
- `force_placement`.
-* `place_center_x`: Placement of this decoration is centered along the X axis.
-* `place_center_y`: Placement of this decoration is centered along the Y axis.
-* `place_center_z`: Placement of this decoration is centered along the Z axis.
-* `force_placement`: Schematic nodes other than "ignore" will replace existing nodes.
+HUD
+===
HUD element types
-----------------
-The position field is used for all element types.
-To account for differing resolutions, the position coordinates are the percentage
-of the screen, ranging in value from `0` to `1`.
+The position field is used for all element types.
+To account for differing resolutions, the position coordinates are the
+percentage of the screen, ranging in value from `0` to `1`.
-The name field is not yet used, but should contain a description of what the
-HUD element represents. The direction field is the direction in which something
-is drawn.
+The `name` field is not yet used, but should contain a description of what the
+HUD element represents.
+The `direction` field is the direction in which something is drawn.
`0` draws from left to right, `1` draws from right to left, `2` draws from
top to bottom, and `3` draws from bottom to top.
-The `alignment` field specifies how the item will be aligned. It ranges from `-1` to `1`,
-with `0` being the center, `-1` is moved to the left/up, and `1` is to the right/down.
-Fractional values can be used.
+The `alignment` field specifies how the item will be aligned. It is a table
+where `x` and `y` range from `-1` to `1`, with `0` being central. `-1` is
+moved to the left/up, and `1` is to the right/down. Fractional values can be
+used.
+
+The `offset` field specifies a pixel offset from the position. Contrary to
+position, the offset is not scaled to screen size. This allows for some
+precisely positioned items in the HUD.
+
+**Note**: `offset` _will_ adapt to screen DPI as well as user defined scaling
+factor!
-The `offset` field specifies a pixel offset from the position. Contrary to position,
-the offset is not scaled to screen size. This allows for some precisely-positioned
-items in the HUD.
+The `z_index` field specifies the order of HUD elements from back to front.
+Lower z-index elements are displayed behind higher z-index elements. Elements
+with same z-index are displayed in an arbitrary order. Default 0.
+Supports negative values. By convention, the following values are recommended:
-**Note**: `offset` _will_ adapt to screen DPI as well as user defined scaling factor!
+* -400: Graphical effects, such as vignette
+* -300: Name tags, waypoints
+* -200: Wieldhand
+* -100: Things that block the player's view, e.g. masks
+* 0: Default. For standard in-game HUD elements like crosshair, hotbar,
+ minimap, builtin statbars, etc.
+* 100: Temporary text messages or notification icons
+* 1000: Full-screen effects such as full-black screen or credits.
+ This includes effects that cover the entire screen
-Below are the specific uses for fields in each type; fields not listed for that type are ignored.
+If your HUD element doesn't fit into any category, pick a number
+between the suggested values
-**Note**: Future revisions to the HUD API may be incompatible; the HUD API is still
-in the experimental stages.
+Below are the specific uses for fields in each type; fields not listed for that
+type are ignored.
### `image`
+
Displays an image on the HUD.
* `scale`: The scale of the image, with 1 being the original texture size.
@@ -990,59 +1444,142 @@ Displays an image on the HUD.
* `offset`: offset in pixels from position.
### `text`
+
Displays text on the HUD.
* `scale`: Defines the bounding rectangle of the text.
A value such as `{x=100, y=100}` should work.
* `text`: The text to be displayed in the HUD element.
-* `number`: An integer containing the RGB value of the color used to draw the text.
- Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
+* `number`: An integer containing the RGB value of the color used to draw the
+ text. Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
* `alignment`: The alignment of the text.
* `offset`: offset in pixels from position.
+* `size`: size of the text.
+ The player-set font size is multiplied by size.x (y value isn't used).
+* `style`: determines font style
+ Bitfield with 1 = bold, 2 = italic, 4 = monospace
### `statbar`
-Displays a horizontal bar made up of half-images.
-* `text`: The name of the texture that is used.
+Displays a horizontal bar made up of half-images with an optional background.
+
+* `text`: The name of the texture to use.
+* `text2`: Optional texture name to enable a background / "off state"
+ texture (useful to visualize the maximal value). Both textures
+ must have the same size.
* `number`: The number of half-textures that are displayed.
If odd, will end with a vertically center-split texture.
-* `direction`
+* `item`: Same as `number` but for the "off state" texture
+* `direction`: To which direction the images will extend to
* `offset`: offset in pixels from position.
-* `size`: If used, will force full-image size to this value (override texture pack image size)
+* `size`: If used, will force full-image size to this value (override texture
+ pack image size)
### `inventory`
+
* `text`: The name of the inventory list to be displayed.
* `number`: Number of items in the inventory to be displayed.
* `item`: Position of item that is selected.
-* `direction`
+* `direction`: Direction the list will be displayed in
* `offset`: offset in pixels from position.
### `waypoint`
+
Displays distance to selected world position.
* `name`: The name of the waypoint.
* `text`: Distance suffix. Can be blank.
-* `number:` An integer containing the RGB value of the color used to draw the text.
+* `precision`: Waypoint precision, integer >= 0. Defaults to 10.
+ If set to 0, distance is not shown. Shown value is `floor(distance*precision)/precision`.
+ When the precision is an integer multiple of 10, there will be `log_10(precision)` digits after the decimal point.
+ `precision = 1000`, for example, will show 3 decimal places (eg: `0.999`).
+ `precision = 2` will show multiples of `0.5`; precision = 5 will show multiples of `0.2` and so on:
+ `precision = n` will show multiples of `1/n`
+* `number:` An integer containing the RGB value of the color used to draw the
+ text.
* `world_pos`: World position of the waypoint.
+* `offset`: offset in pixels from position.
+* `alignment`: The alignment of the waypoint.
+
+### `image_waypoint`
+
+Same as `image`, but does not accept a `position`; the position is instead determined by `world_pos`, the world position of the waypoint.
+
+* `scale`: The scale of the image, with 1 being the original texture size.
+ Only the X coordinate scale is used (positive values).
+ Negative values represent that percentage of the screen it
+ should take; e.g. `x=-100` means 100% (width).
+* `text`: The name of the texture that is displayed.
+* `alignment`: The alignment of the image.
+* `world_pos`: World position of the waypoint.
+* `offset`: offset in pixels from position.
+
+### `compass`
+
+Displays an image oriented or translated according to current heading direction.
+
+* `size`: The size of this element. Negative values represent percentage
+ of the screen; e.g. `x=-100` means 100% (width).
+* `scale`: Scale of the translated image (used only for dir = 2 or dir = 3).
+* `text`: The name of the texture to use.
+* `alignment`: The alignment of the image.
+* `offset`: Offset in pixels from position.
+* `direction`: How the image is rotated/translated:
+ * 0 - Rotate as heading direction
+ * 1 - Rotate in reverse direction
+ * 2 - Translate as landscape direction
+ * 3 - Translate in reverse direction
+
+If translation is chosen, texture is repeated horizontally to fill the whole element.
+
+### `minimap`
+
+Displays a minimap on the HUD.
+
+* `size`: Size of the minimap to display. Minimap should be a square to avoid
+ distortion.
+* `alignment`: The alignment of the minimap.
+* `offset`: offset in pixels from position.
Representations of simple things
---------------------------------
+================================
-### Position/vector
+Vector (ie. a position)
+-----------------------
+
+ vector.new(x, y, z)
- {x=num, y=num, z=num}
+See [Spatial Vectors] for details.
-For helper functions see "Vector helpers".
+`pointed_thing`
+---------------
-### `pointed_thing`
* `{type="nothing"}`
* `{type="node", under=pos, above=pos}`
+ * Indicates a pointed node selection box.
+ * `under` refers to the node position behind the pointed face.
+ * `above` refers to the node position in front of the pointed face.
* `{type="object", ref=ObjectRef}`
+Exact pointing location (currently only `Raycast` supports these fields):
+
+* `pointed_thing.intersection_point`: The absolute world coordinates of the
+ point on the selection box which is pointed at. May be in the selection box
+ if the pointer is in the box too.
+* `pointed_thing.box_id`: The ID of the pointed selection box (counting starts
+ from 1).
+* `pointed_thing.intersection_normal`: Unit vector, points outwards of the
+ selected selection box. This specifies which face is pointed at.
+ Is a null vector `vector.zero()` when the pointer is inside the selection box.
+
+
+
+
Flag Specifier Format
----------------------
-Flags using the standardized flag specifier format can be specified in either of
-two ways, by string or table.
+=====================
+
+Flags using the standardized flag specifier format can be specified in either
+of two ways, by string or table.
The string format is a comma-delimited set of flag names; whitespace and
unrecognized flag fields are ignored. Specifying a flag in the string sets the
@@ -1072,29 +1609,109 @@ or even
since, by default, no schematic attributes are set.
+
+
+
Items
------
+=====
+
+Items are things that can be held by players, dropped in the map and
+stored in inventories.
+Items come in the form of item stacks, which are collections of equal
+items that occupy a single inventory slot.
+
+Item types
+----------
-### Item types
There are three kinds of items: nodes, tools and craftitems.
-* Node (`register_node`): A node from the world.
-* Tool (`register_tool`): A tool/weapon that can dig and damage
- things according to `tool_capabilities`.
-* Craftitem (`register_craftitem`): A miscellaneous item.
+* Node: Placeable item form of a node in the world's voxel grid
+* Tool: Has a changable wear property but cannot be stacked
+* Craftitem: Has no special properties
+
+Every registered node (the voxel in the world) has a corresponding
+item form (the thing in your inventory) that comes along with it.
+This item form can be placed which will create a node in the
+world (by default).
+Both the 'actual' node and its item form share the same identifier.
+For all practical purposes, you can treat the node and its item form
+interchangeably. We usually just say 'node' to the item form of
+the node as well.
+
+Note the definition of tools is purely technical. The only really
+unique thing about tools is their wear, and that's basically it.
+Beyond that, you can't make any gameplay-relevant assumptions
+about tools or non-tools. It is perfectly valid to register something
+that acts as tool in a gameplay sense as a craftitem, and vice-versa.
+
+Craftitems can be used for items that neither need to be a node
+nor a tool.
+
+Amount and wear
+---------------
+
+All item stacks have an amount between 0 and 65535. It is 1 by
+default. Tool item stacks can not have an amount greater than 1.
+
+Tools use a wear (damage) value ranging from 0 to 65535. The
+value 0 is the default and is used for unworn tools. The values
+1 to 65535 are used for worn tools, where a higher value stands for
+a higher wear. Non-tools technically also have a wear property,
+but it is always 0. There is also a special 'toolrepair' crafting
+recipe that is only available to tools.
+
+Item formats
+------------
-### Item formats
Items and item stacks can exist in three formats: Serializes, table format
and `ItemStack`.
-#### Serialized
-This is called "stackstring" or "itemstring":
+When an item must be passed to a function, it can usually be in any of
+these formats.
+
+### Serialized
+
+This is called "stackstring" or "itemstring". It is a simple string with
+1-4 components:
-* e.g. `'default:dirt 5'`
-* e.g. `'default:pick_wood 21323'`
-* e.g. `'default:apple'`
+1. Full item identifier ("item name")
+2. Optional amount
+3. Optional wear value
+4. Optional item metadata
+
+Syntax:
+
+ <identifier> [<amount>[ <wear>[ <metadata>]]]
+
+Examples:
+
+* `"default:apple"`: 1 apple
+* `"default:dirt 5"`: 5 dirt
+* `"default:pick_stone"`: a new stone pickaxe
+* `"default:pick_wood 1 21323"`: a wooden pickaxe, ca. 1/3 worn out
+* `[[default:pick_wood 1 21323 "\u0001description\u0002My worn out pick\u0003"]]`:
+ * a wooden pickaxe from the `default` mod,
+ * amount must be 1 (pickaxe is a tool), ca. 1/3 worn out (it's a tool),
+ * with the `description` field set to `"My worn out pick"` in its metadata
+* `[[default:dirt 5 0 "\u0001description\u0002Special dirt\u0003"]]`:
+ * analogeous to the above example
+ * note how the wear is set to `0` as dirt is not a tool
+
+You should ideally use the `ItemStack` format to build complex item strings
+(especially if they use item metadata)
+without relying on the serialization format. Example:
+
+ local stack = ItemStack("default:pick_wood")
+ stack:set_wear(21323)
+ stack:get_meta():set_string("description", "My worn out pick")
+ local itemstring = stack:to_string()
+
+Additionally the methods `minetest.itemstring_with_palette(item, palette_index)`
+and `minetest.itemstring_with_color(item, colorstring)` may be used to create
+item strings encoding color information in their metadata.
+
+### Table format
-#### Table format
Examples:
5 dirt nodes:
@@ -1109,30 +1726,34 @@ An apple:
{name="default:apple", count=1, wear=0, metadata=""}
-#### `ItemStack`
+### `ItemStack`
+
A native C++ format with many helper methods. Useful for converting
-between formats. See the Class reference section for details.
+between formats. See the [Class reference] section for details.
+
-When an item must be passed to a function, it can usually be in any of
-these formats.
Groups
-------
+======
+
In a number of places, there is a group table. Groups define the
-properties of a thing (item, node, armor of entity, capabilities of
-tool) in such a way that the engine and other mods can can interact with
+properties of a thing (item, node, armor of entity, tool capabilities)
+in such a way that the engine and other mods can can interact with
the thing without actually knowing what the thing is.
-### Usage
+Usage
+-----
+
Groups are stored in a table, having the group names with keys and the
-group ratings as values. For example:
+group ratings as values. Group ratings are integer values within the
+range [-32767, 32767]. For example:
+ -- Default dirt
groups = {crumbly=3, soil=1}
- -- ^ Default dirt
+ -- A more special dirt-kind of thing
groups = {crumbly=2, soil=1, level=2, outerspace=1}
- -- ^ A more special dirt-kind of thing
Groups always have a rating associated with them. If there is no
useful meaning for a rating for an enabled group, it shall be `1`.
@@ -1144,74 +1765,131 @@ You can read the rating of a group for an item or a node by using
minetest.get_item_group(itemname, groupname)
-### Groups of items
+Groups of items
+---------------
+
Groups of items can define what kind of an item it is (e.g. wool).
-### Groups of nodes
+Groups of nodes
+---------------
+
In addition to the general item things, groups are used to define whether
a node is destroyable and how long it takes to destroy by a tool.
-### Groups of entities
+Groups of entities
+------------------
+
For entities, groups are, as of now, used only for calculating damage.
-The rating is the percentage of damage caused by tools with this damage group.
-See "Entity damage mechanism".
+The rating is the percentage of damage caused by items with this damage group.
+See [Entity damage mechanism].
object.get_armor_groups() --> a group-rating table (e.g. {fleshy=100})
object.set_armor_groups({fleshy=30, cracky=80})
-### Groups of tools
-Groups in tools define which groups of nodes and entities they are
-effective towards.
+Groups of tool capabilities
+---------------------------
+
+Groups in tool capabilities define which groups of nodes and entities they
+are effective towards.
+
+Groups in crafting recipes
+--------------------------
-### Groups in crafting recipes
An example: Make meat soup from any meat, any water and any bowl:
{
- output = 'food:meat_soup_raw',
+ output = "food:meat_soup_raw",
recipe = {
- {'group:meat'},
- {'group:water'},
- {'group:bowl'},
+ {"group:meat"},
+ {"group:water"},
+ {"group:bowl"},
},
- -- preserve = {'group:bowl'}, -- Not implemented yet (TODO)
}
Another example: Make red wool from white wool and red dye:
{
- type = 'shapeless',
- output = 'wool:red',
- recipe = {'wool:white', 'group:dye,basecolor_red'},
+ type = "shapeless",
+ output = "wool:red",
+ recipe = {"wool:white", "group:dye,basecolor_red"},
}
-### Special groups
-* `immortal`: Disables the group damage system for an entity
+Special groups
+--------------
+
+The asterisk `(*)` after a group name describes that there is no engine
+functionality bound to it, and implementation is left up as a suggestion
+to games.
+
+### Node and item groups
+
+* `not_in_creative_inventory`: (*) Special group for inventory mods to indicate
+ that the item should be hidden in item lists.
+
+
+### Node-only groups
+
+* `attached_node`: if the node under it is not a walkable block the node will be
+ dropped as an item. If the node is wallmounted the wallmounted direction is
+ checked.
+* `bouncy`: value is bounce speed in percent
+* `connect_to_raillike`: makes nodes of raillike drawtype with same group value
+ connect to each other
+* `dig_immediate`: Player can always pick up node without reducing tool wear
+ * `2`: the node always gets the digging time 0.5 seconds (rail, sign)
+ * `3`: the node always gets the digging time 0 seconds (torch)
+* `disable_jump`: Player (and possibly other things) cannot jump from node
+ or if their feet are in the node. Note: not supported for `new_move = false`
+* `fall_damage_add_percent`: modifies the fall damage suffered when hitting
+ the top of this node. There's also an armor group with the same name.
+ The final player damage is determined by the following formula:
+ damage =
+ collision speed
+ * ((node_fall_damage_add_percent + 100) / 100) -- node group
+ * ((player_fall_damage_add_percent + 100) / 100) -- player armor group
+ - (14) -- constant tolerance
+ Negative damage values are discarded as no damage.
+* `falling_node`: if there is no walkable block under the node it will fall
+* `float`: the node will not fall through liquids (`liquidtype ~= "none"`)
* `level`: Can be used to give an additional sense of progression in the game.
* A larger level will cause e.g. a weapon of a lower level make much less
damage, and get worn out much faster, or not be able to get drops
from destroyed nodes.
* `0` is something that is directly accessible at the start of gameplay
* There is no upper limit
-* `dig_immediate`: (player can always pick up node without tool wear)
- * `2`: node is removed without tool wear after 0.5 seconds or so
- (rail, sign)
- * `3`: node is removed without tool wear immediately (torch)
-* `disable_jump`: Player (and possibly other things) cannot jump from node
-* `fall_damage_add_percent`: damage speed = `speed * (1 + value/100)`
-* `bouncy`: value is bounce speed in percent
-* `falling_node`: if there is no walkable block under the node it will fall
-* `attached_node`: if the node under it is not a walkable block the node will be
- dropped as an item. If the node is wallmounted the wallmounted direction is
- checked.
-* `soil`: saplings will grow on nodes in this group
-* `connect_to_raillike`: makes nodes of raillike drawtype with same group value
- connect to each other
+ * See also: `leveldiff` in [Tool Capabilities]
+* `slippery`: Players and items will slide on the node.
+ Slipperiness rises steadily with `slippery` value, starting at 1.
+
+
+### Tool-only groups
+
+* `disable_repair`: If set to 1 for a tool, it cannot be repaired using the
+ `"toolrepair"` crafting recipe
+
+
+### `ObjectRef` armor groups
+
+* `immortal`: Skips all damage and breath handling for an object. This group
+ will also hide the integrated HUD status bars for players. It is
+ automatically set to all players when damage is disabled on the server and
+ cannot be reset (subject to change).
+* `fall_damage_add_percent`: Modifies the fall damage suffered by players
+ when they hit the ground. It is analog to the node group with the same
+ name. See the node group above for the exact calculation.
+* `punch_operable`: For entities; disables the regular damage mechanism for
+ players punching it by hand or a non-tool item, so that it can do something
+ else than take damage.
+
+
+
+Known damage and digging time defining groups
+---------------------------------------------
-### Known damage and digging time defining groups
* `crumbly`: dirt, sand
* `cracky`: tough but crackable stuff like stone.
-* `snappy`: something that can be cut using fine tools; e.g. leaves, small
- plants, wire, sheets of metal
+* `snappy`: something that can be cut using things like scissors, shears,
+ bolt cutters and the like, e.g. leaves, small plants, wire, sheets of metal
* `choppy`: something that can be cut using force; e.g. trees, wooden planks
* `fleshy`: Living things like animals and the player. This could imply
some blood effects when hitting.
@@ -1220,11 +1898,14 @@ Another example: Make red wool from white wool and red dye:
Can be added to nodes that shouldn't logically be breakable by the
hand but are. Somewhat similar to `dig_immediate`, but times are more
like `{[1]=3.50,[2]=2.00,[3]=0.70}` and this does not override the
- speed of a tool if the tool can dig at a faster speed than this
+ digging speed of an item if it can dig at a faster speed than this
suggests for the hand.
-### Examples of custom groups
+Examples of custom groups
+-------------------------
+
Item groups are often used for defining, well, _groups of items_.
+
* `meat`: any meat-kind of a thing (rating might define the size or healing
ability or be irrelevant -- it is not defined as of yet)
* `eatable`: anything that can be eaten. Rating might define HP gain in half
@@ -1236,81 +1917,127 @@ Item groups are often used for defining, well, _groups of items_.
* `weapon`: any weapon
* `heavy`: anything considerably heavy
-### Digging time calculation specifics
+Digging time calculation specifics
+----------------------------------
+
Groups such as `crumbly`, `cracky` and `snappy` are used for this
purpose. Rating is `1`, `2` or `3`. A higher rating for such a group implies
faster digging time.
-The `level` group is used to limit the toughness of nodes a tool can dig
-and to scale the digging times / damage to a greater extent.
+The `level` group is used to limit the toughness of nodes an item capable
+of digging can dig and to scale the digging times / damage to a greater extent.
**Please do understand this**, otherwise you cannot use the system to it's
full potential.
-Tools define their properties by a list of parameters for groups. They
+Items define their properties by a list of parameters for groups. They
cannot dig other groups; thus it is important to use a standard bunch of
-groups to enable interaction with tools.
+groups to enable interaction with items.
+
-#### Tools definition
-Tools define:
+
+
+Tool Capabilities
+=================
+
+'Tool capabilities' is a property of items that defines two things:
+
+1) Which nodes it can dig and how fast
+2) Which objects it can hurt by punching and by how much
+
+Tool capabilities are available for all items, not just tools.
+But only tools can receive wear from digging and punching.
+
+Missing or incomplete tool capabilities will default to the
+player's hand.
+
+Tool capabilities definition
+----------------------------
+
+Tool capabilities define:
* Full punch interval
* Maximum drop level
-* For an arbitrary list of groups:
+* For an arbitrary list of node groups:
* Uses (until the tool breaks)
- * Maximum level (usually `0`, `1`, `2` or `3`)
- * Digging times
- * Damage groups
+ * Maximum level (usually `0`, `1`, `2` or `3`)
+ * Digging times
+* Damage groups
+* Punch attack uses (until the tool breaks)
+
+### Full punch interval `full_punch_interval`
-#### Full punch interval
-When used as a weapon, the tool will do full damage if this time is spent
-between punches. If e.g. half the time is spent, the tool will do half
+When used as a weapon, the item will do full damage if this time is spent
+between punches. If e.g. half the time is spent, the item will do half
damage.
-#### Maximum drop level
-Suggests the maximum level of node, when dug with the tool, that will drop
-it's useful item. (e.g. iron ore to drop a lump of iron).
+### Maximum drop level `max_drop_level`
+
+Suggests the maximum level of node, when dug with the item, that will drop
+its useful item. (e.g. iron ore to drop a lump of iron).
-This is not automated; it is the responsibility of the node definition
-to implement this.
+This value is not used in the engine; it is the responsibility of the game/mod
+code to implement this.
+
+### Uses `uses` (tools only)
-#### Uses
Determines how many uses the tool has when it is used for digging a node,
-of this group, of the maximum level. For lower leveled nodes, the use count
-is multiplied by `3^leveldiff`.
+of this group, of the maximum level. The maximum supported number of
+uses is 65535. The special number 0 is used for infinite uses.
+For lower leveled nodes, the use count is multiplied by `3^leveldiff`.
+`leveldiff` is the difference of the tool's `maxlevel` `groupcaps` and the
+node's `level` group. The node cannot be dug if `leveldiff` is less than zero.
* `uses=10, leveldiff=0`: actual uses: 10
* `uses=10, leveldiff=1`: actual uses: 30
* `uses=10, leveldiff=2`: actual uses: 90
-#### Maximum level
-Tells what is the maximum level of a node of this group that the tool will
+For non-tools, this has no effect.
+
+### Maximum level `maxlevel`
+
+Tells what is the maximum level of a node of this group that the item will
be able to dig.
-#### Digging times
+### Digging times `times`
+
List of digging times for different ratings of the group, for nodes of the
maximum level.
-For example, as a Lua table, `times={2=2.00, 3=0.70}`. This would
-result in the tool to be able to dig nodes that have a rating of `2` or `3`
+For example, as a Lua table, `times={[2]=2.00, [3]=0.70}`. This would
+result in the item to be able to dig nodes that have a rating of `2` or `3`
for this group, and unable to dig the rating `1`, which is the toughest.
Unless there is a matching group that enables digging otherwise.
-#### Damage groups
-List of damage for groups of entities. See "Entity damage mechanism".
+If the result digging time is 0, a delay of 0.15 seconds is added between
+digging nodes; If the player releases LMB after digging, this delay is set to 0,
+i.e. players can more quickly click the nodes away instead of holding LMB.
+
+### Damage groups
+
+List of damage for groups of entities. See [Entity damage mechanism].
+
+### Punch attack uses (tools only)
+
+Determines how many uses (before breaking) the tool has when dealing damage
+to an object, when the full punch interval (see above) was always
+waited out fully.
+
+Wear received by the tool is proportional to the time spent, scaled by
+the full punch interval.
+
+For non-tools, this has no effect.
-#### Example definition of the capabilities of a tool
+Example definition of the capabilities of an item
+-------------------------------------------------
tool_capabilities = {
- full_punch_interval=1.5,
- max_drop_level=1,
groupcaps={
crumbly={maxlevel=2, uses=20, times={[1]=1.60, [2]=1.20, [3]=0.80}}
- }
- damage_groups = {fleshy=2},
+ },
}
-This makes the tool be able to dig nodes that fulfil both of these:
+This makes the item capable of digging nodes that fulfil both of these:
* Have the `crumbly` group
* Have a `level` group less or equal to `2`
@@ -1339,14 +2066,18 @@ Table of resulting tool uses:
easy nodes to be quickly breakable.
* At `level > 2`, the node is not diggable, because it's `level > maxlevel`
+
+
+
Entity damage mechanism
------------------------
+=======================
+
Damage calculation:
damage = 0
foreach group in cap.damage_groups:
- damage += cap.damage_groups[group] * limit(actual_interval /
- cap.full_punch_interval, 0.0, 1.0)
+ damage += cap.damage_groups[group]
+ * limit(actual_interval / cap.full_punch_interval, 0.0, 1.0)
* (object.armor_groups[group] / 100.0)
-- Where object.armor_groups[group] is 0 for inexistent values
return damage
@@ -1365,7 +2096,8 @@ a non-tool item, so that it can do something else than take damage.
On the Lua side, every punch calls:
- entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
+ entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction,
+ damage)
This should never be called directly, because damage is usually not handled by
the entity itself.
@@ -1376,33 +2108,47 @@ the entity itself.
* `tool_capabilities` can be `nil`.
* `direction` is a unit vector, pointing from the source of the punch to
the punched object.
+* `damage` damage that will be done to entity
+Return value of this function will determine if damage is done by this function
+(retval true) or shall be done by engine (retval false)
To punch an entity/object in Lua, call:
- object:punch(puncher, time_from_last_punch, tool_capabilities, direction)
+ object:punch(puncher, time_from_last_punch, tool_capabilities, direction)
* Return value is tool wear.
* Parameters are equal to the above callback.
-* If `direction` equals `nil` and `puncher` does not equal `nil`,
- `direction` will be automatically filled in based on the location of `puncher`.
+* If `direction` equals `nil` and `puncher` does not equal `nil`, `direction`
+ will be automatically filled in based on the location of `puncher`.
+
+
+
+
+Metadata
+========
Node Metadata
-------------
+
The instance of a node in the world normally only contains the three values
-mentioned in "Nodes". However, it is possible to insert extra data into a
-node. It is called "node metadata"; See "`NodeMetaRef`".
+mentioned in [Nodes]. However, it is possible to insert extra data into a node.
+It is called "node metadata"; See `NodeMetaRef`.
-Metadata contains two things:
+Node metadata contains two things:
* A key-value store
* An inventory
Some of the values in the key-value store are handled specially:
-* `formspec`: Defines a right-click inventory menu. See "Formspec".
-* `infotext`: Text shown on the screen when the node is pointed at
+* `formspec`: Defines an inventory menu that is opened with the
+ 'place/use' key. Only works if no `on_rightclick` was
+ defined for the node. See also [Formspec].
+* `infotext`: Text shown on the screen when the node is pointed at.
+ Line-breaks will be applied automatically.
+ If the infotext is very long, it will be truncated.
-Example stuff:
+Example:
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
@@ -1430,23 +2176,108 @@ Example stuff:
}
})
+Item Metadata
+-------------
+
+Item stacks can store metadata too. See [`ItemStackMetaRef`].
+
+Item metadata only contains a key-value store.
+
+Some of the values in the key-value store are handled specially:
+
+* `description`: Set the item stack's description.
+ See also: `get_description` in [`ItemStack`]
+* `short_description`: Set the item stack's short description.
+ See also: `get_short_description` in [`ItemStack`]
+* `color`: A `ColorString`, which sets the stack's color.
+* `palette_index`: If the item has a palette, this is used to get the
+ current color from the palette.
+* `count_meta`: Replace the displayed count with any string.
+* `count_alignment`: Set the alignment of the displayed count value. This is an
+ int value. The lowest 2 bits specify the alignment in x-direction, the 3rd and
+ 4th bit specify the alignment in y-direction:
+ 0 = default, 1 = left / up, 2 = middle, 3 = right / down
+ The default currently is the same as right/down.
+ Example: 6 = 2 + 1*4 = middle,up
+
+Example:
+
+ local meta = stack:get_meta()
+ meta:set_string("key", "value")
+ print(dump(meta:to_table()))
+
+Example manipulations of "description" and expected output behaviors:
+
+ print(ItemStack("default:pick_steel"):get_description()) --> Steel Pickaxe
+ print(ItemStack("foobar"):get_description()) --> Unknown Item
+
+ local stack = ItemStack("default:stone")
+ stack:get_meta():set_string("description", "Custom description\nAnother line")
+ print(stack:get_description()) --> Custom description\nAnother line
+ print(stack:get_short_description()) --> Custom description
+
+ stack:get_meta():set_string("short_description", "Short")
+ print(stack:get_description()) --> Custom description\nAnother line
+ print(stack:get_short_description()) --> Short
+
+ print(ItemStack("mod:item_with_no_desc"):get_description()) --> mod:item_with_no_desc
+
+
+
Formspec
---------
-Formspec defines a menu. Currently not much else than inventories are
-supported. It is a string, with a somewhat strange format.
+========
+
+Formspec defines a menu. This supports inventories and some of the
+typical widgets like buttons, checkboxes, text input fields, etc.
+It is a string, with a somewhat strange format.
+
+A formspec is made out of formspec elements, which includes widgets
+like buttons but also can be used to set stuff like background color.
+
+Many formspec elements have a `name`, which is a unique identifier which
+is used when the server receives user input. You must not use the name
+"quit" for formspec elements.
Spaces and newlines can be inserted between the blocks, as is used in the
examples.
-### Examples
+Position and size units are inventory slots unless the new coordinate system
+is enabled. `X` and `Y` position the formspec element relative to the top left
+of the menu or container. `W` and `H` are its width and height values.
-#### Chest
+If the new system is enabled, all elements have unified coordinates for all
+elements with no padding or spacing in between. This is highly recommended
+for new forms. See `real_coordinates[<bool>]` and `Migrating to Real
+Coordinates`.
+
+Inventories with a `player:<name>` inventory location are only sent to the
+player named `<name>`.
+
+When displaying text which can contain formspec code, e.g. text set by a player,
+use `minetest.formspec_escape`.
+For colored text you can use `minetest.colorize`.
+
+Since formspec version 3, elements drawn in the order they are defined. All
+background elements are drawn before all other elements.
+
+**WARNING**: do _not_ use a element name starting with `key_`; those names are
+reserved to pass key press events to formspec!
+
+**WARNING**: Minetest allows you to add elements to every single formspec instance
+using `player:set_formspec_prepend()`, which may be the reason backgrounds are
+appearing when you don't expect them to, or why things are styled differently
+to normal. See [`no_prepend[]`] and [Styling Formspecs].
+
+Examples
+--------
+
+### Chest
size[8,9]
list[context;main;0,0;8,4;]
list[current_player;main;0,5;8,4;]
-#### Furnace
+### Furnace
size[8,9]
list[context;fuel;2,3;1,1;]
@@ -1454,7 +2285,7 @@ examples.
list[context;dst;5,1;2,2;]
list[current_player;main;0,5;8,4;]
-#### Minecraft-like player inventory
+### Minecraft-like player inventory
size[8,7.5]
image[1,0.6;1,2;player.png]
@@ -1462,273 +2293,567 @@ examples.
list[current_player;craft;3,0;3,3;]
list[current_player;craftpreview;7,1;1,1;]
-### Elements
+Version History
+---------------
+
+* Formspec version 1 (pre-5.1.0):
+ * (too much)
+* Formspec version 2 (5.1.0):
+ * Forced real coordinates
+ * background9[]: 9-slice scaling parameters
+* Formspec version 3 (5.2.0):
+ * Formspec elements are drawn in the order of definition
+ * bgcolor[]: use 3 parameters (bgcolor, formspec (now an enum), fbgcolor)
+ * box[] and image[] elements enable clipping by default
+ * new element: scroll_container[]
+* Formspec version 4 (5.4.0):
+ * Allow dropdown indexing events
+* Formspec version 5 (5.5.0):
+ * Added padding[] element
+* Formspec version 6 (5.6.0):
+ * Add nine-slice images, animated_image, and fgimg_middle
+
+Elements
+--------
+
+### `formspec_version[<version>]`
+
+* Set the formspec version to a certain number. If not specified,
+ version 1 is assumed.
+* Must be specified before `size` element.
+* Clients older than this version can neither show newer elements nor display
+ elements with new arguments correctly.
+* Available since feature `formspec_version_element`.
+* See also: [Version History]
+
+### `size[<W>,<H>,<fixed_size>]`
-#### `size[<W>,<H>,<fixed_size>]`
* Define the size of the menu in inventory slots
* `fixed_size`: `true`/`false` (optional)
* deprecated: `invsize[<W>,<H>;]`
-#### `container[<X>,<Y>]`
-* Start of a container block, moves all physical elements in the container by (X, Y)
-* Must have matching container_end
+### `position[<X>,<Y>]`
+
+* Must be used after `size` element.
+* Defines the position on the game window of the formspec's `anchor` point.
+* For X and Y, 0.0 and 1.0 represent opposite edges of the game window,
+ for example:
+ * [0.0, 0.0] sets the position to the top left corner of the game window.
+ * [1.0, 1.0] sets the position to the bottom right of the game window.
+* Defaults to the center of the game window [0.5, 0.5].
+
+### `anchor[<X>,<Y>]`
+
+* Must be used after both `size` and `position` (if present) elements.
+* Defines the location of the anchor point within the formspec.
+* For X and Y, 0.0 and 1.0 represent opposite edges of the formspec,
+ for example:
+ * [0.0, 1.0] sets the anchor to the bottom left corner of the formspec.
+ * [1.0, 0.0] sets the anchor to the top right of the formspec.
+* Defaults to the center of the formspec [0.5, 0.5].
+
+* `position` and `anchor` elements need suitable values to avoid a formspec
+ extending off the game window due to particular game window sizes.
+
+### `padding[<X>,<Y>]`
+
+* Must be used after the `size`, `position`, and `anchor` elements (if present).
+* Defines how much space is padded around the formspec if the formspec tries to
+ increase past the size of the screen and coordinates have to be shrunk.
+* For X and Y, 0.0 represents no padding (the formspec can touch the edge of the
+ screen), and 0.5 represents half the screen (which forces the coordinate size
+ to 0). If negative, the formspec can extend off the edge of the screen.
+* Defaults to [0.05, 0.05].
+
+### `no_prepend[]`
+
+* Must be used after the `size`, `position`, `anchor`, and `padding` elements
+ (if present).
+* Disables player:set_formspec_prepend() from applying to this formspec.
+
+### `real_coordinates[<bool>]`
+
+* INFORMATION: Enable it automatically using `formspec_version` version 2 or newer.
+* When set to true, all following formspec elements will use the new coordinate system.
+* If used immediately after `size`, `position`, `anchor`, and `no_prepend` elements
+ (if present), the form size will use the new coordinate system.
+* **Note**: Formspec prepends are not affected by the coordinates in the main form.
+ They must enable it explicitly.
+* For information on converting forms to the new coordinate system, see `Migrating
+ to Real Coordinates`.
+
+### `container[<X>,<Y>]`
+
+* Start of a container block, moves all physical elements in the container by
+ (X, Y).
+* Must have matching `container_end`
* Containers can be nested, in which case the offsets are added
(child containers are relative to parent containers)
-#### `container_end[]`
-* End of a container, following elements are no longer relative to this container
-
-#### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;]`
-* Show an inventory list
-
-#### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;<starting item index>]`
-* Show an inventory list
-
-#### `listring[<inventory location>;<list name>]`
-* Allows to create a ring of inventory lists
+### `container_end[]`
+
+* End of a container, following elements are no longer relative to this
+ container.
+
+### `scroll_container[<X>,<Y>;<W>,<H>;<scrollbar name>;<orientation>;<scroll factor>]`
+
+* Start of a scroll_container block. All contained elements will ...
+ * take the scroll_container coordinate as position origin,
+ * be additionally moved by the current value of the scrollbar with the name
+ `scrollbar name` times `scroll factor` along the orientation `orientation` and
+ * be clipped to the rectangle defined by `X`, `Y`, `W` and `H`.
+* `orientation`: possible values are `vertical` and `horizontal`.
+* `scroll factor`: optional, defaults to `0.1`.
+* Nesting is possible.
+* Some elements might work a little different if they are in a scroll_container.
+* Note: If you want the scroll_container to actually work, you also need to add a
+ scrollbar element with the specified name. Furthermore, it is highly recommended
+ to use a scrollbaroptions element on this scrollbar.
+
+### `scroll_container_end[]`
+
+* End of a scroll_container, following elements are no longer bound to this
+ container.
+
+### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;<starting item index>]`
+
+* Show an inventory list if it has been sent to the client.
+* If the inventory list changes (eg. it didn't exist before, it's resized, or its items
+ are moved) while the formspec is open, the formspec element may (but is not guaranteed
+ to) adapt to the new inventory list.
+* Item slots are drawn in a grid from left to right, then up to down, ordered
+ according to the slot index.
+* `W` and `H` are in inventory slots, not in coordinates.
+* `starting item index` (Optional): The index of the first (upper-left) item to draw.
+ Indices start at `0`. Default is `0`.
+* The number of shown slots is the minimum of `W*H` and the inventory list's size minus
+ `starting item index`.
+* **Note**: With the new coordinate system, the spacing between inventory
+ slots is one-fourth the size of an inventory slot by default. Also see
+ [Styling Formspecs] for changing the size of slots and spacing.
+
+### `listring[<inventory location>;<list name>]`
+
+* Appends to an internal ring of inventory lists.
* Shift-clicking on items in one element of the ring
will send them to the next inventory list inside the ring
* The first occurrence of an element inside the ring will
determine the inventory where items will be sent to
-#### `listring[]`
+### `listring[]`
+
* Shorthand for doing `listring[<inventory location>;<list name>]`
for the last two inventory lists added by list[...]
-#### `listcolors[<slot_bg_normal>;<slot_bg_hover>]`
+### `listcolors[<slot_bg_normal>;<slot_bg_hover>]`
+
* Sets background color of slots as `ColorString`
* Sets background color of slots on mouse hovering
-#### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>]`
+### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>]`
+
* Sets background color of slots as `ColorString`
* Sets background color of slots on mouse hovering
* Sets color of slots border
-#### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>;<tooltip_bgcolor>;<tooltip_fontcolor>]`
+### `listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>;<tooltip_bgcolor>;<tooltip_fontcolor>]`
+
* Sets background color of slots as `ColorString`
* Sets background color of slots on mouse hovering
* Sets color of slots border
* Sets default background color of tooltips
* Sets default font color of tooltips
-#### `tooltip[<gui_element_name>;<tooltip_text>;<bgcolor>,<fontcolor>]`
-* Adds tooltip for an element
-* `<bgcolor>` tooltip background color as `ColorString` (optional)
-* `<fontcolor>` tooltip font color as `ColorString` (optional)
+### `tooltip[<gui_element_name>;<tooltip_text>;<bgcolor>;<fontcolor>]`
-#### `image[<X>,<Y>;<W>,<H>;<texture name>]`
-* Show an image
-* Position and size units are inventory slots
+* Adds tooltip for an element
+* `bgcolor` tooltip background color as `ColorString` (optional)
+* `fontcolor` tooltip font color as `ColorString` (optional)
+
+### `tooltip[<X>,<Y>;<W>,<H>;<tooltip_text>;<bgcolor>;<fontcolor>]`
+
+* Adds tooltip for an area. Other tooltips will take priority when present.
+* `bgcolor` tooltip background color as `ColorString` (optional)
+* `fontcolor` tooltip font color as `ColorString` (optional)
+
+### `image[<X>,<Y>;<W>,<H>;<texture name>;<middle>]`
+
+* Show an image.
+* `middle` (optional): Makes the image render in 9-sliced mode and defines the middle rect.
+ * Requires formspec version >= 6.
+ * See `background9[]` documentation for more information.
+
+### `animated_image[<X>,<Y>;<W>,<H>;<name>;<texture name>;<frame count>;<frame duration>;<frame start>;<middle>]`
+
+* Show an animated image. The image is drawn like a "vertical_frames" tile
+ animation (See [Tile animation definition]), but uses a frame count/duration for simplicity
+* `name`: Element name to send when an event occurs. The event value is the index of the current frame.
+* `texture name`: The image to use.
+* `frame count`: The number of frames animating the image.
+* `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`.
+* `middle` (optional): Makes the image render in 9-sliced mode and defines the middle rect.
+ * Requires formspec version >= 6.
+ * See `background9[]` documentation for more information.
+
+### `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
+* `mesh`: The mesh model to use.
+* `textures`: The mesh textures to use according to the mesh materials.
+ Texture names must be separated by commas.
+* `rotation {X,Y}` (Optional): Initial rotation of the camera.
+ The axes are euler angles in degrees.
+* `continuous` (Optional): Whether the rotation is continuous. Default `false`.
+* `mouse control` (Optional): Whether the model can be controlled with the mouse. Default `true`.
+* `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>]`
-#### `item_image[<X>,<Y>;<W>,<H>;<item name>]`
* Show an inventory image of registered item/node
-* Position and size units are inventory slots
-#### `bgcolor[<color>;<fullscreen>]`
-* Sets background color of formspec as `ColorString`
-* If `true`, the background color is drawn fullscreen (does not effect the size of the formspec)
+### `bgcolor[<bgcolor>;<fullscreen>;<fbgcolor>]`
+
+* Sets background color of formspec.
+* `bgcolor` and `fbgcolor` (optional) are `ColorString`s, they define the color
+ of the non-fullscreen and the fullscreen background.
+* `fullscreen` (optional) can be one of the following:
+ * `false`: Only the non-fullscreen background color is drawn. (default)
+ * `true`: Only the fullscreen background color is drawn.
+ * `both`: The non-fullscreen and the fullscreen background color are drawn.
+ * `neither`: No background color is drawn.
+* Note: Leave a parameter empty to not modify the value.
+* Note: `fbgcolor`, leaving parameters empty and values for `fullscreen` that
+ are not bools are only available since formspec version 3.
+
+### `background[<X>,<Y>;<W>,<H>;<texture name>]`
-#### `background[<X>,<Y>;<W>,<H>;<texture name>]`
-* Use a background. Inventory rectangles are not drawn then.
-* Position and size units are inventory slots
* Example for formspec 8x4 in 16x resolution: image shall be sized
8 times 16px times 4 times 16px.
-#### `background[<X>,<Y>;<W>,<H>;<texture name>;<auto_clip>]`
-* Use a background. Inventory rectangles are not drawn then.
-* Position and size units are inventory slots
+### `background[<X>,<Y>;<W>,<H>;<texture name>;<auto_clip>]`
+
* Example for formspec 8x4 in 16x resolution:
image shall be sized 8 times 16px times 4 times 16px
-* If `true` the background is clipped to formspec size
+* If `auto_clip` is `true`, the background is clipped to the formspec size
+ (`x` and `y` are used as offset values, `w` and `h` are ignored)
+
+### `background9[<X>,<Y>;<W>,<H>;<texture name>;<auto_clip>;<middle>]`
+
+* 9-sliced background. See https://en.wikipedia.org/wiki/9-slice_scaling
+* Middle is a rect which defines the middle of the 9-slice.
+ * `x` - The middle will be x pixels from all sides.
+ * `x,y` - The middle will be x pixels from the horizontal and y from the vertical.
+ * `x,y,x2,y2` - The middle will start at x,y, and end at x2, y2. Negative x2 and y2 values
+ will be added to the width and height of the texture, allowing it to be used as the
+ distance from the far end.
+ * All numbers in middle are integers.
+* If `auto_clip` is `true`, the background is clipped to the formspec size
(`x` and `y` are used as offset values, `w` and `h` are ignored)
+* Available since formspec version 2
+
+### `pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>]`
-#### `pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>]`
* Textual password style field; will be sent to server when a button is clicked
-* When enter is pressed in field, fields.key_enter_field will be sent with the name
- of this field.
-* `x` and `y` position the field relative to the top left of the menu
-* `w` and `h` are the size of the field
-* Fields are a set height, but will be vertically centred on `h`
-* Position and size units are inventory slots
+* When enter is pressed in field, fields.key_enter_field will be sent with the
+ name of this field.
+* With the old coordinate system, fields are a set height, but will be vertically
+ centred on `H`. With the new coordinate system, `H` will modify the height.
* `name` is the name of the field as returned in fields to `on_receive_fields`
* `label`, if not blank, will be text printed on the top left above the field
-* See field_close_on_enter to stop enter closing the formspec
+* See `field_close_on_enter` to stop enter closing the formspec
+
+### `field[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
-#### `field[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
* Textual field; will be sent to server when a button is clicked
-* When enter is pressed in field, fields.key_enter_field will be sent with the name
- of this field.
-* `x` and `y` position the field relative to the top left of the menu
-* `w` and `h` are the size of the field
-* Fields are a set height, but will be vertically centred on `h`
-* Position and size units are inventory slots
+* When enter is pressed in field, `fields.key_enter_field` will be sent with
+ the name of this field.
+* With the old coordinate system, fields are a set height, but will be vertically
+ centred on `H`. With the new coordinate system, `H` will modify the height.
* `name` is the name of the field as returned in fields to `on_receive_fields`
* `label`, if not blank, will be text printed on the top left above the field
* `default` is the default value of the field
- * `default` may contain variable references such as `${text}'` which
+ * `default` may contain variable references such as `${text}` which
will fill the value from the metadata value `text`
* **Note**: no extra text or more than a single variable is supported ATM.
-* See field_close_on_enter to stop enter closing the formspec
+* See `field_close_on_enter` to stop enter closing the formspec
+
+### `field[<name>;<label>;<default>]`
-#### `field[<name>;<label>;<default>]`
* As above, but without position/size units
-* When enter is pressed in field, fields.key_enter_field will be sent with the name
- of this field.
+* When enter is pressed in field, `fields.key_enter_field` will be sent with
+ the name of this field.
* Special field for creating simple forms, such as sign text input
* Must be used without a `size[]` element
* A "Proceed" button will be added automatically
-* See field_close_on_enter to stop enter closing the formspec
+* See `field_close_on_enter` to stop enter closing the formspec
+
+### `field_close_on_enter[<name>;<close_on_enter>]`
-#### `field_close_on_enter[<name>;<close_on_enter>]`
* <name> is the name of the field
-* if <close_on_enter> is false, pressing enter in the field will submit the form but not close it
+* if <close_on_enter> is false, pressing enter in the field will submit the
+ form but not close it.
* defaults to true when not specified (ie: no tag for a field)
-#### `textarea[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
-* Same as fields above, but with multi-line input
-
-#### `label[<X>,<Y>;<label>]`
-* `x` and `y` work as per field
-* `label` is the text on the label
-* Position and size units are inventory slots
+### `textarea[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
-#### `vertlabel[<X>,<Y>;<label>]`
+* Same as fields above, but with multi-line input
+* If the text overflows, a vertical scrollbar is added.
+* If the name is empty, the textarea is read-only and
+ the background is not shown, which corresponds to a multi-line label.
+
+### `label[<X>,<Y>;<label>]`
+
+* The label formspec element displays the text set in `label`
+ at the specified position.
+* **Note**: If the new coordinate system is enabled, labels are
+ positioned from the center of the text, not the top.
+* The text is displayed directly without automatic line breaking,
+ so label should not be used for big text chunks. Newlines can be
+ used to make labels multiline.
+* **Note**: With the new coordinate system, newlines are spaced with
+ half a coordinate. With the old system, newlines are spaced 2/5 of
+ an inventory slot.
+
+### `hypertext[<X>,<Y>;<W>,<H>;<name>;<text>]`
+* Displays a static formatted text with hyperlinks.
+* **Note**: This element is currently unstable and subject to change.
+* `x`, `y`, `w` and `h` work as per field
+* `name` is the name of the field as returned in fields to `on_receive_fields` in case of action in text.
+* `text` is the formatted text using `Markup Language` described below.
+
+### `vertlabel[<X>,<Y>;<label>]`
* Textual label drawn vertically
-* `x` and `y` work as per field
* `label` is the text on the label
-* Position and size units are inventory slots
+* **Note**: If the new coordinate system is enabled, vertlabels are
+ positioned from the center of the text, not the left.
+
+### `button[<X>,<Y>;<W>,<H>;<name>;<label>]`
-#### `button[<X>,<Y>;<W>,<H>;<name>;<label>]`
* Clickable button. When clicked, fields will be sent.
-* `x`, `y` and `name` work as per field
-* `w` and `h` are the size of the button
+* With the old coordinate system, buttons are a set height, but will be vertically
+ centred on `H`. With the new coordinate system, `H` will modify the height.
* `label` is the text on the button
-* Position and size units are inventory slots
-#### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
-* `x`, `y`, `w`, `h`, and `name` work as per button
+### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
+
* `texture name` is the filename of an image
-* Position and size units are inventory slots
+* **Note**: Height is supported on both the old and new coordinate systems
+ for image_buttons.
+
+### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>;<noclip>;<drawborder>;<pressed texture name>]`
-#### `image_button[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>;<noclip>;<drawborder>;<pressed texture name>]`
-* `x`, `y`, `w`, `h`, and `name` work as per button
* `texture name` is the filename of an image
-* Position and size units are inventory slots
-* `noclip=true` means the image button doesn't need to be within specified formsize
+* `noclip=true` means the image button doesn't need to be within specified
+ formsize.
* `drawborder`: draw button border or not
* `pressed texture name` is the filename of an image on pressed state
-#### `item_image_button[<X>,<Y>;<W>,<H>;<item name>;<name>;<label>]`
-* `x`, `y`, `w`, `h`, `name` and `label` work as per button
-* `item name` is the registered name of an item/node,
- tooltip will be made out of its description
- to override it use tooltip element
-* Position and size units are inventory slots
+### `item_image_button[<X>,<Y>;<W>,<H>;<item name>;<name>;<label>]`
+
+* `item name` is the registered name of an item/node
+* The item description will be used as the tooltip. This can be overridden with
+ a tooltip element.
+
+### `button_exit[<X>,<Y>;<W>,<H>;<name>;<label>]`
-#### `button_exit[<X>,<Y>;<W>,<H>;<name>;<label>]`
* When clicked, fields will be sent and the form will quit.
+* Same as `button` in all other respects.
+
+### `image_button_exit[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
-#### `image_button_exit[<X>,<Y>;<W>,<H>;<texture name>;<name>;<label>]`
* When clicked, fields will be sent and the form will quit.
+* Same as `image_button` in all other respects.
+
+### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>]`
-#### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>]`
* Scrollable item list showing arbitrary text elements
-* `x` and `y` position the itemlist relative to the top left of the menu
-* `w` and `h` are the size of the itemlist
-* `name` fieldname sent to server on doubleclick value is current selected element
-* `listelements` can be prepended by #color in hexadecimal format RRGGBB (only),
- * if you want a listelement to start with "#" write "##".
+* `name` fieldname sent to server on doubleclick value is current selected
+ element.
+* `listelements` can be prepended by #color in hexadecimal format RRGGBB
+ (only).
+ * if you want a listelement to start with "#" write "##".
+
+### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>]`
-#### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>]`
* Scrollable itemlist showing arbitrary text elements
-* `x` and `y` position the item list relative to the top left of the menu
-* `w` and `h` are the size of the item list
-* `name` fieldname sent to server on doubleclick value is current selected element
+* `name` fieldname sent to server on doubleclick value is current selected
+ element.
* `listelements` can be prepended by #RRGGBB (only) in hexadecimal format
- * if you want a listelement to start with "#" write "##"
+ * if you want a listelement to start with "#" write "##"
* Index to be selected within textlist
* `true`/`false`: draw transparent background
-* See also `minetest.explode_textlist_event` (main menu: `engine.explode_textlist_event`)
+* See also `minetest.explode_textlist_event`
+ (main menu: `core.explode_textlist_event`).
+
+### `tabheader[<X>,<Y>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
+
+* Show a tab**header** at specific position (ignores formsize)
+* `X` and `Y`: position of the tabheader
+* *Note*: Width and height are automatically chosen with this syntax
+* `name` fieldname data is transferred to Lua
+* `caption 1`...: name shown on top of tab
+* `current_tab`: index of selected tab 1...
+* `transparent` (optional): if true, tabs are semi-transparent
+* `draw_border` (optional): if true, draw a thin line at tab base
+
+### `tabheader[<X>,<Y>;<H>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
-#### `tabheader[<X>,<Y>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
* Show a tab**header** at specific position (ignores formsize)
-* `x` and `y` position the itemlist relative to the top left of the menu
+* **Important note**: This syntax for tabheaders can only be used with the
+ new coordinate system.
+* `X` and `Y`: position of the tabheader
+* `H`: height of the tabheader. Width is automatically determined with this syntax.
* `name` fieldname data is transferred to Lua
* `caption 1`...: name shown on top of tab
* `current_tab`: index of selected tab 1...
* `transparent` (optional): show transparent
* `draw_border` (optional): draw border
-#### `box[<X>,<Y>;<W>,<H>;<color>]`
-* Simple colored semitransparent box
-* `x` and `y` position the box relative to the top left of the menu
-* `w` and `h` are the size of box
-* `color` is color specified as a `ColorString`
+### `tabheader[<X>,<Y>;<W>,<H>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
+
+* Show a tab**header** at specific position (ignores formsize)
+* **Important note**: This syntax for tabheaders can only be used with the
+ new coordinate system.
+* `X` and `Y`: position of the tabheader
+* `W` and `H`: width and height of the tabheader
+* `name` fieldname data is transferred to Lua
+* `caption 1`...: name shown on top of tab
+* `current_tab`: index of selected tab 1...
+* `transparent` (optional): show transparent
+* `draw_border` (optional): draw border
+
+### `box[<X>,<Y>;<W>,<H>;<color>]`
+
+* Simple colored box
+* `color` is color specified as a `ColorString`.
+ If the alpha component is left blank, the box will be semitransparent.
+ If the color is not specified, the box will use the options specified by
+ its style. If the color is specified, all styling options will be ignored.
+
+### `dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>;<index event>]`
-#### `dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]`
* Show a dropdown field
* **Important note**: There are two different operation modes:
- 1. handle directly on change (only changed dropdown is submitted)
- 2. read the value on pressing a button (all dropdown values are available)
-* `x` and `y` position of dropdown
-* Width of dropdown
+ 1. handle directly on change (only changed dropdown is submitted)
+ 2. read the value on pressing a button (all dropdown values are available)
+* `X` and `Y`: position of the dropdown
+* `W`: width of the dropdown. Height is automatically chosen with this syntax.
* Fieldname data is transferred to Lua
* Items to be shown in dropdown
* Index of currently selected dropdown item
+* `index event` (optional, allowed parameter since formspec version 4): Specifies the
+ event field value for selected items.
+ * `true`: Selected item index
+ * `false` (default): Selected item value
+
+### `dropdown[<X>,<Y>;<W>,<H>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>;<index event>]`
+
+* Show a dropdown field
+* **Important note**: This syntax for dropdowns can only be used with the
+ new coordinate system.
+* **Important note**: There are two different operation modes:
+ 1. handle directly on change (only changed dropdown is submitted)
+ 2. read the value on pressing a button (all dropdown values are available)
+* `X` and `Y`: position of the dropdown
+* `W` and `H`: width and height of the dropdown
+* Fieldname data is transferred to Lua
+* Items to be shown in dropdown
+* Index of currently selected dropdown item
+* `index event` (optional, allowed parameter since formspec version 4): Specifies the
+ event field value for selected items.
+ * `true`: Selected item index
+ * `false` (default): Selected item value
+
+### `checkbox[<X>,<Y>;<name>;<label>;<selected>]`
-#### `checkbox[<X>,<Y>;<name>;<label>;<selected>]`
* Show a checkbox
-* `x` and `y`: position of checkbox
* `name` fieldname data is transferred to Lua
* `label` to be shown left of checkbox
* `selected` (optional): `true`/`false`
+* **Note**: If the new coordinate system is enabled, checkboxes are
+ positioned from the center of the checkbox, not the top.
-#### `scrollbar[<X>,<Y>;<W>,<H>;<orientation>;<name>;<value>]`
-* Show a scrollbar
+### `scrollbar[<X>,<Y>;<W>,<H>;<orientation>;<name>;<value>]`
+
+* Show a scrollbar using options defined by the previous `scrollbaroptions[]`
* There are two ways to use it:
- 1. handle the changed event (only changed scrollbar is available)
- 2. read the value on pressing a button (all scrollbars are available)
-* `x` and `y`: position of trackbar
-* `w` and `h`: width and height
-* `orientation`: `vertical`/`horizontal`
+ 1. handle the changed event (only changed scrollbar is available)
+ 2. read the value on pressing a button (all scrollbars are available)
+* `orientation`: `vertical`/`horizontal`. Default horizontal.
* Fieldname data is transferred to Lua
-* Value this trackbar is set to (`0`-`1000`)
-* See also `minetest.explode_scrollbar_event` (main menu: `engine.explode_scrollbar_event`)
+* Value of this trackbar is set to (`0`-`1000`) by default
+* See also `minetest.explode_scrollbar_event`
+ (main menu: `core.explode_scrollbar_event`).
+
+### `scrollbaroptions[opt1;opt2;...]`
+* Sets options for all following `scrollbar[]` elements
+* `min=<int>`
+ * Sets scrollbar minimum value, defaults to `0`.
+* `max=<int>`
+ * Sets scrollbar maximum value, defaults to `1000`.
+ If the max is equal to the min, the scrollbar will be disabled.
+* `smallstep=<int>`
+ * Sets scrollbar step value when the arrows are clicked or the mouse wheel is
+ scrolled.
+ * If this is set to a negative number, the value will be reset to `10`.
+* `largestep=<int>`
+ * Sets scrollbar step value used by page up and page down.
+ * If this is set to a negative number, the value will be reset to `100`.
+* `thumbsize=<int>`
+ * Sets size of the thumb on the scrollbar. Size is calculated in the number of
+ units the thumb spans out of the range of the scrollbar values.
+ * Example: If a scrollbar has a `min` of 1 and a `max` of 100, a thumbsize of 10
+ would span a tenth of the scrollbar space.
+ * If this is set to zero or less, the value will be reset to `1`.
+* `arrows=<show/hide/default>`
+ * Whether to show the arrow buttons on the scrollbar. `default` hides the arrows
+ when the scrollbar gets too small, but shows them otherwise.
+
+### `table[<X>,<Y>;<W>,<H>;<name>;<cell 1>,<cell 2>,...,<cell n>;<selected idx>]`
-#### `table[<X>,<Y>;<W>,<H>;<name>;<cell 1>,<cell 2>,...,<cell n>;<selected idx>]`
* Show scrollable table using options defined by the previous `tableoptions[]`
* Displays cells as defined by the previous `tablecolumns[]`
-* `x` and `y`: position the itemlist relative to the top left of the menu
-* `w` and `h` are the size of the itemlist
* `name`: fieldname sent to server on row select or doubleclick
* `cell 1`...`cell n`: cell contents given in row-major order
* `selected idx`: index of row to be selected within table (first row = `1`)
-* See also `minetest.explode_table_event` (main menu: `engine.explode_table_event`)
+* See also `minetest.explode_table_event`
+ (main menu: `core.explode_table_event`).
+
+### `tableoptions[<opt 1>;<opt 2>;...]`
-#### `tableoptions[<opt 1>;<opt 2>;...]`
* Sets options for `table[]`
* `color=#RRGGBB`
- * default text color (`ColorString`), defaults to `#FFFFFF`
+ * default text color (`ColorString`), defaults to `#FFFFFF`
* `background=#RRGGBB`
- * table background color (`ColorString`), defaults to `#000000`
+ * table background color (`ColorString`), defaults to `#000000`
* `border=<true/false>`
- * should the table be drawn with a border? (default: `true`)
+ * should the table be drawn with a border? (default: `true`)
* `highlight=#RRGGBB`
- * highlight background color (`ColorString`), defaults to `#466432`
+ * highlight background color (`ColorString`), defaults to `#466432`
* `highlight_text=#RRGGBB`
- * highlight text color (`ColorString`), defaults to `#FFFFFF`
+ * highlight text color (`ColorString`), defaults to `#FFFFFF`
* `opendepth=<value>`
- * all subtrees up to `depth < value` are open (default value = `0`)
- * only useful when there is a column of type "tree"
+ * all subtrees up to `depth < value` are open (default value = `0`)
+ * only useful when there is a column of type "tree"
+
+### `tablecolumns[<type 1>,<opt 1a>,<opt 1b>,...;<type 2>,<opt 2a>,<opt 2b>;...]`
-#### `tablecolumns[<type 1>,<opt 1a>,<opt 1b>,...;<type 2>,<opt 2a>,<opt 2b>;...]`
* Sets columns for `table[]`
* Types: `text`, `image`, `color`, `indent`, `tree`
* `text`: show cell contents as text
- * `image`: cell contents are an image index, use column options to define images
- * `color`: cell contents are a ColorString and define color of following cell
- * `indent`: cell contents are a number and define indentation of following cell
- * `tree`: same as indent, but user can open and close subtrees (treeview-like)
+ * `image`: cell contents are an image index, use column options to define
+ images.
+ * `color`: cell contents are a ColorString and define color of following
+ cell.
+ * `indent`: cell contents are a number and define indentation of following
+ cell.
+ * `tree`: same as indent, but user can open and close subtrees
+ (treeview-like).
* Column options:
* `align=<value>`
* for `text` and `image`: content alignment within cells.
@@ -1746,21 +2871,403 @@ examples.
* and so on; defined indices need not be contiguous empty or
non-numeric cells are treated as `0`.
* `color` column options:
- * `span=<value>`: number of following columns to affect (default: infinite)
+ * `span=<value>`: number of following columns to affect
+ (default: infinite).
+
+### `style[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]`
+
+* Set the style for the element(s) matching `selector` by name.
+* `selector` can be one of:
+ * `<name>` - An element name. Includes `*`, which represents every element.
+ * `<name>:<state>` - An element name, a colon, and one or more states.
+* `state` is a list of states separated by the `+` character.
+ * If a state is provided, the style will only take effect when the element is in that state.
+ * All provided states must be active for the style to apply.
+* Note: this **must** be before the element is defined.
+* See [Styling Formspecs].
+
+
+### `style_type[<selector 1>,<selector 2>,...;<prop1>;<prop2>;...]`
+
+* Set the style for the element(s) matching `selector` by type.
+* `selector` can be one of:
+ * `<type>` - An element type. Includes `*`, which represents every element.
+ * `<type>:<state>` - An element type, a colon, and one or more states.
+* `state` is a list of states separated by the `+` character.
+ * If a state is provided, the style will only take effect when the element is in that state.
+ * All provided states must be active for the style to apply.
+* See [Styling Formspecs].
+
+### `set_focus[<name>;<force>]`
+
+* Sets the focus to the element with the same `name` parameter.
+* **Note**: This element must be placed before the element it focuses.
+* `force` (optional, default `false`): By default, focus is not applied for
+ re-sent formspecs with the same name so that player-set focus is kept.
+ `true` sets the focus to the specified element for every sent formspec.
+* The following elements have the ability to be focused:
+ * checkbox
+ * button
+ * button_exit
+ * image_button
+ * image_button_exit
+ * item_image_button
+ * table
+ * textlist
+ * dropdown
+ * field
+ * pwdfield
+ * textarea
+ * scrollbar
+
+Migrating to Real Coordinates
+-----------------------------
+
+In the old system, positions included padding and spacing. Padding is a gap between
+the formspec window edges and content, and spacing is the gaps between items. For
+example, two `1x1` elements at `0,0` and `1,1` would have a spacing of `5/4` between them,
+and a padding of `3/8` from the formspec edge. It may be easiest to recreate old layouts
+in the new coordinate system from scratch.
+
+To recreate an old layout with padding, you'll need to pass the positions and sizes
+through the following formula to re-introduce padding:
+
+```
+pos = (oldpos + 1)*spacing + padding
+where
+ padding = 3/8
+ spacing = 5/4
+```
+
+You'll need to change the `size[]` tag like this:
+
+```
+size = (oldsize-1)*spacing + padding*2 + 1
+```
+
+A few elements had random offsets in the old system. Here is a table which shows these
+offsets when migrating:
+
+| Element | Position | Size | Notes
+|---------|------------|---------|-------
+| box | +0.3, +0.1 | 0, -0.4 |
+| button | | | Buttons now support height, so set h = 2 * 15/13 * 0.35, and reposition if h ~= 15/13 * 0.35 before
+| list | | | Spacing is now 0.25 for both directions, meaning lists will be taller in height
+| label | 0, +0.3 | | The first line of text is now positioned centered exactly at the position specified
+
+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>;...]
+
+Where a prop is:
+
+ property_name=property_value
+
+For example:
+
+ style_type[button;bgcolor=#006699]
+ style[world_delete;bgcolor=red;textcolor=yellow]
+ button[4,3.95;2.6,1;world_delete;Delete]
+
+A name/type can optionally be a comma separated list of names/types, like so:
+
+ world_delete,world_create,world_configure
+ button,image_button
+
+A `*` type can be used to select every element in the formspec.
+
+Any name/type in the list can also be accompanied by a `+`-separated list of states, like so:
+
+ world_delete:hovered+pressed
+ button:pressed
+
+States allow you to apply styles in response to changes in the element, instead of applying at all times.
+
+Setting a property to nothing will reset it to the default value. For example:
+
+ style_type[button;bgimg=button.png;bgimg_pressed=button_pressed.png;border=false]
+ style[btn_exit;bgimg=;bgimg_pressed=;border=;bgcolor=red]
+
+
+### Supported Element Types
+
+Some types may inherit styles from parent types.
+
+* animated_image, inherits from image
+* box
+* button
+* button_exit, inherits from button
+* checkbox
+* dropdown
+* field
+* image
+* image_button
+* item_image_button
+* label
+* list
+* model
+* pwdfield, inherits from field
+* scrollbar
+* tabheader
+* table
+* textarea
+* textlist
+* vertlabel, inherits from label
+
+
+### Valid Properties
+
+* animated_image
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+* box
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * Defaults to false in formspec_version version 3 or higher
+ * **Note**: `colors`, `bordercolors`, and `borderwidths` accept multiple input types:
+ * Single value (e.g. `#FF0`): All corners/borders.
+ * Two values (e.g. `red,#FFAAFF`): top-left and bottom-right,top-right and bottom-left/
+ top and bottom,left and right.
+ * Four values (e.g. `blue,#A0F,green,#FFFA`): top-left/top and rotates clockwise.
+ * These work similarly to CSS borders.
+ * colors - `ColorString`. Sets the color(s) of the box corners. Default `black`.
+ * bordercolors - `ColorString`. Sets the color(s) of the borders. Default `black`.
+ * borderwidths - Integer. Sets the width(s) of the borders in pixels. If the width is
+ negative, the border will extend inside the box, whereas positive extends outside
+ the box. A width of zero results in no border; this is default.
+* button, button_exit, image_button, item_image_button
+ * alpha - boolean, whether to draw alpha in bgimg. Default true.
+ * bgcolor - color, sets button tint.
+ * bgcolor_hovered - color when hovered. Defaults to a lighter bgcolor when not provided.
+ * This is deprecated, use states instead.
+ * bgcolor_pressed - color when pressed. Defaults to a darker bgcolor when not provided.
+ * This is deprecated, use states instead.
+ * bgimg - standard background image. Defaults to none.
+ * bgimg_hovered - background image when hovered. Defaults to bgimg when not provided.
+ * This is deprecated, use states instead.
+ * bgimg_middle - Makes the bgimg textures render in 9-sliced mode and defines the middle rect.
+ See background9[] documentation for more details. This property also pads the
+ button's content when set.
+ * bgimg_pressed - background image when pressed. Defaults to bgimg when not provided.
+ * This is deprecated, use states instead.
+ * font - Sets font type. This is a comma separated list of options. Valid options:
+ * Main font type options. These cannot be combined with each other:
+ * `normal`: Default font
+ * `mono`: Monospaced font
+ * Font modification options. If used without a main font type, `normal` is used:
+ * `bold`: Makes font bold.
+ * `italic`: Makes font italic.
+ Default `normal`.
+ * font_size - Sets font size. Default is user-set. Can have multiple values:
+ * `<number>`: Sets absolute font size to `number`.
+ * `+<number>`/`-<number>`: Offsets default font size by `number` points.
+ * `*<number>`: Multiplies default font size by `number`, similar to CSS `em`.
+ * border - boolean, draw border. Set to false to hide the bevelled button pane. Default true.
+ * content_offset - 2d vector, shifts the position of the button's content without resizing it.
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * padding - rect, adds space between the edges of the button and the content. This value is
+ relative to bgimg_middle.
+ * sound - a sound to be played when triggered.
+ * textcolor - color, default white.
+* checkbox
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * sound - a sound to be played when triggered.
+* dropdown
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * sound - a sound to be played when the entry is changed.
+* field, pwdfield, textarea
+ * border - set to false to hide the textbox background and border. Default true.
+ * font - Sets font type. See button `font` property for more information.
+ * font_size - Sets font size. See button `font_size` property for more information.
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * textcolor - color. Default white.
+* model
+ * bgcolor - color, sets background color.
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * Default to false in formspec_version version 3 or higher
+* image
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * Default to false in formspec_version version 3 or higher
+* item_image
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds. Default to false.
+* label, vertlabel
+ * font - Sets font type. See button `font` property for more information.
+ * font_size - Sets font size. See button `font_size` property for more information.
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+* list
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * size - 2d vector, sets the size of inventory slots in coordinates.
+ * spacing - 2d vector, sets the space between inventory slots in coordinates.
+* image_button (additional properties)
+ * fgimg - standard image. Defaults to none.
+ * fgimg_hovered - image when hovered. Defaults to fgimg when not provided.
+ * This is deprecated, use states instead.
+ * fgimg_pressed - image when pressed. Defaults to fgimg when not provided.
+ * This is deprecated, use states instead.
+ * fgimg_middle - Makes the fgimg textures render in 9-sliced mode and defines the middle rect.
+ See background9[] documentation for more details.
+ * NOTE: The parameters of any given image_button will take precedence over fgimg/fgimg_pressed
+ * sound - a sound to be played when triggered.
+* scrollbar
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+* tabheader
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * sound - a sound to be played when a different tab is selected.
+ * textcolor - color. Default white.
+* table, textlist
+ * font - Sets font type. See button `font` property for more information.
+ * font_size - Sets font size. See button `font_size` property for more information.
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+
+### Valid States
+
+* *all elements*
+ * default - Equivalent to providing no states
+* button, button_exit, image_button, item_image_button
+ * hovered - Active when the mouse is hovering over the element
+ * pressed - Active when the button is pressed
+
+Markup Language
+---------------
+
+Markup language used in `hypertext[]` elements uses tags that look like HTML tags.
+The markup language is currently unstable and subject to change. Use with caution.
+Some tags can enclose text, they open with `<tagname>` and close with `</tagname>`.
+Tags can have attributes, in that case, attributes are in the opening tag in
+form of a key/value separated with equal signs. Attribute values should not be quoted.
+
+If you want to insert a literal greater-than sign or a backslash into the text,
+you must escape it by preceding it with a backslash.
+
+These are the technically basic tags but see below for usual tags. Base tags are:
+
+`<style color=... font=... size=...>...</style>`
+
+Changes the style of the text.
+
+* `color`: Text color. Given color is a `colorspec`.
+* `size`: Text size.
+* `font`: Text font (`mono` or `normal`).
+
+`<global background=... margin=... valign=... color=... hovercolor=... size=... font=... halign=... >`
+
+Sets global style.
+
+Global only styles:
+* `background`: Text background, a `colorspec` or `none`.
+* `margin`: Page margins in pixel.
+* `valign`: Text vertical alignment (`top`, `middle`, `bottom`).
+
+Inheriting styles (affects child elements):
+* `color`: Default text color. Given color is a `colorspec`.
+* `hovercolor`: Color of <action> tags when mouse is over.
+* `size`: Default text size.
+* `font`: Default text font (`mono` or `normal`).
+* `halign`: Default text horizontal alignment (`left`, `right`, `center`, `justify`).
+
+This tag needs to be placed only once as it changes the global settings of the
+text. Anyway, if several tags are placed, each changed will be made in the order
+tags appear.
+
+`<tag name=... color=... hovercolor=... font=... size=...>`
-**Note**: do _not_ use a element name starting with `key_`; those names are reserved to
-pass key press events to formspec!
+Defines or redefines tag style. This can be used to define new tags.
+* `name`: Name of the tag to define or change.
+* `color`: Text color. Given color is a `colorspec`.
+* `hovercolor`: Text color when element hovered (only for `action` tags). Given color is a `colorspec`.
+* `size`: Text size.
+* `font`: Text font (`mono` or `normal`).
+
+Following tags are the usual tags for text layout. They are defined by default.
+Other tags can be added using `<tag ...>` tag.
+
+`<normal>...</normal>`: Normal size text
+
+`<big>...</big>`: Big text
+
+`<bigger>...</bigger>`: Bigger text
+
+`<center>...</center>`: Centered text
+
+`<left>...</left>`: Left-aligned text
+
+`<right>...</right>`: Right-aligned text
+
+`<justify>...</justify>`: Justified text
+
+`<mono>...</mono>`: Monospaced font
+
+`<b>...</b>`, `<i>...</i>`, `<u>...</u>`: Bold, italic, underline styles.
+
+`<action name=...>...</action>`
+
+Make that text a clickable text triggering an action.
+
+* `name`: Name of the action (mandatory).
+
+When clicked, the formspec is send to the server. The value of the text field
+sent to `on_player_receive_fields` will be "action:" concatenated to the action
+name.
+
+`<img name=... float=... width=... height=...>`
+
+Draws an image which is present in the client media cache.
+
+* `name`: Name of the texture (mandatory).
+* `float`: If present, makes the image floating (`left` or `right`).
+* `width`: Force image width instead of taking texture width.
+* `height`: Force image height instead of taking texture height.
+
+If only width or height given, texture aspect is kept.
+
+`<item name=... float=... width=... height=... rotate=...>`
+
+Draws an item image.
+
+* `name`: Item string of the item to draw (mandatory).
+* `float`: If present, makes the image floating (`left` or `right`).
+* `width`: Item image width.
+* `height`: Item image height.
+* `rotate`: Rotate item image if set to `yes` or `X,Y,Z`. X, Y and Z being
+rotation speeds in percent of standard speed (-1000 to 1000). Works only if
+`inventory_items_animations` is set to true.
+* `angle`: Angle in which the item image is shown. Value has `X,Y,Z` form.
+X, Y and Z being angles around each three axes. Works only if
+`inventory_items_animations` is set to true.
+
+Inventory
+=========
Inventory locations
-------------------
+
* `"context"`: Selected node metadata (deprecated: `"current_name"`)
* `"current_player"`: Player to whom the menu is shown
* `"player:<name>"`: Any player
* `"nodemeta:<X>,<Y>,<Z>"`: Any node metadata
* `"detached:<name>"`: A detached inventory
+Player Inventory lists
+----------------------
+
+* `main`: list containing the default inventory
+* `craft`: list containing the craft input
+* `craftpreview`: list containing the craft prediction
+* `craftresult`: list containing the crafted output
+* `hand`: list containing an override for the empty hand
+ * Is not created automatically, use `InvRef:set_size`
+ * Is only used to enhance the empty hand's tool capabilities
+
+Colors
+======
+
`ColorString`
-------------
+
`#RGB` defines a color in hexadecimal format.
`#RGBA` defines a color in hexadecimal format and alpha channel.
@@ -1770,362 +3277,2102 @@ Inventory locations
`#RRGGBBAA` defines a color in hexadecimal format and alpha channel.
Named colors are also supported and are equivalent to
-[CSS Color Module Level 4](http://dev.w3.org/csswg/css-color/#named-colors).
-To specify the value of the alpha channel, append `#AA` to the end of the color name
-(e.g. `colorname#08`). For named colors the hexadecimal string representing the alpha
-value must (always) be two hexadecimal digits.
+[CSS Color Module Level 4](https://www.w3.org/TR/css-color-4/#named-color).
+To specify the value of the alpha channel, append `#A` or `#AA` to the end of
+the color name (e.g. `colorname#08`).
`ColorSpec`
-----------
-A ColorSpec specifies a 32-bit color. It can be written in either:
-table form, each element ranging from 0..255 (a, if absent, defaults to 255):
- `colorspec = {a=255, r=0, g=255, b=0}`
-numerical form, the raw integer value of an ARGB8 quad:
- `colorspec = 0xFF00FF00`
-or string form, a ColorString (defined above):
- `colorspec = "green"`
+
+A ColorSpec specifies a 32-bit color. It can be written in any of the following
+forms:
+
+* table form: Each element ranging from 0..255 (a, if absent, defaults to 255):
+ * `colorspec = {a=255, r=0, g=255, b=0}`
+* numerical form: The raw integer value of an ARGB8 quad:
+ * `colorspec = 0xFF00FF00`
+* string form: A ColorString (defined above):
+ * `colorspec = "green"`
+
+
+
Escape sequences
-----------------
+================
+
Most text can contain escape sequences, that can for example color the text.
There are a few exceptions: tab headers, dropdowns and vertical labels can't.
The following functions provide escape sequences:
-* `core.get_color_escape_sequence(color)`:
+
+* `minetest.get_color_escape_sequence(color)`:
* `color` is a ColorString
* The escape sequence sets the text color to `color`
-* `core.colorize(color, message)`:
+* `minetest.colorize(color, message)`:
* Equivalent to:
- `core.get_color_escape_sequence(color) ..
- message ..
- core.get_color_escape_sequence("#ffffff")`
-* `color.get_background_escape_sequence(color)`
+ `minetest.get_color_escape_sequence(color) ..
+ message ..
+ minetest.get_color_escape_sequence("#ffffff")`
+* `minetest.get_background_escape_sequence(color)`
* `color` is a ColorString
* The escape sequence sets the background of the whole text element to
`color`. Only defined for item descriptions and tooltips.
+* `minetest.strip_foreground_colors(str)`
+ * Removes foreground colors added by `get_color_escape_sequence`.
+* `minetest.strip_background_colors(str)`
+ * Removes background colors added by `get_background_escape_sequence`.
+* `minetest.strip_colors(str)`
+ * Removes all color escape sequences.
+
+
+
Spatial Vectors
----------------
-* `vector.new(a[, b, c])`: returns a vector:
- * A copy of `a` if `a` is a vector.
- * `{x = a, y = b, z = c}`, if all `a, b, c` are defined
-* `vector.direction(p1, p2)`: returns a vector
-* `vector.distance(p1, p2)`: returns a number
-* `vector.length(v)`: returns a number
-* `vector.normalize(v)`: returns a vector
-* `vector.floor(v)`: returns a vector, each dimension rounded down
-* `vector.round(v)`: returns a vector, each dimension rounded to nearest int
-* `vector.apply(v, func)`: returns a vector
-* `vector.equals(v1, v2)`: returns a boolean
+===============
+
+Minetest stores 3-dimensional spatial vectors in Lua as tables of 3 coordinates,
+and has a class to represent them (`vector.*`), which this chapter is about.
+For details on what a spatial vectors is, please refer to Wikipedia:
+https://en.wikipedia.org/wiki/Euclidean_vector.
+
+Spatial vectors are used for various things, including, but not limited to:
+
+* any 3D spatial vector (x/y/z-directions)
+* Euler angles (pitch/yaw/roll in radians) (Spatial vectors have no real semantic
+ meaning here. Therefore, most vector operations make no sense in this use case.)
+
+Note that they are *not* used for:
+
+* n-dimensional vectors where n is not 3 (ie. n=2)
+* arrays of the form `{num, num, num}`
+
+The API documentation may refer to spatial vectors, as produced by `vector.new`,
+by any of the following notations:
+
+* `(x, y, z)` (Used rarely, and only if it's clear that it's a vector.)
+* `vector.new(x, y, z)`
+* `{x=num, y=num, z=num}` (Even here you are still supposed to use `vector.new`.)
+
+Compatibility notes
+-------------------
+
+Vectors used to be defined as tables of the form `{x = num, y = num, z = num}`.
+Since Minetest 5.5.0, vectors additionally have a metatable to enable easier use.
+Note: Those old-style vectors can still be found in old mod code. Hence, mod and
+engine APIs still need to be able to cope with them in many places.
+
+Manually constructed tables are deprecated and highly discouraged. This interface
+should be used to ensure seamless compatibility between mods and the Minetest API.
+This is especially important to callback function parameters and functions overwritten
+by mods.
+Also, though not likely, the internal implementation of a vector might change in
+the future.
+In your own code, or if you define your own API, you can, of course, still use
+other representations of vectors.
+
+Vectors provided by API functions will provide an instance of this class if not
+stated otherwise. Mods should adapt this for convenience reasons.
+
+Special properties of the class
+-------------------------------
+
+Vectors can be indexed with numbers and allow method and operator syntax.
+
+All these forms of addressing a vector `v` are valid:
+`v[1]`, `v[3]`, `v.x`, `v[1] = 42`, `v.y = 13`
+Note: Prefer letter over number indexing for performance and compatibility reasons.
+
+Where `v` is a vector and `foo` stands for any function name, `v:foo(...)` does
+the same as `vector.foo(v, ...)`, apart from deprecated functionality.
+
+`tostring` is defined for vectors, see `vector.to_string`.
+
+The metatable that is used for vectors can be accessed via `vector.metatable`.
+Do not modify it!
+
+All `vector.*` functions allow vectors `{x = X, y = Y, z = Z}` without metatables.
+Returned vectors always have a metatable set.
+
+Common functions and methods
+----------------------------
+
+For the following functions (and subchapters),
+`v`, `v1`, `v2` are vectors,
+`p1`, `p2` are position vectors,
+`s` is a scalar (a number),
+vectors are written like this: `(x, y, z)`:
+
+* `vector.new([a[, b, c]])`:
+ * Returns a new vector `(a, b, c)`.
+ * Deprecated: `vector.new()` does the same as `vector.zero()` and
+ `vector.new(v)` does the same as `vector.copy(v)`
+* `vector.zero()`:
+ * Returns a new vector `(0, 0, 0)`.
+* `vector.copy(v)`:
+ * Returns a copy of the vector `v`.
+* `vector.from_string(s[, init])`:
+ * Returns `v, np`, where `v` is a vector read from the given string `s` and
+ `np` is the next position in the string after the vector.
+ * Returns `nil` on failure.
+ * `s`: Has to begin with a substring of the form `"(x, y, z)"`. Additional
+ spaces, leaving away commas and adding an additional comma to the end
+ is allowed.
+ * `init`: If given starts looking for the vector at this string index.
+* `vector.to_string(v)`:
+ * Returns a string of the form `"(x, y, z)"`.
+ * `tostring(v)` does the same.
+* `vector.direction(p1, p2)`:
+ * Returns a vector of length 1 with direction `p1` to `p2`.
+ * If `p1` and `p2` are identical, returns `(0, 0, 0)`.
+* `vector.distance(p1, p2)`:
+ * Returns zero or a positive number, the distance between `p1` and `p2`.
+* `vector.length(v)`:
+ * Returns zero or a positive number, the length of vector `v`.
+* `vector.normalize(v)`:
+ * Returns a vector of length 1 with direction of vector `v`.
+ * If `v` has zero length, returns `(0, 0, 0)`.
+* `vector.floor(v)`:
+ * Returns a vector, each dimension rounded down.
+* `vector.round(v)`:
+ * Returns a vector, each dimension rounded to nearest integer.
+ * At a multiple of 0.5, rounds away from zero.
+* `vector.apply(v, func)`:
+ * Returns a vector where the function `func` has been applied to each
+ component.
+* `vector.combine(v, w, func)`:
+ * Returns a vector where the function `func` has combined both components of `v` and `w`
+ for each component
+* `vector.equals(v1, v2)`:
+ * Returns a boolean, `true` if the vectors are identical.
+* `vector.sort(v1, v2)`:
+ * Returns in order minp, maxp vectors of the cuboid defined by `v1`, `v2`.
+* `vector.angle(v1, v2)`:
+ * Returns the angle between `v1` and `v2` in radians.
+* `vector.dot(v1, v2)`:
+ * Returns the dot product of `v1` and `v2`.
+* `vector.cross(v1, v2)`:
+ * Returns the cross product of `v1` and `v2`.
+* `vector.offset(v, x, y, z)`:
+ * Returns the sum of the vectors `v` and `(x, y, z)`.
+* `vector.check(v)`:
+ * Returns a boolean value indicating whether `v` is a real vector, eg. created
+ by a `vector.*` function.
+ * Returns `false` for anything else, including tables like `{x=3,y=1,z=4}`.
For the following functions `x` can be either a vector or a number:
-* `vector.add(v, x)`: returns a vector
-* `vector.subtract(v, x)`: returns a vector
-* `vector.multiply(v, x)`: returns a scaled vector or Schur product
-* `vector.divide(v, x)`: returns a scaled vector or Schur quotient
+* `vector.add(v, x)`:
+ * Returns a vector.
+ * If `x` is a vector: Returns the sum of `v` and `x`.
+ * If `x` is a number: Adds `x` to each component of `v`.
+* `vector.subtract(v, x)`:
+ * Returns a vector.
+ * If `x` is a vector: Returns the difference of `v` subtracted by `x`.
+ * If `x` is a number: Subtracts `x` from each component of `v`.
+* `vector.multiply(v, s)`:
+ * Returns a scaled vector.
+ * Deprecated: If `s` is a vector: Returns the Schur product.
+* `vector.divide(v, s)`:
+ * Returns a scaled vector.
+ * Deprecated: If `s` is a vector: Returns the Schur quotient.
+
+Operators
+---------
+
+Operators can be used if all of the involved vectors have metatables:
+* `v1 == v2`:
+ * Returns whether `v1` and `v2` are identical.
+* `-v`:
+ * Returns the additive inverse of v.
+* `v1 + v2`:
+ * Returns the sum of both vectors.
+ * Note: `+` can not be used together with scalars.
+* `v1 - v2`:
+ * Returns the difference of `v1` subtracted by `v2`.
+ * Note: `-` can not be used together with scalars.
+* `v * s` or `s * v`:
+ * Returns `v` scaled by `s`.
+* `v / s`:
+ * Returns `v` scaled by `1 / s`.
+
+Rotation-related functions
+--------------------------
+
+For the following functions `a` is an angle in radians and `r` is a rotation
+vector (`{x = <pitch>, y = <yaw>, z = <roll>}`) where pitch, yaw and roll are
+angles in radians.
+
+* `vector.rotate(v, r)`:
+ * Applies the rotation `r` to `v` and returns the result.
+ * `vector.rotate(vector.new(0, 0, 1), r)` and
+ `vector.rotate(vector.new(0, 1, 0), r)` return vectors pointing
+ forward and up relative to an entity's rotation `r`.
+* `vector.rotate_around_axis(v1, v2, a)`:
+ * Returns `v1` rotated around axis `v2` by `a` radians according to
+ the right hand rule.
+* `vector.dir_to_rotation(direction[, up])`:
+ * Returns a rotation vector for `direction` pointing forward using `up`
+ as the up vector.
+ * If `up` is omitted, the roll of the returned vector defaults to zero.
+ * Otherwise `direction` and `up` need to be vectors in a 90 degree angle to each other.
+
+Further helpers
+---------------
+
+There are more helper functions involving vectors, but they are listed elsewhere
+because they only work on specific sorts of vectors or involve things that are not
+vectors.
+
+For example:
+
+* `minetest.hash_node_position` (Only works on node positions.)
+* `minetest.dir_to_wallmounted` (Involves wallmounted param2 values.)
+
+
+
Helper functions
-----------------
-* `dump2(obj, name="_", dumped={})`
- * Return object serialized as a string, handles reference loops
-* `dump(obj, dumped={})`
- * Return object serialized as a string
+================
+
+* `dump2(obj, name, dumped)`: returns a string which makes `obj`
+ human-readable, handles reference loops.
+ * `obj`: arbitrary variable
+ * `name`: string, default: `"_"`
+ * `dumped`: table, default: `{}`
+* `dump(obj, dumped)`: returns a string which makes `obj` human-readable
+ * `obj`: arbitrary variable
+ * `dumped`: table, default: `{}`
* `math.hypot(x, y)`
* Get the hypotenuse of a triangle with legs x and y.
Useful for distance calculation.
-* `math.sign(x, tolerance)`
+* `math.sign(x, tolerance)`: returns `-1`, `0` or `1`
* Get the sign of a number.
- Optional: Also returns `0` when the absolute value is within the tolerance (default: `0`)
-* `string.split(str, separator=",", include_empty=false, max_splits=-1,
-* sep_is_pattern=false)`
- * If `max_splits` is negative, do not limit splits.
- * `sep_is_pattern` specifies if separator is a plain string or a pattern (regex).
- * e.g. `string:split("a,b", ",") == {"a","b"}`
-* `string:trim()`
- * e.g. `string.trim("\n \t\tfoo bar\t ") == "foo bar"`
-* `minetest.pos_to_string({x=X,y=Y,z=Z}, decimal_places))`: returns `"(X,Y,Z)"`
- * Convert position to a printable string
- Optional: 'decimal_places' will round the x, y and z of the pos to the given decimal place.
-* `minetest.string_to_pos(string)`: returns a position
- * Same but in reverse. Returns `nil` if the string can't be parsed to a position.
-* `minetest.string_to_area("(X1, Y1, Z1) (X2, Y2, Z2)")`: returns two positions
+ * tolerance: number, default: `0.0`
+ * If the absolute value of `x` is within the `tolerance` or `x` is NaN,
+ `0` is returned.
+* `math.factorial(x)`: returns the factorial of `x`
+* `math.round(x)`: Returns `x` rounded to the nearest integer.
+ * At a multiple of 0.5, rounds away from zero.
+* `string.split(str, separator, include_empty, max_splits, sep_is_pattern)`
+ * `separator`: string, default: `","`
+ * `include_empty`: boolean, default: `false`
+ * `max_splits`: number, if it's negative, splits aren't limited,
+ default: `-1`
+ * `sep_is_pattern`: boolean, it specifies whether separator is a plain
+ string or a pattern (regex), default: `false`
+ * e.g. `"a,b":split","` returns `{"a","b"}`
+* `string:trim()`: returns the string without whitespace pre- and suffixes
+ * e.g. `"\n \t\tfoo bar\t ":trim()` returns `"foo bar"`
+* `minetest.wrap_text(str, limit, as_table)`: returns a string or table
+ * Adds newlines to the string to keep it within the specified character
+ limit
+ * Note that the returned lines may be longer than the limit since it only
+ splits at word borders.
+ * `limit`: number, maximal amount of characters in one line
+ * `as_table`: boolean, if set to true, a table of lines instead of a string
+ is returned, default: `false`
+* `minetest.pos_to_string(pos, decimal_places)`: returns string `"(X,Y,Z)"`
+ * `pos`: table {x=X, y=Y, z=Z}
+ * Converts the position `pos` to a human-readable, printable string
+ * `decimal_places`: number, if specified, the x, y and z values of
+ the position are rounded to the given decimal place.
+* `minetest.string_to_pos(string)`: returns a position or `nil`
+ * Same but in reverse.
+ * If the string can't be parsed to a position, nothing is returned.
+* `minetest.string_to_area("(X1, Y1, Z1) (X2, Y2, Z2)", relative_to)`:
+ * returns two positions
* Converts a string representing an area box into two positions
+ * X1, Y1, ... Z2 are coordinates
+ * `relative_to`: Optional. If set to a position, each coordinate
+ can use the tilde notation for relative positions
+ * Tilde notation: "~": Relative coordinate
+ "~<number>": Relative coordinate plus <number>
+ * Example: `minetest.string_to_area("(1,2,3) (~5,~-5,~)", {x=10,y=10,z=10})`
+ returns `{x=1,y=2,z=3}, {x=15,y=5,z=10}`
* `minetest.formspec_escape(string)`: returns a string
- * escapes the characters "[", "]", "\", "," and ";", which can not be used in formspecs
+ * escapes the characters "[", "]", "\", "," and ";", which can not be used
+ in formspecs.
* `minetest.is_yes(arg)`
- * returns whether `arg` can be interpreted as yes
+ * returns true if passed 'y', 'yes', 'true' or a number that isn't zero.
+* `minetest.is_nan(arg)`
+ * returns true when the passed number represents NaN.
* `minetest.get_us_time()`
* returns time with microsecond precision. May not return wall time.
* `table.copy(table)`: returns a table
* returns a deep copy of `table`
+* `table.indexof(list, val)`: returns the smallest numerical index containing
+ the value `val` in the table `list`. Non-numerical indices are ignored.
+ If `val` could not be found, `-1` is returned. `list` must not have
+ negative indices.
+* `table.insert_all(table, other_table)`:
+ * Appends all values in `other_table` to `table` - uses `#table + 1` to
+ find new indices.
+* `table.key_value_swap(t)`: returns a table with keys and values swapped
+ * If multiple keys in `t` map to the same value, it is unspecified which
+ value maps to that key.
+* `table.shuffle(table, [from], [to], [random_func])`:
+ * Shuffles elements `from` to `to` in `table` in place
+ * `from` defaults to `1`
+ * `to` defaults to `#table`
+ * `random_func` defaults to `math.random`. This function receives two
+ integers as arguments and should return a random integer inclusively
+ between them.
+* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a
+ position.
+ * returns the exact position on the surface of a pointed node
+* `minetest.get_tool_wear_after_use(uses [, initial_wear])`
+ * Simulates a tool being used once and returns the added wear,
+ such that, if only this function is used to calculate wear,
+ the tool will break exactly after `uses` times of uses
+ * `uses`: Number of times the tool can be used
+ * `initial_wear`: The initial wear the tool starts with (default: 0)
+* `minetest.get_dig_params(groups, tool_capabilities [, wear])`:
+ Simulates an item that digs a node.
+ Returns a table with the following fields:
+ * `diggable`: `true` if node can be dug, `false` otherwise.
+ * `time`: Time it would take to dig the node.
+ * `wear`: How much wear would be added to the tool (ignored for non-tools).
+ `time` and `wear` are meaningless if node's not diggable
+ Parameters:
+ * `groups`: Table of the node groups of the node that would be dug
+ * `tool_capabilities`: Tool capabilities table of the item
+ * `wear`: Amount of wear the tool starts with (default: 0)
+* `minetest.get_hit_params(groups, tool_capabilities [, time_from_last_punch [, wear]])`:
+ Simulates an item that punches an object.
+ Returns a table with the following fields:
+ * `hp`: How much damage the punch would cause (between -65535 and 65535).
+ * `wear`: How much wear would be added to the tool (ignored for non-tools).
+ Parameters:
+ * `groups`: Damage groups of the object
+ * `tool_capabilities`: Tool capabilities table of the item
+ * `time_from_last_punch`: time in seconds since last punch action
+ * `wear`: Amount of wear the item starts with (default: 0)
+
+
+
+
+Translations
+============
+
+Texts can be translated client-side with the help of `minetest.translate` and
+translation files.
+
+Consider using the tool [update_translations](https://github.com/minetest-tools/update_translations)
+to generate and update translation files automatically from the Lua source.
+
+Translating a string
+--------------------
-`minetest` namespace reference
-------------------------------
+Two functions are provided to translate strings: `minetest.translate` and
+`minetest.get_translator`.
+
+* `minetest.get_translator(textdomain)` is a simple wrapper around
+ `minetest.translate`, and `minetest.get_translator(textdomain)(str, ...)` is
+ equivalent to `minetest.translate(textdomain, str, ...)`.
+ It is intended to be used in the following way, so that it avoids verbose
+ repetitions of `minetest.translate`:
+
+ local S = minetest.get_translator(textdomain)
+ S(str, ...)
+
+ As an extra commodity, if `textdomain` is nil, it is assumed to be "" instead.
-### Utilities
+* `minetest.translate(textdomain, str, ...)` translates the string `str` with
+ the given `textdomain` for disambiguation. The textdomain must match the
+ textdomain specified in the translation file in order to get the string
+ translated. This can be used so that a string is translated differently in
+ different contexts.
+ It is advised to use the name of the mod as textdomain whenever possible, to
+ avoid clashes with other mods.
+ This function must be given a number of arguments equal to the number of
+ arguments the translated string expects.
+ Arguments are literal strings -- they will not be translated, so if you want
+ them to be, they need to come as outputs of `minetest.translate` as well.
-* `minetest.get_current_modname()`: returns the currently loading mod's name, when we are loading a mod
-* `minetest.get_modpath(modname)`: returns e.g. `"/home/user/.minetest/usermods/modname"`
- * Useful for loading additional `.lua` modules or static data from mod
-* `minetest.get_modnames()`: returns a list of installed mods
- * Return a list of installed mods, sorted alphabetically
+ For instance, suppose we want to translate "@1 Wool" with "@1" being replaced
+ by the translation of "Red". We can do the following:
+
+ local S = minetest.get_translator()
+ S("@1 Wool", S("Red"))
+
+ This will be displayed as "Red Wool" on old clients and on clients that do
+ not have localization enabled. However, if we have for instance a translation
+ file named `wool.fr.tr` containing the following:
+
+ @1 Wool=Laine @1
+ Red=Rouge
+
+ this will be displayed as "Laine Rouge" on clients with a French locale.
+
+Operations on translated strings
+--------------------------------
+
+The output of `minetest.translate` is a string, with escape sequences adding
+additional information to that string so that it can be translated on the
+different clients. In particular, you can't expect operations like string.length
+to work on them like you would expect them to, or string.gsub to work in the
+expected manner. However, string concatenation will still work as expected
+(note that you should only use this for things like formspecs; do not translate
+sentences by breaking them into parts; arguments should be used instead), and
+operations such as `minetest.colorize` which are also concatenation.
+
+Translation file format
+-----------------------
+
+A translation file has the suffix `.[lang].tr`, where `[lang]` is the language
+it corresponds to. It must be put into the `locale` subdirectory of the mod.
+The file should be a text file, with the following format:
+
+* Lines beginning with `# textdomain:` (the space is significant) can be used
+ to specify the text domain of all following translations in the file.
+* All other empty lines or lines beginning with `#` are ignored.
+* Other lines should be in the format `original=translated`. Both `original`
+ and `translated` can contain escape sequences beginning with `@` to insert
+ arguments, literal `@`, `=` or newline (See [Escapes] below).
+ There must be no extraneous whitespace around the `=` or at the beginning or
+ the end of the line.
+
+Escapes
+-------
+
+Strings that need to be translated can contain several escapes, preceded by `@`.
+
+* `@@` acts as a literal `@`.
+* `@n`, where `n` is a digit between 1 and 9, is an argument for the translated
+ string that will be inlined when translated. Due to how translations are
+ implemented, the original translation string **must** have its arguments in
+ increasing order, without gaps or repetitions, starting from 1.
+* `@=` acts as a literal `=`. It is not required in strings given to
+ `minetest.translate`, but is in translation files to avoid being confused
+ with the `=` separating the original from the translation.
+* `@\n` (where the `\n` is a literal newline) acts as a literal newline.
+ As with `@=`, this escape is not required in strings given to
+ `minetest.translate`, but is in translation files.
+* `@n` acts as a literal newline as well.
+
+Server side translations
+------------------------
+
+On some specific cases, server translation could be useful. For example, filter
+a list on labels and send results to client. A method is supplied to achieve
+that:
+
+`minetest.get_translated_string(lang_code, string)`: Translates `string` using
+translations for `lang_code` language. It gives the same result as if the string
+was translated by the client.
+
+The `lang_code` to use for a given player can be retrieved from
+the table returned by `minetest.get_player_information(name)`.
+
+IMPORTANT: This functionality should only be used for sorting, filtering or similar purposes.
+You do not need to use this to get translated strings to show up on the client.
+
+Perlin noise
+============
+
+Perlin noise creates a continuously-varying value depending on the input values.
+Usually in Minetest the input values are either 2D or 3D co-ordinates in nodes.
+The result is used during map generation to create the terrain shape, vary heat
+and humidity to distribute biomes, vary the density of decorations or vary the
+structure of ores.
+
+Structure of perlin noise
+-------------------------
+
+An 'octave' is a simple noise generator that outputs a value between -1 and 1.
+The smooth wavy noise it generates has a single characteristic scale, almost
+like a 'wavelength', so on its own does not create fine detail.
+Due to this perlin noise combines several octaves to create variation on
+multiple scales. Each additional octave has a smaller 'wavelength' than the
+previous.
+
+This combination results in noise varying very roughly between -2.0 and 2.0 and
+with an average value of 0.0, so `scale` and `offset` are then used to multiply
+and offset the noise variation.
+
+The final perlin noise variation is created as follows:
+
+noise = offset + scale * (octave1 +
+ octave2 * persistence +
+ octave3 * persistence ^ 2 +
+ octave4 * persistence ^ 3 +
+ ...)
+
+Noise Parameters
+----------------
+
+Noise Parameters are commonly called `NoiseParams`.
+
+### `offset`
+
+After the multiplication by `scale` this is added to the result and is the final
+step in creating the noise value.
+Can be positive or negative.
+
+### `scale`
+
+Once all octaves have been combined, the result is multiplied by this.
+Can be positive or negative.
+
+### `spread`
+
+For octave1, this is roughly the change of input value needed for a very large
+variation in the noise value generated by octave1. It is almost like a
+'wavelength' for the wavy noise variation.
+Each additional octave has a 'wavelength' that is smaller than the previous
+octave, to create finer detail. `spread` will therefore roughly be the typical
+size of the largest structures in the final noise variation.
+
+`spread` is a vector with values for x, y, z to allow the noise variation to be
+stretched or compressed in the desired axes.
+Values are positive numbers.
+
+### `seed`
+
+This is a whole number that determines the entire pattern of the noise
+variation. Altering it enables different noise patterns to be created.
+With other parameters equal, different seeds produce different noise patterns
+and identical seeds produce identical noise patterns.
+
+For this parameter you can randomly choose any whole number. Usually it is
+preferable for this to be different from other seeds, but sometimes it is useful
+to be able to create identical noise patterns.
+
+In some noise APIs the world seed is added to the seed specified in noise
+parameters. This is done to make the resulting noise pattern vary in different
+worlds, and be 'world-specific'.
+
+### `octaves`
+
+The number of simple noise generators that are combined.
+A whole number, 1 or more.
+Each additional octave adds finer detail to the noise but also increases the
+noise calculation load.
+3 is a typical minimum for a high quality, complex and natural-looking noise
+variation. 1 octave has a slight 'gridlike' appearance.
+
+Choose the number of octaves according to the `spread` and `lacunarity`, and the
+size of the finest detail you require. For example:
+if `spread` is 512 nodes, `lacunarity` is 2.0 and finest detail required is 16
+nodes, octaves will be 6 because the 'wavelengths' of the octaves will be
+512, 256, 128, 64, 32, 16 nodes.
+Warning: If the 'wavelength' of any octave falls below 1 an error will occur.
+
+### `persistence`
+
+Each additional octave has an amplitude that is the amplitude of the previous
+octave multiplied by `persistence`, to reduce the amplitude of finer details,
+as is often helpful and natural to do so.
+Since this controls the balance of fine detail to large-scale detail
+`persistence` can be thought of as the 'roughness' of the noise.
+
+A positive or negative non-zero number, often between 0.3 and 1.0.
+A common medium value is 0.5, such that each octave has half the amplitude of
+the previous octave.
+This may need to be tuned when altering `lacunarity`; when doing so consider
+that a common medium value is 1 / lacunarity.
+
+### `lacunarity`
+
+Each additional octave has a 'wavelength' that is the 'wavelength' of the
+previous octave multiplied by 1 / lacunarity, to create finer detail.
+'lacunarity' is often 2.0 so 'wavelength' often halves per octave.
+
+A positive number no smaller than 1.0.
+Values below 2.0 create higher quality noise at the expense of requiring more
+octaves to cover a paticular range of 'wavelengths'.
+
+### `flags`
+
+Leave this field unset for no special handling.
+Currently supported are `defaults`, `eased` and `absvalue`:
+
+#### `defaults`
+
+Specify this if you would like to keep auto-selection of eased/not-eased while
+specifying some other flags.
+
+#### `eased`
+
+Maps noise gradient values onto a quintic S-curve before performing
+interpolation. This results in smooth, rolling noise.
+Disable this (`noeased`) for sharp-looking noise with a slightly gridded
+appearence.
+If no flags are specified (or defaults is), 2D noise is eased and 3D noise is
+not eased.
+Easing a 3D noise significantly increases the noise calculation load, so use
+with restraint.
+
+#### `absvalue`
+
+The absolute value of each octave's noise variation is used when combining the
+octaves. The final perlin noise variation is created as follows:
+
+noise = offset + scale * (abs(octave1) +
+ abs(octave2) * persistence +
+ abs(octave3) * persistence ^ 2 +
+ abs(octave4) * persistence ^ 3 +
+ ...)
+
+### Format example
+
+For 2D or 3D perlin noise or perlin noise maps:
+
+ np_terrain = {
+ offset = 0,
+ scale = 1,
+ spread = {x = 500, y = 500, z = 500},
+ seed = 571347,
+ octaves = 5,
+ persistence = 0.63,
+ lacunarity = 2.0,
+ flags = "defaults, absvalue",
+ }
+
+For 2D noise the Z component of `spread` is still defined but is ignored.
+A single noise parameter table can be used for 2D or 3D noise.
+
+
+
+
+Ores
+====
+
+Ore types
+---------
+
+These tell in what manner the ore is generated.
+
+All default ores are of the uniformly-distributed scatter type.
+
+### `scatter`
+
+Randomly chooses a location and generates a cluster of ore.
+
+If `noise_params` is specified, the ore will be placed if the 3D perlin noise
+at that point is greater than the `noise_threshold`, giving the ability to
+create a non-equal distribution of ore.
+
+### `sheet`
+
+Creates a sheet of ore in a blob shape according to the 2D perlin noise
+described by `noise_params` and `noise_threshold`. This is essentially an
+improved version of the so-called "stratus" ore seen in some unofficial mods.
+
+This sheet consists of vertical columns of uniform randomly distributed height,
+varying between the inclusive range `column_height_min` and `column_height_max`.
+If `column_height_min` is not specified, this parameter defaults to 1.
+If `column_height_max` is not specified, this parameter defaults to `clust_size`
+for reverse compatibility. New code should prefer `column_height_max`.
+
+The `column_midpoint_factor` parameter controls the position of the column at
+which ore emanates from.
+If 1, columns grow upward. If 0, columns grow downward. If 0.5, columns grow
+equally starting from each direction.
+`column_midpoint_factor` is a decimal number ranging in value from 0 to 1. If
+this parameter is not specified, the default is 0.5.
+
+The ore parameters `clust_scarcity` and `clust_num_ores` are ignored for this
+ore type.
+
+### `puff`
+
+Creates a sheet of ore in a cloud-like puff shape.
+
+As with the `sheet` ore type, the size and shape of puffs are described by
+`noise_params` and `noise_threshold` and are placed at random vertical
+positions within the currently generated chunk.
+
+The vertical top and bottom displacement of each puff are determined by the
+noise parameters `np_puff_top` and `np_puff_bottom`, respectively.
+
+### `blob`
+
+Creates a deformed sphere of ore according to 3d perlin noise described by
+`noise_params`. The maximum size of the blob is `clust_size`, and
+`clust_scarcity` has the same meaning as with the `scatter` type.
+
+### `vein`
+
+Creates veins of ore varying in density by according to the intersection of two
+instances of 3d perlin noise with different seeds, both described by
+`noise_params`.
+
+`random_factor` varies the influence random chance has on placement of an ore
+inside the vein, which is `1` by default. Note that modifying this parameter
+may require adjusting `noise_threshold`.
+
+The parameters `clust_scarcity`, `clust_num_ores`, and `clust_size` are ignored
+by this ore type.
+
+This ore type is difficult to control since it is sensitive to small changes.
+The following is a decent set of parameters to work from:
+
+ noise_params = {
+ offset = 0,
+ scale = 3,
+ spread = {x=200, y=200, z=200},
+ seed = 5390,
+ octaves = 4,
+ persistence = 0.5,
+ lacunarity = 2.0,
+ flags = "eased",
+ },
+ noise_threshold = 1.6
+
+**WARNING**: Use this ore type *very* sparingly since it is ~200x more
+computationally expensive than any other ore.
+
+### `stratum`
+
+Creates a single undulating ore stratum that is continuous across mapchunk
+borders and horizontally spans the world.
+
+The 2D perlin noise described by `noise_params` defines the Y co-ordinate of
+the stratum midpoint. The 2D perlin noise described by `np_stratum_thickness`
+defines the stratum's vertical thickness (in units of nodes). Due to being
+continuous across mapchunk borders the stratum's vertical thickness is
+unlimited.
+
+If the noise parameter `noise_params` is omitted the ore will occur from y_min
+to y_max in a simple horizontal stratum.
+
+A parameter `stratum_thickness` can be provided instead of the noise parameter
+`np_stratum_thickness`, to create a constant thickness.
+
+Leaving out one or both noise parameters makes the ore generation less
+intensive, useful when adding multiple strata.
+
+`y_min` and `y_max` define the limits of the ore generation and for performance
+reasons should be set as close together as possible but without clipping the
+stratum's Y variation.
+
+Each node in the stratum has a 1-in-`clust_scarcity` chance of being ore, so a
+solid-ore stratum would require a `clust_scarcity` of 1.
+
+The parameters `clust_num_ores`, `clust_size`, `noise_threshold` and
+`random_factor` are ignored by this ore type.
+
+Ore attributes
+--------------
+
+See section [Flag Specifier Format].
+
+Currently supported flags:
+`puff_cliffs`, `puff_additive_composition`.
+
+### `puff_cliffs`
+
+If set, puff ore generation will not taper down large differences in
+displacement when approaching the edge of a puff. This flag has no effect for
+ore types other than `puff`.
+
+### `puff_additive_composition`
+
+By default, when noise described by `np_puff_top` or `np_puff_bottom` results
+in a negative displacement, the sub-column at that point is not generated. With
+this attribute set, puff ore generation will instead generate the absolute
+difference in noise displacement values. This flag has no effect for ore types
+other than `puff`.
+
+
+
+
+Decoration types
+================
+
+The varying types of decorations that can be placed.
+
+`simple`
+--------
+
+Creates a 1 times `H` times 1 column of a specified node (or a random node from
+a list, if a decoration list is specified). Can specify a certain node it must
+spawn next to, such as water or lava, for example. Can also generate a
+decoration of random height between a specified lower and upper bound.
+This type of decoration is intended for placement of grass, flowers, cacti,
+papyri, waterlilies and so on.
+
+`schematic`
+-----------
+
+Copies a box of `MapNodes` from a specified schematic file (or raw description).
+Can specify a probability of a node randomly appearing when placed.
+This decoration type is intended to be used for multi-node sized discrete
+structures, such as trees, cave spikes, rocks, and so on.
+
+
+
+
+Schematics
+==========
+
+Schematic specifier
+--------------------
+
+A schematic specifier identifies a schematic by either a filename to a
+Minetest Schematic file (`.mts`) or through raw data supplied through Lua,
+in the form of a table. This table specifies the following fields:
+
+* The `size` field is a 3D vector containing the dimensions of the provided
+ schematic. (required field)
+* The `yslice_prob` field is a table of {ypos, prob} slice tables. A slice table
+ sets the probability of a particular horizontal slice of the schematic being
+ placed. (optional field)
+ `ypos` = 0 for the lowest horizontal slice of a schematic.
+ The default of `prob` is 255.
+* The `data` field is a flat table of MapNode tables making up the schematic,
+ in the order of `[z [y [x]]]`. (required field)
+ Each MapNode table contains:
+ * `name`: the name of the map node to place (required)
+ * `prob` (alias `param1`): the probability of this node being placed
+ (default: 255)
+ * `param2`: the raw param2 value of the node being placed onto the map
+ (default: 0)
+ * `force_place`: boolean representing if the node should forcibly overwrite
+ any previous contents (default: false)
+
+About probability values:
+
+* A probability value of `0` or `1` means that node will never appear
+ (0% chance).
+* A probability value of `254` or `255` means the node will always appear
+ (100% chance).
+* If the probability value `p` is greater than `1`, then there is a
+ `(p / 256 * 100)` percent chance that node will appear when the schematic is
+ placed on the map.
+
+Schematic attributes
+--------------------
+
+See section [Flag Specifier Format].
+
+Currently supported flags: `place_center_x`, `place_center_y`, `place_center_z`,
+ `force_placement`.
+
+* `place_center_x`: Placement of this decoration is centered along the X axis.
+* `place_center_y`: Placement of this decoration is centered along the Y axis.
+* `place_center_z`: Placement of this decoration is centered along the Z axis.
+* `force_placement`: Schematic nodes other than "ignore" will replace existing
+ nodes.
+
+
+
+
+Lua Voxel Manipulator
+=====================
+
+About VoxelManip
+----------------
+
+VoxelManip is a scripting interface to the internal 'Map Voxel Manipulator'
+facility. The purpose of this object is for fast, low-level, bulk access to
+reading and writing Map content. As such, setting map nodes through VoxelManip
+will lack many of the higher level features and concepts you may be used to
+with other methods of setting nodes. For example, nodes will not have their
+construction and destruction callbacks run, and no rollback information is
+logged.
+
+It is important to note that VoxelManip is designed for speed, and *not* ease
+of use or flexibility. If your mod requires a map manipulation facility that
+will handle 100% of all edge cases, or the use of high level node placement
+features, perhaps `minetest.set_node()` is better suited for the job.
+
+In addition, VoxelManip might not be faster, or could even be slower, for your
+specific use case. VoxelManip is most effective when setting large areas of map
+at once - for example, if only setting a 3x3x3 node area, a
+`minetest.set_node()` loop may be more optimal. Always profile code using both
+methods of map manipulation to determine which is most appropriate for your
+usage.
+
+A recent simple test of setting cubic areas showed that `minetest.set_node()`
+is faster than a VoxelManip for a 3x3x3 node cube or smaller.
+
+Using VoxelManip
+----------------
+
+A VoxelManip object can be created any time using either:
+`VoxelManip([p1, p2])`, or `minetest.get_voxel_manip([p1, p2])`.
+
+If the optional position parameters are present for either of these routines,
+the specified region will be pre-loaded into the VoxelManip object on creation.
+Otherwise, the area of map you wish to manipulate must first be loaded into the
+VoxelManip object using `VoxelManip:read_from_map()`.
+
+Note that `VoxelManip:read_from_map()` returns two position vectors. The region
+formed by these positions indicate the minimum and maximum (respectively)
+positions of the area actually loaded in the VoxelManip, which may be larger
+than the area requested. For convenience, the loaded area coordinates can also
+be queried any time after loading map data with `VoxelManip:get_emerged_area()`.
+
+Now that the VoxelManip object is populated with map data, your mod can fetch a
+copy of this data using either of two methods. `VoxelManip:get_node_at()`,
+which retrieves an individual node in a MapNode formatted table at the position
+requested is the simplest method to use, but also the slowest.
+
+Nodes in a VoxelManip object may also be read in bulk to a flat array table
+using:
+
+* `VoxelManip:get_data()` for node content (in Content ID form, see section
+ [Content IDs]),
+* `VoxelManip:get_light_data()` for node light levels, and
+* `VoxelManip:get_param2_data()` for the node type-dependent "param2" values.
+
+See section [Flat array format] for more details.
+
+It is very important to understand that the tables returned by any of the above
+three functions represent a snapshot of the VoxelManip's internal state at the
+time of the call. This copy of the data will not magically update itself if
+another function modifies the internal VoxelManip state.
+Any functions that modify a VoxelManip's contents work on the VoxelManip's
+internal state unless otherwise explicitly stated.
+
+Once the bulk data has been edited to your liking, the internal VoxelManip
+state can be set using:
+
+* `VoxelManip:set_data()` for node content (in Content ID form, see section
+ [Content IDs]),
+* `VoxelManip:set_light_data()` for node light levels, and
+* `VoxelManip:set_param2_data()` for the node type-dependent `param2` values.
+
+The parameter to each of the above three functions can use any table at all in
+the same flat array format as produced by `get_data()` etc. and is not required
+to be a table retrieved from `get_data()`.
+
+Once the internal VoxelManip state has been modified to your liking, the
+changes can be committed back to the map by calling `VoxelManip:write_to_map()`
+
+### Flat array format
+
+Let
+ `Nx = p2.X - p1.X + 1`,
+ `Ny = p2.Y - p1.Y + 1`, and
+ `Nz = p2.Z - p1.Z + 1`.
+
+Then, for a loaded region of p1..p2, this array ranges from `1` up to and
+including the value of the expression `Nx * Ny * Nz`.
+
+Positions offset from p1 are present in the array with the format of:
+
+ [
+ (0, 0, 0), (1, 0, 0), (2, 0, 0), ... (Nx, 0, 0),
+ (0, 1, 0), (1, 1, 0), (2, 1, 0), ... (Nx, 1, 0),
+ ...
+ (0, Ny, 0), (1, Ny, 0), (2, Ny, 0), ... (Nx, Ny, 0),
+ (0, 0, 1), (1, 0, 1), (2, 0, 1), ... (Nx, 0, 1),
+ ...
+ (0, Ny, 2), (1, Ny, 2), (2, Ny, 2), ... (Nx, Ny, 2),
+ ...
+ (0, Ny, Nz), (1, Ny, Nz), (2, Ny, Nz), ... (Nx, Ny, Nz)
+ ]
+
+and the array index for a position p contained completely in p1..p2 is:
+
+`(p.Z - p1.Z) * Ny * Nx + (p.Y - p1.Y) * Nx + (p.X - p1.X) + 1`
+
+Note that this is the same "flat 3D array" format as
+`PerlinNoiseMap:get3dMap_flat()`.
+VoxelArea objects (see section [`VoxelArea`]) can be used to simplify calculation
+of the index for a single point in a flat VoxelManip array.
+
+### Content IDs
+
+A Content ID is a unique integer identifier for a specific node type.
+These IDs are used by VoxelManip in place of the node name string for
+`VoxelManip:get_data()` and `VoxelManip:set_data()`. You can use
+`minetest.get_content_id()` to look up the Content ID for the specified node
+name, and `minetest.get_name_from_content_id()` to look up the node name string
+for a given Content ID.
+After registration of a node, its Content ID will remain the same throughout
+execution of the mod.
+Note that the node being queried needs to have already been been registered.
+
+The following builtin node types have their Content IDs defined as constants:
+
+* `minetest.CONTENT_UNKNOWN`: ID for "unknown" nodes
+* `minetest.CONTENT_AIR`: ID for "air" nodes
+* `minetest.CONTENT_IGNORE`: ID for "ignore" nodes
+
+### Mapgen VoxelManip objects
+
+Inside of `on_generated()` callbacks, it is possible to retrieve the same
+VoxelManip object used by the core's Map Generator (commonly abbreviated
+Mapgen). Most of the rules previously described still apply but with a few
+differences:
+
+* The Mapgen VoxelManip object is retrieved using:
+ `minetest.get_mapgen_object("voxelmanip")`
+* This VoxelManip object already has the region of map just generated loaded
+ into it; it's not necessary to call `VoxelManip:read_from_map()`.
+ Note that the region of map it has loaded is NOT THE SAME as the `minp`, `maxp`
+ parameters of `on_generated()`. Refer to `minetest.get_mapgen_object` docs.
+* The `on_generated()` callbacks of some mods may place individual nodes in the
+ generated area using non-VoxelManip map modification methods. Because the
+ same Mapgen VoxelManip object is passed through each `on_generated()`
+ callback, it becomes necessary for the Mapgen VoxelManip object to maintain
+ consistency with the current map state. For this reason, calling any of
+ `minetest.add_node()`, `minetest.set_node()` or `minetest.swap_node()`
+ will also update the Mapgen VoxelManip object's internal state active on the
+ current thread.
+* After modifying the Mapgen VoxelManip object's internal buffer, it may be
+ necessary to update lighting information using either:
+ `VoxelManip:calc_lighting()` or `VoxelManip:set_lighting()`.
+
+### Other API functions operating on a VoxelManip
+
+If any VoxelManip contents were set to a liquid node (`liquidtype ~= "none"`),
+`VoxelManip:update_liquids()` must be called for these liquid nodes to begin
+flowing. It is recommended to call this function only after having written all
+buffered data back to the VoxelManip object, save for special situations where
+the modder desires to only have certain liquid nodes begin flowing.
+
+The functions `minetest.generate_ores()` and `minetest.generate_decorations()`
+will generate all registered decorations and ores throughout the full area
+inside of the specified VoxelManip object.
+
+`minetest.place_schematic_on_vmanip()` is otherwise identical to
+`minetest.place_schematic()`, except instead of placing the specified schematic
+directly on the map at the specified position, it will place the schematic
+inside the VoxelManip.
+
+### Notes
+
+* Attempting to read data from a VoxelManip object before map is read will
+ result in a zero-length array table for `VoxelManip:get_data()`, and an
+ "ignore" node at any position for `VoxelManip:get_node_at()`.
+* If either a region of map has not yet been generated or is out-of-bounds of
+ the map, that region is filled with "ignore" nodes.
+* Other mods, or the core itself, could possibly modify the area of map
+ currently loaded into a VoxelManip object. With the exception of Mapgen
+ VoxelManips (see above section), the internal buffers are not updated. For
+ this reason, it is strongly encouraged to complete the usage of a particular
+ VoxelManip object in the same callback it had been created.
+* If a VoxelManip object will be used often, such as in an `on_generated()`
+ callback, consider passing a file-scoped table as the optional parameter to
+ `VoxelManip:get_data()`, which serves as a static buffer the function can use
+ to write map data to instead of returning a new table each call. This greatly
+ enhances performance by avoiding unnecessary memory allocations.
+
+Methods
+-------
+
+* `read_from_map(p1, p2)`: Loads a chunk of map into the VoxelManip object
+ containing the region formed by `p1` and `p2`.
+ * returns actual emerged `pmin`, actual emerged `pmax`
+* `write_to_map([light])`: Writes the data loaded from the `VoxelManip` back to
+ the map.
+ * **important**: data must be set using `VoxelManip:set_data()` before
+ calling this.
+ * if `light` is true, then lighting is automatically recalculated.
+ The default value is true.
+ If `light` is false, no light calculations happen, and you should correct
+ all modified blocks with `minetest.fix_light()` as soon as possible.
+ Keep in mind that modifying the map where light is incorrect can cause
+ more lighting bugs.
+* `get_node_at(pos)`: Returns a `MapNode` table of the node currently loaded in
+ the `VoxelManip` at that position
+* `set_node_at(pos, node)`: Sets a specific `MapNode` in the `VoxelManip` at
+ that position.
+* `get_data([buffer])`: Retrieves the node content data loaded into the
+ `VoxelManip` object.
+ * returns raw node data in the form of an array of node content IDs
+ * if the param `buffer` is present, this table will be used to store the
+ result instead.
+* `set_data(data)`: Sets the data contents of the `VoxelManip` object
+* `update_map()`: Does nothing, kept for compatibility.
+* `set_lighting(light, [p1, p2])`: Set the lighting within the `VoxelManip` to
+ a uniform value.
+ * `light` is a table, `{day=<0...15>, night=<0...15>}`
+ * To be used only by a `VoxelManip` object from
+ `minetest.get_mapgen_object`.
+ * (`p1`, `p2`) is the area in which lighting is set, defaults to the whole
+ area if left out.
+* `get_light_data()`: Gets the light data read into the `VoxelManip` object
+ * Returns an array (indices 1 to volume) of integers ranging from `0` to
+ `255`.
+ * Each value is the bitwise combination of day and night light values
+ (`0` to `15` each).
+ * `light = day + (night * 16)`
+* `set_light_data(light_data)`: Sets the `param1` (light) contents of each node
+ in the `VoxelManip`.
+ * expects lighting data in the same format that `get_light_data()` returns
+* `get_param2_data([buffer])`: Gets the raw `param2` data read into the
+ `VoxelManip` object.
+ * Returns an array (indices 1 to volume) of integers ranging from `0` to
+ `255`.
+ * If the param `buffer` is present, this table will be used to store the
+ result instead.
+* `set_param2_data(param2_data)`: Sets the `param2` contents of each node in
+ the `VoxelManip`.
+* `calc_lighting([p1, p2], [propagate_shadow])`: Calculate lighting within the
+ `VoxelManip`.
+ * To be used only by a `VoxelManip` object from
+ `minetest.get_mapgen_object`.
+ * (`p1`, `p2`) is the area in which lighting is set, defaults to the whole
+ area if left out or nil. For almost all uses these should be left out
+ or nil to use the default.
+ * `propagate_shadow` is an optional boolean deciding whether shadows in a
+ generated mapchunk above are propagated down into the mapchunk, defaults
+ to `true` if left out.
+* `update_liquids()`: Update liquid flow
+* `was_modified()`: Returns `true` or `false` if the data in the voxel
+ manipulator had been modified since the last read from map, due to a call to
+ `minetest.set_data()` on the loaded area elsewhere.
+* `get_emerged_area()`: Returns actual emerged minimum and maximum positions.
+
+`VoxelArea`
+-----------
+
+A helper class for voxel areas.
+It can be created via `VoxelArea:new({MinEdge = pmin, MaxEdge = pmax})`.
+The coordinates are *inclusive*, like most other things in Minetest.
+
+### Methods
+
+* `getExtent()`: returns a 3D vector containing the size of the area formed by
+ `MinEdge` and `MaxEdge`.
+* `getVolume()`: returns the volume of the area formed by `MinEdge` and
+ `MaxEdge`.
+* `index(x, y, z)`: returns the index of an absolute position in a flat array
+ starting at `1`.
+ * `x`, `y` and `z` must be integers to avoid an incorrect index result.
+ * The position (x, y, z) is not checked for being inside the area volume,
+ being outside can cause an incorrect index result.
+ * Useful for things like `VoxelManip`, raw Schematic specifiers,
+ `PerlinNoiseMap:get2d`/`3dMap`, and so on.
+* `indexp(p)`: same functionality as `index(x, y, z)` but takes a vector.
+ * As with `index(x, y, z)`, the components of `p` must be integers, and `p`
+ is not checked for being inside the area volume.
+* `position(i)`: returns the absolute position vector corresponding to index
+ `i`.
+* `contains(x, y, z)`: check if (`x`,`y`,`z`) is inside area formed by
+ `MinEdge` and `MaxEdge`.
+* `containsp(p)`: same as above, except takes a vector
+* `containsi(i)`: same as above, except takes an index `i`
+* `iter(minx, miny, minz, maxx, maxy, maxz)`: returns an iterator that returns
+ indices.
+ * from (`minx`,`miny`,`minz`) to (`maxx`,`maxy`,`maxz`) in the order of
+ `[z [y [x]]]`.
+* `iterp(minp, maxp)`: same as above, except takes a vector
+
+### Y stride and z stride of a flat array
+
+For a particular position in a voxel area, whose flat array index is known,
+it is often useful to know the index of a neighboring or nearby position.
+The table below shows the changes of index required for 1 node movements along
+the axes in a voxel area:
+
+ Movement Change of index
+ +x +1
+ -x -1
+ +y +ystride
+ -y -ystride
+ +z +zstride
+ -z -zstride
+
+If, for example:
+
+ local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax})
+
+The values of `ystride` and `zstride` can be obtained using `area.ystride` and
+`area.zstride`.
+
+
+
+
+Mapgen objects
+==============
+
+A mapgen object is a construct used in map generation. Mapgen objects can be
+used by an `on_generate` callback to speed up operations by avoiding
+unnecessary recalculations, these can be retrieved using the
+`minetest.get_mapgen_object()` function. If the requested Mapgen object is
+unavailable, or `get_mapgen_object()` was called outside of an `on_generate()`
+callback, `nil` is returned.
+
+The following Mapgen objects are currently available:
+
+### `voxelmanip`
+
+This returns three values; the `VoxelManip` object to be used, minimum and
+maximum emerged position, in that order. All mapgens support this object.
+
+### `heightmap`
+
+Returns an array containing the y coordinates of the ground levels of nodes in
+the most recently generated chunk by the current mapgen.
+
+### `biomemap`
+
+Returns an array containing the biome IDs of nodes in the most recently
+generated chunk by the current mapgen.
+
+### `heatmap`
+
+Returns an array containing the temperature values of nodes in the most
+recently generated chunk by the current mapgen.
+
+### `humiditymap`
+
+Returns an array containing the humidity values of nodes in the most recently
+generated chunk by the current mapgen.
+
+### `gennotify`
+
+Returns a table mapping requested generation notification types to arrays of
+positions at which the corresponding generated structures are located within
+the current chunk. To enable the capture of positions of interest to be recorded
+call `minetest.set_gen_notify()` first.
+
+Possible fields of the returned table are:
+
+* `dungeon`: bottom center position of dungeon rooms
+* `temple`: as above but for desert temples (mgv6 only)
+* `cave_begin`
+* `cave_end`
+* `large_cave_begin`
+* `large_cave_end`
+* `decoration#id` (see below)
+
+Decorations have a key in the format of `"decoration#id"`, where `id` is the
+numeric unique decoration ID as returned by `minetest.get_decoration_id()`.
+For example, `decoration#123`.
+
+The returned positions are the ground surface 'place_on' nodes,
+not the decorations themselves. A 'simple' type decoration is often 1
+node above the returned position and possibly displaced by 'place_offset_y'.
+
+
+Registered entities
+===================
+
+Functions receive a "luaentity" table as `self`:
+
+* It has the member `name`, which is the registered name `("mod:thing")`
+* It has the member `object`, which is an `ObjectRef` pointing to the object
+* The original prototype is visible directly via a metatable
+
+Callbacks:
+
+* `on_activate(self, staticdata, dtime_s)`
+ * Called when the object is instantiated.
+ * `dtime_s` is the time passed since the object was unloaded, which can be
+ used for updating the entity state.
+* `on_deactivate(self, removal)`
+ * Called when the object is about to get removed or unloaded.
+ * `removal`: boolean indicating whether the object is about to get removed.
+ Calling `object:remove()` on an active object will call this with `removal=true`.
+ The mapblock the entity resides in being unloaded will call this with `removal=false`.
+ * Note that this won't be called if the object hasn't been activated in the first place.
+ In particular, `minetest.clear_objects({mode = "full"})` won't call this,
+ whereas `minetest.clear_objects({mode = "quick"})` might call this.
+* `on_step(self, dtime, moveresult)`
+ * Called on every server tick, after movement and collision processing.
+ * `dtime`: elapsed time since last call
+ * `moveresult`: table with collision info (only available if physical=true)
+* `on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)`
+ * Called when somebody punches the object.
+ * Note that you probably want to handle most punches using the automatic
+ armor group system.
+ * `puncher`: an `ObjectRef` (can be `nil`)
+ * `time_from_last_punch`: Meant for disallowing spamming of clicks
+ (can be `nil`).
+ * `tool_capabilities`: capability table of used item (can be `nil`)
+ * `dir`: unit vector of direction of punch. Always defined. Points from the
+ puncher to the punched.
+ * `damage`: damage that will be done to entity.
+ * Can return `true` to prevent the default damage mechanism.
+* `on_death(self, killer)`
+ * Called when the object dies.
+ * `killer`: an `ObjectRef` (can be `nil`)
+* `on_rightclick(self, clicker)`
+ * Called when `clicker` pressed the 'place/use' key while pointing
+ to the object (not neccessarily an actual rightclick)
+ * `clicker`: an `ObjectRef` (may or may not be a player)
+* `on_attach_child(self, child)`
+ * `child`: an `ObjectRef` of the child that attaches
+* `on_detach_child(self, child)`
+ * `child`: an `ObjectRef` of the child that detaches
+* `on_detach(self, parent)`
+ * `parent`: an `ObjectRef` (can be `nil`) from where it got detached
+ * This happens before the parent object is removed from the world
+* `get_staticdata(self)`
+ * Should return a string that will be passed to `on_activate` when the
+ object is instantiated the next time.
+
+Collision info passed to `on_step` (`moveresult` argument):
+
+ {
+ touching_ground = boolean,
+ -- Note that touching_ground is only true if the entity was moving and
+ -- collided with ground.
+
+ collides = boolean,
+ standing_on_object = boolean,
+
+ collisions = {
+ {
+ type = string, -- "node" or "object",
+ axis = string, -- "x", "y" or "z"
+ node_pos = vector, -- if type is "node"
+ object = ObjectRef, -- if type is "object"
+ old_velocity = vector,
+ new_velocity = vector,
+ },
+ ...
+ }
+ -- `collisions` does not contain data of unloaded mapblock collisions
+ -- or when the velocity changes are negligibly small
+ }
+
+
+
+L-system trees
+==============
+
+Tree definition
+---------------
+
+ treedef={
+ axiom, --string initial tree axiom
+ rules_a, --string rules set A
+ rules_b, --string rules set B
+ rules_c, --string rules set C
+ rules_d, --string rules set D
+ trunk, --string trunk node name
+ leaves, --string leaves node name
+ leaves2, --string secondary leaves node name
+ leaves2_chance,--num chance (0-100) to replace leaves with leaves2
+ angle, --num angle in deg
+ iterations, --num max # of iterations, usually 2 -5
+ random_level, --num factor to lower nr of iterations, usually 0 - 3
+ trunk_type, --string single/double/crossed) type of trunk: 1 node,
+ -- 2x2 nodes or 3x3 in cross shape
+ thin_branches, --boolean true -> use thin (1 node) branches
+ fruit, --string fruit node name
+ fruit_chance, --num chance (0-100) to replace leaves with fruit node
+ seed, --num random seed, if no seed is provided, the engine
+ will create one.
+ }
+
+Key for special L-System symbols used in axioms
+-----------------------------------------------
+
+* `G`: move forward one unit with the pen up
+* `F`: move forward one unit with the pen down drawing trunks and branches
+* `f`: move forward one unit with the pen down drawing leaves (100% chance)
+* `T`: move forward one unit with the pen down drawing trunks only
+* `R`: move forward one unit with the pen down placing fruit
+* `A`: replace with rules set A
+* `B`: replace with rules set B
+* `C`: replace with rules set C
+* `D`: replace with rules set D
+* `a`: replace with rules set A, chance 90%
+* `b`: replace with rules set B, chance 80%
+* `c`: replace with rules set C, chance 70%
+* `d`: replace with rules set D, chance 60%
+* `+`: yaw the turtle right by `angle` parameter
+* `-`: yaw the turtle left by `angle` parameter
+* `&`: pitch the turtle down by `angle` parameter
+* `^`: pitch the turtle up by `angle` parameter
+* `/`: roll the turtle to the right by `angle` parameter
+* `*`: roll the turtle to the left by `angle` parameter
+* `[`: save in stack current state info
+* `]`: recover from stack state info
+
+Example
+-------
+
+Spawn a small apple tree:
+
+ pos = {x=230,y=20,z=4}
+ apple_tree={
+ axiom="FFFFFAFFBF",
+ rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
+ rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
+ trunk="default:tree",
+ leaves="default:leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true,
+ fruit_chance=10,
+ fruit="default:apple"
+ }
+ minetest.spawn_tree(pos,apple_tree)
+
+
+Privileges
+==========
+
+Privileges provide a means for server administrators to give certain players
+access to special abilities in the engine, games or mods.
+For example, game moderators may need to travel instantly to any place in the world,
+this ability is implemented in `/teleport` command which requires `teleport` privilege.
+
+Registering privileges
+----------------------
+
+A mod can register a custom privilege using `minetest.register_privilege` function
+to give server administrators fine-grained access control over mod functionality.
+
+For consistency and practical reasons, privileges should strictly increase the abilities of the user.
+Do not register custom privileges that e.g. restrict the player from certain in-game actions.
+
+Checking privileges
+-------------------
+
+A mod can call `minetest.check_player_privs` to test whether a player has privileges
+to perform an operation.
+Also, when registering a chat command with `minetest.register_chatcommand` a mod can
+declare privileges that the command requires using the `privs` field of the command
+definition.
+
+Managing player privileges
+--------------------------
+
+A mod can update player privileges using `minetest.set_player_privs` function.
+Players holding the `privs` privilege can see and manage privileges for all
+players on the server.
+
+A mod can subscribe to changes in player privileges using `minetest.register_on_priv_grant`
+and `minetest.register_on_priv_revoke` functions.
+
+Built-in privileges
+-------------------
+
+Minetest includes a set of built-in privileges that control capabilities
+provided by the Minetest engine and can be used by mods:
+
+ * Basic privileges are normally granted to all players:
+ * `shout`: can communicate using the in-game chat.
+ * `interact`: can modify the world by digging, building and interacting
+ with the nodes, entities and other players. Players without the `interact`
+ privilege can only travel and observe the world.
+
+ * Advanced privileges allow bypassing certain aspects of the gameplay:
+ * `fast`: can use "fast mode" to move with maximum speed.
+ * `fly`: can use "fly mode" to move freely above the ground without falling.
+ * `noclip`: can use "noclip mode" to fly through solid nodes (e.g. walls).
+ * `teleport`: can use `/teleport` command to move to any point in the world.
+ * `creative`: can access creative inventory.
+ * `bring`: can teleport other players to oneself.
+ * `give`: can use `/give` and `/giveme` commands to give any item
+ in the game to oneself or others.
+ * `settime`: can use `/time` command to change current in-game time.
+ * `debug`: can enable wireframe rendering mode.
+
+ * Security-related privileges:
+ * `privs`: can modify privileges of the players using `/grant[me]` and
+ `/revoke[me]` commands.
+ * `basic_privs`: can grant and revoke basic privileges as defined by
+ the `basic_privs` setting.
+ * `kick`: can kick other players from the server using `/kick` command.
+ * `ban`: can ban other players using `/ban` command.
+ * `password`: can use `/setpassword` and `/clearpassword` commands
+ to manage players' passwords.
+ * `protection_bypass`: can bypass node protection. Note that the engine does not act upon this privilege,
+ it is only an implementation suggestion for games.
+
+ * Administrative privileges:
+ * `server`: can use `/fixlight`, `/deleteblocks` and `/deleteobjects`
+ commands. Can clear inventory of other players using `/clearinv` command.
+ * `rollback`: can use `/rollback_check` and `/rollback` commands.
+
+Related settings
+----------------
+
+Minetest includes the following settings to control behavior of privileges:
+
+ * `default_privs`: defines privileges granted to new players.
+ * `basic_privs`: defines privileges that can be granted/revoked by players having
+ the `basic_privs` privilege. This can be used, for example, to give
+ limited moderation powers to selected users.
+
+'minetest' namespace reference
+==============================
+
+Utilities
+---------
+
+* `minetest.get_current_modname()`: returns the currently loading mod's name,
+ when loading a mod.
+* `minetest.get_modpath(modname)`: returns the directory path for a mod,
+ e.g. `"/home/user/.minetest/usermods/modname"`.
+ * Returns nil if the mod is not enabled or does not exist (not installed).
+ * Works regardless of whether the mod has been loaded yet.
+ * Useful for loading additional `.lua` modules or static data from a mod,
+ or checking if a mod is enabled.
+* `minetest.get_modnames()`: returns a list of enabled mods, sorted alphabetically.
+ * Does not include disabled mods, even if they are installed.
* `minetest.get_worldpath()`: returns e.g. `"/home/user/.minetest/world"`
* Useful for storing custom data
* `minetest.is_singleplayer()`
-* `minetest.features`
- * Table containing API feature flags: `{foo=true, bar=true}`
+* `minetest.features`: Table containing API feature flags
+
+ {
+ glasslike_framed = true, -- 0.4.7
+ nodebox_as_selectionbox = true, -- 0.4.7
+ get_all_craft_recipes_works = true, -- 0.4.7
+ -- The transparency channel of textures can optionally be used on
+ -- nodes (0.4.7)
+ use_texture_alpha = true,
+ -- Tree and grass ABMs are no longer done from C++ (0.4.8)
+ no_legacy_abms = true,
+ -- Texture grouping is possible using parentheses (0.4.11)
+ texture_names_parens = true,
+ -- Unique Area ID for AreaStore:insert_area (0.4.14)
+ area_store_custom_ids = true,
+ -- add_entity supports passing initial staticdata to on_activate
+ -- (0.4.16)
+ add_entity_with_staticdata = true,
+ -- Chat messages are no longer predicted (0.4.16)
+ no_chat_message_prediction = true,
+ -- The transparency channel of textures can optionally be used on
+ -- objects (ie: players and lua entities) (5.0.0)
+ object_use_texture_alpha = true,
+ -- Object selectionbox is settable independently from collisionbox
+ -- (5.0.0)
+ object_independent_selectionbox = true,
+ -- Specifies whether binary data can be uploaded or downloaded using
+ -- the HTTP API (5.1.0)
+ httpfetch_binary_data = true,
+ -- Whether formspec_version[<version>] may be used (5.1.0)
+ formspec_version_element = true,
+ -- Whether AreaStore's IDs are kept on save/load (5.1.0)
+ area_store_persistent_ids = true,
+ -- Whether minetest.find_path is functional (5.2.0)
+ pathfinder_works = true,
+ -- Whether Collision info is available to an objects' on_step (5.3.0)
+ object_step_has_moveresult = true,
+ -- Whether get_velocity() and add_velocity() can be used on players (5.4.0)
+ direct_velocity_on_players = true,
+ -- nodedef's use_texture_alpha accepts new string modes (5.4.0)
+ use_texture_alpha_string_modes = true,
+ -- degrotate param2 rotates in units of 1.5° instead of 2°
+ -- thus changing the range of values from 0-179 to 0-240 (5.5.0)
+ degrotate_240_steps = true,
+ -- ABM supports min_y and max_y fields in definition (5.5.0)
+ abm_min_max_y = true,
+ -- dynamic_add_media supports passing a table with options (5.5.0)
+ dynamic_add_media_table = true,
+ -- particlespawners support texpools and animation of properties,
+ -- particle textures support smooth fade and scale animations, and
+ -- sprite-sheet particle animations can by synced to the lifetime
+ -- of individual particles (5.6.0)
+ particlespawner_tweenable = true,
+ -- allows get_sky to return a table instead of separate values (5.6.0)
+ get_sky_as_table = true,
+ }
+
* `minetest.has_feature(arg)`: returns `boolean, missing_features`
* `arg`: string or table in format `{foo=true, bar=true}`
* `missing_features`: `{foo=true, bar=true}`
-* `minetest.get_player_information(player_name)`: returns a table containing
- information about player. Example return value:
- {
- address = "127.0.0.1", -- IP address of client
- ip_version = 4, -- IPv4 / IPv6
- min_rtt = 0.01, -- minimum round trip time
- max_rtt = 0.2, -- maximum round trip time
- avg_rtt = 0.02, -- average round trip time
- min_jitter = 0.01, -- minimum packet time jitter
- max_jitter = 0.5, -- maximum packet time jitter
- avg_jitter = 0.03, -- average packet time jitter
- connection_uptime = 200, -- seconds since client connected
-
- -- following information is available on debug build only!!!
- -- DO NOT USE IN MODS
- --ser_vers = 26, -- serialization version used by client
- --prot_vers = 23, -- protocol version used by client
- --major = 0, -- major version number
- --minor = 4, -- minor version number
- --patch = 10, -- patch version number
- --vers_string = "0.4.9-git", -- full version string
- --state = "Active" -- current client state
- }
+* `minetest.get_player_information(player_name)`: Table containing information
+ about a player. Example return value:
+
+ {
+ address = "127.0.0.1", -- IP address of client
+ ip_version = 4, -- IPv4 / IPv6
+ connection_uptime = 200, -- seconds since client connected
+ protocol_version = 32, -- protocol version used by client
+ formspec_version = 2, -- supported formspec version
+ lang_code = "fr" -- Language code used for translation
+ -- the following keys can be missing if no stats have been collected yet
+ min_rtt = 0.01, -- minimum round trip time
+ max_rtt = 0.2, -- maximum round trip time
+ avg_rtt = 0.02, -- average round trip time
+ min_jitter = 0.01, -- minimum packet time jitter
+ max_jitter = 0.5, -- maximum packet time jitter
+ avg_jitter = 0.03, -- average packet time jitter
+ -- the following information is available in a debug build only!!!
+ -- DO NOT USE IN MODS
+ --ser_vers = 26, -- serialization version used by client
+ --major = 0, -- major version number
+ --minor = 4, -- minor version number
+ --patch = 10, -- patch version number
+ --vers_string = "0.4.9-git", -- full version string
+ --state = "Active" -- current client state
+ }
+
* `minetest.mkdir(path)`: returns success.
* Creates a directory specified by `path`, creating parent directories
if they don't exist.
+* `minetest.rmdir(path, recursive)`: returns success.
+ * Removes a directory specified by `path`.
+ * If `recursive` is set to `true`, the directory is recursively removed.
+ Otherwise, the directory will only be removed if it is empty.
+ * Returns true on success, false on failure.
+* `minetest.cpdir(source, destination)`: returns success.
+ * Copies a directory specified by `path` to `destination`
+ * Any files in `destination` will be overwritten if they already exist.
+ * Returns true on success, false on failure.
+* `minetest.mvdir(source, destination)`: returns success.
+ * Moves a directory specified by `path` to `destination`.
+ * If the `destination` is a non-empty directory, then the move will fail.
+ * Returns true on success, false on failure.
* `minetest.get_dir_list(path, [is_dir])`: returns list of entry names
* is_dir is one of:
- * nil: return all entries,
- * true: return only subdirectory names, or
- * false: return only file names.
+ * nil: return all entries,
+ * true: return only subdirectory names, or
+ * false: return only file names.
+* `minetest.safe_file_write(path, content)`: returns boolean indicating success
+ * Replaces contents of file at path with new contents in a safe (atomic)
+ way. Use this instead of below code when writing e.g. database files:
+ `local f = io.open(path, "wb"); f:write(content); f:close()`
* `minetest.get_version()`: returns a table containing components of the
engine version. Components:
* `project`: Name of the project, eg, "Minetest"
* `string`: Simple version, eg, "1.2.3-dev"
- * `hash`: Full git version (only set if available), eg, "1.2.3-dev-01234567-dirty"
+ * `hash`: Full git version (only set if available),
+ eg, "1.2.3-dev-01234567-dirty".
+ * `is_dev`: Boolean value indicating whether it's a development build
Use this for informational purposes only. The information in the returned
table does not represent the capabilities of the engine, nor is it
- reliable or verifyable. Compatible forks will have a different name and
+ reliable or verifiable. Compatible forks will have a different name and
version entirely. To check for the presence of engine features, test
whether the functions exported by the wanted features exist. For example:
- `if core.nodeupdate then ... end`.
+ `if minetest.check_for_falling then ... end`.
+* `minetest.sha1(data, [raw])`: returns the sha1 hash of data
+ * `data`: string of data to hash
+ * `raw`: return raw bytes instead of hex digits, default: false
+* `minetest.colorspec_to_colorstring(colorspec)`: Converts a ColorSpec to a
+ ColorString. If the ColorSpec is invalid, returns `nil`.
+ * `colorspec`: The ColorSpec to convert
+* `minetest.colorspec_to_bytes(colorspec)`: Converts a ColorSpec to a raw
+ string of four bytes in an RGBA layout, returned as a string.
+ * `colorspec`: The ColorSpec to convert
+* `minetest.encode_png(width, height, data, [compression])`: Encode a PNG
+ image and return it in string form.
+ * `width`: Width of the image
+ * `height`: Height of the image
+ * `data`: Image data, one of:
+ * array table of ColorSpec, length must be width*height
+ * string with raw RGBA pixels, length must be width*height*4
+ * `compression`: Optional zlib compression level, number in range 0 to 9.
+ The data is one-dimensional, starting in the upper left corner of the image
+ and laid out in scanlines going from left to right, then top to bottom.
+ Please note that it's not safe to use string.char to generate raw data,
+ use `colorspec_to_bytes` to generate raw RGBA values in a predictable way.
+ The resulting PNG image is always 32-bit. Palettes are not supported at the moment.
+ You may use this to procedurally generate textures during server init.
+
+Logging
+-------
-### Logging
* `minetest.debug(...)`
* Equivalent to `minetest.log(table.concat({...}, "\t"))`
* `minetest.log([level,] text)`
* `level` is one of `"none"`, `"error"`, `"warning"`, `"action"`,
`"info"`, or `"verbose"`. Default is `"none"`.
-### Registration functions
+Registration functions
+----------------------
+
Call these functions only at load time!
-* `minetest.register_entity(name, prototype table)`
-* `minetest.register_abm(abm definition)`
-* `minetest.register_lbm(lbm definition)`
+### Environment
+
* `minetest.register_node(name, node definition)`
-* `minetest.register_tool(name, item definition)`
* `minetest.register_craftitem(name, item definition)`
+* `minetest.register_tool(name, item definition)`
+* `minetest.override_item(name, redefinition)`
+ * Overrides fields of an item registered with register_node/tool/craftitem.
+ * Note: Item must already be defined, (opt)depend on the mod defining it.
+ * Example: `minetest.override_item("default:mese",
+ {light_source=minetest.LIGHT_MAX})`
* `minetest.unregister_item(name)`
-* `minetest.register_alias(name, convert_to)`
-* `minetest.register_alias_force(name, convert_to)`
-* `minetest.register_craft(recipe)`
- * Check recipe table syntax for different types below.
-* `minetest.clear_craft(recipe)`
- * Will erase existing craft based either on output item or on input recipe.
- * Specify either output or input only. If you specify both, input will be ignored. For input use the same recipe table
- syntax as for `minetest.register_craft(recipe)`. For output specify only the item, without a quantity.
- * If no erase candidate could be found, Lua exception will be thrown.
- * Warning! The type field ("shaped","cooking" or any other) will be ignored if the recipe
- contains output. Erasing is then done independently from the crafting method.
+ * Unregisters the item from the engine, and deletes the entry with key
+ `name` from `minetest.registered_items` and from the associated item table
+ according to its nature: `minetest.registered_nodes`, etc.
+* `minetest.register_entity(name, entity definition)`
+* `minetest.register_abm(abm definition)`
+* `minetest.register_lbm(lbm definition)`
+* `minetest.register_alias(alias, original_name)`
+ * Also use this to set the 'mapgen aliases' needed in a game for the core
+ mapgens. See [Mapgen aliases] section above.
+* `minetest.register_alias_force(alias, original_name)`
* `minetest.register_ore(ore definition)`
+ * Returns an integer object handle uniquely identifying the registered
+ ore on success.
+ * The order of ore registrations determines the order of ore generation.
* `minetest.register_biome(biome definition)`
+ * Returns an integer object handle uniquely identifying the registered
+ biome on success. To get the biome ID, use `minetest.get_biome_id`.
+* `minetest.unregister_biome(name)`
+ * Unregisters the biome from the engine, and deletes the entry with key
+ `name` from `minetest.registered_biomes`.
+ * Warning: This alters the biome to biome ID correspondences, so any
+ decorations or ores using the 'biomes' field must afterwards be cleared
+ and re-registered.
* `minetest.register_decoration(decoration definition)`
-* `minetest.override_item(name, redefinition)`
- * Overrides fields of an item registered with register_node/tool/craftitem.
- * Note: Item must already be defined, (opt)depend on the mod defining it.
- * Example: `minetest.override_item("default:mese", {light_source=LIGHT_MAX})`
-* `minetest.clear_registered_ores()`
+ * Returns an integer object handle uniquely identifying the registered
+ decoration on success. To get the decoration ID, use
+ `minetest.get_decoration_id`.
+ * The order of decoration registrations determines the order of decoration
+ generation.
+* `minetest.register_schematic(schematic definition)`
+ * Returns an integer object handle uniquely identifying the registered
+ schematic on success.
+ * If the schematic is loaded from a file, the `name` field is set to the
+ filename.
+ * If the function is called when loading the mod, and `name` is a relative
+ path, then the current mod path will be prepended to the schematic
+ filename.
* `minetest.clear_registered_biomes()`
+ * Clears all biomes currently registered.
+ * Warning: Clearing and re-registering biomes alters the biome to biome ID
+ correspondences, so any decorations or ores using the 'biomes' field must
+ afterwards be cleared and re-registered.
* `minetest.clear_registered_decorations()`
+ * Clears all decorations currently registered.
+* `minetest.clear_registered_ores()`
+ * Clears all ores currently registered.
+* `minetest.clear_registered_schematics()`
+ * Clears all schematics currently registered.
+
+### Gameplay
+
+* `minetest.register_craft(recipe)`
+ * Check recipe table syntax for different types below.
+* `minetest.clear_craft(recipe)`
+ * Will erase existing craft based either on output item or on input recipe.
+ * Specify either output or input only. If you specify both, input will be
+ ignored. For input use the same recipe table syntax as for
+ `minetest.register_craft(recipe)`. For output specify only the item,
+ without a quantity.
+ * Returns false if no erase candidate could be found, otherwise returns true.
+ * **Warning**! The type field ("shaped", "cooking" or any other) will be
+ ignored if the recipe contains output. Erasing is then done independently
+ from the crafting method.
+* `minetest.register_chatcommand(cmd, chatcommand definition)`
+* `minetest.override_chatcommand(name, redefinition)`
+ * Overrides fields of a chatcommand registered with `register_chatcommand`.
+* `minetest.unregister_chatcommand(name)`
+ * Unregisters a chatcommands registered with `register_chatcommand`.
+* `minetest.register_privilege(name, definition)`
+ * `definition` can be a description or a definition table (see [Privilege
+ definition]).
+ * If it is a description, the priv will be granted to singleplayer and admin
+ by default.
+ * To allow players with `basic_privs` to grant, see the `basic_privs`
+ minetest.conf setting.
+* `minetest.register_authentication_handler(authentication handler definition)`
+ * Registers an auth handler that overrides the builtin one.
+ * This function can be called by a single mod once only.
+
+Global callback registration functions
+--------------------------------------
-### Global callback registration functions
Call these functions only at load time!
-* `minetest.register_globalstep(func(dtime))`
+* `minetest.register_globalstep(function(dtime))`
* Called every server step, usually interval of 0.1s
-* `minetest.register_on_shutdown(func())`
+* `minetest.register_on_mods_loaded(function())`
+ * Called after mods have finished loading and before the media is cached or the
+ aliases handled.
+* `minetest.register_on_shutdown(function())`
* Called before server shutdown
- * **Warning**: If the server terminates abnormally (i.e. crashes), the registered
- callbacks **will likely not be run**. Data should be saved at
+ * **Warning**: If the server terminates abnormally (i.e. crashes), the
+ registered callbacks **will likely not be run**. Data should be saved at
semi-frequent intervals as well as on server shutdown.
-* `minetest.register_on_placenode(func(pos, newnode, placer, oldnode, itemstack, pointed_thing))`
+* `minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing))`
* Called when a node has been placed
* If return `true` no item is taken from `itemstack`
- * **Not recommended**; use `on_construct` or `after_place_node` in node definition
- whenever possible
-* `minetest.register_on_dignode(func(pos, oldnode, digger))`
+ * `placer` may be any valid ObjectRef or nil.
+ * **Not recommended**; use `on_construct` or `after_place_node` in node
+ definition whenever possible.
+* `minetest.register_on_dignode(function(pos, oldnode, digger))`
* Called when a node has been dug.
- * **Not recommended**; Use `on_destruct` or `after_dig_node` in node definition
- whenever possible
-* `minetest.register_on_punchnode(func(pos, node, puncher, pointed_thing))`
- * Called when a node is punched
-* `minetest.register_on_generated(func(minp, maxp, blockseed))`
- * Called after generating a piece of world. Modifying nodes inside the area
- is a bit faster than usually.
-* `minetest.register_on_newplayer(func(ObjectRef))`
- * Called after a new player has been created
-* `minetest.register_on_dieplayer(func(ObjectRef))`
- * Called when a player dies
-* `minetest.register_on_punchplayer(func(player, hitter, time_from_last_punch, tool_capabilities, dir, damage))`
- * Called when a player is punched
- * `player` - ObjectRef - Player that was punched
- * `hitter` - ObjectRef - Player that hit
- * `time_from_last_punch`: Meant for disallowing spamming of clicks (can be nil)
- * `tool_capabilities`: capability table of used tool (can be nil)
- * `dir`: unit vector of direction of punch. Always defined. Points from
- the puncher to the punched.
- * `damage` - number that represents the damage calculated by the engine
- * should return `true` to prevent the default damage mechanism
-* `minetest.register_on_player_hpchange(func(player, hp_change), modifier)`
+ * **Not recommended**; Use `on_destruct` or `after_dig_node` in node
+ definition whenever possible.
+* `minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing))`
+ * Called when a node is punched
+* `minetest.register_on_generated(function(minp, maxp, blockseed))`
+ * Called after generating a piece of world. Modifying nodes inside the area
+ is a bit faster than usual.
+* `minetest.register_on_newplayer(function(ObjectRef))`
+ * Called when a new player enters the world for the first time
+* `minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage))`
+ * Called when a player is punched
+ * Note: This callback is invoked even if the punched player is dead.
+ * `player`: ObjectRef - Player that was punched
+ * `hitter`: ObjectRef - Player that hit
+ * `time_from_last_punch`: Meant for disallowing spamming of clicks
+ (can be nil).
+ * `tool_capabilities`: Capability table of used item (can be nil)
+ * `dir`: Unit vector of direction of punch. Always defined. Points from
+ the puncher to the punched.
+ * `damage`: Number that represents the damage calculated by the engine
+ * should return `true` to prevent the default damage mechanism
+* `minetest.register_on_rightclickplayer(function(player, clicker))`
+ * Called when the 'place/use' key was used while pointing a player
+ (not neccessarily an actual rightclick)
+ * `player`: ObjectRef - Player that is acted upon
+ * `clicker`: ObjectRef - Object that acted upon `player`, may or may not be a player
+* `minetest.register_on_player_hpchange(function(player, hp_change, reason), modifier)`
* Called when the player gets damaged or healed
* `player`: ObjectRef of the player
* `hp_change`: the amount of change. Negative when it is damage.
- * `modifier`: when true, the function should return the actual hp_change.
- Note: modifiers only get a temporary hp_change that can be modified by later modifiers.
- modifiers can return true as a second argument to stop the execution of further functions.
- Non-modifiers receive the final hp change calculated by the modifiers.
-* `minetest.register_on_respawnplayer(func(ObjectRef))`
- * Called when player is to be respawned
- * Called _before_ repositioning of player occurs
- * return true in func to disable regular player placement
-* `minetest.register_on_prejoinplayer(func(name, ip))`
- * Called before a player joins the game
- * If it returns a string, the player is disconnected with that string as reason
-* `minetest.register_on_joinplayer(func(ObjectRef))`
+ * `reason`: a PlayerHPChangeReason table.
+ * The `type` field will have one of the following values:
+ * `set_hp`: A mod or the engine called `set_hp` without
+ giving a type - use this for custom damage types.
+ * `punch`: Was punched. `reason.object` will hold the puncher, or nil if none.
+ * `fall`
+ * `node_damage`: `damage_per_second` from a neighbouring node.
+ `reason.node` will hold the node name or nil.
+ * `drown`
+ * `respawn`
+ * Any of the above types may have additional fields from mods.
+ * `reason.from` will be `mod` or `engine`.
+ * `modifier`: when true, the function should return the actual `hp_change`.
+ Note: modifiers only get a temporary `hp_change` that can be modified by later modifiers.
+ Modifiers can return true as a second argument to stop the execution of further functions.
+ Non-modifiers receive the final HP change calculated by the modifiers.
+* `minetest.register_on_dieplayer(function(ObjectRef, reason))`
+ * Called when a player dies
+ * `reason`: a PlayerHPChangeReason table, see register_on_player_hpchange
+* `minetest.register_on_respawnplayer(function(ObjectRef))`
+ * Called when player is to be respawned
+ * Called _before_ repositioning of player occurs
+ * return true in func to disable regular player placement
+* `minetest.register_on_prejoinplayer(function(name, ip))`
+ * Called when a client connects to the server, prior to authentication
+ * If it returns a string, the client is disconnected with that string as
+ reason.
+* `minetest.register_on_joinplayer(function(ObjectRef, last_login))`
* Called when a player joins the game
-* `minetest.register_on_leaveplayer(func(ObjectRef, timed_out))`
+ * `last_login`: The timestamp of the previous login, or nil if player is new
+* `minetest.register_on_leaveplayer(function(ObjectRef, timed_out))`
* Called when a player leaves the game
* `timed_out`: True for timeout, false for other reasons.
-* `minetest.register_on_cheat(func(ObjectRef, cheat))`
+* `minetest.register_on_authplayer(function(name, ip, is_success))`
+ * Called when a client attempts to log into an account.
+ * `name`: The name of the account being authenticated.
+ * `ip`: The IP address of the client
+ * `is_success`: Whether the client was successfully authenticated
+ * For newly registered accounts, `is_success` will always be true
+* `minetest.register_on_auth_fail(function(name, ip))`
+ * Deprecated: use `minetest.register_on_authplayer(name, ip, is_success)` instead.
+* `minetest.register_on_cheat(function(ObjectRef, cheat))`
* Called when a player cheats
* `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of:
- * `"moved_too_fast"`
- * `"interacted_too_far"`
- * `"finished_unknown_dig"`
+ * `moved_too_fast`
+ * `interacted_too_far`
+ * `interacted_with_self`
+ * `interacted_while_dead`
+ * `finished_unknown_dig`
* `dug_unbreakable`
* `dug_too_fast`
-* `minetest.register_on_chat_message(func(name, message))`
+* `minetest.register_on_chat_message(function(name, message))`
* Called always when a player says something
- * Return `true` to mark the message as handled, which means that it will not be sent to other players
-* `minetest.register_on_player_receive_fields(func(player, formname, fields))`
- * Called when a button is pressed in player's inventory form
+ * Return `true` to mark the message as handled, which means that it will
+ not be sent to other players.
+* `minetest.register_on_chatcommand(function(name, command, params))`
+ * Called always when a chatcommand is triggered, before `minetest.registered_chatcommands`
+ is checked to see if the command exists, but after the input is parsed.
+ * Return `true` to mark the command as handled, which means that the default
+ handlers will be prevented.
+* `minetest.register_on_player_receive_fields(function(player, formname, fields))`
+ * Called when the server received input from `player` in a formspec with
+ the given `formname`. Specifically, this is called on any of the
+ following events:
+ * a button was pressed,
+ * Enter was pressed while the focus was on a text field
+ * a checkbox was toggled,
+ * something was selected in a dropdown list,
+ * a different tab was selected,
+ * selection was changed in a textlist or table,
+ * an entry was double-clicked in a textlist or table,
+ * a scrollbar was moved, or
+ * the form was actively closed by the player.
+ * Fields are sent for formspec elements which define a field. `fields`
+ is a table containing each formspecs element value (as string), with
+ the `name` parameter as index for each. The value depends on the
+ formspec element type:
+ * `animated_image`: Returns the index of the current frame.
+ * `button` and variants: If pressed, contains the user-facing button
+ text as value. If not pressed, is `nil`
+ * `field`, `textarea` and variants: Text in the field
+ * `dropdown`: Either the index or value, depending on the `index event`
+ dropdown argument.
+ * `tabheader`: Tab index, starting with `"1"` (only if tab changed)
+ * `checkbox`: `"true"` if checked, `"false"` if unchecked
+ * `textlist`: See `minetest.explode_textlist_event`
+ * `table`: See `minetest.explode_table_event`
+ * `scrollbar`: See `minetest.explode_scrollbar_event`
+ * Special case: `["quit"]="true"` is sent when the user actively
+ closed the form by mouse click, keypress or through a button_exit[]
+ element.
+ * Special case: `["key_enter"]="true"` is sent when the user pressed
+ the Enter key and the focus was either nowhere (causing the formspec
+ to be closed) or on a button. If the focus was on a text field,
+ additionally, the index `key_enter_field` contains the name of the
+ text field. See also: `field_close_on_enter`.
* Newest functions are called first
* If function returns `true`, remaining functions are not called
-* `minetest.register_on_craft(func(itemstack, player, old_craft_grid, craft_inv))`
+* `minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv))`
* Called when `player` crafts something
* `itemstack` is the output
- * `old_craft_grid` contains the recipe (Note: the one in the inventory is cleared)
+ * `old_craft_grid` contains the recipe (Note: the one in the inventory is
+ cleared).
* `craft_inv` is the inventory with the crafting grid
- * Return either an `ItemStack`, to replace the output, or `nil`, to not modify it
-* `minetest.register_craft_predict(func(itemstack, player, old_craft_grid, craft_inv))`
- * The same as before, except that it is called before the player crafts, to make
- craft prediction, and it should not change anything.
-* `minetest.register_on_protection_violation(func(pos, name))`
- * Called by `builtin` and mods when a player violates protection at a position
- (eg, digs a node or punches a protected entity).
- * The registered functions can be called using `minetest.record_protection_violation`
- * The provided function should check that the position is protected by the mod
- calling this function before it prints a message, if it does, to allow for
- multiple protection mods.
-* `minetest.register_on_item_eat(func(hp_change, replace_with_item, itemstack, user, pointed_thing))`
+ * Return either an `ItemStack`, to replace the output, or `nil`, to not
+ modify it.
+* `minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv))`
+ * The same as before, except that it is called before the player crafts, to
+ make craft prediction, and it should not change anything.
+* `minetest.register_allow_player_inventory_action(function(player, action, inventory, inventory_info))`
+ * Determines how much of a stack may be taken, put or moved to a
+ player inventory.
+ * `player` (type `ObjectRef`) is the player who modified the inventory
+ `inventory` (type `InvRef`).
+ * List of possible `action` (string) values and their
+ `inventory_info` (table) contents:
+ * `move`: `{from_list=string, to_list=string, from_index=number, to_index=number, count=number}`
+ * `put`: `{listname=string, index=number, stack=ItemStack}`
+ * `take`: Same as `put`
+ * Return a numeric value to limit the amount of items to be taken, put or
+ moved. A value of `-1` for `take` will make the source stack infinite.
+* `minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info))`
+ * Called after a take, put or move event from/to/in a player inventory
+ * Function arguments: see `minetest.register_allow_player_inventory_action`
+ * Does not accept or handle any return value.
+* `minetest.register_on_protection_violation(function(pos, name))`
+ * Called by `builtin` and mods when a player violates protection at a
+ position (eg, digs a node or punches a protected entity).
+ * The registered functions can be called using
+ `minetest.record_protection_violation`.
+ * The provided function should check that the position is protected by the
+ mod calling this function before it prints a message, if it does, to
+ allow for multiple protection mods.
+* `minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, user, pointed_thing))`
* Called when an item is eaten, by `minetest.item_eat`
- * Return `true` or `itemstack` to cancel the default item eat response (i.e.: hp increase)
+ * Return `itemstack` to cancel the default item eat response (i.e.: hp increase).
+* `minetest.register_on_priv_grant(function(name, granter, priv))`
+ * Called when `granter` grants the priv `priv` to `name`.
+ * Note that the callback will be called twice if it's done by a player,
+ once with granter being the player name, and again with granter being nil.
+* `minetest.register_on_priv_revoke(function(name, revoker, priv))`
+ * Called when `revoker` revokes the priv `priv` from `name`.
+ * Note that the callback will be called twice if it's done by a player,
+ once with revoker being the player name, and again with revoker being nil.
+* `minetest.register_can_bypass_userlimit(function(name, ip))`
+ * Called when `name` user connects with `ip`.
+ * Return `true` to by pass the player limit
+* `minetest.register_on_modchannel_message(function(channel_name, sender, message))`
+ * Called when an incoming mod channel message is received
+ * You should have joined some channels to receive events.
+ * If message comes from a server mod, `sender` field is an empty string.
+* `minetest.register_on_liquid_transformed(function(pos_list, node_list))`
+ * Called after liquid nodes (`liquidtype ~= "none"`) are modified by the
+ engine's liquid transformation process.
+ * `pos_list` is an array of all modified positions.
+ * `node_list` is an array of the old node that was previously at the position
+ with the corresponding index in pos_list.
+
+Setting-related
+---------------
+
+* `minetest.settings`: Settings object containing all of the settings from the
+ main config file (`minetest.conf`).
+* `minetest.setting_get_pos(name)`: Loads a setting from the main settings and
+ parses it as a position (in the format `(1,2,3)`). Returns a position or nil.
+
+Authentication
+--------------
+
+* `minetest.string_to_privs(str[, delim])`:
+ * Converts string representation of privs into table form
+ * `delim`: String separating the privs. Defaults to `","`.
+ * Returns `{ priv1 = true, ... }`
+* `minetest.privs_to_string(privs[, delim])`:
+ * Returns the string representation of `privs`
+ * `delim`: String to delimit privs. Defaults to `","`.
+* `minetest.get_player_privs(name) -> {priv1=true,...}`
+* `minetest.check_player_privs(player_or_name, ...)`:
+ returns `bool, missing_privs`
+ * A quickhand for checking privileges.
+ * `player_or_name`: Either a Player object or the name of a player.
+ * `...` is either a list of strings, e.g. `"priva", "privb"` or
+ a table, e.g. `{ priva = true, privb = true }`.
-### Other registration functions
-* `minetest.register_chatcommand(cmd, chatcommand definition)`
-* `minetest.register_privilege(name, definition)`
- * `definition`: `"description text"`
- * `definition`: `{ description = "description text", give_to_singleplayer = boolean}`
- the default of `give_to_singleplayer` is true
- * To allow players with basic_privs to grant, see basic_privs minetest.conf setting.
-* `minetest.register_authentication_handler(handler)`
- * See `minetest.builtin_auth_handler` in `builtin.lua` for reference
-
-### Setting-related
-* `minetest.setting_set(name, value)`
- * Setting names can't contain whitespace or any of `="{}#`.
- * Setting values can't contain the sequence `\n"""`.
- * Setting names starting with "secure." can't be set.
-* `minetest.setting_get(name)`: returns string or `nil`
-* `minetest.setting_setbool(name, value)`
- * See documentation on `setting_set` for restrictions.
-* `minetest.setting_getbool(name)`: returns boolean or `nil`
-* `minetest.setting_get_pos(name)`: returns position or nil
-* `minetest.setting_save()`, returns `nil`, save all settings to config file
-
-### Authentication
-* `minetest.notify_authentication_modified(name)`
- * Should be called by the authentication handler if privileges changes.
- * To report everybody, set `name=nil`.
* `minetest.check_password_entry(name, entry, password)`
- * Returns true if the "db entry" for a player with name matches given
- * password, false otherwise.
- * The "db entry" is the usually player-individual value that is derived
- * from the player's chosen password and stored on the server in order to allow
- * authentication whenever the player desires to log in.
- * Only use this function for making it possible to log in via the password from
- * via protocols like IRC, other uses for inside the game are frowned upon.
+ * Returns true if the "password entry" for a player with name matches given
+ password, false otherwise.
+ * The "password entry" is the password representation generated by the
+ engine as returned as part of a `get_auth()` call on the auth handler.
+ * Only use this function for making it possible to log in via password from
+ external protocols such as IRC, other uses are frowned upon.
* `minetest.get_password_hash(name, raw_password)`
* Convert a name-password pair to a password hash that Minetest can use.
* The returned value alone is not a good basis for password checks based
- * on comparing the password hash in the database with the password hash
- * from the function, with an externally provided password, as the hash
- * in the db might use the new SRP verifier format.
- * For this purpose, use minetest.check_password_entry instead.
-* `minetest.string_to_privs(str)`: returns `{priv1=true,...}`
-* `minetest.privs_to_string(privs)`: returns `"priv1,priv2,..."`
- * Convert between two privilege representations
-* `minetest.set_player_password(name, password_hash)`
-* `minetest.set_player_privs(name, {priv1=true,...})`
-* `minetest.get_player_privs(name) -> {priv1=true,...}`
+ on comparing the password hash in the database with the password hash
+ from the function, with an externally provided password, as the hash
+ in the db might use the new SRP verifier format.
+ * For this purpose, use `minetest.check_password_entry` instead.
+* `minetest.get_player_ip(name)`: returns an IP address string for the player
+ `name`.
+ * The player needs to be online for this to be successful.
+
+* `minetest.get_auth_handler()`: Return the currently active auth handler
+ * See the [Authentication handler definition]
+ * Use this to e.g. get the authentication data for a player:
+ `local auth_data = minetest.get_auth_handler().get_auth(playername)`
+* `minetest.notify_authentication_modified(name)`
+ * Must be called by the authentication handler for privilege changes.
+ * `name`: string; if omitted, all auth data should be considered modified
+* `minetest.set_player_password(name, password_hash)`: Set password hash of
+ player `name`.
+* `minetest.set_player_privs(name, {priv1=true,...})`: Set privileges of player
+ `name`.
* `minetest.auth_reload()`
-* `minetest.check_player_privs(player_or_name, ...)`: returns `bool, missing_privs`
- * A quickhand for checking privileges.
- * `player_or_name`: Either a Player object or the name of a player.
- * `...` is either a list of strings, e.g. `"priva", "privb"` or
- a table, e.g. `{ priva = true, privb = true }`.
-* `minetest.get_player_ip(name)`: returns an IP address string
+ * See `reload()` in authentication handler definition
-`minetest.set_player_password`, `minetest_set_player_privs`, `minetest_get_player_privs`
-and `minetest.auth_reload` call the authetification handler.
+`minetest.set_player_password`, `minetest.set_player_privs`,
+`minetest.get_player_privs` and `minetest.auth_reload` call the authentication
+handler.
+
+Chat
+----
-### Chat
* `minetest.chat_send_all(text)`
* `minetest.chat_send_player(name, text)`
+* `minetest.format_chat_message(name, message)`
+ * Used by the server to format a chat message, based on the setting `chat_message_format`.
+ Refer to the documentation of the setting for a list of valid placeholders.
+ * Takes player name and message, and returns the formatted string to be sent to players.
+ * Can be redefined by mods if required, for things like colored names or messages.
+ * **Only** the first occurrence of each placeholder will be replaced.
+
+Environment access
+------------------
-### Environment access
* `minetest.set_node(pos, node)`
-* `minetest.add_node(pos, node): alias set_node(pos, node)`
- * Set node at position (`node = {name="foo", param1=0, param2=0}`)
-* `minetest.swap_node(pos, node`
+* `minetest.add_node(pos, node)`: alias to `minetest.set_node`
+ * Set node at position `pos`
+ * `node`: table `{name=string, param1=number, param2=number}`
+ * If param1 or param2 is omitted, it's set to `0`.
+ * e.g. `minetest.set_node({x=0, y=10, z=0}, {name="default:wood"})`
+* `minetest.bulk_set_node({pos1, pos2, pos3, ...}, node)`
+ * Set node on all positions set in the first argument.
+ * e.g. `minetest.bulk_set_node({{x=0, y=1, z=1}, {x=1, y=2, z=2}}, {name="default:stone"})`
+ * For node specification or position syntax see `minetest.set_node` call
+ * Faster than set_node due to single call, but still considerably slower
+ than Lua Voxel Manipulators (LVM) for large numbers of nodes.
+ Unlike LVMs, this will call node callbacks. It also allows setting nodes
+ in spread out positions which would cause LVMs to waste memory.
+ For setting a cube, this is 1.3x faster than set_node whereas LVM is 20
+ times faster.
+* `minetest.swap_node(pos, node)`
* Set node at position, but don't remove metadata
* `minetest.remove_node(pos)`
- * Equivalent to `set_node(pos, "air")`
+ * By default it does the same as `minetest.set_node(pos, {name="air"})`
* `minetest.get_node(pos)`
* Returns the node at the given position as table in the format
- `{name="node_name", param1=0, param2=0}`, returns `{name="ignore", param1=0, param2=0}`
- for unloaded areas.
+ `{name="node_name", param1=0, param2=0}`,
+ returns `{name="ignore", param1=0, param2=0}` for unloaded areas.
* `minetest.get_node_or_nil(pos)`
* Same as `get_node` but returns `nil` for unloaded areas.
* `minetest.get_node_light(pos, timeofday)`
@@ -2135,6 +5382,22 @@ and `minetest.auth_reload` call the authetification handler.
* `pos`: The position where to measure the light.
* `timeofday`: `nil` for current time, `0` for night, `0.5` for day
* Returns a number between `0` and `15` or `nil`
+ * `nil` is returned e.g. when the map isn't loaded at `pos`
+* `minetest.get_natural_light(pos[, timeofday])`
+ * Figures out the sunlight (or moonlight) value at pos at the given time of
+ day.
+ * `pos`: The position of the node
+ * `timeofday`: `nil` for current time, `0` for night, `0.5` for day
+ * Returns a number between `0` and `15` or `nil`
+ * This function tests 203 nodes in the worst case, which happens very
+ unlikely
+* `minetest.get_artificial_light(param1)`
+ * Calculates the artificial light (light from e.g. torches) value from the
+ `param1` value.
+ * `param1`: The param1 value of a `paramtype = "light"` node.
+ * Returns a number between `0` and `15`
+ * Currently it's the same as `math.floor(param1 / 16)`, except that it
+ ensures compatibility.
* `minetest.place_node(pos, node)`
* Place node with the same effects that a player would cause
* `minetest.dig_node(pos)`
@@ -2142,139 +5405,235 @@ and `minetest.auth_reload` call the authetification handler.
* Returns `true` if successful, `false` on failure (e.g. protected location)
* `minetest.punch_node(pos)`
* Punch node with the same effects that a player would cause
+* `minetest.spawn_falling_node(pos)`
+ * Change node into falling node
+ * Returns `true` and the ObjectRef of the spawned entity if successful, `false` on failure
* `minetest.find_nodes_with_meta(pos1, pos2)`
- * Get a table of positions of nodes that have metadata within a region {pos1, pos2}
+ * Get a table of positions of nodes that have metadata within a region
+ {pos1, pos2}.
* `minetest.get_meta(pos)`
* Get a `NodeMetaRef` at that position
* `minetest.get_node_timer(pos)`
* Get `NodeTimerRef`
-* `minetest.add_entity(pos, name)`: Spawn Lua-defined entity at position
+* `minetest.add_entity(pos, name, [staticdata])`: Spawn Lua-defined entity at
+ position.
* Returns `ObjectRef`, or `nil` if failed
* `minetest.add_item(pos, item)`: Spawn item
* Returns `ObjectRef`, or `nil` if failed
* `minetest.get_player_by_name(name)`: Get an `ObjectRef` to a player
-* `minetest.get_objects_inside_radius(pos, radius)`
+* `minetest.get_objects_inside_radius(pos, radius)`: returns a list of
+ ObjectRefs.
* `radius`: using an euclidean metric
+* `minetest.get_objects_in_area(pos1, pos2)`: returns a list of
+ ObjectRefs.
+ * `pos1` and `pos2` are the min and max positions of the area to search.
* `minetest.set_timeofday(val)`
* `val` is between `0` and `1`; `0` for midnight, `0.5` for midday
* `minetest.get_timeofday()`
-* `minetest.get_gametime()`: returns the time, in seconds, since the world was created
-* `minetest.get_day_count()`: returns number days elapsed since world was created,
- * accounting for time changes.
-* `minetest.find_node_near(pos, radius, nodenames)`: returns pos or `nil`
+* `minetest.get_gametime()`: returns the time, in seconds, since the world was
+ created.
+* `minetest.get_day_count()`: returns number days elapsed since world was
+ created.
+ * accounts for time changes.
+* `minetest.find_node_near(pos, radius, nodenames, [search_center])`: returns
+ pos or `nil`.
* `radius`: using a maximum metric
* `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
-* `minetest.find_nodes_in_area(minp, maxp, nodenames)`: returns a list of positions
- * returns as second value a table with the count of the individual nodes found
+ * `search_center` is an optional boolean (default: `false`)
+ If true `pos` is also checked for the nodes
+* `minetest.find_nodes_in_area(pos1, pos2, nodenames, [grouped])`
+ * `pos1` and `pos2` are the min and max positions of the area to search.
* `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
-* `minetest.find_nodes_in_area_under_air(minp, maxp, nodenames)`: returns a list of positions
- * returned positions are nodes with a node air above
+ * If `grouped` is true the return value is a table indexed by node name
+ which contains lists of positions.
+ * If `grouped` is false or absent the return values are as follows:
+ first value: Table with all node positions
+ second value: Table with the count of each node with the node name
+ as index
+ * Area volume is limited to 4,096,000 nodes
+* `minetest.find_nodes_in_area_under_air(pos1, pos2, nodenames)`: returns a
+ list of positions.
* `nodenames`: e.g. `{"ignore", "group:tree"}` or `"default:dirt"`
+ * Return value: Table with all node positions with a node air above
+ * Area volume is limited to 4,096,000 nodes
* `minetest.get_perlin(noiseparams)`
-* `minetest.get_perlin(seeddiff, octaves, persistence, scale)`
- * Return world-specific perlin noise (`int(worldseed)+seeddiff`)
+ * Return world-specific perlin noise.
+ * The actual seed used is the noiseparams seed plus the world seed.
+* `minetest.get_perlin(seeddiff, octaves, persistence, spread)`
+ * Deprecated: use `minetest.get_perlin(noiseparams)` instead.
+ * Return world-specific perlin noise.
* `minetest.get_voxel_manip([pos1, pos2])`
* Return voxel manipulator object.
* Loads the manipulator from the map if positions are passed.
* `minetest.set_gen_notify(flags, {deco_ids})`
- * Set the types of on-generate notifications that should be collected
- * `flags` is a flag field with the available flags: `dungeon`, `temple`, `cave_begin`,
- `cave_end`, `large_cave_begin`, `large_cave_end`, `decoration`
- * The second parameter is a list of IDS of decorations which notification is requested for
-* `get_gen_notify()`: returns a flagstring and a table with the deco_ids
+ * Set the types of on-generate notifications that should be collected.
+ * `flags` is a flag field with the available flags:
+ * dungeon
+ * temple
+ * cave_begin
+ * cave_end
+ * large_cave_begin
+ * large_cave_end
+ * decoration
+ * The second parameter is a list of IDs of decorations which notification
+ is requested for.
+* `minetest.get_gen_notify()`
+ * Returns a flagstring and a table with the `deco_id`s.
+* `minetest.get_decoration_id(decoration_name)`
+ * Returns the decoration ID number for the provided decoration name string,
+ or `nil` on failure.
* `minetest.get_mapgen_object(objectname)`
- * Return requested mapgen object if available (see "Mapgen objects")
+ * Return requested mapgen object if available (see [Mapgen objects])
+* `minetest.get_heat(pos)`
+ * Returns the heat at the position, or `nil` on failure.
+* `minetest.get_humidity(pos)`
+ * Returns the humidity at the position, or `nil` on failure.
+* `minetest.get_biome_data(pos)`
+ * Returns a table containing:
+ * `biome` the biome id of the biome at that position
+ * `heat` the heat at the position
+ * `humidity` the humidity at the position
+ * Or returns `nil` on failure.
* `minetest.get_biome_id(biome_name)`
- * Returns the biome id, as used in the biomemap Mapgen object, for a
- given biome_name string.
-* `minetest.get_mapgen_params()` Returns mapgen parameters, a table containing
- `mgname`, `seed`, `chunksize`, `water_level`, and `flags`.
- * Deprecated: use minetest.get_mapgen_setting(name) instead
+ * Returns the biome id, as used in the biomemap Mapgen object and returned
+ by `minetest.get_biome_data(pos)`, for a given biome_name string.
+* `minetest.get_biome_name(biome_id)`
+ * Returns the biome name string for the provided biome id, or `nil` on
+ failure.
+ * If no biomes have been registered, such as in mgv6, returns `default`.
+* `minetest.get_mapgen_params()`
+ * Deprecated: use `minetest.get_mapgen_setting(name)` instead.
+ * Returns a table containing:
+ * `mgname`
+ * `seed`
+ * `chunksize`
+ * `water_level`
+ * `flags`
* `minetest.set_mapgen_params(MapgenParams)`
- * Deprecated: use minetest.set_mapgen_setting(name, value, override) instead
- * Set map generation parameters
- * Function cannot be called after the registration period; only initialization
- and `on_mapgen_init`
- * Takes a table as an argument with the fields `mgname`, `seed`, `water_level`,
- and `flags`.
- * Leave field unset to leave that parameter unchanged
- * `flags` contains a comma-delimited string of flags to set,
- or if the prefix `"no"` is attached, clears instead.
- * `flags` is in the same format and has the same options as `mg_flags` in `minetest.conf`
+ * Deprecated: use `minetest.set_mapgen_setting(name, value, override)`
+ instead.
+ * Set map generation parameters.
+ * Function cannot be called after the registration period.
+ * Takes a table as an argument with the fields:
+ * `mgname`
+ * `seed`
+ * `chunksize`
+ * `water_level`
+ * `flags`
+ * Leave field unset to leave that parameter unchanged.
+ * `flags` contains a comma-delimited string of flags to set, or if the
+ prefix `"no"` is attached, clears instead.
+ * `flags` is in the same format and has the same options as `mg_flags` in
+ `minetest.conf`.
* `minetest.get_mapgen_setting(name)`
- * Gets the *active* mapgen setting (or nil if none exists) in string format with the following
- order of precedence:
- 1) Settings loaded from map_meta.txt or overrides set during mod execution
+ * Gets the *active* mapgen setting (or nil if none exists) in string
+ format with the following order of precedence:
+ 1) Settings loaded from map_meta.txt or overrides set during mod
+ execution.
2) Settings set by mods without a metafile override
3) Settings explicitly set in the user config file, minetest.conf
4) Settings set as the user config default
* `minetest.get_mapgen_setting_noiseparams(name)`
- * Same as above, but returns the value as a NoiseParams table if the setting `name` exists
- and is a valid NoiseParams
+ * Same as above, but returns the value as a NoiseParams table if the
+ setting `name` exists and is a valid NoiseParams.
* `minetest.set_mapgen_setting(name, value, [override_meta])`
- * Sets a mapgen param to `value`, and will take effect if the corresponding mapgen setting
- is not already present in map_meta.txt.
- * `override_meta` is an optional boolean (default: `false`). If this is set to true,
- the setting will become the active setting regardless of the map metafile contents.
- * Note: to set the seed, use "seed", not "fixed_map_seed"
+ * Sets a mapgen param to `value`, and will take effect if the corresponding
+ mapgen setting is not already present in map_meta.txt.
+ * `override_meta` is an optional boolean (default: `false`). If this is set
+ to true, the setting will become the active setting regardless of the map
+ metafile contents.
+ * Note: to set the seed, use `"seed"`, not `"fixed_map_seed"`.
* `minetest.set_mapgen_setting_noiseparams(name, value, [override_meta])`
- * Same as above, except value is a NoiseParams table.
+ * Same as above, except value is a NoiseParams table.
* `minetest.set_noiseparams(name, noiseparams, set_default)`
- * Sets the noiseparams setting of `name` to the noiseparams table specified in `noiseparams`.
- * `set_default` is an optional boolean (default: `true`) that specifies whether the setting
- should be applied to the default config or current active config
-* `minetest.get_noiseparams(name)`: returns a table of the noiseparams for name
+ * Sets the noiseparams setting of `name` to the noiseparams table specified
+ in `noiseparams`.
+ * `set_default` is an optional boolean (default: `true`) that specifies
+ whether the setting should be applied to the default config or current
+ active config.
+* `minetest.get_noiseparams(name)`
+ * Returns a table of the noiseparams for name.
* `minetest.generate_ores(vm, pos1, pos2)`
- * Generate all registered ores within the VoxelManip `vm` and in the area from `pos1` to `pos2`.
+ * Generate all registered ores within the VoxelManip `vm` and in the area
+ from `pos1` to `pos2`.
* `pos1` and `pos2` are optional and default to mapchunk minp and maxp.
* `minetest.generate_decorations(vm, pos1, pos2)`
- * Generate all registered decorations within the VoxelManip `vm` and in the area from `pos1` to `pos2`.
+ * Generate all registered decorations within the VoxelManip `vm` and in the
+ area from `pos1` to `pos2`.
* `pos1` and `pos2` are optional and default to mapchunk minp and maxp.
* `minetest.clear_objects([options])`
* Clear all objects in the environment
* Takes an optional table as an argument with the field `mode`.
- * mode = `"full"`: Load and go through every mapblock, clearing objects (default).
- * mode = `"quick"`: Clear objects immediately in loaded mapblocks;
- clear objects in unloaded mapblocks only when the mapblocks are next activated.
+ * mode = `"full"` : Load and go through every mapblock, clearing
+ objects (default).
+ * mode = `"quick"`: Clear objects immediately in loaded mapblocks,
+ clear objects in unloaded mapblocks only when the
+ mapblocks are next activated.
+* `minetest.load_area(pos1[, pos2])`
+ * Load the mapblocks containing the area from `pos1` to `pos2`.
+ `pos2` defaults to `pos1` if not specified.
+ * This function does not trigger map generation.
* `minetest.emerge_area(pos1, pos2, [callback], [param])`
- * Queue all blocks in the area from `pos1` to `pos2`, inclusive, to be asynchronously
- * fetched from memory, loaded from disk, or if inexistent, generates them.
- * If `callback` is a valid Lua function, this will be called for each block emerged.
+ * Queue all blocks in the area from `pos1` to `pos2`, inclusive, to be
+ asynchronously fetched from memory, loaded from disk, or if inexistent,
+ generates them.
+ * If `callback` is a valid Lua function, this will be called for each block
+ emerged.
* The function signature of callback is:
- * `function EmergeAreaCallback(blockpos, action, calls_remaining, param)`
- * - `blockpos` is the *block* coordinates of the block that had been emerged
- * - `action` could be one of the following constant values:
- * `core.EMERGE_CANCELLED`, `core.EMERGE_ERRORED`, `core.EMERGE_FROM_MEMORY`,
- * `core.EMERGE_FROM_DISK`, `core.EMERGE_GENERATED`
- * - `calls_remaining` is the number of callbacks to be expected after this one
- * - `param` is the user-defined parameter passed to emerge_area (or nil if the
- * parameter was absent)
+ `function EmergeAreaCallback(blockpos, action, calls_remaining, param)`
+ * `blockpos` is the *block* coordinates of the block that had been
+ emerged.
+ * `action` could be one of the following constant values:
+ * `minetest.EMERGE_CANCELLED`
+ * `minetest.EMERGE_ERRORED`
+ * `minetest.EMERGE_FROM_MEMORY`
+ * `minetest.EMERGE_FROM_DISK`
+ * `minetest.EMERGE_GENERATED`
+ * `calls_remaining` is the number of callbacks to be expected after
+ this one.
+ * `param` is the user-defined parameter passed to emerge_area (or
+ nil if the parameter was absent).
* `minetest.delete_area(pos1, pos2)`
* delete all mapblocks in the area from pos1 to pos2, inclusive
-* `minetest.line_of_sight(pos1, pos2, stepsize)`: returns `boolean, pos`
- * Check if there is a direct line of sight between `pos1` and `pos2`
+* `minetest.line_of_sight(pos1, pos2)`: returns `boolean, pos`
+ * Checks if there is anything other than air between pos1 and pos2.
+ * Returns false if something is blocking the sight.
* Returns the position of the blocking node when `false`
* `pos1`: First position
* `pos2`: Second position
- * `stepsize`: smaller gives more accurate results but requires more computing
- time. Default is `1`.
+* `minetest.raycast(pos1, pos2, objects, liquids)`: returns `Raycast`
+ * Creates a `Raycast` object.
+ * `pos1`: start of the ray
+ * `pos2`: end of the ray
+ * `objects`: if false, only nodes will be returned. Default is `true`.
+ * `liquids`: if false, liquid nodes (`liquidtype ~= "none"`) won't be
+ returned. Default is `false`.
* `minetest.find_path(pos1,pos2,searchdistance,max_jump,max_drop,algorithm)`
- * returns table containing path
- * returns a table of 3D points representing a path from `pos1` to `pos2` or `nil`
+ * returns table containing path that can be walked on
+ * returns a table of 3D points representing a path from `pos1` to `pos2` or
+ `nil` on failure.
+ * Reasons for failure:
+ * No path exists at all
+ * No path exists within `searchdistance` (see below)
+ * Start or end pos is buried in land
* `pos1`: start position
* `pos2`: end position
- * `searchdistance`: number of blocks to search in each direction using a maximum metric
+ * `searchdistance`: maximum distance from the search positions to search in.
+ In detail: Path must be completely inside a cuboid. The minimum
+ `searchdistance` of 1 will confine search between `pos1` and `pos2`.
+ Larger values will increase the size of this cuboid in all directions
* `max_jump`: maximum height difference to consider walkable
* `max_drop`: maximum height difference to consider droppable
- * `algorithm`: One of `"A*_noprefetch"` (default), `"A*"`, `"Dijkstra"`
+ * `algorithm`: One of `"A*_noprefetch"` (default), `"A*"`, `"Dijkstra"`.
+ Difference between `"A*"` and `"A*_noprefetch"` is that
+ `"A*"` will pre-calculate the cost-data, the other will calculate it
+ on-the-fly
* `minetest.spawn_tree (pos, {treedef})`
* spawns L-system tree at given `pos` with definition in `treedef` table
- * Warning: L-system generation currently creates lighting bugs in the form of mapblock-sized shadows.
- Often these bugs appear as subtle shadows in water.
* `minetest.transforming_liquid_add(pos)`
- * add node to liquid update queue
+ * add node to liquid flow update queue
* `minetest.get_node_max_level(pos)`
* get max available level for leveled node
* `minetest.get_node_level(pos)`
@@ -2285,41 +5644,107 @@ and `minetest.auth_reload` call the authetification handler.
* `minetest.add_node_level(pos, level)`
* increase level of leveled node by level, default `level` equals `1`
* if `totallevel > maxlevel`, returns rest (`total-max`)
- * can be negative for decreasing
+ * `level` must be between -127 and 127
+* `minetest.fix_light(pos1, pos2)`: returns `true`/`false`
+ * resets the light in a cuboid-shaped part of
+ the map and removes lighting bugs.
+ * Loads the area if it is not loaded.
+ * `pos1` is the corner of the cuboid with the least coordinates
+ (in node coordinates), inclusive.
+ * `pos2` is the opposite corner of the cuboid, inclusive.
+ * The actual updated cuboid might be larger than the specified one,
+ because only whole map blocks can be updated.
+ The actual updated area consists of those map blocks that intersect
+ with the given cuboid.
+ * However, the neighborhood of the updated area might change
+ as well, as light can spread out of the cuboid, also light
+ might be removed.
+ * returns `false` if the area is not fully generated,
+ `true` otherwise
+* `minetest.check_single_for_falling(pos)`
+ * causes an unsupported `group:falling_node` node to fall and causes an
+ unattached `group:attached_node` node to fall.
+ * does not spread these updates to neighbours.
+* `minetest.check_for_falling(pos)`
+ * causes an unsupported `group:falling_node` node to fall and causes an
+ unattached `group:attached_node` node to fall.
+ * spread these updates to neighbours and can cause a cascade
+ of nodes to fall.
+* `minetest.get_spawn_level(x, z)`
+ * Returns a player spawn y co-ordinate for the provided (x, z)
+ co-ordinates, or `nil` for an unsuitable spawn point.
+ * For most mapgens a 'suitable spawn point' is one with y between
+ `water_level` and `water_level + 16`, and in mgv7 well away from rivers,
+ so `nil` will be returned for many (x, z) co-ordinates.
+ * The spawn level returned is for a player spawn in unmodified terrain.
+ * The spawn level is intentionally above terrain level to cope with
+ full-node biome 'dust' nodes.
+
+Mod channels
+------------
+
+You can find mod channels communication scheme in `doc/mod_channels.png`.
+
+* `minetest.mod_channel_join(channel_name)`
+ * Server joins channel `channel_name`, and creates it if necessary. You
+ should listen for incoming messages with
+ `minetest.register_on_modchannel_message`
+
+Inventory
+---------
-### Inventory
`minetest.get_inventory(location)`: returns an `InvRef`
* `location` = e.g.
* `{type="player", name="celeron55"}`
* `{type="node", pos={x=, y=, z=}}`
* `{type="detached", name="creative"}`
-* `minetest.create_detached_inventory(name, callbacks)`: returns an `InvRef`
- * callbacks: See "Detached inventory callbacks"
+* `minetest.create_detached_inventory(name, callbacks, [player_name])`: returns
+ an `InvRef`.
+ * `callbacks`: See [Detached inventory callbacks]
+ * `player_name`: Make detached inventory available to one player
+ exclusively, by default they will be sent to every player (even if not
+ used).
+ Note that this parameter is mostly just a workaround and will be removed
+ in future releases.
* Creates a detached inventory. If it already exists, it is cleared.
+* `minetest.remove_detached_inventory(name)`
+ * Returns a `boolean` indicating whether the removal succeeded.
* `minetest.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed_thing)`:
- returns left over ItemStack
+ returns leftover ItemStack or nil to indicate no inventory change
* See `minetest.item_eat` and `minetest.register_on_item_eat`
-### Formspec
+Formspec
+--------
+
* `minetest.show_formspec(playername, formname, formspec)`
* `playername`: name of player to show formspec
* `formname`: name passed to `on_player_receive_fields` callbacks.
It should follow the `"modname:<whatever>"` naming convention
* `formspec`: formspec to display
+* `minetest.close_formspec(playername, formname)`
+ * `playername`: name of player to close formspec
+ * `formname`: has to exactly match the one given in `show_formspec`, or the
+ formspec will not close.
+ * calling `show_formspec(playername, formname, "")` is equal to this
+ expression.
+ * to close a formspec regardless of the formname, call
+ `minetest.close_formspec(playername, "")`.
+ **USE THIS ONLY WHEN ABSOLUTELY NECESSARY!**
* `minetest.formspec_escape(string)`: returns a string
- * escapes the characters "[", "]", "\", "," and ";", which can not be used in formspecs
+ * escapes the characters "[", "]", "\", "," and ";", which can not be used
+ in formspecs.
* `minetest.explode_table_event(string)`: returns a table
* returns e.g. `{type="CHG", row=1, column=2}`
* `type` is one of:
- * `"INV"`: no row selected)
- * `"CHG"`: selected)
+ * `"INV"`: no row selected
+ * `"CHG"`: selected
* `"DCL"`: double-click
* `minetest.explode_textlist_event(string)`: returns a table
* returns e.g. `{type="CHG", index=1}`
* `type` is one of:
- * `"INV"`: no row selected)
- * `"CHG"`: selected)
+ * `"INV"`: no row selected
+ * `"CHG"`: selected
* `"DCL"`: double-click
* `minetest.explode_scrollbar_event(string)`: returns a table
* returns e.g. `{type="CHG", value=500}`
@@ -2328,33 +5753,57 @@ and `minetest.auth_reload` call the authetification handler.
* `"CHG"`: has been changed
* `"VAL"`: not changed
-### Item handling
+Item handling
+-------------
+
* `minetest.inventorycube(img1, img2, img3)`
* Returns a string for making an image of a cube (useful as an item image)
* `minetest.get_pointed_thing_position(pointed_thing, above)`
- * Get position of a `pointed_thing` (that you can get from somewhere)
+ * Returns the position of a `pointed_thing` or `nil` if the `pointed_thing`
+ does not refer to a node or entity.
+ * If the optional `above` parameter is true and the `pointed_thing` refers
+ to a node, then it will return the `above` position of the `pointed_thing`.
* `minetest.dir_to_facedir(dir, is6d)`
- * Convert a vector to a facedir value, used in `param2` for `paramtype2="facedir"`;
- * passing something non-`nil`/`false` for the optional second parameter causes it to
- take the y component into account
+ * Convert a vector to a facedir value, used in `param2` for
+ `paramtype2="facedir"`.
+ * passing something non-`nil`/`false` for the optional second parameter
+ causes it to take the y component into account.
* `minetest.facedir_to_dir(facedir)`
- * Convert a facedir back into a vector aimed directly out the "back" of a node
+ * Convert a facedir back into a vector aimed directly out the "back" of a
+ node.
* `minetest.dir_to_wallmounted(dir)`
- * Convert a vector to a wallmounted value, used for `paramtype2="wallmounted"`
+ * Convert a vector to a wallmounted value, used for
+ `paramtype2="wallmounted"`.
* `minetest.wallmounted_to_dir(wallmounted)`
- * Convert a wallmounted value back into a vector aimed directly out the "back" of a node
-* `minetest.get_node_drops(nodename, toolname)`
- * Returns list of item names.
- * **Note**: This will be removed or modified in a future version.
+ * Convert a wallmounted value back into a vector aimed directly out the
+ "back" of a node.
+* `minetest.dir_to_yaw(dir)`
+ * Convert a vector into a yaw (angle)
+* `minetest.yaw_to_dir(yaw)`
+ * Convert yaw (angle) to a vector
+* `minetest.is_colored_paramtype(ptype)`
+ * Returns a boolean. Returns `true` if the given `paramtype2` contains
+ color information (`color`, `colorwallmounted` or `colorfacedir`).
+* `minetest.strip_param2_color(param2, paramtype2)`
+ * Removes everything but the color information from the
+ given `param2` value.
+ * Returns `nil` if the given `paramtype2` does not contain color
+ information.
+* `minetest.get_node_drops(node, toolname)`
+ * Returns list of itemstrings that are dropped by `node` when dug
+ with the item `toolname` (not limited to tools).
+ * `node`: node as table or node name
+ * `toolname`: name of the item used to dig (can be `nil`)
* `minetest.get_craft_result(input)`: returns `output, decremented_input`
* `input.method` = `"normal"` or `"cooking"` or `"fuel"`
* `input.width` = for example `3`
* `input.items` = for example
- `{ stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9 }`
+ `{stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9}`
* `output.item` = `ItemStack`, if unsuccessful: empty `ItemStack`
* `output.time` = a number, if unsuccessful: `0`
- * `output.replacements` = list of `ItemStack`s that couldn't be placed in
- `decremented_input.items`
+ * `output.replacements` = List of replacement `ItemStack`s that couldn't be
+ placed in `decremented_input.items`. Replacements can be placed in
+ `decremented_input` if the stack of the replaced item has a count of 1.
* `decremented_input` = like `input`
* `minetest.get_craft_recipe(output)`: returns input
* returns last registered recipe for output item (node)
@@ -2362,105 +5811,284 @@ and `minetest.auth_reload` call the authetification handler.
* `input.method` = `"normal"` or `"cooking"` or `"fuel"`
* `input.width` = for example `3`
* `input.items` = for example
- `{ stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9 }`
- * `input.items` = `nil` if no recipe found
+ `{stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9}`
+ * `input.items` = `nil` if no recipe found
* `minetest.get_all_craft_recipes(query item)`: returns a table or `nil`
* returns indexed table with all registered recipes for query item (node)
- or `nil` if no recipe was found
+ or `nil` if no recipe was found.
* recipe entry table:
- {
- method = 'normal' or 'cooking' or 'fuel'
- width = 0-3, 0 means shapeless recipe
- items = indexed [1-9] table with recipe items
- output = string with item name and quantity
- }
- * Example query for `"default:gold_ingot"` will return table:
- {
- [1]={type = "cooking", width = 3, output = "default:gold_ingot",
- items = {1 = "default:gold_lump"}},
- [2]={type = "normal", width = 1, output = "default:gold_ingot 9",
- items = {1 = "default:goldblock"}}
- }
+ * `method`: 'normal' or 'cooking' or 'fuel'
+ * `width`: 0-3, 0 means shapeless recipe
+ * `items`: indexed [1-9] table with recipe items
+ * `output`: string with item name and quantity
+ * Example result for `"default:gold_ingot"` with two recipes:
+
+ {
+ {
+ method = "cooking", width = 3,
+ output = "default:gold_ingot", items = {"default:gold_lump"}
+ },
+ {
+ method = "normal", width = 1,
+ output = "default:gold_ingot 9", items = {"default:goldblock"}
+ }
+ }
+
* `minetest.handle_node_drops(pos, drops, digger)`
* `drops`: list of itemstrings
- * Handles drops from nodes after digging: Default action is to put them into
- digger's inventory
+ * Handles drops from nodes after digging: Default action is to put them
+ into digger's inventory.
* Can be overridden to get different functionality (e.g. dropping items on
ground)
+* `minetest.itemstring_with_palette(item, palette_index)`: returns an item
+ string.
+ * Creates an item string which contains palette index information
+ for hardware colorization. You can use the returned string
+ as an output in a craft recipe.
+ * `item`: the item stack which becomes colored. Can be in string,
+ table and native form.
+ * `palette_index`: this index is added to the item stack
+* `minetest.itemstring_with_color(item, colorstring)`: returns an item string
+ * Creates an item string which contains static color information
+ for hardware colorization. Use this method if you wish to colorize
+ an item that does not own a palette. You can use the returned string
+ as an output in a craft recipe.
+ * `item`: the item stack which becomes colored. Can be in string,
+ table and native form.
+ * `colorstring`: the new color of the item stack
+
+Rollback
+--------
-### Rollback
* `minetest.rollback_get_node_actions(pos, range, seconds, limit)`:
returns `{{actor, pos, time, oldnode, newnode}, ...}`
* Find who has done something to a node, or near a node
* `actor`: `"player:<name>"`, also `"liquid"`.
-* `minetest.rollback_revert_actions_by(actor, seconds)`: returns `boolean, log_messages`
+* `minetest.rollback_revert_actions_by(actor, seconds)`: returns
+ `boolean, log_messages`.
* Revert latest actions of someone
* `actor`: `"player:<name>"`, also `"liquid"`.
-### Defaults for the `on_*` item definition functions
-These functions return the leftover itemstack.
+Defaults for the `on_place` and `on_drop` item definition functions
+-------------------------------------------------------------------
-* `minetest.item_place_node(itemstack, placer, pointed_thing, param2)`
+* `minetest.item_place_node(itemstack, placer, pointed_thing[, param2, prevent_after_place])`
* Place item as a node
* `param2` overrides `facedir` and wallmounted `param2`
- * returns `itemstack, success`
+ * `prevent_after_place`: if set to `true`, `after_place_node` is not called
+ for the newly placed node to prevent a callback and placement loop
+ * returns `itemstack, position`
+ * `position`: the location the node was placed to. `nil` if nothing was placed.
* `minetest.item_place_object(itemstack, placer, pointed_thing)`
* Place item as-is
-* `minetest.item_place(itemstack, placer, pointed_thing, param2)`
- * Use one of the above based on what the item is.
+ * returns the leftover itemstack
+ * **Note**: This function is deprecated and will never be called.
+* `minetest.item_place(itemstack, placer, pointed_thing[, param2])`
+ * Wrapper that calls `minetest.item_place_node` if appropriate
* Calls `on_rightclick` of `pointed_thing.under` if defined instead
* **Note**: is not called when wielded item overrides `on_place`
- * `param2` overrides `facedir` and wallmounted `param2`
- * returns `itemstack, success`
+ * `param2` overrides facedir and wallmounted `param2`
+ * returns `itemstack, position`
+ * `position`: the location the node was placed to. `nil` if nothing was placed.
* `minetest.item_drop(itemstack, dropper, pos)`
* Drop the item
-* `minetest.item_eat(hp_change, replace_with_item)`
- * Eat the item.
+ * returns the leftover itemstack
+* `minetest.item_eat(hp_change[, replace_with_item])`
+ * Returns `function(itemstack, user, pointed_thing)` as a
+ function wrapper for `minetest.do_item_eat`.
* `replace_with_item` is the itemstring which is added to the inventory.
If the player is eating a stack, then replace_with_item goes to a
- different spot. Can be `nil`
- * See `minetest.do_item_eat`
+ different spot.
+
+Defaults for the `on_punch` and `on_dig` node definition callbacks
+------------------------------------------------------------------
-### Defaults for the `on_punch` and `on_dig` node definition callbacks
* `minetest.node_punch(pos, node, puncher, pointed_thing)`
* Calls functions registered by `minetest.register_on_punchnode()`
* `minetest.node_dig(pos, node, digger)`
* Checks if node can be dug, puts item into inventory, removes node
* Calls functions registered by `minetest.registered_on_dignodes()`
-### Sounds
-* `minetest.sound_play(spec, parameters)`: returns a handle
+Sounds
+------
+
+* `minetest.sound_play(spec, parameters, [ephemeral])`: returns a handle
* `spec` is a `SimpleSoundSpec`
* `parameters` is a sound parameter table
+ * `ephemeral` is a boolean (default: false)
+ Ephemeral sounds will not return a handle and can't be stopped or faded.
+ It is recommend to use this for short sounds that happen in response to
+ player actions (e.g. door closing).
* `minetest.sound_stop(handle)`
+ * `handle` is a handle returned by `minetest.sound_play`
+* `minetest.sound_fade(handle, step, gain)`
+ * `handle` is a handle returned by `minetest.sound_play`
+ * `step` determines how fast a sound will fade.
+ The gain will change by this much per second,
+ until it reaches the target gain.
+ Note: Older versions used a signed step. This is deprecated, but old
+ code will still work. (the client uses abs(step) to correct it)
+ * `gain` the target gain for the fade.
+ Fading to zero will delete the sound.
+
+Timing
+------
-### Timing
-* `minetest.after(time, func, ...)`
+* `minetest.after(time, func, ...)` : returns job table to use as below.
* Call the function `func` after `time` seconds, may be fractional
* Optional: Variable number of arguments that are passed to `func`
-### Server
-* `minetest.request_shutdown([message],[reconnect])`: request for server shutdown. Will display `message` to clients,
- and `reconnect` == true displays a reconnect button.
-* `minetest.get_server_status()`: returns server status string
-* `minetest.get_server_uptime()`: returns the server uptime in seconds
+* `job:cancel()`
+ * Cancels the job function from being called
+
+Async environment
+-----------------
+
+The engine allows you to submit jobs to be ran in an isolated environment
+concurrently with normal server operation.
+A job consists of a function to be ran in the async environment, any amount of
+arguments (will be serialized) and a callback that will be called with the return
+value of the job function once it is finished.
+
+The async environment does *not* have access to the map, entities, players or any
+globals defined in the 'usual' environment. Consequently, functions like
+`minetest.get_node()` or `minetest.get_player_by_name()` simply do not exist in it.
+
+Arguments and return values passed through this can contain certain userdata
+objects that will be seamlessly copied (not shared) to the async environment.
+This allows you easy interoperability for delegating work to jobs.
+
+* `minetest.handle_async(func, callback, ...)`:
+ * Queue the function `func` to be ran in an async environment.
+ Note that there are multiple persistent workers and any of them may
+ end up running a given job. The engine will scale the amount of
+ worker threads automatically.
+ * When `func` returns the callback is called (in the normal environment)
+ with all of the return values as arguments.
+ * Optional: Variable number of arguments that are passed to `func`
+* `minetest.register_async_dofile(path)`:
+ * Register a path to a Lua file to be imported when an async environment
+ is initialized. You can use this to preload code which you can then call
+ later using `minetest.handle_async()`.
+
+### List of APIs available in an async environment
+
+Classes:
+* `ItemStack`
+* `PerlinNoise`
+* `PerlinNoiseMap`
+* `PseudoRandom`
+* `PcgRandom`
+* `SecureRandom`
+* `VoxelArea`
+* `VoxelManip`
+ * only if transferred into environment; can't read/write to map
+* `Settings`
+
+Class instances that can be transferred between environments:
+* `ItemStack`
+* `PerlinNoise`
+* `PerlinNoiseMap`
+* `VoxelManip`
+
+Functions:
+* Standalone helpers such as logging, filesystem, encoding,
+ hashing or compression APIs
+* `minetest.request_insecure_environment` (same restrictions apply)
+
+Variables:
+* `minetest.settings`
+* `minetest.registered_items`, `registered_nodes`, `registered_tools`,
+ `registered_craftitems` and `registered_aliases`
+ * with all functions and userdata values replaced by `true`, calling any
+ callbacks here is obviously not possible
+
+Server
+------
-### Bans
-* `minetest.get_ban_list()`: returns the ban list (same as `minetest.get_ban_description("")`)
-* `minetest.get_ban_description(ip_or_name)`: returns ban description (string)
-* `minetest.ban_player(name)`: ban a player
-* `minetest.unban_player_or_ip(name)`: unban player or IP address
-* `minetest.kick_player(name, [reason])`: disconnect a player with a optional reason
+* `minetest.request_shutdown([message],[reconnect],[delay])`: request for
+ server shutdown. Will display `message` to clients.
+ * `reconnect` == true displays a reconnect button
+ * `delay` adds an optional delay (in seconds) before shutdown.
+ Negative delay cancels the current active shutdown.
+ Zero delay triggers an immediate shutdown.
+* `minetest.cancel_shutdown_requests()`: cancel current delayed shutdown
+* `minetest.get_server_status(name, joined)`
+ * Returns the server status string when a player joins or when the command
+ `/status` is called. Returns `nil` or an empty string when the message is
+ disabled.
+ * `joined`: Boolean value, indicates whether the function was called when
+ a player joined.
+ * This function may be overwritten by mods to customize the status message.
+* `minetest.get_server_uptime()`: returns the server uptime in seconds
+* `minetest.get_server_max_lag()`: returns the current maximum lag
+ of the server in seconds or nil if server is not fully loaded yet
+* `minetest.remove_player(name)`: remove player from database (if they are not
+ connected).
+ * As auth data is not removed, minetest.player_exists will continue to
+ return true. Call the below method as well if you want to remove auth
+ data too.
+ * Returns a code (0: successful, 1: no such player, 2: player is connected)
+* `minetest.remove_player_auth(name)`: remove player authentication data
+ * Returns boolean indicating success (false if player nonexistant)
+* `minetest.dynamic_add_media(options, callback)`
+ * `options`: table containing the following parameters
+ * `filepath`: path to a media file on the filesystem
+ * `to_player`: name of the player the media should be sent to instead of
+ all players (optional)
+ * `ephemeral`: boolean that marks the media as ephemeral,
+ it will not be cached on the client (optional, default false)
+ * `callback`: function with arguments `name`, which is a player name
+ * Pushes the specified media file to client(s). (details below)
+ The file must be a supported image, sound or model format.
+ Dynamically added media is not persisted between server restarts.
+ * Returns false on error, true if the request was accepted
+ * The given callback will be called for every player as soon as the
+ media is available on the client.
+ * Details/Notes:
+ * If `ephemeral`=false and `to_player` is unset the file is added to the media
+ sent to clients on startup, this means the media will appear even on
+ old clients if they rejoin the server.
+ * If `ephemeral`=false the file must not be modified, deleted, moved or
+ renamed after calling this function.
+ * Regardless of any use of `ephemeral`, adding media files with the same
+ name twice is not possible/guaranteed to work. An exception to this is the
+ use of `to_player` to send the same, already existent file to multiple
+ chosen players.
+ * Clients will attempt to fetch files added this way via remote media,
+ this can make transfer of bigger files painless (if set up). Nevertheless
+ it is advised not to use dynamic media for big media files.
+
+Bans
+----
+
+* `minetest.get_ban_list()`: returns a list of all bans formatted as string
+* `minetest.get_ban_description(ip_or_name)`: returns list of bans matching
+ IP address or name formatted as string
+* `minetest.ban_player(name)`: ban the IP of a currently connected player
+ * Returns boolean indicating success
+* `minetest.unban_player_or_ip(ip_or_name)`: remove ban record matching
+ IP address or name
+* `minetest.kick_player(name, [reason])`: disconnect a player with an optional
+ reason.
+ * Returns boolean indicating success (false if player nonexistant)
+* `minetest.disconnect_player(name, [reason])`: disconnect a player with an
+ optional reason, this will not prefix with 'Kicked: ' like kick_player.
+ If no reason is given, it will default to 'Disconnected.'
+ * Returns boolean indicating success (false if player nonexistant)
+
+Particles
+---------
-### Particles
* `minetest.add_particle(particle definition)`
- * Deprecated: `minetest.add_particle(pos, velocity, acceleration, expirationtime,
- size, collisiondetection, texture, playername)`
+ * Deprecated: `minetest.add_particle(pos, velocity, acceleration,
+ expirationtime, size, collisiondetection, texture, playername)`
* `minetest.add_particlespawner(particlespawner definition)`
- * Add a `ParticleSpawner`, an object that spawns an amount of particles over `time` seconds
+ * Add a `ParticleSpawner`, an object that spawns an amount of particles
+ over `time` seconds.
* Returns an `id`, and -1 if adding didn't succeed
- * `Deprecated: minetest.add_particlespawner(amount, time,
+ * Deprecated: `minetest.add_particlespawner(amount, time,
minpos, maxpos,
minvel, maxvel,
minacc, maxacc,
@@ -2468,80 +6096,154 @@ These functions return the leftover itemstack.
minsize, maxsize,
collisiondetection, texture, playername)`
-* `minetest.delete_particlespawner(id, player)``
- * Delete `ParticleSpawner` with `id` (return value from `minetest.add_particlespawner`)
+* `minetest.delete_particlespawner(id, player)`
+ * Delete `ParticleSpawner` with `id` (return value from
+ `minetest.add_particlespawner`).
* If playername is specified, only deletes on the player's client,
- * otherwise on all clients
+ otherwise on all clients.
+
+Schematics
+----------
-### Schematics
* `minetest.create_schematic(p1, p2, probability_list, filename, slice_prob_list)`
- * Create a schematic from the volume of map specified by the box formed by p1 and p2.
- * Apply the specified probability values to the specified nodes in `probability_list`.
- * `probability_list` is an array of tables containing two fields, `pos` and `prob`.
+ * Create a schematic from the volume of map specified by the box formed by
+ p1 and p2.
+ * Apply the specified probability and per-node force-place to the specified
+ nodes according to the `probability_list`.
+ * `probability_list` is an array of tables containing two fields, `pos`
+ and `prob`.
* `pos` is the 3D vector specifying the absolute coordinates of the
node being modified,
- * `prob` is the integer value from `0` to `255` of the probability (see: Schematic specifier).
+ * `prob` is an integer value from `0` to `255` that encodes
+ probability and per-node force-place. Probability has levels
+ 0-127, then 128 may be added to encode per-node force-place.
+ For probability stated as 0-255, divide by 2 and round down to
+ get values 0-127, then add 128 to apply per-node force-place.
* If there are two or more entries with the same pos value, the
last entry is used.
- * If `pos` is not inside the box formed by `p1` and `p2`, it is ignored.
+ * If `pos` is not inside the box formed by `p1` and `p2`, it is
+ ignored.
* If `probability_list` equals `nil`, no probabilities are applied.
- * Slice probability works in the same manner, except takes a field
- called `ypos` instead which
- indicates the y position of the slice with a probability applied.
- * If slice probability list equals `nil`, no slice probabilities are applied.
+ * Apply the specified probability to the specified horizontal slices
+ according to the `slice_prob_list`.
+ * `slice_prob_list` is an array of tables containing two fields, `ypos`
+ and `prob`.
+ * `ypos` indicates the y position of the slice with a probability
+ applied, the lowest slice being `ypos = 0`.
+ * If slice probability list equals `nil`, no slice probabilities
+ are applied.
* Saves schematic in the Minetest Schematic format to filename.
-* `minetest.place_schematic(pos, schematic, rotation, replacements, force_placement)`
- * Place the schematic specified by schematic (see: Schematic specifier) at `pos`.
+* `minetest.place_schematic(pos, schematic, rotation, replacements, force_placement, flags)`
+ * Place the schematic specified by schematic (see [Schematic specifier]) at
+ `pos`.
* `rotation` can equal `"0"`, `"90"`, `"180"`, `"270"`, or `"random"`.
* If the `rotation` parameter is omitted, the schematic is not rotated.
* `replacements` = `{["old_name"] = "convert_to", ...}`
- * `force_placement` is a boolean indicating whether nodes other than `air` and
- `ignore` are replaced by the schematic
+ * `force_placement` is a boolean indicating whether nodes other than `air`
+ and `ignore` are replaced by the schematic.
* Returns nil if the schematic could not be loaded.
-
-* `minetest.place_schematic_on_vmanip(vmanip, pos, schematic, rotation, replacement, force_placement)`:
- * This function is analagous to minetest.place_schematic, but places a schematic onto the
- specified VoxelManip object `vmanip` instead of the whole map.
- * Returns false if any part of the schematic was cut-off due to the VoxelManip not
- containing the full area required, and true if the whole schematic was able to fit.
+ * **Warning**: Once you have loaded a schematic from a file, it will be
+ cached. Future calls will always use the cached version and the
+ replacement list defined for it, regardless of whether the file or the
+ replacement list parameter have changed. The only way to load the file
+ anew is to restart the server.
+ * `flags` is a flag field with the available flags:
+ * place_center_x
+ * place_center_y
+ * place_center_z
+
+* `minetest.place_schematic_on_vmanip(vmanip, pos, schematic, rotation, replacement, force_placement, flags)`:
+ * This function is analogous to minetest.place_schematic, but places a
+ schematic onto the specified VoxelManip object `vmanip` instead of the
+ map.
+ * Returns false if any part of the schematic was cut-off due to the
+ VoxelManip not containing the full area required, and true if the whole
+ schematic was able to fit.
* Returns nil if the schematic could not be loaded.
- * After execution, any external copies of the VoxelManip contents are invalidated.
+ * After execution, any external copies of the VoxelManip contents are
+ invalidated.
+ * `flags` is a flag field with the available flags:
+ * place_center_x
+ * place_center_y
+ * place_center_z
* `minetest.serialize_schematic(schematic, format, options)`
- * Return the serialized schematic specified by schematic (see: Schematic specifier)
+ * Return the serialized schematic specified by schematic
+ (see [Schematic specifier])
* in the `format` of either "mts" or "lua".
- * "mts" - a string containing the binary MTS data used in the MTS file format
- * "lua" - a string containing Lua code representing the schematic in table format
+ * "mts" - a string containing the binary MTS data used in the MTS file
+ format.
+ * "lua" - a string containing Lua code representing the schematic in table
+ format.
* `options` is a table containing the following optional parameters:
- * If `lua_use_comments` is true and `format` is "lua", the Lua code generated will have (X, Z)
- * position comments for every X row generated in the schematic data for easier reading.
- * If `lua_num_indent_spaces` is a nonzero number and `format` is "lua", the Lua code generated
- * will use that number of spaces as indentation instead of a tab character.
+ * If `lua_use_comments` is true and `format` is "lua", the Lua code
+ generated will have (X, Z) position comments for every X row
+ generated in the schematic data for easier reading.
+ * If `lua_num_indent_spaces` is a nonzero number and `format` is "lua",
+ the Lua code generated will use that number of spaces as indentation
+ instead of a tab character.
+
+* `minetest.read_schematic(schematic, options)`
+ * Returns a Lua table representing the schematic (see: [Schematic specifier])
+ * `schematic` is the schematic to read (see: [Schematic specifier])
+ * `options` is a table containing the following optional parameters:
+ * `write_yslice_prob`: string value:
+ * `none`: no `write_yslice_prob` table is inserted,
+ * `low`: only probabilities that are not 254 or 255 are written in
+ the `write_ylisce_prob` table,
+ * `all`: write all probabilities to the `write_yslice_prob` table.
+ * The default for this option is `all`.
+ * Any invalid value will be interpreted as `all`.
+
+HTTP Requests
+-------------
-### HTTP Requests:
* `minetest.request_http_api()`:
- * returns `HTTPApiTable` containing http functions if the calling mod has been granted
- access by being listed in the `secure.http_mods` or `secure.trusted_mods` setting,
- otherwise returns `nil`.
- * The returned table contains the functions `fetch`, `fetch_async` and `fetch_async_get`
- described below.
- * Only works at init time and must be called from the mod's main scope (not from a function).
+ * returns `HTTPApiTable` containing http functions if the calling mod has
+ been granted access by being listed in the `secure.http_mods` or
+ `secure.trusted_mods` setting, otherwise returns `nil`.
+ * The returned table contains the functions `fetch`, `fetch_async` and
+ `fetch_async_get` described below.
+ * Only works at init time and must be called from the mod's main scope
+ (not from a function).
* Function only exists if minetest server was built with cURL support.
* **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED TABLE, STORE IT IN
A LOCAL VARIABLE!**
* `HTTPApiTable.fetch(HTTPRequest req, callback)`
* Performs given request asynchronously and calls callback upon completion
* callback: `function(HTTPRequestResult res)`
- * Use this HTTP function if you are unsure, the others are for advanced use.
+ * Use this HTTP function if you are unsure, the others are for advanced use
* `HTTPApiTable.fetch_async(HTTPRequest req)`: returns handle
- * Performs given request asynchronously and returns handle for `HTTPApiTable.fetch_async_get`
+ * Performs given request asynchronously and returns handle for
+ `HTTPApiTable.fetch_async_get`
* `HTTPApiTable.fetch_async_get(handle)`: returns HTTPRequestResult
* Return response data for given asynchronous HTTP request
-### Misc.
+Storage API
+-----------
+
+* `minetest.get_mod_storage()`:
+ * returns reference to mod private `StorageRef`
+ * must be called during mod load time
+
+Misc.
+-----
+
* `minetest.get_connected_players()`: returns list of `ObjectRefs`
-* `minetest.hash_node_position({x=,y=,z=})`: returns an 48-bit integer
+* `minetest.is_player(obj)`: boolean, whether `obj` is a player
+* `minetest.player_exists(name)`: boolean, whether player exists
+ (regardless of online status)
+* `minetest.hud_replace_builtin(name, hud_definition)`
+ * Replaces definition of a builtin hud element
+ * `name`: `"breath"` or `"health"`
+ * `hud_definition`: definition to replace builtin definition
+* `minetest.send_join_message(player_name)`
+ * This function can be overridden by mods to change the join message.
+* `minetest.send_leave_message(player_name, timed_out)`
+ * This function can be overridden by mods to change the leave message.
+* `minetest.hash_node_position(pos)`: returns an 48-bit integer
+ * `pos`: table {x=number, y=number, z=number},
* Gives a unique hash number for a node position (16+16+16=48bit)
* `minetest.get_position_from_hash(hash)`: returns a position
* Inverse transform of `minetest.hash_node_position`
@@ -2551,8 +6253,8 @@ These functions return the leftover itemstack.
* Deprecated: An alias for the former.
* `minetest.raillike_group(name)`: returns a rating
* Returns rating of the connect_to_raillike group corresponding to name
- * If name is not yet the name of a connect_to_raillike group, a new group id
- * is created, with that name
+ * If name is not yet the name of a connect_to_raillike group, a new group
+ id is created, with that name.
* `minetest.get_content_id(name)`: returns an integer
* Gets the internal content ID of `name`
* `minetest.get_name_from_content_id(content_id)`: returns a string
@@ -2563,81 +6265,135 @@ These functions return the leftover itemstack.
* On success returns a table, a string, a number, a boolean or `nullvalue`
* On failure outputs an error message and returns `nil`
* Example: `parse_json("[10, {\"a\":false}]")`, returns `{10, {a = false}}`
-* `minetest.write_json(data[, styled])`: returns a string or `nil` and an error message
+* `minetest.write_json(data[, styled])`: returns a string or `nil` and an error
+ message.
* Convert a Lua table into a JSON string
- * styled: Outputs in a human-readable format if this is set, defaults to false
- * Unserializable things like functions and userdata are saved as null.
+ * styled: Outputs in a human-readable format if this is set, defaults to
+ false.
+ * Unserializable things like functions and userdata will cause an error.
* **Warning**: JSON is more strict than the Lua table format.
- 1. You can only use strings and positive integers of at least one as keys.
+ 1. You can only use strings and positive integers of at least one as
+ keys.
2. You can not mix string and integer keys.
- This is due to the fact that JSON has two distinct array and object values.
- * Example: `write_json({10, {a = false}})`, returns `"[10, {\"a\": false}]"`
+ This is due to the fact that JSON has two distinct array and object
+ values.
+ * Example: `write_json({10, {a = false}})`,
+ returns `'[10, {"a": false}]'`
* `minetest.serialize(table)`: returns a string
* Convert a table containing tables, strings, numbers, booleans and `nil`s
into string form readable by `minetest.deserialize`
- * Example: `serialize({foo='bar'})`, returns `'return { ["foo"] = "bar" }'`
-* `minetest.deserialize(string)`: returns a table
- * Convert a string returned by `minetest.deserialize` into a table
+ * Example: `serialize({foo="bar"})`, returns `'return { ["foo"] = "bar" }'`
+* `minetest.deserialize(string[, safe])`: returns a table
+ * Convert a string returned by `minetest.serialize` into a table
* `string` is loaded in an empty sandbox environment.
- * Will load functions, but they cannot access the global environment.
- * Example: `deserialize('return { ["foo"] = "bar" }')`, returns `{foo='bar'}`
- * Example: `deserialize('print("foo")')`, returns `nil` (function call fails)
- * `error:[string "print("foo")"]:1: attempt to call global 'print' (a nil value)`
+ * Will load functions if safe is false or omitted. Although these functions
+ cannot directly access the global environment, they could bypass this
+ restriction with maliciously crafted Lua bytecode if mod security is
+ disabled.
+ * This function should not be used on untrusted data, regardless of the
+ value of `safe`. It is fine to serialize then deserialize user-provided
+ data, but directly providing user input to deserialize is always unsafe.
+ * Example: `deserialize('return { ["foo"] = "bar" }')`,
+ returns `{foo="bar"}`
+ * Example: `deserialize('print("foo")')`, returns `nil`
+ (function call fails), returns
+ `error:[string "print("foo")"]:1: attempt to call global 'print' (a nil value)`
* `minetest.compress(data, method, ...)`: returns `compressed_data`
* Compress a string of data.
* `method` is a string identifying the compression method to be used.
* Supported compression methods:
- * Deflate (zlib): `"deflate"`
- * `...` indicates method-specific arguments. Currently defined arguments are:
- * Deflate: `level` - Compression level, `0`-`9` or `nil`.
+ * Deflate (zlib): `"deflate"`
+ * `...` indicates method-specific arguments. Currently defined arguments
+ are:
+ * Deflate: `level` - Compression level, `0`-`9` or `nil`.
* `minetest.decompress(compressed_data, method, ...)`: returns data
* Decompress a string of data (using ZLib).
- * See documentation on `minetest.compress()` for supported compression methods.
- * currently supported.
- * `...` indicates method-specific arguments. Currently, no methods use this.
+ * See documentation on `minetest.compress()` for supported compression
+ methods.
+ * `...` indicates method-specific arguments. Currently, no methods use this
+* `minetest.rgba(red, green, blue[, alpha])`: returns a string
+ * Each argument is a 8 Bit unsigned integer
+ * Returns the ColorString from rgb or rgba values
+ * Example: `minetest.rgba(10, 20, 30, 40)`, returns `"#0A141E28"`
* `minetest.encode_base64(string)`: returns string encoded in base64
* Encodes a string in base64.
-* `minetest.decode_base64(string)`: returns string
+* `minetest.decode_base64(string)`: returns string or nil on failure
+ * Padding characters are only supported starting at version 5.4.0, where
+ 5.5.0 and newer perform proper checks.
* Decodes a string encoded in base64.
* `minetest.is_protected(pos, name)`: returns boolean
- * Returns true, if player `name` shouldn't be abled to dig at `pos` or do other
- actions, defineable by mods, due to some mod-defined ownership-like concept.
- Returns false or nil, if the player is allowed to do such actions.
- * This function should be overridden by protection mods and should be used to
- check if a player can interact at a position.
- * This function should call the old version of itself if the position is not
- protected by the mod.
+ * Returning `true` restricts the player `name` from modifying (i.e. digging,
+ placing) the node at position `pos`.
+ * `name` will be `""` for non-players or unknown players.
+ * This function should be overridden by protection mods. It is highly
+ recommended to grant access to players with the `protection_bypass` privilege.
+ * Cache and call the old version of this function if the position is
+ not protected by the mod. This will allow using multiple protection mods.
* Example:
- local old_is_protected = minetest.is_protected
- function minetest.is_protected(pos, name)
- if mymod:position_protected_from(pos, name) then
- return true
- end
- return old_is_protected(pos, name)
- end
+ local old_is_protected = minetest.is_protected
+ function minetest.is_protected(pos, name)
+ if mymod:position_protected_from(pos, name) then
+ return true
+ end
+ return old_is_protected(pos, name)
+ end
* `minetest.record_protection_violation(pos, name)`
- * This function calls functions registered with
- `minetest.register_on_protection_violation`.
-* `minetest.rotate_and_place(itemstack, placer, pointed_thing, infinitestacks, orient_flags)`
+ * This function calls functions registered with
+ `minetest.register_on_protection_violation`.
+* `minetest.is_creative_enabled(name)`: returns boolean
+ * Returning `true` means that Creative Mode is enabled for player `name`.
+ * `name` will be `""` for non-players or if the player is unknown.
+ * This function should be overridden by Creative Mode-related mods to
+ implement a per-player Creative Mode.
+ * By default, this function returns `true` if the setting
+ `creative_mode` is `true` and `false` otherwise.
+* `minetest.is_area_protected(pos1, pos2, player_name, interval)`
+ * Returns the position of the first node that `player_name` may not modify
+ in the specified cuboid between `pos1` and `pos2`.
+ * Returns `false` if no protections were found.
+ * Applies `is_protected()` to a 3D lattice of points in the defined volume.
+ The points are spaced evenly throughout the volume and have a spacing
+ similar to, but no larger than, `interval`.
+ * All corners and edges of the defined volume are checked.
+ * `interval` defaults to 4.
+ * `interval` should be carefully chosen and maximised to avoid an excessive
+ number of points being checked.
+ * Like `minetest.is_protected`, this function may be extended or
+ overwritten by mods to provide a faster implementation to check the
+ cuboid for intersections.
+* `minetest.rotate_and_place(itemstack, placer, pointed_thing[, infinitestacks,
+ orient_flags, prevent_after_place])`
* Attempt to predict the desired orientation of the facedir-capable node
- defined by `itemstack`, and place it accordingly (on-wall, on the floor, or
- hanging from the ceiling). Stacks are handled normally if the `infinitestacks`
- field is false or omitted (else, the itemstack is not changed). `orient_flags`
- is an optional table containing extra tweaks to the placement code:
- * `invert_wall`: if `true`, place wall-orientation on the ground and ground-
- orientation on the wall.
+ defined by `itemstack`, and place it accordingly (on-wall, on the floor,
+ or hanging from the ceiling).
+ * `infinitestacks`: if `true`, the itemstack is not changed. Otherwise the
+ stacks are handled normally.
+ * `orient_flags`: Optional table containing extra tweaks to the placement code:
+ * `invert_wall`: if `true`, place wall-orientation on the ground and
+ ground-orientation on the wall.
* `force_wall` : if `true`, always place the node in wall orientation.
* `force_ceiling`: if `true`, always place on the ceiling.
* `force_floor`: if `true`, always place the node on the floor.
- * `force_facedir`: if `true`, forcefully reset the facedir to north when placing on
- the floor or ceiling
- * The first four options are mutually-exclusive; the last in the list takes
- precedence over the first.
+ * `force_facedir`: if `true`, forcefully reset the facedir to north
+ when placing on the floor or ceiling.
+ * The first four options are mutually-exclusive; the last in the list
+ takes precedence over the first.
+ * `prevent_after_place` is directly passed to `minetest.item_place_node`
+ * Returns the new itemstack after placement
* `minetest.rotate_node(itemstack, placer, pointed_thing)`
- * calls `rotate_and_place()` with infinitestacks set according to the state of
- the creative mode setting, and checks for "sneak" to set the `invert_wall`
- parameter.
+ * calls `rotate_and_place()` with `infinitestacks` set according to the state
+ of the creative mode setting, checks for "sneak" to set the `invert_wall`
+ parameter and `prevent_after_place` set to `true`.
+
+* `minetest.calculate_knockback(player, hitter, time_from_last_punch,
+ tool_capabilities, dir, distance, damage)`
+ * Returns the amount of knockback applied on the punched player.
+ * Arguments are equivalent to `register_on_punchplayer`, except the following:
+ * `distance`: distance between puncher and punched player
+ * This function can be overriden by mods that wish to modify this behaviour.
+ * You may want to cache and call the old function to allow multiple mods to
+ change knockback behaviour.
* `minetest.forceload_block(pos[, transient])`
* forceloads the position `pos`.
@@ -2651,24 +6407,45 @@ These functions return the leftover itemstack.
* If `transient` is `false` or absent, frees a persistent forceload.
If `true`, frees a transient forceload.
+* `minetest.compare_block_status(pos, condition)`
+ * Checks whether the mapblock at positition `pos` is in the wanted condition.
+ * `condition` may be one of the following values:
+ * `"unknown"`: not in memory
+ * `"emerging"`: in the queue for loading from disk or generating
+ * `"loaded"`: in memory but inactive (no ABMs are executed)
+ * `"active"`: in memory and active
+ * Other values are reserved for future functionality extensions
+ * Return value, the comparison status:
+ * `false`: Mapblock does not fulfil the wanted condition
+ * `true`: Mapblock meets the requirement
+ * `nil`: Unsupported `condition` value
+
* `minetest.request_insecure_environment()`: returns an environment containing
insecure functions if the calling mod has been listed as trusted in the
- `secure.trusted_mods` setting or security is disabled, otherwise returns `nil`.
- * Only works at init time and must be called from the mod's main scope (not from a function).
- * **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED ENVIRONMENT, STORE IT IN
- A LOCAL VARIABLE!**
+ `secure.trusted_mods` setting or security is disabled, otherwise returns
+ `nil`.
+ * Only works at init time and must be called from the mod's main scope
+ (ie: the init.lua of the mod, not from another Lua file or within a function).
+ * **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED ENVIRONMENT, STORE
+ IT IN A LOCAL VARIABLE!**
* `minetest.global_exists(name)`
* Checks if a global variable has been set, without triggering a warning.
-### Global objects
+Global objects
+--------------
+
* `minetest.env`: `EnvRef` of the server environment and world.
* Any function in the minetest namespace can be called using the syntax
- `minetest.env:somefunction(somearguments)`
- instead of `minetest.somefunction(somearguments)`
+ `minetest.env:somefunction(somearguments)`
+ instead of `minetest.somefunction(somearguments)`
* Deprecated, but support is not to be dropped soon
-### Global tables
+Global tables
+-------------
+
+### Registered definition tables
+
* `minetest.registered_items`
* Map of registered items, indexed by name
* `minetest.registered_nodes`
@@ -2679,47 +6456,346 @@ These functions return the leftover itemstack.
* Map of registered tool definitions, indexed by name
* `minetest.registered_entities`
* Map of registered entity prototypes, indexed by name
+ * Values in this table may be modified directly.
+ Note: changes to initial properties will only affect entities spawned afterwards,
+ as they are only read when spawning.
* `minetest.object_refs`
* Map of object references, indexed by active object id
* `minetest.luaentities`
* Map of Lua entities, indexed by active object id
+* `minetest.registered_abms`
+ * List of ABM definitions
+* `minetest.registered_lbms`
+ * List of LBM definitions
+* `minetest.registered_aliases`
+ * Map of registered aliases, indexed by name
* `minetest.registered_ores`
- * List of registered ore definitions.
+ * Map of registered ore definitions, indexed by the `name` field.
+ * If `name` is nil, the key is the object handle returned by
+ `minetest.register_ore`.
* `minetest.registered_biomes`
- * List of registered biome definitions.
+ * Map of registered biome definitions, indexed by the `name` field.
+ * If `name` is nil, the key is the object handle returned by
+ `minetest.register_biome`.
* `minetest.registered_decorations`
- * List of registered decoration definitions.
+ * Map of registered decoration definitions, indexed by the `name` field.
+ * If `name` is nil, the key is the object handle returned by
+ `minetest.register_decoration`.
+* `minetest.registered_schematics`
+ * Map of registered schematic definitions, indexed by the `name` field.
+ * If `name` is nil, the key is the object handle returned by
+ `minetest.register_schematic`.
+* `minetest.registered_chatcommands`
+ * Map of registered chat command definitions, indexed by name
+* `minetest.registered_privileges`
+ * Map of registered privilege definitions, indexed by name
+ * Registered privileges can be modified directly in this table.
+
+### Registered callback tables
+
+All callbacks registered with [Global callback registration functions] are added
+to corresponding `minetest.registered_*` tables.
+
+
+
Class reference
----------------
+===============
+
+Sorted alphabetically.
+
+`AreaStore`
+-----------
+
+AreaStore is a data structure to calculate intersections of 3D cuboid volumes
+and points. The `data` field (string) may be used to store and retrieve any
+mod-relevant information to the specified area.
+
+Despite its name, mods must take care of persisting AreaStore data. They may
+use the provided load and write functions for this.
+
+
+### Methods
+
+* `AreaStore(type_name)`
+ * Returns a new AreaStore instance
+ * `type_name`: optional, forces the internally used API.
+ * Possible values: `"LibSpatial"` (default).
+ * When other values are specified, or SpatialIndex is not available,
+ the custom Minetest functions are used.
+* `get_area(id, include_corners, include_data)`
+ * Returns the area information about the specified ID.
+ * Returned values are either of these:
+
+ nil -- Area not found
+ true -- Without `include_corners` and `include_data`
+ {
+ min = pos, max = pos -- `include_corners == true`
+ data = string -- `include_data == true`
+ }
+
+* `get_areas_for_pos(pos, include_corners, include_data)`
+ * Returns all areas as table, indexed by the area ID.
+ * Table values: see `get_area`.
+* `get_areas_in_area(corner1, corner2, accept_overlap, include_corners, include_data)`
+ * Returns all areas that contain all nodes inside the area specified by`
+ `corner1 and `corner2` (inclusive).
+ * `accept_overlap`: if `true`, areas are returned that have nodes in
+ common (intersect) with the specified area.
+ * Returns the same values as `get_areas_for_pos`.
+* `insert_area(corner1, corner2, data, [id])`: inserts an area into the store.
+ * Returns the new area's ID, or nil if the insertion failed.
+ * The (inclusive) positions `corner1` and `corner2` describe the area.
+ * `data` is a string stored with the area.
+ * `id` (optional): will be used as the internal area ID if it is an unique
+ number between 0 and 2^32-2.
+* `reserve(count)`
+ * Requires SpatialIndex, no-op function otherwise.
+ * Reserves resources for `count` many contained areas to improve
+ efficiency when working with many area entries. Additional areas can still
+ be inserted afterwards at the usual complexity.
+* `remove_area(id)`: removes the area with the given id from the store, returns
+ success.
+* `set_cache_params(params)`: sets params for the included prefiltering cache.
+ Calling invalidates the cache, so that its elements have to be newly
+ generated.
+ * `params` is a table with the following fields:
+
+ enabled = boolean, -- Whether to enable, default true
+ block_radius = int, -- The radius (in nodes) of the areas the cache
+ -- generates prefiltered lists for, minimum 16,
+ -- default 64
+ limit = int, -- The cache size, minimum 20, default 1000
+* `to_string()`: Experimental. Returns area store serialized as a (binary)
+ string.
+* `to_file(filename)`: Experimental. Like `to_string()`, but writes the data to
+ a file.
+* `from_string(str)`: Experimental. Deserializes string and loads it into the
+ AreaStore.
+ Returns success and, optionally, an error message.
+* `from_file(filename)`: Experimental. Like `from_string()`, but reads the data
+ from a file.
+
+`InvRef`
+--------
+
+An `InvRef` is a reference to an inventory.
+
+### Methods
+
+* `is_empty(listname)`: return `true` if list is empty
+* `get_size(listname)`: get size of a list
+* `set_size(listname, size)`: set size of a list
+ * returns `false` on error (e.g. invalid `listname` or `size`)
+* `get_width(listname)`: get width of a list
+* `set_width(listname, width)`: set width of list; currently used for crafting
+* `get_stack(listname, i)`: get a copy of stack index `i` in list
+* `set_stack(listname, i, stack)`: copy `stack` to index `i` in list
+* `get_list(listname)`: return full list (list of `ItemStack`s)
+* `set_list(listname, list)`: set full list (size will not change)
+* `get_lists()`: returns table that maps listnames to inventory lists
+* `set_lists(lists)`: sets inventory lists (size will not change)
+* `add_item(listname, stack)`: add item somewhere in list, returns leftover
+ `ItemStack`.
+* `room_for_item(listname, stack):` returns `true` if the stack of items
+ can be fully added to the list
+* `contains_item(listname, stack, [match_meta])`: returns `true` if
+ the stack of items can be fully taken from the list.
+ If `match_meta` is false, only the items' names are compared
+ (default: `false`).
+* `remove_item(listname, stack)`: take as many items as specified from the
+ list, returns the items that were actually removed (as an `ItemStack`)
+ -- note that any item metadata is ignored, so attempting to remove a specific
+ unique item this way will likely remove the wrong one -- to do that use
+ `set_stack` with an empty `ItemStack`.
+* `get_location()`: returns a location compatible to
+ `minetest.get_inventory(location)`.
+ * returns `{type="undefined"}` in case location is not known
+
+### Callbacks
+
+Detached & nodemeta inventories provide the following callbacks for move actions:
+
+#### Before
+
+The `allow_*` callbacks return how many items can be moved.
+
+* `allow_move`/`allow_metadata_inventory_move`: Moving items in the inventory
+* `allow_take`/`allow_metadata_inventory_take`: Taking items from the inventory
+* `allow_put`/`allow_metadata_inventory_put`: Putting items to the inventory
+
+#### After
+
+The `on_*` callbacks are called after the items have been placed in the inventories.
+
+* `on_move`/`on_metadata_inventory_move`: Moving items in the inventory
+* `on_take`/`on_metadata_inventory_take`: Taking items from the inventory
+* `on_put`/`on_metadata_inventory_put`: Putting items to the inventory
+
+#### Swapping
+
+When a player tries to put an item to a place where another item is, the items are *swapped*.
+This means that all callbacks will be called twice (once for each action).
+
+`ItemStack`
+-----------
+
+An `ItemStack` is a stack of items.
+
+It can be created via `ItemStack(x)`, where x is an `ItemStack`,
+an itemstring, a table or `nil`.
+
+### Methods
+
+* `is_empty()`: returns `true` if stack is empty.
+* `get_name()`: returns item name (e.g. `"default:stone"`).
+* `set_name(item_name)`: returns a boolean indicating whether the item was
+ cleared.
+* `get_count()`: Returns number of items on the stack.
+* `set_count(count)`: returns a boolean indicating whether the item was cleared
+ * `count`: number, unsigned 16 bit integer
+* `get_wear()`: returns tool wear (`0`-`65535`), `0` for non-tools.
+* `set_wear(wear)`: returns boolean indicating whether item was cleared
+ * `wear`: number, unsigned 16 bit integer
+* `get_meta()`: returns ItemStackMetaRef. See section for more details
+* `get_metadata()`: (DEPRECATED) Returns metadata (a string attached to an item
+ stack).
+* `set_metadata(metadata)`: (DEPRECATED) Returns true.
+* `get_description()`: returns the description shown in inventory list tooltips.
+ * 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 or nil.
+ * Unlike the description, this does not include new lines.
+ * 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 (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.
+* `to_string()`: returns the stack in itemstring form.
+* `to_table()`: returns the stack in Lua table form.
+* `get_stack_max()`: returns the maximum size of the stack (depends on the
+ item).
+* `get_free_space()`: returns `get_stack_max() - get_count()`.
+* `is_known()`: returns `true` if the item name refers to a defined item type.
+* `get_definition()`: returns the item definition table.
+* `get_tool_capabilities()`: returns the digging properties of the item,
+ or those of the hand if none are defined for this item type
+* `add_wear(amount)`
+ * Increases wear by `amount` if the item is a tool, otherwise does nothing
+ * Valid `amount` range is [0,65536]
+ * `amount`: number, integer
+* `add_wear_by_uses(max_uses)`
+ * Increases wear in such a way that, if only this function is called,
+ the item breaks after `max_uses` times
+ * Valid `max_uses` range is [0,65536]
+ * Does nothing if item is not a tool or if `max_uses` is 0
+* `add_item(item)`: returns leftover `ItemStack`
+ * Put some item or stack onto this stack
+* `item_fits(item)`: returns `true` if item or stack can be fully added to
+ this one.
+* `take_item(n)`: returns taken `ItemStack`
+ * Take (and remove) up to `n` items from this stack
+ * `n`: number, default: `1`
+* `peek_item(n)`: returns taken `ItemStack`
+ * Copy (don't remove) up to `n` items from this stack
+ * `n`: number, default: `1`
+
+`ItemStackMetaRef`
+------------------
+
+ItemStack metadata: reference extra data and functionality stored in a stack.
+Can be obtained via `item:get_meta()`.
+
+### Methods
+
+* All methods in MetaDataRef
+* `set_tool_capabilities([tool_capabilities])`
+ * Overrides the item's tool capabilities
+ * A nil value will clear the override data and restore the original
+ behavior.
+
+`MetaDataRef`
+-------------
+
+Base class used by [`StorageRef`], [`NodeMetaRef`], [`ItemStackMetaRef`],
+and [`PlayerMetaRef`].
+
+### Methods
+
+* `contains(key)`: Returns true if key present, otherwise false.
+ * Returns `nil` when the MetaData is inexistent.
+* `get(key)`: Returns `nil` if key not present, else the stored string.
+* `set_string(key, value)`: Value of `""` will delete the key.
+* `get_string(key)`: Returns `""` if key not present.
+* `set_int(key, value)`
+* `get_int(key)`: Returns `0` if key not present.
+* `set_float(key, value)`
+* `get_float(key)`: Returns `0` if key not present.
+* `to_table()`: returns `nil` or a table with keys:
+ * `fields`: key-value storage
+ * `inventory`: `{list1 = {}, ...}}` (NodeMetaRef only)
+* `from_table(nil or {})`
+ * Any non-table value will clear the metadata
+ * See [Node Metadata] for an example
+ * returns `true` on success
+* `equals(other)`
+ * returns `true` if this metadata has the same key-value pairs as `other`
+
+`ModChannel`
+------------
+
+An interface to use mod channels on client and server
+
+### Methods
+
+* `leave()`: leave the mod channel.
+ * Server leaves channel `channel_name`.
+ * No more incoming or outgoing messages can be sent to this channel from
+ server mods.
+ * This invalidate all future object usage.
+ * Ensure you set mod_channel to nil after that to free Lua resources.
+* `is_writeable()`: returns true if channel is writeable and mod can send over
+ it.
+* `send_all(message)`: Send `message` though the mod channel.
+ * If mod channel is not writeable or invalid, message will be dropped.
+ * Message size is limited to 65535 characters by protocol.
+
+`NodeMetaRef`
+-------------
-### `NodeMetaRef`
Node metadata: reference extra data and functionality stored in a node.
-Can be gotten via `minetest.get_meta(pos)`.
-
-#### Methods
-* `set_string(name, value)`
-* `get_string(name)`
-* `set_int(name, value)`
-* `get_int(name)`
-* `set_float(name, value)`
-* `get_float(name)`
+Can be obtained via `minetest.get_meta(pos)`.
+
+### Methods
+
+* All methods in MetaDataRef
* `get_inventory()`: returns `InvRef`
-* `to_table()`: returns `nil` or `{fields = {...}, inventory = {list1 = {}, ...}}`
-* `from_table(nil or {})`
- * to clear metadata, use from_table(nil)
- * See "Node Metadata"
+* `mark_as_private(name or {name1, name2, ...})`: Mark specific vars as private
+ This will prevent them from being sent to the client. Note that the "private"
+ status will only be remembered if an associated key-value pair exists,
+ meaning it's best to call this when initializing all other meta (e.g.
+ `on_construct`).
+
+`NodeTimerRef`
+--------------
-### `NodeTimerRef`
Node Timers: a high resolution persistent per-node timer.
Can be gotten via `minetest.get_node_timer(pos)`.
-#### Methods
+### Methods
+
* `set(timeout,elapsed)`
* set a timer's state
* `timeout` is in seconds, and supports fractional values (0.1 etc)
* `elapsed` is in seconds, and supports fractional values (0.1 etc)
- * will trigger the node's `on_timer` function after `timeout`-elapsed seconds
+ * will trigger the node's `on_timer` function after `(timeout - elapsed)`
+ seconds.
* `start(timeout)`
* start a timer
* equivalent to `set(timeout,0)`
@@ -2728,47 +6804,115 @@ Can be gotten via `minetest.get_node_timer(pos)`.
* `get_timeout()`: returns current timeout in seconds
* if `timeout` equals `0`, timer is inactive
* `get_elapsed()`: returns current elapsed time in seconds
- * the node's `on_timer` function will be called after `timeout`-elapsed seconds
+ * the node's `on_timer` function will be called after `(timeout - elapsed)`
+ seconds.
* `is_started()`: returns boolean state of timer
* returns `true` if timer is started, otherwise `false`
-### `ObjectRef`
-Moving things in the game are generally these.
-
-This is basically a reference to a C++ `ServerActiveObject`
+`ObjectRef`
+-----------
-#### Methods
-* `remove()`: remove object (after returning from Lua)
- * Note: Doesn't work on players, use minetest.kick_player instead
-* `getpos()`: returns `{x=num, y=num, z=num}`
-* `setpos(pos)`; `pos`=`{x=num, y=num, z=num}`
-* `moveto(pos, continuous=false)`: interpolated move
+Moving things in the game are generally these.
+This is basically a reference to a C++ `ServerActiveObject`.
+
+### Advice on handling `ObjectRefs`
+
+When you receive an `ObjectRef` as a callback argument or from another API
+function, it is possible to store the reference somewhere and keep it around.
+It will keep functioning until the object is unloaded or removed.
+
+However, doing this is **NOT** recommended as there is (intentionally) no method
+to test if a previously acquired `ObjectRef` is still valid.
+Instead, `ObjectRefs` should be "let go" of as soon as control is returned from
+Lua back to the engine.
+Doing so is much less error-prone and you will never need to wonder if the
+object you are working with still exists.
+
+### Attachments
+
+It is possible to attach objects to other objects (`set_attach` method).
+
+When an object is attached, it is positioned relative to the parent's position
+and rotation. `get_pos` and `get_rotation` will always return the parent's
+values and changes via their setter counterparts are ignored.
+
+To change position or rotation call `set_attach` again with the new values.
+
+**Note**: Just like model dimensions, the relative position in `set_attach`
+must be multiplied by 10 compared to world positions.
+
+It is also possible to attach to a bone of the parent object. In that case the
+child will follow movement and rotation of that bone.
+
+### Methods
+
+* `get_pos()`: returns `{x=num, y=num, z=num}`
+* `set_pos(pos)`: `pos`=`{x=num, y=num, z=num}`
+* `get_velocity()`: returns the velocity, a vector.
+* `add_velocity(vel)`
+ * `vel` is a vector, e.g. `{x=0.0, y=2.3, z=1.0}`
+ * In comparison to using get_velocity, adding the velocity and then using
+ set_velocity, add_velocity is supposed to avoid synchronization problems.
+ Additionally, players also do not support set_velocity.
+ * If a player:
+ * Does not apply during free_move.
+ * Note that since the player speed is normalized at each move step,
+ increasing e.g. Y velocity beyond what would usually be achieved
+ (see: physics overrides) will cause existing X/Z velocity to be reduced.
+ * Example: `add_velocity({x=0, y=6.5, z=0})` is equivalent to
+ pressing the jump key (assuming default settings)
+* `move_to(pos, continuous=false)`
+ * Does an interpolated move for Lua entities for visually smooth transitions.
+ * If `continuous` is true, the Lua entity will not be moved to the current
+ position before starting the interpolated move.
+ * For players this does the same as `set_pos`,`continuous` is ignored.
* `punch(puncher, time_from_last_punch, tool_capabilities, direction)`
* `puncher` = another `ObjectRef`,
* `time_from_last_punch` = time since last punch action of the puncher
* `direction`: can be `nil`
* `right_click(clicker)`; `clicker` is another `ObjectRef`
-* `get_hp()`: returns number of hitpoints (2 * number of hearts)
-* `set_hp(hp)`: set number of hitpoints (2 * number of hearts)
-* `get_inventory()`: returns an `InvRef`
-* `get_wield_list()`: returns the name of the inventory list the wielded item is in
+* `get_hp()`: returns number of health points
+* `set_hp(hp, reason)`: set number of health points
+ * See reason in register_on_player_hpchange
+ * Is limited to the range of 0 ... 65535 (2^16 - 1)
+ * For players: HP are also limited by `hp_max` specified in object properties
+* `get_inventory()`: returns an `InvRef` for players, otherwise returns `nil`
+* `get_wield_list()`: returns the name of the inventory list the wielded item
+ is in.
* `get_wield_index()`: returns the index of the wielded item
* `get_wielded_item()`: returns an `ItemStack`
-* `set_wielded_item(item)`: replaces the wielded item, returns `true` if successful
+* `set_wielded_item(item)`: replaces the wielded item, returns `true` if
+ successful.
* `set_armor_groups({group1=rating, group2=rating, ...})`
* `get_armor_groups()`: returns a table with the armor group ratings
-* `set_animation({x=1,y=1}, frame_speed=15, frame_blend=0, frame_loop=true)`
-* `get_animation()`: returns range, frame_speed, frame_blend and frame_loop
-* `set_attach(parent, bone, position, rotation)`
- * `bone`: string
- * `position`: `{x=num, y=num, z=num}` (relative)
- * `rotation`: `{x=num, y=num, z=num}`
-* `get_attach()`: returns parent, bone, position, rotation or nil if it isn't attached
+* `set_animation(frame_range, frame_speed, frame_blend, frame_loop)`
+ * `frame_range`: table {x=num, y=num}, default: `{x=1, y=1}`
+ * `frame_speed`: number, default: `15.0`
+ * `frame_blend`: number, default: `0.0`
+ * `frame_loop`: boolean, default: `true`
+* `get_animation()`: returns `range`, `frame_speed`, `frame_blend` and
+ `frame_loop`.
+* `set_animation_frame_speed(frame_speed)`
+ * `frame_speed`: number, default: `15.0`
+* `set_attach(parent[, bone, position, rotation, forced_visible])`
+ * `parent`: `ObjectRef` to attach to
+ * `bone`: default `""` (the root bone)
+ * `position`: relative position, default `{x=0, y=0, z=0}`
+ * `rotation`: relative rotation in degrees, default `{x=0, y=0, z=0}`
+ * `forced_visible`: Boolean to control whether the attached entity
+ should appear in first person, default `false`.
+ * Please also read the [Attachments] section above.
+ * This command may fail silently (do nothing) when it would result
+ in circular attachments.
+* `get_attach()`: returns parent, bone, position, rotation, forced_visible,
+ or nil if it isn't attached.
+* `get_children()`: returns a list of ObjectRefs that are attached to the
+ object.
* `set_detach()`
-* `set_bone_position(bone, position, rotation)`
- * `bone`: string
- * `position`: `{x=num, y=num, z=num}` (relative)
- * `rotation`: `{x=num, y=num, z=num}`
+* `set_bone_position([bone, position, rotation])`
+ * `bone`: string. Default is `""`, the root bone
+ * `position`: `{x=num, y=num, z=num}`, relative, `default {x=0, y=0, z=0}`
+ * `rotation`: `{x=num, y=num, z=num}`, default `{x=0, y=0, z=0}`
* `get_bone_position(bone)`: returns position and rotation of the bone
* `set_properties(object property table)`
* `get_properties()`: returns object property table
@@ -2776,89 +6920,189 @@ This is basically a reference to a C++ `ServerActiveObject`
* `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
}
-##### LuaEntitySAO-only (no-op for other objects)
-* `setvelocity({x=num, y=num, z=num})`
-* `getvelocity()`: returns `{x=num, y=num, z=num}`
-* `setacceleration({x=num, y=num, z=num})`
-* `getacceleration()`: returns `{x=num, y=num, z=num}`
-* `setyaw(radians)`
-* `getyaw()`: returns number in radians
-* `settexturemod(mod)`
-* `setsprite(p={x=0,y=0}, num_frames=1, framelength=0.2,
- select_horiz_by_yawpitch=false)`
- * Select sprite from spritesheet with optional animation and DM-style
- texture selection based on yaw relative to camera
-* `get_entity_name()` (**Deprecated**: Will be removed in a future version)
+#### Lua entity only (no-op for other objects)
+
+* `remove()`: remove object
+ * The object is removed after returning from Lua. However the `ObjectRef`
+ itself instantly becomes unusable with all further method calls having
+ no effect and returning `nil`.
+* `set_velocity(vel)`
+ * `vel` is a vector, e.g. `{x=0.0, y=2.3, z=1.0}`
+* `set_acceleration(acc)`
+ * `acc` is a vector
+* `get_acceleration()`: returns the acceleration, a vector
+* `set_rotation(rot)`
+ * `rot` is a vector (radians). X is pitch (elevation), Y is yaw (heading)
+ and Z is roll (bank).
+* `get_rotation()`: returns the rotation, a vector (radians)
+* `set_yaw(yaw)`: sets the yaw in radians (heading).
+* `get_yaw()`: returns number in radians
+* `set_texture_mod(mod)`
+ * Set a texture modifier to the base texture, for sprites and meshes.
+ * When calling `set_texture_mod` again, the previous one is discarded.
+ * `mod` the texture modifier. See [Texture modifiers].
+* `get_texture_mod()` returns current texture modifier
+* `set_sprite(start_frame, num_frames, framelength, select_x_by_camera)`
+ * Specifies and starts a sprite animation
+ * Animations iterate along the frame `y` position.
+ * `start_frame`: {x=column number, y=row number}, the coordinate of the
+ first frame, default: `{x=0, y=0}`
+ * `num_frames`: Total frames in the texture, default: `1`
+ * `framelength`: Time per animated frame in seconds, default: `0.2`
+ * `select_x_by_camera`: Only for visual = `sprite`. Changes the frame `x`
+ position according to the view direction. default: `false`.
+ * First column: subject facing the camera
+ * Second column: subject looking to the left
+ * Third column: subject backing the camera
+ * Fourth column: subject looking to the right
+ * Fifth column: subject viewed from above
+ * Sixth column: subject viewed from below
+* `get_entity_name()` (**Deprecated**: Will be removed in a future version, use the field `self.name` instead)
* `get_luaentity()`
-##### Player-only (no-op for other objects)
+#### Player only (no-op for other objects)
+
* `get_player_name()`: returns `""` if is not a player
-* `get_player_velocity()`: returns `nil` if is not a player, otherwise a
+* `get_player_velocity()`: **DEPRECATED**, use get_velocity() instead.
table {x, y, z} representing the player's instantaneous velocity in nodes/s
+* `add_player_velocity(vel)`: **DEPRECATED**, use add_velocity(vel) instead.
* `get_look_dir()`: get camera direction as a unit vector
* `get_look_vertical()`: pitch in radians
- * Angle ranges between -pi/2 and pi/2, which are straight up and down respectively.
+ * Angle ranges between -pi/2 and pi/2, which are straight up and down
+ respectively.
* `get_look_horizontal()`: yaw in radians
- * Angle is counter-clockwise from the +z direction.
+ * Angle is counter-clockwise from the +z direction.
* `set_look_vertical(radians)`: sets look pitch
- * radians - Angle from looking forward, where positive is downwards.
+ * radians: Angle from looking forward, where positive is downwards.
* `set_look_horizontal(radians)`: sets look yaw
- * radians - Angle from the +z direction, where positive is counter-clockwise.
-* `get_look_pitch()`: pitch in radians - Deprecated as broken. Use get_look_vertical.
- * Angle ranges between -pi/2 and pi/2, which are straight down and up respectively.
-* `get_look_yaw()`: yaw in radians - Deprecated as broken. Use get_look_horizontal.
- * Angle is counter-clockwise from the +x direction.
-* `set_look_pitch(radians)`: sets look pitch - Deprecated. Use set_look_vertical.
-* `set_look_yaw(radians)`: sets look yaw - Deprecated. Use set_look_horizontal.
-* `get_breath()`: returns players breath
-* `set_breath(value)`: sets players breath
- * values:
- * `0`: player is drowning,
- * `1`-`10`: remaining number of bubbles
- * `11`: bubbles bar is not shown
+ * radians: Angle from the +z direction, where positive is counter-clockwise.
+* `get_look_pitch()`: pitch in radians - Deprecated as broken. Use
+ `get_look_vertical`.
+ * Angle ranges between -pi/2 and pi/2, which are straight down and up
+ respectively.
+* `get_look_yaw()`: yaw in radians - Deprecated as broken. Use
+ `get_look_horizontal`.
+ * Angle is counter-clockwise from the +x direction.
+* `set_look_pitch(radians)`: sets look pitch - Deprecated. Use
+ `set_look_vertical`.
+* `set_look_yaw(radians)`: sets look yaw - Deprecated. Use
+ `set_look_horizontal`.
+* `get_breath()`: returns player's breath
+* `set_breath(value)`: sets player's breath
+ * values:
+ * `0`: player is drowning
+ * max: bubbles bar is not shown
+ * See [Object properties] for more information
+ * Is limited to range 0 ... 65535 (2^16 - 1)
+* `set_fov(fov, is_multiplier, transition_time)`: Sets player's FOV
+ * `fov`: FOV value.
+ * `is_multiplier`: Set to `true` if the FOV value is a multiplier.
+ Defaults to `false`.
+ * `transition_time`: If defined, enables smooth FOV transition.
+ Interpreted as the time (in seconds) to reach target FOV.
+ If set to 0, FOV change is instantaneous. Defaults to 0.
+ * Set `fov` to 0 to clear FOV override.
+* `get_fov()`: Returns the following:
+ * Server-sent FOV value. Returns 0 if an FOV override doesn't exist.
+ * Boolean indicating whether the FOV value is a multiplier.
+ * Time (in seconds) taken for the FOV transition. Set by `set_fov`.
+* `set_attribute(attribute, value)`: DEPRECATED, use get_meta() instead
+ * Sets an extra attribute with value on player.
+ * `value` must be a string, or a number which will be converted to a
+ string.
+ * If `value` is `nil`, remove attribute from player.
+* `get_attribute(attribute)`: DEPRECATED, use get_meta() instead
+ * Returns value (a string) for extra attribute.
+ * Returns `nil` if no attribute found.
+* `get_meta()`: Returns a PlayerMetaRef.
* `set_inventory_formspec(formspec)`
* Redefine player's inventory form
- * Should usually be called in on_joinplayer
+ * Should usually be called in `on_joinplayer`
+ * If `formspec` is `""`, the player's inventory is disabled.
* `get_inventory_formspec()`: returns a formspec string
+* `set_formspec_prepend(formspec)`:
+ * the formspec string will be added to every formspec shown to the user,
+ except for those with a no_prepend[] tag.
+ * This should be used to set style elements such as background[] and
+ bgcolor[], any non-style elements (eg: label) may result in weird behaviour.
+ * Only affects formspecs shown after this is called.
+* `get_formspec_prepend(formspec)`: returns a formspec string.
* `get_player_control()`: returns table with player pressed keys
- * `{jump=bool,right=bool,left=bool,LMB=bool,RMB=bool,sneak=bool,aux1=bool,down=bool,up=bool}`
-* `get_player_control_bits()`: returns integer with bit packed player pressed keys
- * bit nr/meaning: 0/up ,1/down ,2/left ,3/right ,4/jump ,5/aux1 ,6/sneak ,7/LMB ,8/RMB
+ * The table consists of fields with the following boolean values
+ representing the pressed keys: `up`, `down`, `left`, `right`, `jump`,
+ `aux1`, `sneak`, `dig`, `place`, `LMB`, `RMB`, and `zoom`.
+ * The fields `LMB` and `RMB` are equal to `dig` and `place` respectively,
+ and exist only to preserve backwards compatibility.
+ * Returns an empty table `{}` if the object is not a player.
+* `get_player_control_bits()`: returns integer with bit packed player pressed
+ keys.
+ * Bits:
+ * 0 - up
+ * 1 - down
+ * 2 - left
+ * 3 - right
+ * 4 - jump
+ * 5 - aux1
+ * 6 - sneak
+ * 7 - dig
+ * 8 - place
+ * 9 - zoom
+ * Returns `0` (no bits set) if the object is not a player.
* `set_physics_override(override_table)`
* `override_table` is a table with the following fields:
* `speed`: multiplier to default walking speed value (default: `1`)
* `jump`: multiplier to default jump value (default: `1`)
* `gravity`: multiplier to default gravity value (default: `1`)
* `sneak`: whether player can sneak (default: `true`)
- * `sneak_glitch`: whether player can use the sneak glitch (default: `true`)
-* `get_physics_override()`: returns the table given to set_physics_override
+ * `sneak_glitch`: whether player can use the new move code replications
+ of the old sneak side-effects: sneak ladders and 2 node sneak jump
+ (default: `false`)
+ * `new_move`: use new move/sneak code. When `false` the exact old code
+ is used for the specific old sneak behaviour (default: `true`)
+* `get_physics_override()`: returns the table given to `set_physics_override`
* `hud_add(hud definition)`: add a HUD element described by HUD def, returns ID
number on success
* `hud_remove(id)`: remove the HUD element of the specified id
-* `hud_change(id, stat, value)`: change a value of a previously added HUD element
- * element `stat` values: `position`, `name`, `scale`, `text`, `number`, `item`, `dir`
+* `hud_change(id, stat, value)`: change a value of a previously added HUD
+ element.
+ * `stat` supports the same keys as in the hud definition table except for
+ `"hud_elem_type"`.
* `hud_get(id)`: gets the HUD element definition structure of the specified ID
-* `hud_set_flags(flags)`: sets specified HUD flags to `true`/`false`
- * `flags`: (is visible) `hotbar`, `healthbar`, `crosshair`, `wielditem`, `minimap`
- * pass a table containing a `true`/`false` value of each flag to be set or unset
- * if a flag equals `nil`, the flag is not modified
- * note that setting `minimap` modifies the client's permission to view the minimap -
- * the client may locally elect to not view the minimap
-* `hud_get_flags()`: returns a table containing status of hud flags
- * returns `{ hotbar=true, healthbar=true, crosshair=true, wielditem=true, breathbar=true, minimap=true }`
+* `hud_set_flags(flags)`: sets specified HUD flags of player.
+ * `flags`: A table with the following fields set to boolean values
+ * `hotbar`
+ * `healthbar`
+ * `crosshair`
+ * `wielditem`
+ * `breathbar`
+ * `minimap`: Modifies the client's permission to view the minimap.
+ The client may locally elect to not view the minimap.
+ * `minimap_radar`: is only usable when `minimap` is true
+ * `basic_debug`: Allow showing basic debug info that might give a gameplay advantage.
+ This includes map seed, player position, look direction, the pointed node and block bounds.
+ Does not affect players with the `debug` privilege.
+ * If a flag equals `nil`, the flag is not modified
+* `hud_get_flags()`: returns a table of player HUD flags with boolean values.
+ * See `hud_set_flags` for a list of flags that can be toggled.
* `hud_set_hotbar_itemcount(count)`: sets number of items in builtin hotbar
- * `count`: number of items, must be between `1` and `23`
+ * `count`: number of items, must be between `1` and `32`
* `hud_get_hotbar_itemcount`: returns number of visible items
* `hud_set_hotbar_image(texturename)`
* sets background image for hotbar
@@ -2866,990 +7110,1355 @@ This is basically a reference to a C++ `ServerActiveObject`
* `hud_set_hotbar_selected_image(texturename)`
* sets image for selected item of hotbar
* `hud_get_hotbar_selected_image`: returns texturename
-* `hud_replace_builtin(name, hud_definition)`
- * replace definition of a builtin hud element
- * `name`: `"breath"` or `"health"`
- * `hud_definition`: definition to replace builtin definition
-* `set_sky(bgcolor, type, {texture names})`
- * `bgcolor`: ColorSpec, defaults to white
- * Available types:
+* `set_minimap_modes({mode, mode, ...}, selected_mode)`
+ * Overrides the available minimap modes (and toggle order), and changes the
+ selected mode.
+ * `mode` is a table consisting of up to four fields:
+ * `type`: Available type:
+ * `off`: Minimap off
+ * `surface`: Minimap in surface mode
+ * `radar`: Minimap in radar mode
+ * `texture`: Texture to be displayed instead of terrain map
+ (texture is centered around 0,0 and can be scaled).
+ Texture size is limited to 512 x 512 pixel.
+ * `label`: Optional label to display on minimap mode toggle
+ The translation must be handled within the mod.
+ * `size`: Sidelength or diameter, in number of nodes, of the terrain
+ displayed in minimap
+ * `texture`: Only for texture type, name of the texture to display
+ * `scale`: Only for texture type, scale of the texture map in nodes per
+ pixel (for example a `scale` of 2 means each pixel represents a 2x2
+ nodes square)
+ * `selected_mode` is the mode index to be selected after modes have been changed
+ (0 is the first mode).
+* `set_sky(sky_parameters)`
+ * The presence of the function `set_sun`, `set_moon` or `set_stars` indicates
+ whether `set_sky` accepts this format. Check the legacy format otherwise.
+ * Passing no arguments resets the sky to its default values.
+ * `sky_parameters` is a table with the following optional fields:
+ * `base_color`: ColorSpec, changes fog in "skybox" and "plain".
+ (default: `#ffffff`)
+ * `type`: Available types:
+ * `"regular"`: Uses 0 textures, `base_color` ignored
+ * `"skybox"`: Uses 6 textures, `base_color` used as fog.
+ * `"plain"`: Uses 0 textures, `base_color` used as both fog and sky.
+ (default: `"regular"`)
+ * `textures`: A table containing up to six textures in the following
+ order: Y+ (top), Y- (bottom), X- (west), X+ (east), Z+ (north), Z- (south).
+ * `clouds`: Boolean for whether clouds appear. (default: `true`)
+ * `sky_color`: A table used in `"regular"` type only, containing the
+ following values (alpha is ignored):
+ * `day_sky`: ColorSpec, for the top half of the sky during the day.
+ (default: `#61b5f5`)
+ * `day_horizon`: ColorSpec, for the bottom half of the sky during the day.
+ (default: `#90d3f6`)
+ * `dawn_sky`: ColorSpec, for the top half of the sky during dawn/sunset.
+ (default: `#b4bafa`)
+ The resulting sky color will be a darkened version of the ColorSpec.
+ Warning: The darkening of the ColorSpec is subject to change.
+ * `dawn_horizon`: ColorSpec, for the bottom half of the sky during dawn/sunset.
+ (default: `#bac1f0`)
+ The resulting sky color will be a darkened version of the ColorSpec.
+ Warning: The darkening of the ColorSpec is subject to change.
+ * `night_sky`: ColorSpec, for the top half of the sky during the night.
+ (default: `#006bff`)
+ The resulting sky color will be a dark version of the ColorSpec.
+ Warning: The darkening of the ColorSpec is subject to change.
+ * `night_horizon`: ColorSpec, for the bottom half of the sky during the night.
+ (default: `#4090ff`)
+ The resulting sky color will be a dark version of the ColorSpec.
+ Warning: The darkening of the ColorSpec is subject to change.
+ * `indoors`: ColorSpec, for when you're either indoors or underground.
+ (default: `#646464`)
+ * `fog_sun_tint`: ColorSpec, changes the fog tinting for the sun
+ at sunrise and sunset. (default: `#f47d1d`)
+ * `fog_moon_tint`: ColorSpec, changes the fog tinting for the moon
+ at sunrise and sunset. (default: `#7f99cc`)
+ * `fog_tint_type`: string, changes which mode the directional fog
+ abides by, `"custom"` uses `sun_tint` and `moon_tint`, while
+ `"default"` uses the classic Minetest sun and moon tinting.
+ Will use tonemaps, if set to `"default"`. (default: `"default"`)
+* `set_sky(base_color, type, {texture names}, clouds)`
+ * Deprecated. Use `set_sky(sky_parameters)`
+ * `base_color`: ColorSpec, defaults to white
+ * `type`: Available types:
* `"regular"`: Uses 0 textures, `bgcolor` ignored
* `"skybox"`: Uses 6 textures, `bgcolor` used
* `"plain"`: Uses 0 textures, `bgcolor` used
-* `get_sky()`: returns bgcolor, type and a table with the textures
+ * `clouds`: Boolean for whether clouds appear in front of `"skybox"` or
+ `"plain"` custom skyboxes (default: `true`)
+* `get_sky(as_table)`:
+ * `as_table`: boolean that determines whether the deprecated version of this
+ function is being used.
+ * `true` returns a table containing sky parameters as defined in `set_sky(sky_parameters)`.
+ * Deprecated: `false` or `nil` returns base_color, type, table of textures,
+ clouds.
+* `get_sky_color()`:
+ * Deprecated: Use `get_sky(as_table)` instead.
+ * returns a table with the `sky_color` parameters as in `set_sky`.
+* `set_sun(sun_parameters)`:
+ * Passing no arguments resets the sun to its default values.
+ * `sun_parameters` is a table with the following optional fields:
+ * `visible`: Boolean for whether the sun is visible.
+ (default: `true`)
+ * `texture`: A regular texture for the sun. Setting to `""`
+ will re-enable the mesh sun. (default: "sun.png", if it exists)
+ * `tonemap`: A 512x1 texture containing the tonemap for the sun
+ (default: `"sun_tonemap.png"`)
+ * `sunrise`: A regular texture for the sunrise texture.
+ (default: `"sunrisebg.png"`)
+ * `sunrise_visible`: Boolean for whether the sunrise texture is visible.
+ (default: `true`)
+ * `scale`: Float controlling the overall size of the sun. (default: `1`)
+* `get_sun()`: returns a table with the current sun parameters as in
+ `set_sun`.
+* `set_moon(moon_parameters)`:
+ * Passing no arguments resets the moon to its default values.
+ * `moon_parameters` is a table with the following optional fields:
+ * `visible`: Boolean for whether the moon is visible.
+ (default: `true`)
+ * `texture`: A regular texture for the moon. Setting to `""`
+ will re-enable the mesh moon. (default: `"moon.png"`, if it exists)
+ Note: Relative to the sun, the moon texture is rotated by 180°.
+ You can use the `^[transformR180` texture modifier to achieve the same orientation.
+ * `tonemap`: A 512x1 texture containing the tonemap for the moon
+ (default: `"moon_tonemap.png"`)
+ * `scale`: Float controlling the overall size of the moon (default: `1`)
+* `get_moon()`: returns a table with the current moon parameters as in
+ `set_moon`.
+* `set_stars(star_parameters)`:
+ * Passing no arguments resets stars to their default values.
+ * `star_parameters` is a table with the following optional fields:
+ * `visible`: Boolean for whether the stars are visible.
+ (default: `true`)
+ * `day_opacity`: Float for maximum opacity of stars at day.
+ No effect if `visible` is false.
+ (default: 0.0; maximum: 1.0; minimum: 0.0)
+ * `count`: Integer number to set the number of stars in
+ the skybox. Only applies to `"skybox"` and `"regular"` sky types.
+ (default: `1000`)
+ * `star_color`: ColorSpec, sets the colors of the stars,
+ alpha channel is used to set overall star brightness.
+ (default: `#ebebff69`)
+ * `scale`: Float controlling the overall size of the stars (default: `1`)
+* `get_stars()`: returns a table with the current stars parameters as in
+ `set_stars`.
+* `set_clouds(cloud_parameters)`: set cloud parameters
+ * Passing no arguments resets clouds to their default values.
+ * `cloud_parameters` is a table with the following optional fields:
+ * `density`: from `0` (no clouds) to `1` (full clouds) (default `0.4`)
+ * `color`: basic cloud color with alpha channel, ColorSpec
+ (default `#fff0f0e5`).
+ * `ambient`: cloud color lower bound, use for a "glow at night" effect.
+ ColorSpec (alpha ignored, default `#000000`)
+ * `height`: cloud height, i.e. y of cloud base (default per conf,
+ usually `120`)
+ * `thickness`: cloud thickness in nodes (default `16`)
+ * `speed`: 2D cloud speed + direction in nodes per second
+ (default `{x=0, z=-2}`).
+* `get_clouds()`: returns a table with the current cloud parameters as in
+ `set_clouds`.
* `override_day_night_ratio(ratio or nil)`
- * `0`...`1`: Overrides day-night ratio, controlling sunlight to a specific amount
+ * `0`...`1`: Overrides day-night ratio, controlling sunlight to a specific
+ amount.
* `nil`: Disables override, defaulting to sunlight based on day-night cycle
* `get_day_night_ratio()`: returns the ratio or nil if it isn't overridden
-* `set_local_animation(stand/idle, walk, dig, walk+dig, frame_speed=frame_speed)`
-
- set animation for player model in third person view
-
- set_local_animation({x=0, y=79}, -- < stand/idle animation key frames
- {x=168, y=187}, -- < walk animation key frames
- {x=189, y=198}, -- < dig animation key frames
- {x=200, y=219}, -- < walk+dig animation key frames
- frame_speed=30): -- < animation frame speed
-* `get_local_animation()`: returns stand, walk, dig, dig+walk tables and frame_speed
-* `set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})`: defines offset value for camera per player
+* `set_local_animation(idle, walk, dig, walk_while_dig, frame_speed)`:
+ set animation for player model in third person view.
+ * Every animation equals to a `{x=starting frame, y=ending frame}` table.
+ * `frame_speed` sets the animations frame speed. Default is 30.
+* `get_local_animation()`: returns idle, walk, dig, walk_while_dig tables and
+ `frame_speed`.
+* `set_eye_offset([firstperson, thirdperson])`: defines offset vectors for
+ camera per player. An argument defaults to `{x=0, y=0, z=0}` if unspecified.
* in first person view
* in third person view (max. values `{x=-10/10,y=-10,15,z=-5/5}`)
-* `get_eye_offset()`: returns offset_first and offset_third
-
-### `InvRef`
-An `InvRef` is a reference to an inventory.
-
-#### Methods
-* `is_empty(listname)`: return `true` if list is empty
-* `get_size(listname)`: get size of a list
-* `set_size(listname, size)`: set size of a list
- * returns `false` on error (e.g. invalid `listname` or `size`)
-* `get_width(listname)`: get width of a list
-* `set_width(listname, width)`: set width of list; currently used for crafting
-* `get_stack(listname, i)`: get a copy of stack index `i` in list
-* `set_stack(listname, i, stack)`: copy `stack` to index `i` in list
-* `get_list(listname)`: return full list
-* `set_list(listname, list)`: set full list (size will not change)
-* `get_lists()`: returns list of inventory lists
-* `set_lists(lists)`: sets inventory lists (size will not change)
-* `add_item(listname, stack)`: add item somewhere in list, returns leftover `ItemStack`
-* `room_for_item(listname, stack):` returns `true` if the stack of items
- can be fully added to the list
-* `contains_item(listname, stack)`: returns `true` if the stack of items
- can be fully taken from the list
-* `remove_item(listname, stack)`: take as many items as specified from the list,
- returns the items that were actually removed (as an `ItemStack`) -- note that
- any item metadata is ignored, so attempting to remove a specific unique
- item this way will likely remove the wrong one -- to do that use `set_stack`
- with an empty `ItemStack`
-* `get_location()`: returns a location compatible to `minetest.get_inventory(location)`
- * returns `{type="undefined"}` in case location is not known
-
-### `AreaStore`
-A fast access data structure to store areas, and find areas near a given position or area.
-Every area has a `data` string attribute to store additional information.
-You can create an empty `AreaStore` by calling `AreaStore()`, or `AreaStore(type_name)`.
-If you chose the parameter-less constructor, a fast implementation will be automatically
-chosen for you.
-
-#### Methods
-* `get_area(id, include_borders, include_data)`: returns the area with the id `id`.
- (optional) Boolean values `include_borders` and `include_data` control what's copied.
- Returns nil if specified area id does not exist.
-* `get_areas_for_pos(pos, include_borders, include_data)`: returns all areas that contain
- the position `pos`. (optional) Boolean values `include_borders` and `include_data` control
- what's copied.
-* `get_areas_in_area(edge1, edge2, accept_overlap, include_borders, include_data)`:
- returns all areas that contain all nodes inside the area specified by `edge1` and `edge2` (inclusive).
- If `accept_overlap` is true, also areas are returned that have nodes in common with the specified area.
- (optional) Boolean values `include_borders` and `include_data` control what's copied.
-* `insert_area(edge1, edge2, data, [id])`: inserts an area into the store. Returns the new area's ID,
- or nil if the insertion failed. The (inclusive) positions `edge1` and `edge2` describe the area.
- `data` is a string stored with the area. If passed, `id` will be used as the internal area ID,
- it must be a unique number between 0 and 2^32-2. If you use the `id` parameter you must always use it,
- or insertions are likely to fail due to conflicts.
-* `reserve(count)`: reserves resources for at most `count` many contained areas.
- Only needed for efficiency, and only some implementations profit.
-* `remove_area(id)`: removes the area with the given id from the store, returns success.
-* `set_cache_params(params)`: sets params for the included prefiltering cache.
- Calling invalidates the cache, so that its elements have to be newly generated.
- * `params`:
- {
- enabled = boolean, -- whether to enable, default true
- block_radius = number, -- the radius (in nodes) of the areas the cache generates
- prefiltered lists for, minimum 16, default 64
- limit = number, -- the cache's size, minimum 20, default 1000
- }
-* `to_string()`: Experimental. Returns area store serialized as a (binary) string.
-* `to_file(filename)`: Experimental. Like `to_string()`, but writes the data to a file.
-* `from_string(str)`: Experimental. Deserializes string and loads it into the AreaStore.
- Returns success and, optionally, an error message.
-* `from_file(filename)`: Experimental. Like `from_string()`, but reads the data from a file.
-
-### `ItemStack`
-An `ItemStack` is a stack of items.
-
-It can be created via `ItemStack(x)`, where x is an `ItemStack`,
-an itemstring, a table or `nil`.
-
-#### Methods
-* `is_empty()`: Returns `true` if stack is empty.
-* `get_name()`: Returns item name (e.g. `"default:stone"`).
-* `set_name(item_name)`: Returns boolean whether item was cleared
-* `get_count()`: Returns number of items on the stack.
-* `set_count(count)`: Returns boolean whether item was cleared
-* `get_wear()`: Returns tool wear (`0`-`65535`), `0` for non-tools.
-* `set_wear(wear)`: Returns boolean whether item was cleared
-* `get_metadata()`: Returns metadata (a string attached to an item stack).
-* `set_metadata(metadata)`: Returns true.
-* `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.
-* `to_string()`: Returns the stack in itemstring form.
-* `to_table()`: Returns the stack in Lua table form.
-* `get_stack_max()`: Returns the maximum size of the stack (depends on the item).
-* `get_free_space()`: Returns `get_stack_max() - get_count()`.
-* `is_known()`: Returns `true` if the item name refers to a defined item type.
-* `get_definition()`: Returns the item definition table.
-* `get_tool_capabilities()`: Returns the digging properties of the item,
- or those of the hand if none are defined for this item type
-* `add_wear(amount)`: Increases wear by `amount` if the item is a tool.
-* `add_item(item)`: Put some item or stack onto this stack.
- Returns leftover `ItemStack`.
-* `item_fits(item)`: Returns `true` if item or stack can be fully added to
- this one.
-* `take_item(n=1)`: Take (and remove) up to `n` items from this stack.
- Returns taken `ItemStack`.
-* `peek_item(n=1)`: copy (don't remove) up to `n` items from this stack.
- Returns taken `ItemStack`.
-
-### `PseudoRandom`
-A 16-bit pseudorandom number generator.
-Uses a well-known LCG algorithm introduced by K&R.
-
-It can be created via `PseudoRandom(seed)`.
-
-#### Methods
-* `next()`: return next integer random number [`0`...`32767`]
-* `next(min, max)`: return next integer random number [`min`...`max`]
- * `((max - min) == 32767) or ((max-min) <= 6553))` must be true
- due to the simple implementation making bad distribution otherwise.
+* `get_eye_offset()`: returns first and third person offsets.
+* `send_mapblock(blockpos)`:
+ * Sends an already loaded mapblock to the player.
+ * Returns `false` if nothing was sent (note that this can also mean that
+ the client already has the block)
+ * Resource intensive - use sparsely
+* `set_lighting(light_definition)`: sets lighting for the player
+ * `light_definition` is a table with the following optional fields:
+ * `shadows` is a table that controls ambient shadows
+ * `intensity` sets the intensity of the shadows from 0 (no shadows, default) to 1 (blackness)
+* `get_lighting()`: returns the current state of lighting for the player.
+ * Result is a table with the same fields as `light_definition` in `set_lighting`.
+* `respawn()`: Respawns the player using the same mechanism as the death screen,
+ including calling on_respawnplayer callbacks.
+
+`PcgRandom`
+-----------
-### `PcgRandom`
A 32-bit pseudorandom number generator.
-Uses PCG32, an algorithm of the permuted congruential generator family, offering very strong randomness.
+Uses PCG32, an algorithm of the permuted congruential generator family,
+offering very strong randomness.
It can be created via `PcgRandom(seed)` or `PcgRandom(seed, sequence)`.
-#### Methods
+### Methods
+
* `next()`: return next integer random number [`-2147483648`...`2147483647`]
* `next(min, max)`: return next integer random number [`min`...`max`]
-* `rand_normal_dist(min, max, num_trials=6)`: return normally distributed random number [`min`...`max`]
+* `rand_normal_dist(min, max, num_trials=6)`: return normally distributed
+ random number [`min`...`max`].
* This is only a rough approximation of a normal distribution with:
- * mean = (max - min) / 2, and
- * variance = (((max - min + 1) ^ 2) - 1) / (12 * num_trials)
- * Increasing num_trials improves accuracy of the approximation
+ * `mean = (max - min) / 2`, and
+ * `variance = (((max - min + 1) ^ 2) - 1) / (12 * num_trials)`
+ * Increasing `num_trials` improves accuracy of the approximation
-### `SecureRandom`
-Interface for the operating system's crypto-secure PRNG.
+`PerlinNoise`
+-------------
+
+A perlin noise generator.
+It can be created via `PerlinNoise()` or `minetest.get_perlin()`.
+For `minetest.get_perlin()`, the actual seed used is the noiseparams seed
+plus the world seed, to create world-specific noise.
-It can be created via `SecureRandom()`. The constructor returns nil if a secure random device cannot be
-be found on the system.
+`PerlinNoise(noiseparams)`
+`PerlinNoise(seed, octaves, persistence, spread)` (Deprecated).
-#### Methods
-* `next_bytes([count])`: return next `count` (default 1, capped at 2048) many random bytes, as a string.
+`minetest.get_perlin(noiseparams)`
+`minetest.get_perlin(seeddiff, octaves, persistence, spread)` (Deprecated).
-### `PerlinNoise`
-A perlin noise generator.
-It can be created via `PerlinNoise(seed, octaves, persistence, scale)`
-or `PerlinNoise(noiseparams)`.
-Alternatively with `minetest.get_perlin(seeddiff, octaves, persistence, scale)`
-or `minetest.get_perlin(noiseparams)`.
+### Methods
-#### Methods
-* `get2d(pos)`: returns 2D noise value at `pos={x=,y=}`
-* `get3d(pos)`: returns 3D noise value at `pos={x=,y=,z=}`
+* `get_2d(pos)`: returns 2D noise value at `pos={x=,y=}`
+* `get_3d(pos)`: returns 3D noise value at `pos={x=,y=,z=}`
+
+`PerlinNoiseMap`
+----------------
-### `PerlinNoiseMap`
A fast, bulk perlin noise generator.
It can be created via `PerlinNoiseMap(noiseparams, size)` or
`minetest.get_perlin_map(noiseparams, size)`.
+For `minetest.get_perlin_map()`, the actual seed used is the noiseparams seed
+plus the world seed, to create world-specific noise.
-Format of `size` is `{x=dimx, y=dimy, z=dimz}`. The `z` conponent is ommitted
+Format of `size` is `{x=dimx, y=dimy, z=dimz}`. The `z` component is omitted
for 2D noise, and it must be must be larger than 1 for 3D noise (otherwise
`nil` is returned).
-For each of the functions with an optional `buffer` parameter: If `buffer` is not
-nil, this table will be used to store the result instead of creating a new table.
+For each of the functions with an optional `buffer` parameter: If `buffer` is
+not nil, this table will be used to store the result instead of creating a new
+table.
+### Methods
-#### Methods
-* `get2dMap(pos)`: returns a `<size.x>` times `<size.y>` 2D array of 2D noise
- with values starting at `pos={x=,y=}`
-* `get3dMap(pos)`: returns a `<size.x>` times `<size.y>` times `<size.z>` 3D array
- of 3D noise with values starting at `pos={x=,y=,z=}`
-* `get2dMap_flat(pos, buffer)`: returns a flat `<size.x * size.y>` element array of 2D noise
+* `get_2d_map(pos)`: returns a `<size.x>` times `<size.y>` 2D array of 2D noise
with values starting at `pos={x=,y=}`
-* `get3dMap_flat(pos, buffer)`: Same as `get2dMap_flat`, but 3D noise
-* `calc2dMap(pos)`: Calculates the 2d noise map starting at `pos`. The result is stored internally.
-* `calc3dMap(pos)`: Calculates the 3d noise map starting at `pos`. The result is stored internally.
-* `getMapSlice(slice_offset, slice_size, buffer)`: In the form of an array, returns a slice of the
- most recently computed noise results. The result slice begins at coordinates `slice_offset` and
- takes a chunk of `slice_size`.
- E.g. to grab a 2-slice high horizontal 2d plane of noise starting at buffer offset y = 20:
- `noisevals = noise:getMapSlice({y=20}, {y=2})`
- It is important to note that `slice_offset` offset coordinates begin at 1, and are relative to
- the starting position of the most recently calculated noise.
- To grab a single vertical column of noise starting at map coordinates x = 1023, y=1000, z = 1000:
- `noise:calc3dMap({x=1000, y=1000, z=1000})`
- `noisevals = noise:getMapSlice({x=24, z=1}, {x=1, z=1})`
-
-### `VoxelManip`
-
-#### About VoxelManip
-VoxelManip is a scripting interface to the internal 'Map Voxel Manipulator' facility. The purpose of
-this object is for fast, low-level, bulk access to reading and writing Map content. As such, setting
-map nodes through VoxelManip will lack many of the higher level features and concepts you may be used
-to with other methods of setting nodes. For example, nodes will not have their construction and
-destruction callbacks run, and no rollback information is logged.
-
-It is important to note that VoxelManip is designed for speed, and *not* ease of use or flexibility.
-If your mod requires a map manipulation facility that will handle 100% of all edge cases, or the use
-of high level node placement features, perhaps minetest.set_node() is better suited for the job.
-
-In addition, VoxelManip might not be faster, or could even be slower, for your specific use case.
-VoxelManip is most effective when setting very large areas of map at once - for example, if only
-setting a 5x5x5 node area, a minetest.set_node() loop may be more optimal. Always profile code
-using both methods of map manipulation to determine which is most appropriate for your usage.
-
-#### Using VoxelManip
-A VoxelManip object can be created any time using either:
-`VoxelManip([p1, p2])`, or `minetest.get_voxel_manip([p1, p2])`.
+* `get_3d_map(pos)`: returns a `<size.x>` times `<size.y>` times `<size.z>`
+ 3D array of 3D noise with values starting at `pos={x=,y=,z=}`.
+* `get_2d_map_flat(pos, buffer)`: returns a flat `<size.x * size.y>` element
+ array of 2D noise with values starting at `pos={x=,y=}`
+* `get_3d_map_flat(pos, buffer)`: Same as `get2dMap_flat`, but 3D noise
+* `calc_2d_map(pos)`: Calculates the 2d noise map starting at `pos`. The result
+ is stored internally.
+* `calc_3d_map(pos)`: Calculates the 3d noise map starting at `pos`. The result
+ is stored internally.
+* `get_map_slice(slice_offset, slice_size, buffer)`: In the form of an array,
+ returns a slice of the most recently computed noise results. The result slice
+ begins at coordinates `slice_offset` and takes a chunk of `slice_size`.
+ E.g. to grab a 2-slice high horizontal 2d plane of noise starting at buffer
+ offset y = 20:
+ `noisevals = noise:get_map_slice({y=20}, {y=2})`
+ It is important to note that `slice_offset` offset coordinates begin at 1,
+ and are relative to the starting position of the most recently calculated
+ noise.
+ To grab a single vertical column of noise starting at map coordinates
+ x = 1023, y=1000, z = 1000:
+ `noise:calc_3d_map({x=1000, y=1000, z=1000})`
+ `noisevals = noise:get_map_slice({x=24, z=1}, {x=1, z=1})`
+
+`PlayerMetaRef`
+---------------
-If the optional position parameters are present for either of these routines, the specified region
-will be pre-loaded into the VoxelManip object on creation. Otherwise, the area of map you wish to
-manipulate must first be loaded into the VoxelManip object using `VoxelManip:read_from_map()`.
+Player metadata.
+Uses the same method of storage as the deprecated player attribute API, so
+data there will also be in player meta.
+Can be obtained using `player:get_meta()`.
-Note that `VoxelManip:read_from_map()` returns two position vectors. The region formed by these
-positions indicate the minimum and maximum (respectively) positions of the area actually loaded in
-the VoxelManip, which may be larger than the area requested. For convenience, the loaded area
-coordinates can also be queried any time after loading map data with `VoxelManip:get_emerged_area()`.
+### Methods
-Now that the VoxelManip object is populated with map data, your mod can fetch a copy of this data
-using either of two methods. `VoxelManip:get_node_at()`, which retrieves an individual node in a
-MapNode formatted table at the position requested is the simplest method to use, but also the slowest.
+* All methods in MetaDataRef
-Nodes in a VoxelManip object may also be read in bulk to a flat array table using:
-`VoxelManip:get_data()` for node content (in Content ID form, see section 'Content IDs'),
-`VoxelManip:get_light_data()` for node light levels, and
-`VoxelManip:get_param2_data()` for the node type-dependent "param2" values.
+`PseudoRandom`
+--------------
-See section 'Flat array format' for more details.
+A 16-bit pseudorandom number generator.
+Uses a well-known LCG algorithm introduced by K&R.
-It is very important to understand that the tables returned by any of the above three functions
-represent a snapshot of the VoxelManip's internal state at the time of the call. This copy of the
-data will *not* magically update itself if another function modifies the internal VoxelManip state.
-Any functions that modify a VoxelManip's contents work on the VoxelManip's internal state unless
-otherwise explicitly stated.
+It can be created via `PseudoRandom(seed)`.
-Once the bulk data has been edited to your liking, the internal VoxelManip state can be set using:
-`VoxelManip:set_data()` for node content (in Content ID form, see section 'Content IDs'),
-`VoxelManip:set_light_data()` for node light levels, and
-`VoxelManip:set_param2_data()` for the node type-dependent "param2" values.
+### Methods
-The parameter to each of the above three functions can use any table at all in the same flat array
-format as produced by get_data() et al. and is *not required* to be a table retrieved from get_data().
+* `next()`: return next integer random number [`0`...`32767`]
+* `next(min, max)`: return next integer random number [`min`...`max`]
+ * `((max - min) == 32767) or ((max-min) <= 6553))` must be true
+ due to the simple implementation making bad distribution otherwise.
-Once the internal VoxelManip state has been modified to your liking, the changes can be committed back
-to the map by calling `VoxelManip:write_to_map()`.
+`Raycast`
+---------
-Finally, a call to `VoxelManip:update_map()` is required to re-calculate lighting and set the blocks
-as being modified so that connected clients are sent the updated parts of map.
+A raycast on the map. It works with selection boxes.
+Can be used as an iterator in a for loop as:
+ local ray = Raycast(...)
+ for pointed_thing in ray do
+ ...
+ end
-##### Flat array format
-Let
- `Nx = p2.X - p1.X + 1`,
- `Ny = p2.Y - p1.Y + 1`, and
- `Nz = p2.Z - p1.Z + 1`.
+The map is loaded as the ray advances. If the map is modified after the
+`Raycast` is created, the changes may or may not have an effect on the object.
-Then, for a loaded region of p1..p2, this array ranges from `1` up to and including the value of
-the expression `Nx * Ny * Nz`.
+It can be created via `Raycast(pos1, pos2, objects, liquids)` or
+`minetest.raycast(pos1, pos2, objects, liquids)` where:
-Positions offset from p1 are present in the array with the format of:
-```
-[
- (0, 0, 0), (1, 0, 0), (2, 0, 0), ... (Nx, 0, 0),
- (0, 1, 0), (1, 1, 0), (2, 1, 0), ... (Nx, 1, 0),
- ...
- (0, Ny, 0), (1, Ny, 0), (2, Ny, 0), ... (Nx, Ny, 0),
- (0, 0, 1), (1, 0, 1), (2, 0, 1), ... (Nx, 0, 1),
- ...
- (0, Ny, 2), (1, Ny, 2), (2, Ny, 2), ... (Nx, Ny, 2),
- ...
- (0, Ny, Nz), (1, Ny, Nz), (2, Ny, Nz), ... (Nx, Ny, Nz)
-]
-```
+* `pos1`: start of the ray
+* `pos2`: end of the ray
+* `objects`: if false, only nodes will be returned. Default is true.
+* `liquids`: if false, liquid nodes (`liquidtype ~= "none"`) won't be
+ returned. Default is false.
-and the array index for a position p contained completely in p1..p2 is:
+### Methods
-`(p.Z - p1.Z) * Ny * Nx + (p.Y - p1.Y) * Nx + (p.X - p1.X) + 1`
+* `next()`: returns a `pointed_thing` with exact pointing location
+ * Returns the next thing pointed by the ray or nil.
-Note that this is the same "flat 3D array" format as `PerlinNoiseMap:get3dMap_flat()`.
-VoxelArea objects (see section 'VoxelArea') can be used to simplify calculation of the index
-for a single point in a flat VoxelManip array.
+`SecureRandom`
+--------------
-##### Content IDs
-A Content ID is a unique integer identifier for a specific node type. These IDs are used by VoxelManip
-in place of the node name string for `VoxelManip:get_data()` and `VoxelManip:set_data()`. You can use
-`minetest.get_content_id()` to look up the Content ID for the specified node name, and
-`minetest.get_name_from_content_id()` to look up the node name string for a given Content ID.
-After registration of a node, its Content ID will remain the same throughout execution of the mod.
-Note that the node being queried needs to have already been been registered.
+Interface for the operating system's crypto-secure PRNG.
-The following builtin node types have their Content IDs defined as constants:
-```
-core.CONTENT_UNKNOWN (ID for "unknown" nodes)
-core.CONTENT_AIR (ID for "air" nodes)
-core.CONTENT_IGNORE (ID for "ignore" nodes)
-```
+It can be created via `SecureRandom()`. The constructor returns nil if a
+secure random device cannot be found on the system.
-##### Mapgen VoxelManip objects
-Inside of `on_generated()` callbacks, it is possible to retrieve the same VoxelManip object used by the
-core's Map Generator (commonly abbreviated Mapgen). Most of the rules previously described still apply
-but with a few differences:
-
-* The Mapgen VoxelManip object is retrieved using: `minetest.get_mapgen_object("voxelmanip")`
-* This VoxelManip object already has the region of map just generated loaded into it; it's not necessary
- to call `VoxelManip:read_from_map()` before using a Mapgen VoxelManip.
-* The `on_generated()` callbacks of some mods may place individual nodes in the generated area using
- non-VoxelManip map modification methods. Because the same Mapgen VoxelManip object is passed through
- each `on_generated()` callback, it becomes necessary for the Mapgen VoxelManip object to maintain
- consistency with the current map state. For this reason, calling any of the following functions:
- `minetest.add_node()`, `minetest.set_node()`, or `minetest.swap_node()`
- will also update the Mapgen VoxelManip object's internal state active on the current thread.
-* After modifying the Mapgen VoxelManip object's internal buffer, it may be necessary to update lighting
- information using either: `VoxelManip:calc_lighting()` or `VoxelManip:set_lighting()`.
-* `VoxelManip:update_map()` does not need to be called after `write_to_map()`. The map update is performed
- automatically after all on_generated callbacks have been run for that generated block.
-
-##### Other API functions operating on a VoxelManip
-If any VoxelManip contents were set to a liquid node, `VoxelManip:update_liquids()` must be called
-for these liquid nodes to begin flowing. It is recommended to call this function only after having
-written all buffered data back to the VoxelManip object, save for special situations where the modder
-desires to only have certain liquid nodes begin flowing.
-
-The functions `minetest.generate_ores()` and `minetest.generate_decorations()` will generate all
-registered decorations and ores throughout the full area inside of the specified VoxelManip object.
-
-`minetest.place_schematic_on_vmanip()` is otherwise identical to `minetest.place_schematic()`,
-except instead of placing the specified schematic directly on the map at the specified position, it
-will place the schematic inside of the VoxelManip.
-
-##### Notes
-* Attempting to read data from a VoxelManip object before map is read will result in a zero-length
- array table for `VoxelManip:get_data()`, and an "ignore" node at any position for
- `VoxelManip:get_node_at()`.
-* If either a region of map has not yet been generated or is out-of-bounds of the map, that region is
- filled with "ignore" nodes.
-* Other mods, or the core itself, could possibly modify the area of map currently loaded into a VoxelManip
- object. With the exception of Mapgen VoxelManips (see above section), the internal buffers are not
- updated. For this reason, it is strongly encouraged to complete the usage of a particular VoxelManip
- object in the same callback it had been created.
-* If a VoxelManip object will be used often, such as in an `on_generated()` callback, consider passing
- a file-scoped table as the optional parameter to `VoxelManip:get_data()`, which serves as a static
- buffer the function can use to write map data to instead of returning a new table each call. This
- greatly enhances performance by avoiding unnecessary memory allocations.
-
-#### Methods
-* `read_from_map(p1, p2)`: Loads a chunk of map into the VoxelManip object containing
- the region formed by `p1` and `p2`.
- * returns actual emerged `pmin`, actual emerged `pmax`
-* `write_to_map()`: Writes the data loaded from the `VoxelManip` back to the map.
- * **important**: data must be set using `VoxelManip:set_data()` before calling this
-* `get_node_at(pos)`: Returns a `MapNode` table of the node currently loaded in
- the `VoxelManip` at that position
-* `set_node_at(pos, node)`: Sets a specific `MapNode` in the `VoxelManip` at that position
-* `get_data([buffer])`: Retrieves the node content data loaded into the `VoxelManip` object
- * returns raw node data in the form of an array of node content IDs
- * if the param `buffer` is present, this table will be used to store the result instead
-* `set_data(data)`: Sets the data contents of the `VoxelManip` object
-* `update_map()`: Update map after writing chunk back to map.
- * To be used only by `VoxelManip` objects created by the mod itself;
- not a `VoxelManip` that was retrieved from `minetest.get_mapgen_object`
-* `set_lighting(light, [p1, p2])`: Set the lighting within the `VoxelManip` to a uniform value
- * `light` is a table, `{day=<0...15>, night=<0...15>}`
- * To be used only by a `VoxelManip` object from `minetest.get_mapgen_object`
- * (`p1`, `p2`) is the area in which lighting is set;
- defaults to the whole area if left out
-* `get_light_data()`: Gets the light data read into the `VoxelManip` object
- * Returns an array (indices 1 to volume) of integers ranging from `0` to `255`
- * Each value is the bitwise combination of day and night light values (`0` to `15` each)
- * `light = day + (night * 16)`
-* `set_light_data(light_data)`: Sets the `param1` (light) contents of each node
- in the `VoxelManip`
- * expects lighting data in the same format that `get_light_data()` returns
-* `get_param2_data([buffer])`: Gets the raw `param2` data read into the `VoxelManip` object
- * Returns an array (indices 1 to volume) of integers ranging from `0` to `255`
- * If the param `buffer` is present, this table will be used to store the result instead
-* `set_param2_data(param2_data)`: Sets the `param2` contents of each node in the `VoxelManip`
-* `calc_lighting([p1, p2], [propagate_shadow])`: Calculate lighting within the `VoxelManip`
- * To be used only by a `VoxelManip` object from `minetest.get_mapgen_object`
- * (`p1`, `p2`) is the area in which lighting is set; defaults to the whole area
- if left out or nil
- * `propagate_shadow` is an optional boolean deciding whether shadows in a generated
- mapchunk above are propagated down into the mapchunk; defaults to `true` if left out
-* `update_liquids()`: Update liquid flow
-* `was_modified()`: Returns `true` or `false` if the data in the voxel manipulator
- had been modified since the last read from map, due to a call to
- `minetest.set_data()` on the loaded area elsewhere
-* `get_emerged_area()`: Returns actual emerged minimum and maximum positions.
+### Methods
-### `VoxelArea`
-A helper class for voxel areas.
-It can be created via `VoxelArea:new{MinEdge=pmin, MaxEdge=pmax}`.
-The coordinates are *inclusive*, like most other things in Minetest.
+* `next_bytes([count])`: return next `count` (default 1, capped at 2048) many
+ random bytes, as a string.
-#### Methods
-* `getExtent()`: returns a 3D vector containing the size of the area formed by
- `MinEdge` and `MaxEdge`
-* `getVolume()`: returns the volume of the area formed by `MinEdge` and `MaxEdge`
-* `index(x, y, z)`: returns the index of an absolute position in a flat array starting at `1`
- * useful for things like `VoxelManip`, raw Schematic specifiers,
- `PerlinNoiseMap:get2d`/`3dMap`, and so on
-* `indexp(p)`: same as above, except takes a vector
-* `position(i)`: returns the absolute position vector corresponding to index `i`
-* `contains(x, y, z)`: check if (`x`,`y`,`z`) is inside area formed by `MinEdge` and `MaxEdge`
-* `containsp(p)`: same as above, except takes a vector
-* `containsi(i)`: same as above, except takes an index `i`
-* `iter(minx, miny, minz, maxx, maxy, maxz)`: returns an iterator that returns indices
- * from (`minx`,`miny`,`minz`) to (`maxx`,`maxy`,`maxz`) in the order of `[z [y [x]]]`
-* `iterp(minp, maxp)`: same as above, except takes a vector
+`Settings`
+----------
-### `Settings`
An interface to read config files in the format of `minetest.conf`.
It can be created via `Settings(filename)`.
-#### Methods
+### Methods
+
* `get(key)`: returns a value
-* `get_bool(key)`: returns a boolean
+* `get_bool(key, [default])`: returns a boolean
+ * `default` is the value returned if `key` is not found.
+ * Returns `nil` if `key` is not found and `default` not specified.
+* `get_np_group(key)`: returns a NoiseParams table
+* `get_flags(key)`:
+ * Returns `{flag = true/false, ...}` according to the set flags.
+ * Is currently limited to mapgen flags `mg_flags` and mapgen-specific
+ flags like `mgv5_spflags`.
* `set(key, value)`
+ * Setting names can't contain whitespace or any of `="{}#`.
+ * Setting values can't contain the sequence `\n"""`.
+ * Setting names starting with "secure." can't be set on the main settings
+ object (`minetest.settings`).
+* `set_bool(key, value)`
+ * See documentation for set() above.
+* `set_np_group(key, value)`
+ * `value` is a NoiseParams table.
+ * Also, see documentation for set() above.
* `remove(key)`: returns a boolean (`true` for success)
* `get_names()`: returns `{key1,...}`
* `write()`: returns a boolean (`true` for success)
- * write changes to file
+ * Writes changes to file.
* `to_table()`: returns `{[key1]=value1,...}`
-Mapgen objects
---------------
-A mapgen object is a construct used in map generation. Mapgen objects can be used
-by an `on_generate` callback to speed up operations by avoiding unnecessary
-recalculations; these can be retrieved using the `minetest.get_mapgen_object()`
-function. If the requested Mapgen object is unavailable, or `get_mapgen_object()`
-was called outside of an `on_generate()` callback, `nil` is returned.
+### Format
-The following Mapgen objects are currently available:
+The settings have the format `key = value`. Example:
-### `voxelmanip`
-This returns three values; the `VoxelManip` object to be used, minimum and maximum
-emerged position, in that order. All mapgens support this object.
+ foo = example text
+ bar = """
+ Multiline
+ value
+ """
-### `heightmap`
-Returns an array containing the y coordinates of the ground levels of nodes in
-the most recently generated chunk by the current mapgen.
-### `biomemap`
-Returns an array containing the biome IDs of nodes in the most recently
-generated chunk by the current mapgen.
+`StorageRef`
+------------
-### `heatmap`
-Returns an array containing the temperature values of nodes in the most
-recently generated chunk by the current mapgen.
+Mod metadata: per mod metadata, saved automatically.
+Can be obtained via `minetest.get_mod_storage()` during load time.
-### `humiditymap`
-Returns an array containing the humidity values of nodes in the most recently
-generated chunk by the current mapgen.
+WARNING: This storage backend is incapable of saving raw binary data due
+to restrictions of JSON.
-### `gennotify`
-Returns a table mapping requested generation notification types to arrays of
-positions at which the corresponding generated structures are located at within
-the current chunk. To set the capture of positions of interest to be recorded
-on generate, use `minetest.set_gen_notify()`.
+### Methods
-Possible fields of the table returned are:
+* All methods in MetaDataRef
-* `dungeon`
-* `temple`
-* `cave_begin`
-* `cave_end`
-* `large_cave_begin`
-* `large_cave_end`
-* `decoration`
-
-Decorations have a key in the format of `"decoration#id"`, where `id` is the
-numeric unique decoration ID.
-
-Registered entities
--------------------
-* Functions receive a "luaentity" as `self`:
- * It has the member `.name`, which is the registered name `("mod:thing")`
- * It has the member `.object`, which is an `ObjectRef` pointing to the object
- * The original prototype stuff is visible directly via a metatable
-* Callbacks:
- * `on_activate(self, staticdata, dtime_s)`
- * Called when the object is instantiated.
- * `dtime_s` is the time passed since the object was unloaded, which can
- be used for updating the entity state.
- * `on_step(self, dtime)`
- * Called on every server tick, after movement and collision processing.
- `dtime` is usually 0.1 seconds, as per the `dedicated_server_step` setting
- `in minetest.conf`.
- * `on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir)`
- * Called when somebody punches the object.
- * Note that you probably want to handle most punches using the
- automatic armor group system.
- * `puncher`: an `ObjectRef` (can be `nil`)
- * `time_from_last_punch`: Meant for disallowing spamming of clicks (can be `nil`)
- * `tool_capabilities`: capability table of used tool (can be `nil`)
- * `dir`: unit vector of direction of punch. Always defined. Points from
- the puncher to the punched.
- * `on_rightclick(self, clicker)`
- * `get_staticdata(self)`
- * Should return a string that will be passed to `on_activate` when
- the object is instantiated the next time.
-L-system trees
---------------
-**Warning**
-L-system generation currently creates lighting bugs in the form of mapblock-sized shadows.
-Often these bugs appear as subtle shadows in water.
-### Tree definition
-
- treedef={
- axiom, --string initial tree axiom
- rules_a, --string rules set A
- rules_b, --string rules set B
- rules_c, --string rules set C
- rules_d, --string rules set D
- trunk, --string trunk node name
- leaves, --string leaves node name
- leaves2, --string secondary leaves node name
- leaves2_chance,--num chance (0-100) to replace leaves with leaves2
- angle, --num angle in deg
- iterations, --num max # of iterations, usually 2 -5
- random_level, --num factor to lower nr of iterations, usually 0 - 3
- trunk_type, --string single/double/crossed) type of trunk: 1 node,
- -- 2x2 nodes or 3x3 in cross shape
- thin_branches, --boolean true -> use thin (1 node) branches
- fruit, --string fruit node name
- fruit_chance, --num chance (0-100) to replace leaves with fruit node
- seed, --num random seed; if no seed is provided, the engine will create one
- }
-
-### Key for Special L-System Symbols used in Axioms
-
-* `G`: move forward one unit with the pen up
-* `F`: move forward one unit with the pen down drawing trunks and branches
-* `f`: move forward one unit with the pen down drawing leaves (100% chance)
-* `T`: move forward one unit with the pen down drawing trunks only
-* `R`: move forward one unit with the pen down placing fruit
-* `A`: replace with rules set A
-* `B`: replace with rules set B
-* `C`: replace with rules set C
-* `D`: replace with rules set D
-* `a`: replace with rules set A, chance 90%
-* `b`: replace with rules set B, chance 80%
-* `c`: replace with rules set C, chance 70%
-* `d`: replace with rules set D, chance 60%
-* `+`: yaw the turtle right by `angle` parameter
-* `-`: yaw the turtle left by `angle` parameter
-* `&`: pitch the turtle down by `angle` parameter
-* `^`: pitch the turtle up by `angle` parameter
-* `/`: roll the turtle to the right by `angle` parameter
-* `*`: roll the turtle to the left by `angle` parameter
-* `[`: save in stack current state info
-* `]`: recover from stack state info
-
-### Example
-Spawn a small apple tree:
-
- pos = {x=230,y=20,z=4}
- apple_tree={
- axiom="FFFFFAFFBF",
- rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
- rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
- trunk="default:tree",
- leaves="default:leaves",
- angle=30,
- iterations=2,
- random_level=0,
- trunk_type="single",
- thin_branches=true,
- fruit_chance=10,
- fruit="default:apple"
- }
- minetest.spawn_tree(pos,apple_tree)
Definition tables
+=================
+
+Object properties
-----------------
-### Object Properties
+Used by `ObjectRef` methods. Part of an Entity definition.
+These properties are not persistent, but are applied automatically to the
+corresponding Lua entity using the given registration fields.
+Player properties need to be saved manually.
{
- hp_max = 1,
- physical = true,
- collide_with_objects = true, -- collide with other objects if physical=true
- weight = 5,
- collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
- visual = "cube"/"sprite"/"upright_sprite"/"mesh"/"wielditem",
- visual_size = {x=1, y=1},
- mesh = "model",
- textures = {}, -- number of required textures depends on visual
- colors = {}, -- number of required colors depends on visual
- spritediv = {x=1, y=1},
- initial_sprite_basepos = {x=0, y=0},
+ hp_max = 10,
+ -- Defines the maximum and default HP of the entity
+ -- For Lua entities the maximum is not enforced.
+ -- For players this defaults to `minetest.PLAYER_MAX_HP_DEFAULT`.
+
+ breath_max = 0,
+ -- For players only. Defaults to `minetest.PLAYER_MAX_BREATH_DEFAULT`.
+
+ zoom_fov = 0.0,
+ -- For players only. Zoom FOV in degrees.
+ -- Note that zoom loads and/or generates world beyond the server's
+ -- maximum send and generate distances, so acts like a telescope.
+ -- Smaller zoom_fov values increase the distance loaded/generated.
+ -- Defaults to 15 in creative mode, 0 in survival mode.
+ -- zoom_fov = 0 disables zooming for the player.
+
+ eye_height = 1.625,
+ -- For players only. Camera height above feet position in nodes.
+
+ physical = false,
+ -- Collide with `walkable` nodes.
+
+ collide_with_objects = true,
+ -- Collide with other objects if physical = true
+
+ collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ -- Selection box uses collision box dimensions when not set.
+ -- For both boxes: {xmin, ymin, zmin, xmax, ymax, zmax} in nodes from
+ -- object position.
+
+ pointable = true,
+ -- Whether the object can be pointed at
+
+ visual = "cube" / "sprite" / "upright_sprite" / "mesh" / "wielditem" / "item",
+ -- "cube" is a node-sized cube.
+ -- "sprite" is a flat texture always facing the player.
+ -- "upright_sprite" is a vertical flat texture.
+ -- "mesh" uses the defined mesh model.
+ -- "wielditem" is used for dropped items.
+ -- (see builtin/game/item_entity.lua).
+ -- For this use 'wield_item = itemname' (Deprecated: 'textures = {itemname}').
+ -- If the item has a 'wield_image' the object will be an extrusion of
+ -- that, otherwise:
+ -- If 'itemname' is a cubic node or nodebox the object will appear
+ -- identical to 'itemname'.
+ -- If 'itemname' is a plantlike node the object will be an extrusion
+ -- of its texture.
+ -- Otherwise for non-node items, the object will be an extrusion of
+ -- 'inventory_image'.
+ -- If 'itemname' contains a ColorString or palette index (e.g. from
+ -- `minetest.itemstring_with_palette()`), the entity will inherit the color.
+ -- "item" is similar to "wielditem" but ignores the 'wield_image' parameter.
+
+ visual_size = {x = 1, y = 1, z = 1},
+ -- Multipliers for the visual size. If `z` is not specified, `x` will be used
+ -- to scale the entity along both horizontal axes.
+
+ mesh = "model.obj",
+ -- File name of mesh when using "mesh" visual
+
+ textures = {},
+ -- Number of required textures depends on visual.
+ -- "cube" uses 6 textures just like a node, but all 6 must be defined.
+ -- "sprite" uses 1 texture.
+ -- "upright_sprite" uses 2 textures: {front, back}.
+ -- "wielditem" expects 'textures = {itemname}' (see 'visual' above).
+ -- "mesh" requires one texture for each mesh buffer/material (in order)
+
+ colors = {},
+ -- Number of required colors depends on visual
+
+ use_texture_alpha = false,
+ -- Use texture's alpha channel.
+ -- Excludes "upright_sprite" and "wielditem".
+ -- Note: currently causes visual issues when viewed through other
+ -- semi-transparent materials such as water.
+
+ spritediv = {x = 1, y = 1},
+ -- Used with spritesheet textures for animation and/or frame selection
+ -- according to position relative to player.
+ -- Defines the number of columns and rows in the spritesheet:
+ -- {columns, rows}.
+
+ initial_sprite_basepos = {x = 0, y = 0},
+ -- Used with spritesheet textures.
+ -- Defines the {column, row} position of the initially used frame in the
+ -- spritesheet.
+
is_visible = true,
+ -- If false, object is invisible and can't be pointed.
+
makes_footstep_sound = false,
- automatic_rotate = false,
+ -- If true, is able to make footstep sounds of nodes
+ -- (see node sound definition for details).
+
+ automatic_rotate = 0,
+ -- Set constant rotation in radians per second, positive or negative.
+ -- Object rotates along the local Y-axis, and works with set_rotation.
+ -- Set to 0 to disable constant rotation.
+
stepheight = 0,
+ -- If positive number, object will climb upwards when it moves
+ -- horizontally against a `walkable` node, if the height difference
+ -- is within `stepheight`.
+
automatic_face_movement_dir = 0.0,
- -- ^ automatically set yaw to movement direction; offset in degrees; false to disable
+ -- Automatically set yaw to movement direction, offset in degrees.
+ -- 'false' to disable.
+
automatic_face_movement_max_rotation_per_sec = -1,
- -- ^ limit automatic rotation to this value in degrees per second. values < 0 no limit
- backface_culling = true, -- false to disable backface_culling for model
- nametag = "", -- by default empty, for players their name is shown if empty
- nametag_color = <color>, -- sets color of nametag as ColorSpec
- infotext = "", -- by default empty, text to be shown when pointed at object
+ -- Limit automatic rotation to this value in degrees per second.
+ -- No limit if value <= 0.
+
+ backface_culling = true,
+ -- Set to false to disable backface_culling for model
+
+ glow = 0,
+ -- Add this much extra lighting when calculating texture color.
+ -- Value < 0 disables light's effect on texture color.
+ -- For faking self-lighting, UI style entities, or programmatic coloring
+ -- in mods.
+
+ nametag = "",
+ -- The name to display on the head of the object. By default empty.
+ -- If the object is a player, a nil or empty nametag is replaced by the player's name.
+ -- 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 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 = "",
+ -- Same as infotext for nodes. Empty by default
+
+ static_save = true,
+ -- If false, never save this object statically. It will simply be
+ -- deleted when the block gets unloaded.
+ -- The get_staticdata() callback is never called then.
+ -- Defaults to 'true'.
+
+ damage_texture_modifier = "^[brighten",
+ -- Texture modifier to be applied for a short duration when object is hit
+
+ shaded = true,
+ -- Setting this to 'false' disables diffuse lighting of entity
+
+ show_on_minimap = false,
+ -- Defaults to true for players, false for other entities.
+ -- If set to true the entity will show as a marker on the minimap.
}
-### Entity definition (`register_entity`)
+Entity definition
+-----------------
- {
- -- Deprecated: Everything in object properties is read directly from here
+Used by `minetest.register_entity`.
- initial_properties = --[[<initial object properties>]],
+ {
+ initial_properties = {
+ visual = "mesh",
+ mesh = "boats_boat.obj",
+ ...,
+ },
+ -- A table of object properties, see the `Object properties` section.
+ -- The properties in this table are applied to the object
+ -- once when it is spawned.
+ -- Refer to the "Registered entities" section for explanations
on_activate = function(self, staticdata, dtime_s),
- on_step = function(self, dtime),
- on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir),
+ on_deactivate = function(self, removal),
+ on_step = function(self, dtime, moveresult),
+ on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage),
+ on_death = function(self, killer),
on_rightclick = function(self, clicker),
+ on_attach_child = function(self, child),
+ on_detach_child = function(self, child),
+ on_detach = function(self, parent),
get_staticdata = function(self),
- -- ^ Called sometimes; the string returned is passed to on_activate when
- -- the entity is re-activated from static state
- -- Also you can define arbitrary member variables here
- myvariable = whatever,
+ _custom_field = whatever,
+ -- You can define arbitrary member variables here (see Item definition
+ -- for more info) by using a '_' prefix
}
-### ABM (ActiveBlockModifier) definition (`register_abm`)
+
+ABM (ActiveBlockModifier) definition
+------------------------------------
+
+Used by `minetest.register_abm`.
{
label = "Lava cooling",
- -- ^ Descriptive label for profiling purposes (optional).
- -- Definitions with identical labels will be listed as one.
- -- In the following two fields, also group:groupname will work.
+ -- Descriptive label for profiling purposes (optional).
+ -- Definitions with identical labels will be listed as one.
+
nodenames = {"default:lava_source"},
- neighbors = {"default:water_source", "default:water_flowing"}, -- Any of these --[[
- ^ If left out or empty, any neighbor will do ]]
- interval = 1.0, -- Operation interval in seconds
- chance = 1, -- Chance of trigger per-node per-interval is 1.0 / this
- catch_up = true, -- If true, catch-up behaviour is enabled --[[
- ^ The chance value is temporarily reduced when returning to
- an area to simulate time lost by the area being unattended.
- ^ Note chance value can often be reduced to 1 ]]
- action = func(pos, node, active_object_count, active_object_count_wider),
+ -- Apply `action` function to these nodes.
+ -- `group:groupname` can also be used here.
+
+ neighbors = {"default:water_source", "default:water_flowing"},
+ -- Only apply `action` to nodes that have one of, or any
+ -- combination of, these neighbors.
+ -- If left out or empty, any neighbor will do.
+ -- `group:groupname` can also be used here.
+
+ interval = 1.0,
+ -- Operation interval in seconds
+
+ chance = 1,
+ -- Chance of triggering `action` per-node per-interval is 1.0 / this
+ -- value
+
+ min_y = -32768,
+ max_y = 32767,
+ -- min and max height levels where ABM will be processed (inclusive)
+ -- can be used to reduce CPU usage
+
+ catch_up = true,
+ -- If true, catch-up behaviour is enabled: The `chance` value is
+ -- temporarily reduced when returning to an area to simulate time lost
+ -- by the area being unattended. Note that the `chance` value can often
+ -- be reduced to 1.
+
+ action = function(pos, node, active_object_count, active_object_count_wider),
+ -- Function triggered for each qualifying node.
+ -- `active_object_count` is number of active objects in the node's
+ -- mapblock.
+ -- `active_object_count_wider` is number of active objects in the node's
+ -- mapblock plus all 26 neighboring mapblocks. If any neighboring
+ -- mapblocks are unloaded an estmate is calculated for them based on
+ -- loaded mapblocks.
}
-### LBM (LoadingBlockModifier) definition (`register_lbm`)
+LBM (LoadingBlockModifier) definition
+-------------------------------------
+
+Used by `minetest.register_lbm`.
+
+A loading block modifier (LBM) is used to define a function that is called for
+specific nodes (defined by `nodenames`) when a mapblock which contains such nodes
+gets activated (not loaded!)
{
label = "Upgrade legacy doors",
- -- ^ Descriptive label for profiling purposes (optional).
- -- Definitions with identical labels will be listed as one.
+ -- Descriptive label for profiling purposes (optional).
+ -- Definitions with identical labels will be listed as one.
+
name = "modname:replace_legacy_door",
+ -- Identifier of the LBM, should follow the modname:<whatever> convention
+
nodenames = {"default:lava_source"},
- -- ^ List of node names to trigger the LBM on.
- -- Also non-registered nodes will work.
- -- Groups (as of group:groupname) will work as well.
+ -- List of node names to trigger the LBM on.
+ -- Names of non-registered nodes and groups (as group:groupname)
+ -- will work as well.
+
run_at_every_load = false,
- -- ^ Whether to run the LBM's action every time a block gets loaded,
- -- and not just for blocks that were saved last time before LBMs were
- -- introduced to the world.
- action = func(pos, node),
+ -- Whether to run the LBM's action every time a block gets activated,
+ -- and not only the first time the block gets activated after the LBM
+ -- was introduced.
+
+ action = function(pos, node),
+ -- Function triggered for each qualifying node.
}
-### Item definition (`register_node`, `register_craftitem`, `register_tool`)
+Tile definition
+---------------
+
+* `"image.png"`
+* `{name="image.png", animation={Tile Animation definition}}`
+* `{name="image.png", backface_culling=bool, align_style="node"/"world"/"user", scale=int}`
+ * backface culling enabled by default for most nodes
+ * align style determines whether the texture will be rotated with the node
+ or kept aligned with its surroundings. "user" means that client
+ setting will be used, similar to `glasslike_framed_optional`.
+ Note: supported by solid nodes and nodeboxes only.
+ * scale is used to make texture span several (exactly `scale`) nodes,
+ instead of just one, in each direction. Works for world-aligned
+ textures only.
+ Note that as the effect is applied on per-mapblock basis, `16` should
+ be equally divisible by `scale` or you may get wrong results.
+* `{name="image.png", color=ColorSpec}`
+ * the texture's color will be multiplied with this color.
+ * the tile's color overrides the owning node's color in all cases.
+* deprecated, yet still supported field names:
+ * `image` (name)
+
+Tile animation definition
+-------------------------
+
+ {
+ type = "vertical_frames",
+
+ aspect_w = 16,
+ -- Width of a frame in pixels
+
+ aspect_h = 16,
+ -- Height of a frame in pixels
+
+ length = 3.0,
+ -- Full loop length
+ }
{
- description = "Steel Axe",
- groups = {}, -- key = name, value = rating; rating = 1..3.
- if rating not applicable, use 1.
- e.g. {wool = 1, fluffy = 3}
- {soil = 2, outerspace = 1, crumbly = 1}
- {bendy = 2, snappy = 1},
- {hard = 1, metal = 1, spikes = 1}
- inventory_image = "default_tool_steelaxe.png",
+ type = "sheet_2d",
+
+ frames_w = 5,
+ -- Width in number of frames
+
+ frames_h = 3,
+ -- Height in number of frames
+
+ frame_length = 0.5,
+ -- Length of a single frame
+ }
+
+Item definition
+---------------
+
+Used by `minetest.register_node`, `minetest.register_craftitem`, and
+`minetest.register_tool`.
+
+ {
+ description = "",
+ -- Can contain new lines. "\n" has to be used as new line character.
+ -- See also: `get_description` in [`ItemStack`]
+
+ short_description = "",
+ -- Must not contain new lines.
+ -- Defaults to nil.
+ -- Use an [`ItemStack`] to get the short description, e.g.:
+ -- ItemStack(itemname):get_short_description()
+
+ groups = {},
+ -- key = name, value = rating; rating = <number>.
+ -- If rating not applicable, use 1.
+ -- e.g. {wool = 1, fluffy = 3}
+ -- {soil = 2, outerspace = 1, crumbly = 1}
+ -- {bendy = 2, snappy = 1},
+ -- {hard = 1, metal = 1, spikes = 1}
+
+ inventory_image = "",
+ -- Texture shown in the inventory GUI
+ -- Defaults to a 3D rendering of the node if left empty.
+
+ inventory_overlay = "",
+ -- An overlay texture which is not affected by colorization
+
wield_image = "",
+ -- Texture shown when item is held in hand
+ -- Defaults to a 3D rendering of the node if left empty.
+
+ wield_overlay = "",
+ -- Like inventory_overlay but only used in the same situation as wield_image
+
wield_scale = {x = 1, y = 1, z = 1},
+ -- Scale for the item when held in hand
+
+ palette = "",
+ -- An image file containing the palette of a node.
+ -- You can set the currently used color as the "palette_index" field of
+ -- the item stack metadata.
+ -- The palette is always stretched to fit indices between 0 and 255, to
+ -- ensure compatibility with "colorfacedir" and "colorwallmounted" nodes.
+
+ color = "#ffffffff",
+ -- Color the item is colorized with. The palette overrides this.
+
stack_max = 99,
+ -- Maximum amount of items that can be in a single stack.
+ -- The default can be changed by the setting `default_stack_max`
+
range = 4.0,
+ -- Range of node and object pointing that is possible with this item held
+
liquids_pointable = false,
+ -- If true, item can point to all liquid nodes (`liquidtype ~= "none"`),
+ -- even those for which `pointable = false`
+
+ light_source = 0,
+ -- When used for nodes: Defines amount of light emitted by node.
+ -- Otherwise: Defines texture glow when viewed as a dropped item
+ -- To set the maximum (14), use the value 'minetest.LIGHT_MAX'.
+ -- A value outside the range 0 to minetest.LIGHT_MAX causes undefined
+ -- behavior.
+
+ -- See "Tool Capabilities" section for an example including explanation
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level = 0,
groupcaps = {
-- For example:
- choppy = {times = {[1] = 2.50, [2] = 1.40, [3] = 1.00}, uses = 20, maxlevel = 2},
+ choppy = {times = {2.50, 1.40, 1.00}, uses = 20, maxlevel = 2},
},
damage_groups = {groupname = damage},
+ -- Damage values must be between -32768 and 32767 (2^15)
+
+ punch_attack_uses = nil,
+ -- Amount of uses this tool has for attacking players and entities
+ -- by punching them (0 = infinite uses).
+ -- For compatibility, this is automatically set from the first
+ -- suitable groupcap using the forumla "uses * 3^(maxlevel - 1)".
+ -- It is recommend to set this explicitly instead of relying on the
+ -- fallback behavior.
},
+
node_placement_prediction = nil,
- --[[
- ^ If nil and item is node, prediction is made automatically
- ^ If nil and item is not a node, no prediction is made
- ^ If "" and item is anything, no prediction is made
- ^ Otherwise should be name of node which the client immediately places
- on ground when the player places the item. Server will always update
- actual result to client in a short moment.
- ]]
+ -- If nil and item is node, prediction is made automatically.
+ -- If nil and item is not a node, no prediction is made.
+ -- If "" and item is anything, no prediction is made.
+ -- Otherwise should be name of node which the client immediately places
+ -- on ground when the player places the item. Server will always update
+ -- with actual result shortly.
+
+ node_dig_prediction = "air",
+ -- if "", no prediction is made.
+ -- if "air", node is removed.
+ -- Otherwise should be name of node which the client immediately places
+ -- upon digging. Server will always update with actual result shortly.
+
sound = {
- place = --[[<SimpleSoundSpec>]],
+ -- Definition of item sounds to be played at various events.
+ -- All fields in this table are optional.
+
+ breaks = <SimpleSoundSpec>,
+ -- When tool breaks due to wear. Ignored for non-tools
+
+ eat = <SimpleSoundSpec>,
+ -- When item is eaten with `minetest.do_item_eat`
},
- on_place = func(itemstack, placer, pointed_thing),
- --[[
- ^ Shall place item and return the leftover itemstack
- ^ The placer may be any ObjectRef or nil.
- ^ default: minetest.item_place ]]
- on_secondary_use = func(itemstack, user, pointed_thing),
- --[[
- ^ Same as on_place but called when pointing at nothing.
- ^ The user may be any ObjectRef or nil.
- ^ pointed_thing : always { type = "nothing" }
- ]]
- on_drop = func(itemstack, dropper, pos),
- --[[
- ^ Shall drop item and return the leftover itemstack
- ^ The dropper may be any ObjectRef or nil.
- ^ default: minetest.item_drop ]]
- on_use = func(itemstack, user, pointed_thing),
- --[[
- ^ default: nil
- ^ Function must return either nil if no item shall be removed from
- inventory, or an itemstack to replace the original itemstack.
- e.g. itemstack:take_item(); return itemstack
- ^ Otherwise, the function is free to do what it wants.
- ^ The user may be any ObjectRef or nil.
- ^ The default functions handle regular use cases.
- ]]
- after_use = func(itemstack, user, node, digparams),
- --[[
- ^ default: nil
- ^ If defined, should return an itemstack and will be called instead of
- wearing out the tool. If returns nil, does nothing.
- If after_use doesn't exist, it is the same as:
- function(itemstack, user, node, digparams)
- itemstack:add_wear(digparams.wear)
- return itemstack
- end
- ^ The user may be any ObjectRef or nil.
- ]]
+ on_place = function(itemstack, placer, pointed_thing),
+ -- When the 'place' key was pressed with the item in hand
+ -- and a node was pointed at.
+ -- Shall place item and return the leftover itemstack
+ -- or nil to not modify the inventory.
+ -- The placer may be any ObjectRef or nil.
+ -- default: minetest.item_place
+
+ on_secondary_use = function(itemstack, user, pointed_thing),
+ -- Same as on_place but called when not pointing at a node.
+ -- Function must return either nil if inventory shall not be modified,
+ -- or an itemstack to replace the original itemstack.
+ -- The user may be any ObjectRef or nil.
+ -- default: nil
+
+ on_drop = function(itemstack, dropper, pos),
+ -- Shall drop item and return the leftover itemstack.
+ -- The dropper may be any ObjectRef or nil.
+ -- default: minetest.item_drop
+
+ on_use = function(itemstack, user, pointed_thing),
+ -- default: nil
+ -- When user pressed the 'punch/mine' key with the item in hand.
+ -- Function must return either nil if inventory shall not be modified,
+ -- or an itemstack to replace the original itemstack.
+ -- e.g. itemstack:take_item(); return itemstack
+ -- Otherwise, the function is free to do what it wants.
+ -- The user may be any ObjectRef or nil.
+ -- The default functions handle regular use cases.
+
+ after_use = function(itemstack, user, node, digparams),
+ -- default: nil
+ -- If defined, should return an itemstack and will be called instead of
+ -- wearing out the item (if tool). If returns nil, does nothing.
+ -- If after_use doesn't exist, it is the same as:
+ -- function(itemstack, user, node, digparams)
+ -- itemstack:add_wear(digparams.wear)
+ -- return itemstack
+ -- end
+ -- The user may be any ObjectRef or nil.
+
+ _custom_field = whatever,
+ -- Add your own custom fields. By convention, all custom field names
+ -- should start with `_` to avoid naming collisions with future engine
+ -- usage.
}
-### Tile definition
-* `"image.png"`
-* `{name="image.png", animation={Tile Animation definition}}`
-* `{name="image.png", backface_culling=bool, tileable_vertical=bool,
- tileable_horizontal=bool}`
- * backface culling enabled by default for most nodes
- * tileable flags are info for shaders, how they should treat texture
- when displacement mapping is used
- Directions are from the point of view of the tile texture,
- not the node it's on
-* deprecated, yet still supported field names:
- * `image` (name)
-
-### Tile animation definition
-* `{type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}`
+Node definition
+---------------
-### Node definition (`register_node`)
+Used by `minetest.register_node`.
{
- -- <all fields allowed in item definitions>,
-
- drawtype = "normal", -- See "Node drawtypes"
- visual_scale = 1.0, --[[
- ^ Supported for drawtypes "plantlike", "signlike", "torchlike", "mesh".
- ^ For plantlike, the image will start at the bottom of the node; for the
- ^ other drawtypes, the image will be centered on the node.
- ^ Note that positioning for "torchlike" may still change. ]]
- tiles = {tile definition 1, def2, def3, def4, def5, def6}, --[[
- ^ Textures of node; +Y, -Y, +X, -X, +Z, -Z (old field name: tile_images)
- ^ List can be shortened to needed length ]]
- special_tiles = {tile definition 1, Tile definition 2}, --[[
- ^ Special textures of node; used rarely (old field name: special_materials)
- ^ List can be shortened to needed length ]]
- alpha = 255,
- use_texture_alpha = false, -- Use texture's alpha channel
- post_effect_color = "green#0F", -- If player is inside node, see "ColorSpec"
- paramtype = "none", -- See "Nodes" --[[
- ^ paramtype = "light" allows light to propagate from or through the node with light value
- ^ falling by 1 per node. This line is essential for a light source node to spread its light. ]]
- paramtype2 = "none", -- See "Nodes"
- place_param2 = nil, -- Force value for param2 when player places node
- is_ground_content = true, -- If false, the cave generator will not carve through this
- sunlight_propagates = false, -- If true, sunlight will go infinitely through this
- walkable = true, -- If true, objects collide with node
- pointable = true, -- If true, can be pointed at
- diggable = true, -- If false, can never be dug
- climbable = false, -- If true, can be climbed on (ladder)
- buildable_to = false, -- If true, placed nodes can replace this node
- floodable = false, -- If true, liquids flow into and replace this node
- liquidtype = "none", -- "none"/"source"/"flowing"
- liquid_alternative_flowing = "", -- Flowing version of source liquid
- liquid_alternative_source = "", -- Source version of flowing liquid
- liquid_viscosity = 0, -- Higher viscosity = slower flow (max. 7)
- liquid_renewable = true, --[[
- ^ If true, a new liquid source can be created by placing two or more sources nearby ]]
- leveled = 0, --[[
- ^ Block contains level in param2. Value is default level, used for snow.
- ^ Don't forget to use "leveled" type nodebox. ]]
- liquid_range = 8, -- number of flowing nodes around source (max. 8)
- drowning = 0, -- Player will take this amount of damage if no bubbles are left
- light_source = 0, --[[
- ^ Amount of light emitted by node.
- ^ To set the maximum (currently 14), use the value 'minetest.LIGHT_MAX'.
- ^ A value outside the range 0 to minetest.LIGHT_MAX causes undefined behavior.]]
- damage_per_second = 0, -- If player is inside node, this damage is caused
- node_box = {type="regular"}, -- See "Node boxes"
- connects_to = nodenames, --[[
- * Used for nodebox nodes with the type == "connected"
- * Specifies to what neighboring nodes connections will be drawn
- * e.g. `{"group:fence", "default:wood"}` or `"default:stone"` ]]
- connect_sides = { "top", "bottom", "front", "left", "back", "right" }, --[[
- ^ Tells connected nodebox nodes to connect only to these sides of this node. ]]
- mesh = "model",
- selection_box = {type="regular"}, -- See "Node boxes" --[[
- ^ If drawtype "nodebox" is used and selection_box is nil, then node_box is used. ]]
- legacy_facedir_simple = false, -- Support maps made in and before January 2012
- legacy_wallmounted = false, -- Support maps made in and before January 2012
+ -- <all fields allowed in item definitions>
+
+ drawtype = "normal", -- See "Node drawtypes"
+
+ visual_scale = 1.0,
+ -- Supported for drawtypes "plantlike", "signlike", "torchlike",
+ -- "firelike", "mesh", "nodebox", "allfaces".
+ -- For plantlike and firelike, the image will start at the bottom of the
+ -- node. For torchlike, the image will start at the surface to which the
+ -- node "attaches". For the other drawtypes the image will be centered
+ -- on the node.
+
+ tiles = {tile definition 1, def2, def3, def4, def5, def6},
+ -- Textures of node; +Y, -Y, +X, -X, +Z, -Z
+ -- List can be shortened to needed length.
+
+ overlay_tiles = {tile definition 1, def2, def3, def4, def5, def6},
+ -- Same as `tiles`, but these textures are drawn on top of the base
+ -- tiles. You can use this to colorize only specific parts of your
+ -- texture. If the texture name is an empty string, that overlay is not
+ -- drawn. Since such tiles are drawn twice, it is not recommended to use
+ -- overlays on very common nodes.
+
+ special_tiles = {tile definition 1, Tile definition 2},
+ -- Special textures of node; used rarely.
+ -- List can be shortened to needed length.
+
+ color = ColorSpec,
+ -- The node's original color will be multiplied with this color.
+ -- If the node has a palette, then this setting only has an effect in
+ -- the inventory and on the wield item.
+
+ use_texture_alpha = ...,
+ -- Specifies how the texture's alpha channel will be used for rendering.
+ -- possible values:
+ -- * "opaque": Node is rendered opaque regardless of alpha channel
+ -- * "clip": A given pixel is either fully see-through or opaque
+ -- depending on the alpha channel being below/above 50% in value
+ -- * "blend": The alpha channel specifies how transparent a given pixel
+ -- of the rendered node is
+ -- The default is "opaque" for drawtypes normal, liquid and flowingliquid;
+ -- "clip" otherwise.
+ -- If set to a boolean value (deprecated): true either sets it to blend
+ -- or clip, false sets it to clip or opaque mode depending on the drawtype.
+
+ palette = "",
+ -- The node's `param2` is used to select a pixel from the image.
+ -- Pixels are arranged from left to right and from top to bottom.
+ -- The node's color will be multiplied with the selected pixel's color.
+ -- Tiles can override this behavior.
+ -- Only when `paramtype2` supports palettes.
+
+ post_effect_color = "#00000000",
+ -- Screen tint if player is inside node, see "ColorSpec"
+
+ paramtype = "none", -- See "Nodes"
+
+ paramtype2 = "none", -- See "Nodes"
+
+ place_param2 = 0,
+ -- Value for param2 that is set when player places node
+
+ is_ground_content = true,
+ -- If false, the cave generator and dungeon generator will not carve
+ -- through this node.
+ -- Specifically, this stops mod-added nodes being removed by caves and
+ -- dungeons when those generate in a neighbor mapchunk and extend out
+ -- beyond the edge of that mapchunk.
+
+ sunlight_propagates = false,
+ -- If true, sunlight will go infinitely through this node
+
+ walkable = true, -- If true, objects collide with node
+
+ pointable = true, -- If true, can be pointed at
+
+ diggable = true, -- If false, can never be dug
+
+ climbable = false, -- If true, can be climbed on like a ladder
+
+ move_resistance = 0,
+ -- Slows down movement of players through this node (max. 7).
+ -- If this is nil, it will be equal to liquid_viscosity.
+ -- Note: If liquid movement physics apply to the node
+ -- (see `liquid_move_physics`), the movement speed will also be
+ -- affected by the `movement_liquid_*` settings.
+
+ buildable_to = false, -- If true, placed nodes can replace this node
+
+ floodable = false,
+ -- If true, liquids flow into and replace this node.
+ -- Warning: making a liquid node 'floodable' will cause problems.
+
+ liquidtype = "none", -- specifies liquid flowing physics
+ -- * "none": no liquid flowing physics
+ -- * "source": spawns flowing liquid nodes at all 4 sides and below;
+ -- recommended drawtype: "liquid".
+ -- * "flowing": spawned from source, spawns more flowing liquid nodes
+ -- around it until `liquid_range` is reached;
+ -- will drain out without a source;
+ -- recommended drawtype: "flowingliquid".
+ -- If it's "source" or "flowing" and `liquid_range > 0`, then
+ -- both `liquid_alternative_*` fields must be specified
+
+ liquid_alternative_flowing = "",
+ -- Node that represents the flowing version of the liquid
+
+ liquid_alternative_source = "",
+ -- Node that represents the source version of the liquid
+
+ liquid_viscosity = 0,
+ -- Controls speed at which the liquid spreads/flows (max. 7).
+ -- 0 is fastest, 7 is slowest.
+ -- By default, this also slows down movement of players inside the node
+ -- (can be overridden using `move_resistance`)
+
+ liquid_renewable = true,
+ -- If true, a new liquid source can be created by placing two or more
+ -- sources nearby
+
+ liquid_move_physics = nil, -- specifies movement physics if inside node
+ -- * false: No liquid movement physics apply.
+ -- * true: Enables liquid movement physics. Enables things like
+ -- ability to "swim" up/down, sinking slowly if not moving,
+ -- smoother speed change when falling into, etc. The `movement_liquid_*`
+ -- settings apply.
+ -- * nil: Will be treated as true if `liquidype ~= "none"`
+ -- and as false otherwise.
+
+ leveled = 0,
+ -- Only valid for "nodebox" drawtype with 'type = "leveled"'.
+ -- Allows defining the nodebox height without using param2.
+ -- The nodebox height is 'leveled' / 64 nodes.
+ -- The maximum value of 'leveled' is `leveled_max`.
+
+ leveled_max = 127,
+ -- Maximum value for `leveled` (0-127), enforced in
+ -- `minetest.set_node_level` and `minetest.add_node_level`.
+ -- Values above 124 might causes collision detection issues.
+
+ liquid_range = 8,
+ -- Maximum distance that flowing liquid nodes can spread around
+ -- source on flat land;
+ -- maximum = 8; set to 0 to disable liquid flow
+
+ drowning = 0,
+ -- Player will take this amount of damage if no bubbles are left
+
+ damage_per_second = 0,
+ -- If player is inside node, this damage is caused
+
+ node_box = {type = "regular"}, -- See "Node boxes"
+
+ connects_to = {},
+ -- Used for nodebox nodes with the type == "connected".
+ -- Specifies to what neighboring nodes connections will be drawn.
+ -- e.g. `{"group:fence", "default:wood"}` or `"default:stone"`
+
+ connect_sides = {},
+ -- Tells connected nodebox nodes to connect only to these sides of this
+ -- node. possible: "top", "bottom", "front", "left", "back", "right"
+
+ mesh = "",
+ -- File name of mesh when using "mesh" drawtype
+
+ selection_box = {
+ -- see [Node boxes] for possibilities
+ },
+ -- Custom selection box definition. Multiple boxes can be defined.
+ -- If "nodebox" drawtype is used and selection_box is nil, then node_box
+ -- definition is used for the selection box.
+
+ collision_box = {
+ -- see [Node boxes] for possibilities
+ },
+ -- Custom collision box definition. Multiple boxes can be defined.
+ -- If "nodebox" drawtype is used and collision_box is nil, then node_box
+ -- definition is used for the collision box.
+
+ -- Support maps made in and before January 2012
+ legacy_facedir_simple = false,
+ legacy_wallmounted = false,
+
+ waving = 0,
+ -- Valid for drawtypes:
+ -- mesh, nodebox, plantlike, allfaces_optional, liquid, flowingliquid.
+ -- 1 - wave node like plants (node top moves side-to-side, bottom is fixed)
+ -- 2 - wave node like leaves (whole node moves side-to-side)
+ -- 3 - wave node like liquids (whole node moves up and down)
+ -- Not all models will properly wave.
+ -- plantlike drawtype can only wave like plants.
+ -- allfaces_optional drawtype can only wave like leaves.
+ -- liquid, flowingliquid drawtypes can only wave like liquids.
+
sounds = {
+ -- Definition of node sounds to be played at various events.
+ -- All fields in this table are optional.
+
footstep = <SimpleSoundSpec>,
- dig = <SimpleSoundSpec>, -- "__group" = group-based sound (default)
+ -- If walkable, played when object walks on it. If node is
+ -- climbable or a liquid, played when object moves through it
+
+ dig = <SimpleSoundSpec> or "__group",
+ -- While digging node.
+ -- If `"__group"`, then the sound will be
+ -- `default_dig_<groupname>`, where `<groupname>` is the
+ -- name of the item's digging group with the fastest digging time.
+ -- In case of a tie, one of the sounds will be played (but we
+ -- cannot predict which one)
+ -- Default value: `"__group"`
+
dug = <SimpleSoundSpec>,
+ -- Node was dug
+
place = <SimpleSoundSpec>,
+ -- Node was placed. Also played after falling
+
place_failed = <SimpleSoundSpec>,
+ -- When node placement failed.
+ -- Note: This happens if the _built-in_ node placement failed.
+ -- This sound will still be played if the node is placed in the
+ -- `on_place` callback manually.
+
+ fall = <SimpleSoundSpec>,
+ -- When node starts to fall or is detached
},
- drop = "", -- Name of dropped node when dug. Default is the node itself.
- -- Alternatively:
+
+ drop = "",
+ -- Name of dropped item when dug.
+ -- Default dropped item is the node itself.
+
+ -- Using a table allows multiple items, drop chances and item filtering:
drop = {
- max_items = 1, -- Maximum number of items to drop.
- items = { -- Choose max_items randomly from this list.
+ max_items = 1,
+ -- Maximum number of item lists to drop.
+ -- The entries in 'items' are processed in order. For each:
+ -- Item filtering is applied, chance of drop is applied, if both are
+ -- successful the entire item list is dropped.
+ -- Entry processing continues until the number of dropped item lists
+ -- equals 'max_items'.
+ -- Therefore, entries should progress from low to high drop chance.
+ items = {
+ -- Examples:
+ {
+ -- 1 in 1000 chance of dropping a diamond.
+ -- Default rarity is '1'.
+ rarity = 1000,
+ items = {"default:diamond"},
+ },
+ {
+ -- Only drop if using an item whose name is identical to one
+ -- of these.
+ tools = {"default:shovel_mese", "default:shovel_diamond"},
+ rarity = 5,
+ items = {"default:dirt"},
+ -- Whether all items in the dropped item list inherit the
+ -- hardware coloring palette color from the dug node.
+ -- Default is 'false'.
+ inherit_color = true,
+ },
{
- items = {"foo:bar", "baz:frob"}, -- Items to drop.
- rarity = 1, -- Probability of dropping is 1 / rarity.
+ -- Only drop if using an item whose name contains
+ -- "default:shovel_" (this item filtering by string matching
+ -- is deprecated, use tool_groups instead).
+ tools = {"~default:shovel_"},
+ rarity = 2,
+ -- The item list dropped.
+ items = {"default:sand", "default:desert_sand"},
+ },
+ {
+ -- Only drop if using an item in the "magicwand" group, or
+ -- an item that is in both the "pickaxe" and the "lucky"
+ -- groups.
+ tool_groups = {
+ "magicwand",
+ {"pickaxe", "lucky"}
+ },
+ items = {"default:coal_lump"},
},
},
},
- on_construct = func(pos), --[[
- ^ Node constructor; called after adding node
- ^ Can set up metadata and stuff like that
- ^ Not called for bulk node placement (i.e. schematics and VoxelManip)
- ^ default: nil ]]
- on_destruct = func(pos), --[[
- ^ Node destructor; called before removing node
- ^ Not called for bulk node placement (i.e. schematics and VoxelManip)
- ^ default: nil ]]
- after_destruct = func(pos, oldnode), --[[
- ^ Node destructor; called after removing node
- ^ Not called for bulk node placement (i.e. schematics and VoxelManip)
- ^ default: nil ]]
-
- after_place_node = func(pos, placer, itemstack, pointed_thing) --[[
- ^ Called after constructing node when node was placed using
- minetest.item_place_node / minetest.place_node
- ^ If return true no item is taken from itemstack
- ^ default: nil ]]
- after_dig_node = func(pos, oldnode, oldmetadata, digger), --[[
- ^ oldmetadata is in table format
- ^ Called after destructing node when node was dug using
- minetest.node_dig / minetest.dig_node
- ^ default: nil ]]
- can_dig = function(pos, [player]) --[[
- ^ returns true if node can be dug, or false if not
- ^ default: nil ]]
-
- on_punch = func(pos, node, puncher, pointed_thing), --[[
- ^ default: minetest.node_punch
- ^ By default: Calls minetest.register_on_punchnode callbacks ]]
- on_rightclick = func(pos, node, clicker, itemstack, pointed_thing), --[[
- ^ default: nil
- ^ if defined, itemstack will hold clicker's wielded item
- ^ Shall return the leftover itemstack
- ^ Note: pointed_thing can be nil, if a mod calls this function ]]
-
- on_dig = func(pos, node, digger), --[[
- ^ default: minetest.node_dig
- ^ By default: checks privileges, wears out tool and removes node ]]
-
- on_timer = function(pos,elapsed), --[[
- ^ default: nil
- ^ called by NodeTimers, see minetest.get_node_timer and NodeTimerRef
- ^ elapsed is the total time passed since the timer was started
- ^ return true to run the timer for another cycle with the same timeout value ]]
-
- on_receive_fields = func(pos, formname, fields, sender), --[[
- ^ fields = {name1 = value1, name2 = value2, ...}
- ^ Called when an UI form (e.g. sign text input) returns data
- ^ default: nil ]]
-
- allow_metadata_inventory_move = func(pos, from_list, from_index,
- to_list, to_index, count, player), --[[
- ^ Called when a player wants to move items inside the inventory
- ^ Return value: number of items allowed to move ]]
-
- allow_metadata_inventory_put = func(pos, listname, index, stack, player), --[[
- ^ Called when a player wants to put something into the inventory
- ^ Return value: number of items allowed to put
- ^ Return value: -1: Allow and don't modify item count in inventory ]]
-
- allow_metadata_inventory_take = func(pos, listname, index, stack, player), --[[
- ^ Called when a player wants to take something out of the inventory
- ^ Return value: number of items allowed to take
- ^ Return value: -1: Allow and don't modify item count in inventory ]]
-
- on_metadata_inventory_move = func(pos, from_list, from_index,
- to_list, to_index, count, player),
- on_metadata_inventory_put = func(pos, listname, index, stack, player),
- on_metadata_inventory_take = func(pos, listname, index, stack, player), --[[
- ^ Called after the actual action has happened, according to what was allowed.
- ^ No return value ]]
-
- on_blast = func(pos, intensity), --[[
- ^ intensity: 1.0 = mid range of regular TNT
- ^ If defined, called when an explosion touches the node, instead of
- removing the node ]]
+ on_construct = function(pos),
+ -- Node constructor; called after adding node.
+ -- Can set up metadata and stuff like that.
+ -- Not called for bulk node placement (i.e. schematics and VoxelManip).
+ -- default: nil
+
+ on_destruct = function(pos),
+ -- Node destructor; called before removing node.
+ -- Not called for bulk node placement.
+ -- default: nil
+
+ after_destruct = function(pos, oldnode),
+ -- Node destructor; called after removing node.
+ -- Not called for bulk node placement.
+ -- default: nil
+
+ on_flood = function(pos, oldnode, newnode),
+ -- Called when a liquid (newnode) is about to flood oldnode, if it has
+ -- `floodable = true` in the nodedef. Not called for bulk node placement
+ -- (i.e. schematics and VoxelManip) or air nodes. If return true the
+ -- node is not flooded, but on_flood callback will most likely be called
+ -- over and over again every liquid update interval.
+ -- Default: nil
+ -- Warning: making a liquid node 'floodable' will cause problems.
+
+ preserve_metadata = function(pos, oldnode, oldmeta, drops),
+ -- Called when oldnode is about be converted to an item, but before the
+ -- node is deleted from the world or the drops are added. This is
+ -- generally the result of either the node being dug or an attached node
+ -- becoming detached.
+ -- oldmeta are the metadata fields (table) of the node before deletion.
+ -- drops is a table of ItemStacks, so any metadata to be preserved can
+ -- be added directly to one or more of the dropped items. See
+ -- "ItemStackMetaRef".
+ -- default: nil
+
+ after_place_node = function(pos, placer, itemstack, pointed_thing),
+ -- Called after constructing node when node was placed using
+ -- minetest.item_place_node / minetest.place_node.
+ -- If return true no item is taken from itemstack.
+ -- `placer` may be any valid ObjectRef or nil.
+ -- default: nil
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger),
+ -- oldmetadata is in table format.
+ -- Called after destructing node when node was dug using
+ -- minetest.node_dig / minetest.dig_node.
+ -- default: nil
+
+ can_dig = function(pos, [player]),
+ -- Returns true if node can be dug, or false if not.
+ -- default: nil
+
+ on_punch = function(pos, node, puncher, pointed_thing),
+ -- default: minetest.node_punch
+ -- Called when puncher (an ObjectRef) punches the node at pos.
+ -- By default calls minetest.register_on_punchnode callbacks.
+
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing),
+ -- default: nil
+ -- Called when clicker (an ObjectRef) used the 'place/build' key
+ -- (not neccessarily an actual rightclick)
+ -- while pointing at the node at pos with 'node' being the node table.
+ -- itemstack will hold clicker's wielded item.
+ -- Shall return the leftover itemstack.
+ -- Note: pointed_thing can be nil, if a mod calls this function.
+ -- This function does not get triggered by clients <=0.4.16 if the
+ -- "formspec" node metadata field is set.
+
+ on_dig = function(pos, node, digger),
+ -- default: minetest.node_dig
+ -- By default checks privileges, wears out item (if tool) and removes node.
+ -- return true if the node was dug successfully, false otherwise.
+ -- Deprecated: returning nil is the same as returning true.
+
+ on_timer = function(pos, elapsed),
+ -- default: nil
+ -- called by NodeTimers, see minetest.get_node_timer and NodeTimerRef.
+ -- elapsed is the total time passed since the timer was started.
+ -- return true to run the timer for another cycle with the same timeout
+ -- value.
+
+ on_receive_fields = function(pos, formname, fields, sender),
+ -- fields = {name1 = value1, name2 = value2, ...}
+ -- Called when an UI form (e.g. sign text input) returns data.
+ -- See minetest.register_on_player_receive_fields for more info.
+ -- default: nil
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player),
+ -- Called when a player wants to move items inside the inventory.
+ -- Return value: number of items allowed to move.
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player),
+ -- Called when a player wants to put something into the inventory.
+ -- Return value: number of items allowed to put.
+ -- Return value -1: Allow and don't modify item count in inventory.
+
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player),
+ -- Called when a player wants to take something out of the inventory.
+ -- Return value: number of items allowed to take.
+ -- Return value -1: Allow and don't modify item count in inventory.
+
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player),
+ on_metadata_inventory_put = function(pos, listname, index, stack, player),
+ on_metadata_inventory_take = function(pos, listname, index, stack, player),
+ -- Called after the actual action has happened, according to what was
+ -- allowed.
+ -- No return value.
+
+ on_blast = function(pos, intensity),
+ -- intensity: 1.0 = mid range of regular TNT.
+ -- If defined, called when an explosion touches the node, instead of
+ -- removing the node.
+
+ mod_origin = "modname",
+ -- stores which mod actually registered a node
+ -- If the source could not be determined it contains "??"
+ -- Useful for getting which mod truly registered something
+ -- example: if a node is registered as ":othermodname:nodename",
+ -- nodename will show "othermodname", but mod_orgin will say "modname"
}
-### Recipe for `register_craft` (shaped)
+Crafting recipes
+----------------
+
+Used by `minetest.register_craft`.
+
+### Shaped
{
- output = 'default:pick_stone',
+ output = "default:pick_stone",
recipe = {
- {'default:cobble', 'default:cobble', 'default:cobble'},
- {'', 'default:stick', ''},
- {'', 'default:stick', ''}, -- Also groups; e.g. 'group:crumbly'
+ {"default:cobble", "default:cobble", "default:cobble"},
+ {"", "default:stick", ""},
+ {"", "default:stick", ""}, -- Also groups; e.g. "group:crumbly"
},
- replacements = --[[<optional list of item pairs,
- replace one input item with another item on crafting>]]
+ replacements = <list of item pairs>,
+ -- replacements: replace one input item with another item on crafting
+ -- (optional).
}
-### Recipe for `register_craft` (shapeless)
+### Shapeless
{
- type = "shapeless",
- output = 'mushrooms:mushroom_stew',
- recipe = {
- "mushrooms:bowl",
- "mushrooms:mushroom_brown",
- "mushrooms:mushroom_red",
- },
- replacements = --[[<optional list of item pairs,
- replace one input item with another item on crafting>]]
- }
-
-### Recipe for `register_craft` (tool repair)
+ type = "shapeless",
+ output = "mushrooms:mushroom_stew",
+ recipe = {
+ "mushrooms:bowl",
+ "mushrooms:mushroom_brown",
+ "mushrooms:mushroom_red",
+ },
+ replacements = <list of item pairs>,
+ }
+
+### Tool repair
{
type = "toolrepair",
- additional_wear = -0.02,
+ additional_wear = -0.02, -- multiplier of 65536
}
-### Recipe for `register_craft` (cooking)
+Adds a shapeless recipe for *every* tool that doesn't have the `disable_repair=1`
+group. Player can put 2 equal tools in the craft grid to get one "repaired" tool
+back.
+The wear of the output is determined by the wear of both tools, plus a
+'repair bonus' given by `additional_wear`. To reduce the wear (i.e. 'repair'),
+you want `additional_wear` to be negative.
+
+The formula used to calculate the resulting wear is:
+
+ 65536 * (1 - ( (1 - tool_1_wear) + (1 - tool_2_wear) + additional_wear ))
+
+The result is rounded and can't be lower than 0. If the result is 65536 or higher,
+no crafting is possible.
+
+### Cooking
{
type = "cooking",
@@ -3858,264 +8467,652 @@ Definition tables
cooktime = 3,
}
-### Recipe for `register_craft` (furnace fuel)
+### Furnace fuel
{
type = "fuel",
- recipe = "default:leaves",
- burntime = 1,
+ recipe = "bucket:bucket_lava",
+ burntime = 60,
+ replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}},
}
-### Ore definition (`register_ore`)
+The engine does not implement anything specific to cooking or fuels, but the
+recpies can be retrieved later using `minetest.get_craft_result` to have a
+consistent interface across different games/mods.
+
+Ore definition
+--------------
+
+Used by `minetest.register_ore`.
+
+See [Ores] section above for essential information.
{
- ore_type = "scatter", -- See "Ore types"
- ore = "default:stone_with_coal",
- wherein = "default:stone",
- -- ^ a list of nodenames is supported too
- clust_scarcity = 8*8*8,
- -- ^ Ore has a 1 out of clust_scarcity chance of spawning in a node
- -- ^ This value should be *MUCH* higher than your intuition might tell you!
+ ore_type = "",
+ -- Supported: "scatter", "sheet", "puff", "blob", "vein", "stratum"
+
+ ore = "",
+ -- Ore node to place
+
+ ore_param2 = 0,
+ -- Param2 to set for ore (e.g. facedir rotation)
+
+ wherein = "",
+ -- Node to place ore in. Multiple are possible by passing a list.
+
+ clust_scarcity = 8 * 8 * 8,
+ -- Ore has a 1 out of clust_scarcity chance of spawning in a node.
+ -- If the desired average distance between ores is 'd', set this to
+ -- d * d * d.
+
clust_num_ores = 8,
- -- ^ Number of ores in a cluster
+ -- Number of ores in a cluster
+
clust_size = 3,
- -- ^ Size of the bounding box of the cluster
- -- ^ In this example, there is a 3x3x3 cluster where 8 out of the 27 nodes are coal ore
+ -- Size of the bounding box of the cluster.
+ -- In this example, there is a 3 * 3 * 3 cluster where 8 out of the 27
+ -- nodes are coal ore.
+
y_min = -31000,
- y_max = 64,
+ y_max = 31000,
+ -- Lower and upper limits for ore (inclusive)
+
flags = "",
- -- ^ Attributes for this ore generation
- noise_threshold = 0.5,
- -- ^ If noise is above this threshold, ore is placed. Not needed for a uniform distribution
- noise_params = {offset=0, scale=1, spread={x=100, y=100, z=100}, seed=23, octaves=3, persist=0.70}
- -- ^ NoiseParams structure describing the perlin noise used for ore distribution.
- -- ^ Needed for sheet ore_type. Omit from scatter ore_type for a uniform ore distribution
+ -- Attributes for the ore generation, see 'Ore attributes' section above
+
+ noise_threshold = 0,
+ -- If noise is above this threshold, ore is placed. Not needed for a
+ -- uniform distribution.
+
+ noise_params = {
+ offset = 0,
+ scale = 1,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 23,
+ octaves = 3,
+ persistence = 0.7
+ },
+ -- NoiseParams structure describing one of the perlin noises used for
+ -- ore distribution.
+ -- Needed by "sheet", "puff", "blob" and "vein" ores.
+ -- Omit from "scatter" ore for a uniform ore distribution.
+ -- Omit from "stratum" ore for a simple horizontal strata from y_min to
+ -- y_max.
+
+ biomes = {"desert", "rainforest"},
+ -- List of biomes in which this ore occurs.
+ -- Occurs in all biomes if this is omitted, and ignored if the Mapgen
+ -- being used does not support biomes.
+ -- Can be a list of (or a single) biome names, IDs, or definitions.
+
+ -- Type-specific parameters
+
+ -- "sheet"
+ column_height_min = 1,
+ column_height_max = 16,
+ column_midpoint_factor = 0.5,
+
+ -- "puff"
+ np_puff_top = {
+ offset = 4,
+ scale = 2,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 47,
+ octaves = 3,
+ persistence = 0.7
+ },
+ np_puff_bottom = {
+ offset = 4,
+ scale = 2,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 11,
+ octaves = 3,
+ persistence = 0.7
+ },
+
+ -- "vein"
random_factor = 1.0,
- -- ^ Multiplier of the randomness contribution to the noise value at any
- -- given point to decide if ore should be placed. Set to 0 for solid veins.
- -- ^ This parameter is only valid for ore_type == "vein".
- biomes = {"desert", "rainforest"}
- -- ^ List of biomes in which this decoration occurs. Occurs in all biomes if this is omitted,
- -- ^ and ignored if the Mapgen being used does not support biomes.
- -- ^ Can be a list of (or a single) biome names, IDs, or definitions.
+
+ -- "stratum"
+ np_stratum_thickness = {
+ offset = 8,
+ scale = 4,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 17,
+ octaves = 3,
+ persistence = 0.7
+ },
+ stratum_thickness = 8, -- only used if no noise defined
}
-### Biome definition (`register_biome`)
+Biome definition
+----------------
+
+Used by `minetest.register_biome`.
-**Note**
-The Biome API is still in an experimental phase and subject to change.
+The maximum number of biomes that can be used is 65535. However, using an
+excessive number of biomes will slow down map generation. Depending on desired
+performance and computing power the practical limit is much lower.
{
name = "tundra",
+
node_dust = "default:snow",
- -- ^ Node dropped onto upper surface after all else is generated.
+ -- Node dropped onto upper surface after all else is generated
+
node_top = "default:dirt_with_snow",
depth_top = 1,
- -- ^ Node forming surface layer of biome and thickness of this layer.
+ -- Node forming surface layer of biome and thickness of this layer
+
node_filler = "default:permafrost",
depth_filler = 3,
- -- ^ Node forming lower layer of biome and thickness of this layer.
+ -- Node forming lower layer of biome and thickness of this layer
+
node_stone = "default:bluestone",
- -- ^ Node that replaces all stone nodes between roughly y_min and y_max.
+ -- Node that replaces all stone nodes between roughly y_min and y_max.
+
node_water_top = "default:ice",
depth_water_top = 10,
- -- ^ Node forming a surface layer in seawater with the defined thickness.
+ -- Node forming a surface layer in seawater with the defined thickness
+
node_water = "",
- -- ^ Node that replaces all seawater nodes not in the defined surface layer.
+ -- Node that replaces all seawater nodes not in the surface layer
+
node_river_water = "default:ice",
- -- ^ Node that replaces river water in mapgens that use default:river_water.
+ -- Node that replaces river water in mapgens that use
+ -- default:river_water
+
node_riverbed = "default:gravel",
depth_riverbed = 2,
- -- ^ Node placed under river water and thickness of this layer.
- y_min = 1,
+ -- Node placed under river water and thickness of this layer
+
+ node_cave_liquid = "default:lava_source",
+ node_cave_liquid = {"default:water_source", "default:lava_source"},
+ -- Nodes placed inside 50% of the medium size caves.
+ -- Multiple nodes can be specified, each cave will use a randomly
+ -- chosen node from the list.
+ -- If this field is left out or 'nil', cave liquids fall back to
+ -- classic behaviour of lava and water distributed using 3D noise.
+ -- For no cave liquid, specify "air".
+
+ node_dungeon = "default:cobble",
+ -- Node used for primary dungeon structure.
+ -- If absent, dungeon nodes fall back to the 'mapgen_cobble' mapgen
+ -- alias, if that is also absent, dungeon nodes fall back to the biome
+ -- 'node_stone'.
+ -- If present, the following two nodes are also used.
+
+ node_dungeon_alt = "default:mossycobble",
+ -- Node used for randomly-distributed alternative structure nodes.
+ -- If alternative structure nodes are not wanted leave this absent.
+
+ node_dungeon_stair = "stairs:stair_cobble",
+ -- Node used for dungeon stairs.
+ -- If absent, stairs fall back to 'node_dungeon'.
+
y_max = 31000,
- -- ^ Lower and upper limits for biome.
- -- ^ Because biome is not recalculated for every node in a node column
- -- ^ some biome materials can exceed their limits, especially stone.
- -- ^ For each node column in a mapchunk, biome is only recalculated at column
- -- ^ top and at each of these surfaces:
- -- ^ Ground below air, water below air, ground below water.
- -- ^ The selected biome then stays in effect for all nodes below until
- -- ^ column base or the next biome recalculation.
+ y_min = 1,
+ -- Upper and lower limits for biome.
+ -- Alternatively you can use xyz limits as shown below.
+
+ max_pos = {x = 31000, y = 128, z = 31000},
+ min_pos = {x = -31000, y = 9, z = -31000},
+ -- xyz limits for biome, an alternative to using 'y_min' and 'y_max'.
+ -- Biome is limited to a cuboid defined by these positions.
+ -- Any x, y or z field left undefined defaults to -31000 in 'min_pos' or
+ -- 31000 in 'max_pos'.
+
+ vertical_blend = 8,
+ -- Vertical distance in nodes above 'y_max' over which the biome will
+ -- blend with the biome above.
+ -- Set to 0 for no vertical blend. Defaults to 0.
+
heat_point = 0,
humidity_point = 50,
- -- ^ Characteristic average temperature and humidity for the biome.
- -- ^ These values create 'biome points' on a voronoi diagram that has heat
- -- ^ and humidity as axes. The resulting voronoi cells determine which
- -- ^ heat/humidity points belong to which biome, and therefore determine
- -- ^ the area and location of each biome in the world.
- -- ^ The biome points need to be carefully and evenly spaced on the voronoi
- -- ^ diagram to result in roughly equal size biomes.
- -- ^ Heat and humidity have average values of 50, vary mostly between
- -- ^ 0 and 100 but also often exceed these values.
- -- ^ Heat is not in degrees celcius, both values are abstract.
+ -- Characteristic temperature and humidity for the biome.
+ -- These values create 'biome points' on a voronoi diagram with heat and
+ -- humidity as axes. The resulting voronoi cells determine the
+ -- distribution of the biomes.
+ -- Heat and humidity have average values of 50, vary mostly between
+ -- 0 and 100 but can exceed these values.
}
-### Decoration definition (`register_decoration`)
+Decoration definition
+---------------------
+
+See [Decoration types]. Used by `minetest.register_decoration`.
{
- deco_type = "simple", -- See "Decoration types"
+ deco_type = "simple",
+ -- Type. "simple" or "schematic" supported
+
place_on = "default:dirt_with_grass",
- -- ^ Node (or list of nodes) that the decoration can be placed on
+ -- Node (or list of nodes) that the decoration can be placed on
+
sidelen = 8,
- -- ^ Size of divisions made in the chunk being generated.
- -- ^ If the chunk size is not evenly divisible by sidelen, sidelen is made equal to the chunk size.
+ -- Size of the square (X / Z) divisions of the mapchunk being generated.
+ -- Determines the resolution of noise variation if used.
+ -- If the chunk size is not evenly divisible by sidelen, sidelen is made
+ -- equal to the chunk size.
+
fill_ratio = 0.02,
- -- ^ Ratio of the area to be uniformly filled by the decoration.
- -- ^ Used only if noise_params is not specified.
- noise_params = {offset=0, scale=.45, spread={x=100, y=100, z=100}, seed=354, octaves=3, persist=0.7},
- -- ^ NoiseParams structure describing the perlin noise used for decoration distribution.
- -- ^ The result of this is multiplied by the 2d area of the division being decorated.
+ -- The value determines 'decorations per surface node'.
+ -- Used only if noise_params is not specified.
+ -- If >= 10.0 complete coverage is enabled and decoration placement uses
+ -- a different and much faster method.
+
+ noise_params = {
+ offset = 0,
+ scale = 0.45,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 354,
+ octaves = 3,
+ persistence = 0.7,
+ lacunarity = 2.0,
+ flags = "absvalue"
+ },
+ -- NoiseParams structure describing the perlin noise used for decoration
+ -- distribution.
+ -- A noise value is calculated for each square division and determines
+ -- 'decorations per surface node' within each division.
+ -- If the noise value >= 10.0 complete coverage is enabled and
+ -- decoration placement uses a different and much faster method.
+
biomes = {"Oceanside", "Hills", "Plains"},
- -- ^ List of biomes in which this decoration occurs. Occurs in all biomes if this is omitted,
- -- ^ and ignored if the Mapgen being used does not support biomes.
- -- ^ Can be a list of (or a single) biome names, IDs, or definitions.
- y_min = -31000
- y_max = 31000
- -- ^ Minimum and maximum `y` positions these decorations can be generated at.
- -- ^ This parameter refers to the `y` position of the decoration base, so
- -- the actual maximum height would be `height_max + size.Y`.
+ -- List of biomes in which this decoration occurs. Occurs in all biomes
+ -- if this is omitted, and ignored if the Mapgen being used does not
+ -- support biomes.
+ -- Can be a list of (or a single) biome names, IDs, or definitions.
+
+ y_min = -31000,
+ y_max = 31000,
+ -- Lower and upper limits for decoration (inclusive).
+ -- These parameters refer to the Y co-ordinate of the 'place_on' node.
+
spawn_by = "default:water",
- -- ^ Node (or list of nodes) that the decoration only spawns next to.
- -- ^ Checks two horizontal planes of neighbouring nodes (including diagonal neighbours),
- -- ^ one plane at Y = surface and one plane at Y = surface = + 1.
+ -- Node (or list of nodes) that the decoration only spawns next to.
+ -- Checks the 8 neighbouring nodes on the same Y, and also the ones
+ -- at Y+1, excluding both center nodes.
+
num_spawn_by = 1,
- -- ^ Number of spawn_by nodes that must be surrounding the decoration position to occur.
- -- ^ If absent or -1, decorations occur next to any nodes.
- flags = "liquid_surface, force_placement",
- -- ^ Flags for all decoration types.
- -- ^ "liquid_surface": Instead of placement on the highest solid surface
- -- ^ in a mapchunk column, placement is on the highest liquid surface.
- -- ^ Placement is disabled if solid nodes are found above the liquid surface.
- -- ^ "force_placement": Nodes other than "air" and "ignore" are replaced by the decoration.
+ -- Number of spawn_by nodes that must be surrounding the decoration
+ -- position to occur.
+ -- If absent or -1, decorations occur next to any nodes.
+
+ flags = "liquid_surface, force_placement, all_floors, all_ceilings",
+ -- Flags for all decoration types.
+ -- "liquid_surface": Instead of placement on the highest solid surface
+ -- in a mapchunk column, placement is on the highest liquid surface.
+ -- Placement is disabled if solid nodes are found above the liquid
+ -- surface.
+ -- "force_placement": Nodes other than "air" and "ignore" are replaced
+ -- by the decoration.
+ -- "all_floors", "all_ceilings": Instead of placement on the highest
+ -- surface in a mapchunk the decoration is placed on all floor and/or
+ -- ceiling surfaces, for example in caves and dungeons.
+ -- Ceiling decorations act as an inversion of floor decorations so the
+ -- effect of 'place_offset_y' is inverted.
+ -- Y-slice probabilities do not function correctly for ceiling
+ -- schematic decorations as the behaviour is unchanged.
+ -- If a single decoration registration has both flags the floor and
+ -- ceiling decorations will be aligned vertically.
----- Simple-type parameters
+
decoration = "default:grass",
- -- ^ The node name used as the decoration.
- -- ^ If instead a list of strings, a randomly selected node from the list is placed as the decoration.
+ -- The node name used as the decoration.
+ -- If instead a list of strings, a randomly selected node from the list
+ -- is placed as the decoration.
+
height = 1,
- -- ^ Number of nodes high the decoration is made.
- -- ^ If height_max is not 0, this is the lower bound of the randomly selected height.
+ -- Decoration height in nodes.
+ -- If height_max is not 0, this is the lower limit of a randomly
+ -- selected height.
+
height_max = 0,
- -- ^ Number of nodes the decoration can be at maximum.
- -- ^ If absent, the parameter 'height' is used as a constant.
+ -- Upper limit of the randomly selected height.
+ -- If absent, the parameter 'height' is used as a constant.
+
+ param2 = 0,
+ -- Param2 value of decoration nodes.
+ -- If param2_max is not 0, this is the lower limit of a randomly
+ -- selected param2.
+
+ param2_max = 0,
+ -- Upper limit of the randomly selected param2.
+ -- If absent, the parameter 'param2' is used as a constant.
+
+ place_offset_y = 0,
+ -- Y offset of the decoration base node relative to the standard base
+ -- node position.
+ -- Can be positive or negative. Default is 0.
+ -- Effect is inverted for "all_ceilings" decorations.
+ -- Ignored by 'y_min', 'y_max' and 'spawn_by' checks, which always refer
+ -- to the 'place_on' node.
----- Schematic-type parameters
+
schematic = "foobar.mts",
- -- ^ If schematic is a string, it is the filepath relative to the current working directory of the
- -- ^ specified Minetest schematic file.
- -- ^ - OR -, could be the ID of a previously registered schematic
- -- ^ - OR -, could instead be a table containing two mandatory fields, size and data,
- -- ^ and an optional table yslice_prob:
+ -- If schematic is a string, it is the filepath relative to the current
+ -- working directory of the specified Minetest schematic file.
+ -- Could also be the ID of a previously registered schematic.
+
schematic = {
- size = {x=4, y=6, z=4},
+ size = {x = 4, y = 6, z = 4},
data = {
- {name="default:cobble", param1=255, param2=0},
- {name="default:dirt_with_grass", param1=255, param2=0},
- {name="ignore", param1=255, param2=0},
- {name="air", param1=255, param2=0},
+ {name = "default:cobble", param1 = 255, param2 = 0},
+ {name = "default:dirt_with_grass", param1 = 255, param2 = 0},
+ {name = "air", param1 = 255, param2 = 0},
...
},
yslice_prob = {
- {ypos=2, prob=128},
- {ypos=5, prob=64},
+ {ypos = 2, prob = 128},
+ {ypos = 5, prob = 64},
...
},
},
- -- ^ See 'Schematic specifier' for details.
+ -- Alternative schematic specification by supplying a table. The fields
+ -- size and data are mandatory whereas yslice_prob is optional.
+ -- See 'Schematic specifier' for details.
+
replacements = {["oldname"] = "convert_to", ...},
+ -- Map of node names to replace in the schematic after reading it.
+
flags = "place_center_x, place_center_y, place_center_z",
- -- ^ Flags for schematic decorations. See 'Schematic attributes'.
- rotation = "90" -- rotate schematic 90 degrees on placement
- -- ^ Rotation can be "0", "90", "180", "270", or "random".
+ -- Flags for schematic decorations. See 'Schematic attributes'.
+
+ rotation = "90",
+ -- Rotation can be "0", "90", "180", "270", or "random"
+
+ place_offset_y = 0,
+ -- If the flag 'place_center_y' is set this parameter is ignored.
+ -- Y offset of the schematic base node layer relative to the 'place_on'
+ -- node.
+ -- Can be positive or negative. Default is 0.
+ -- Effect is inverted for "all_ceilings" decorations.
+ -- Ignored by 'y_min', 'y_max' and 'spawn_by' checks, which always refer
+ -- to the 'place_on' node.
}
-### Chat command definition (`register_chatcommand`)
+Chat command definition
+-----------------------
+
+Used by `minetest.register_chatcommand`.
{
- params = "<name> <privilege>", -- Short parameter description
- description = "Remove privilege from player", -- Full description
- privs = {privs=true}, -- Require the "privs" privilege to run
- func = function(name, param), -- Called when command is run.
- -- Returns boolean success and text output.
+ params = "<name> <privilege>", -- Short parameter description
+
+ description = "Remove privilege from player", -- Full description
+
+ privs = {privs=true}, -- Require the "privs" privilege to run
+
+ func = function(name, param),
+ -- Called when command is run. Returns boolean success and text output.
+ -- Special case: The help message is shown to the player if `func`
+ -- returns false without a text output.
}
-### Detached inventory callbacks
+Note that in params, use of symbols is as follows:
+
+* `<>` signifies a placeholder to be replaced when the command is used. For
+ example, when a player name is needed: `<name>`
+* `[]` signifies param is optional and not required when the command is used.
+ For example, if you require param1 but param2 is optional:
+ `<param1> [<param2>]`
+* `|` signifies exclusive or. The command requires one param from the options
+ provided. For example: `<param1> | <param2>`
+* `()` signifies grouping. For example, when param1 and param2 are both
+ required, or only param3 is required: `(<param1> <param2>) | <param3>`
+
+Privilege definition
+--------------------
+
+Used by `minetest.register_privilege`.
+
+ {
+ description = "",
+ -- Privilege description
+
+ give_to_singleplayer = true,
+ -- Whether to grant the privilege to singleplayer.
+
+ give_to_admin = true,
+ -- Whether to grant the privilege to the server admin.
+ -- Uses value of 'give_to_singleplayer' by default.
+
+ on_grant = function(name, granter_name),
+ -- Called when given to player 'name' by 'granter_name'.
+ -- 'granter_name' will be nil if the priv was granted by a mod.
+
+ on_revoke = function(name, revoker_name),
+ -- Called when taken from player 'name' by 'revoker_name'.
+ -- 'revoker_name' will be nil if the priv was revoked by a mod.
+
+ -- Note that the above two callbacks will be called twice if a player is
+ -- responsible, once with the player name, and then with a nil player
+ -- name.
+ -- Return true in the above callbacks to stop register_on_priv_grant or
+ -- revoke being called.
+ }
+
+Detached inventory callbacks
+----------------------------
+
+Used by `minetest.create_detached_inventory`.
{
- allow_move = func(inv, from_list, from_index, to_list, to_index, count, player),
- -- ^ Called when a player wants to move items inside the inventory
- -- ^ Return value: number of items allowed to move
-
- allow_put = func(inv, listname, index, stack, player),
- -- ^ Called when a player wants to put something into the inventory
- -- ^ Return value: number of items allowed to put
- -- ^ Return value: -1: Allow and don't modify item count in inventory
-
- allow_take = func(inv, listname, index, stack, player),
- -- ^ Called when a player wants to take something out of the inventory
- -- ^ Return value: number of items allowed to take
- -- ^ Return value: -1: Allow and don't modify item count in inventory
-
- on_move = func(inv, from_list, from_index, to_list, to_index, count, player),
- on_put = func(inv, listname, index, stack, player),
- on_take = func(inv, listname, index, stack, player),
- -- ^ Called after the actual action has happened, according to what was allowed.
- -- ^ No return value
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player),
+ -- Called when a player wants to move items inside the inventory.
+ -- Return value: number of items allowed to move.
+
+ allow_put = function(inv, listname, index, stack, player),
+ -- Called when a player wants to put something into the inventory.
+ -- Return value: number of items allowed to put.
+ -- Return value -1: Allow and don't modify item count in inventory.
+
+ allow_take = function(inv, listname, index, stack, player),
+ -- Called when a player wants to take something out of the inventory.
+ -- Return value: number of items allowed to take.
+ -- Return value -1: Allow and don't modify item count in inventory.
+
+ on_move = function(inv, from_list, from_index, to_list, to_index, count, player),
+ on_put = function(inv, listname, index, stack, player),
+ on_take = function(inv, listname, index, stack, player),
+ -- Called after the actual action has happened, according to what was
+ -- allowed.
+ -- No return value.
}
-### HUD Definition (`hud_add`, `hud_get`)
+HUD Definition
+--------------
+
+Since most values have multiple different functions, please see the
+documentation in [HUD] section.
+
+Used by `ObjectRef:hud_add`. Returned by `ObjectRef:hud_get`.
{
- hud_elem_type = "image", -- see HUD element types
- -- ^ type of HUD element, can be either of "image", "text", "statbar", or "inventory"
+ hud_elem_type = "image",
+ -- Type of element, can be "image", "text", "statbar", "inventory",
+ -- "waypoint", "image_waypoint", "compass" or "minimap"
+
position = {x=0.5, y=0.5},
- -- ^ Left corner position of element
+ -- Top left corner position of element
+
name = "<name>",
- scale = {x=2, y=2},
+
+ scale = {x = 1, y = 1},
+
text = "<text>",
- number = 2,
- item = 3,
- -- ^ Selected item in inventory. 0 for no item selected.
+
+ text2 = "<text>",
+
+ number = 0,
+
+ item = 0,
+
direction = 0,
- -- ^ Direction: 0: left-right, 1: right-left, 2: top-bottom, 3: bottom-top
+ -- Direction: 0: left-right, 1: right-left, 2: top-bottom, 3: bottom-top
+
alignment = {x=0, y=0},
- -- ^ See "HUD Element Types"
+
offset = {x=0, y=0},
- -- ^ See "HUD Element Types"
- size = { x=100, y=100 },
- -- ^ Size of element in pixels
+
+ world_pos = {x=0, y=0, z=0},
+
+ size = {x=0, y=0},
+
+ z_index = 0,
+ -- Z index: lower z-index HUDs are displayed behind higher z-index HUDs
+
+ style = 0,
}
-### Particle definition (`add_particle`)
+Particle definition
+-------------------
+
+Used by `minetest.add_particle`.
{
pos = {x=0, y=0, z=0},
velocity = {x=0, y=0, z=0},
acceleration = {x=0, y=0, z=0},
- -- ^ Spawn particle at pos with velocity and acceleration
+ -- Spawn particle at pos with velocity and acceleration
+
expirationtime = 1,
- -- ^ Disappears after expirationtime seconds
+ -- Disappears after expirationtime seconds
+
size = 1,
+ -- Scales the visual size of the particle texture.
+ -- If `node` is set, size can be set to 0 to spawn a randomly-sized
+ -- particle (just like actual node dig particles).
+
collisiondetection = false,
- -- ^ collisiondetection: if true collides with physical objects
+ -- If true collides with `walkable` nodes and, depending on the
+ -- `object_collision` field, objects too.
+
collision_removal = false,
- -- ^ collision_removal: if true then particle is removed when it collides,
- -- ^ requires collisiondetection = true to have any effect
+ -- If true particle is removed when it collides.
+ -- Requires collisiondetection = true to have any effect.
+
+ object_collision = false,
+ -- If true particle collides with objects that are defined as
+ -- `physical = true,` and `collide_with_objects = true,`.
+ -- Requires collisiondetection = true to have any effect.
+
vertical = false,
- -- ^ vertical: if true faces player using y axis only
+ -- If true faces player using y axis only
+
texture = "image.png",
- -- ^ Uses texture (string)
- playername = "singleplayer"
- -- ^ optional, if specified spawns particle only on the player's client
+ -- The texture of the particle
+ -- v5.6.0 and later: also supports the table format described in the
+ -- following section
+
+ playername = "singleplayer",
+ -- Optional, if specified spawns particle only on the player's client
+
+ animation = {Tile Animation definition},
+ -- Optional, specifies how to animate the particle texture
+
+ glow = 0
+ -- Optional, specify particle self-luminescence in darkness.
+ -- Values 0-14.
+
+ node = {name = "ignore", param2 = 0},
+ -- Optional, if specified the particle will have the same appearance as
+ -- node dig particles for the given node.
+ -- `texture` and `animation` will be ignored if this is set.
+
+ node_tile = 0,
+ -- Optional, only valid in combination with `node`
+ -- If set to a valid number 1-6, specifies the tile from which the
+ -- particle texture is picked.
+ -- Otherwise, the default behavior is used. (currently: any random tile)
+
+ drag = {x=0, y=0, z=0},
+ -- v5.6.0 and later: Optional drag value, consult the following section
+
+ bounce = {min = ..., max = ..., bias = 0},
+ -- v5.6.0 and later: Optional bounce range, consult the following section
}
-### `ParticleSpawner` definition (`add_particlespawner`)
+
+`ParticleSpawner` definition
+----------------------------
+
+Used by `minetest.add_particlespawner`.
+
+Before v5.6.0, particlespawners used a different syntax and had a more limited set
+of features. Definition fields that are the same in both legacy and modern versions
+are shown in the next listing, and the fields that are used by legacy versions are
+shown separated by a comment; the modern fields are too complex to compactly
+describe in this manner and are documented after the listing.
+
+The older syntax can be used in combination with the newer syntax (e.g. having
+`minpos`, `maxpos`, and `pos` all set) to support older servers. On newer servers,
+the new syntax will override the older syntax; on older servers, the newer syntax
+will be ignored.
{
+ -- Common fields (same name and meaning in both new and legacy syntax)
+
amount = 1,
+ -- Number of particles spawned over the time period `time`.
+
time = 1,
- -- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base
+ -- Lifespan of spawner in seconds.
+ -- If time is 0 spawner has infinite lifespan and spawns the `amount` on
+ -- a per-second basis.
+
+ collisiondetection = false,
+ -- If true collide with `walkable` nodes and, depending on the
+ -- `object_collision` field, objects too.
+
+ collision_removal = false,
+ -- If true particles are removed when they collide.
+ -- Requires collisiondetection = true to have any effect.
+
+ object_collision = false,
+ -- If true particles collide with objects that are defined as
+ -- `physical = true,` and `collide_with_objects = true,`.
+ -- Requires collisiondetection = true to have any effect.
+
+ attached = ObjectRef,
+ -- If defined, particle positions, velocities and accelerations are
+ -- relative to this object's position and yaw
+
+ vertical = false,
+ -- If true face player using y axis only
+
+ texture = "image.png",
+ -- The texture of the particle
+
+ playername = "singleplayer",
+ -- Optional, if specified spawns particles only on the player's client
+
+ animation = {Tile Animation definition},
+ -- Optional, specifies how to animate the particles' texture
+ -- v5.6.0 and later: set length to -1 to sychronize the length
+ -- of the animation with the expiration time of individual particles.
+ -- (-2 causes the animation to be played twice, and so on)
+
+ glow = 0,
+ -- Optional, specify particle self-luminescence in darkness.
+ -- Values 0-14.
+
+ node = {name = "ignore", param2 = 0},
+ -- Optional, if specified the particles will have the same appearance as
+ -- node dig particles for the given node.
+ -- `texture` and `animation` will be ignored if this is set.
+
+ node_tile = 0,
+ -- Optional, only valid in combination with `node`
+ -- If set to a valid number 1-6, specifies the tile from which the
+ -- particle texture is picked.
+ -- Otherwise, the default behavior is used. (currently: any random tile)
+
+ -- Legacy definition fields
+
minpos = {x=0, y=0, z=0},
maxpos = {x=0, y=0, z=0},
minvel = {x=0, y=0, z=0},
@@ -4126,54 +9123,399 @@ The Biome API is still in an experimental phase and subject to change.
maxexptime = 1,
minsize = 1,
maxsize = 1,
- -- ^ The particle's properties are random values in between the bounds:
- -- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration),
- -- ^ minsize/maxsize, minexptime/maxexptime (expirationtime)
- collisiondetection = false,
- -- ^ collisiondetection: if true uses collision detection
- collision_removal = false,
- -- ^ collision_removal: if true then particle is removed when it collides,
- -- ^ requires collisiondetection = true to have any effect
- attached = ObjectRef,
- -- ^ attached: if defined, makes particle positions relative to this object.
- vertical = false,
- -- ^ vertical: if true faces player using y axis only
- texture = "image.png",
- -- ^ Uses texture (string)
- playername = "singleplayer"
- -- ^ Playername is optional, if specified spawns particle only on the player's client
+ -- The particles' properties are random values between the min and max
+ -- values.
+ -- applies to: pos, velocity, acceleration, expirationtime, size
+ -- If `node` is set, min and maxsize can be set to 0 to spawn
+ -- randomly-sized particles (just like actual node dig particles).
}
-### `HTTPRequest` definition (`HTTPApiTable.fetch_async`, `HTTPApiTable.fetch_async`)
+### Modern definition fields
+
+After v5.6.0, spawner properties can be defined in several different ways depending
+on the level of control you need. `pos` for instance can be set as a single vector,
+in which case all particles will appear at that exact point throughout the lifetime
+of the spawner. Alternately, it can be specified as a min-max pair, specifying a
+cubic range the particles can appear randomly within. Finally, some properties can
+be animated by suffixing their key with `_tween` (e.g. `pos_tween`) and supplying
+a tween table.
+
+The following definitions are all equivalent, listed in order of precedence from
+lowest (the legacy syntax) to highest (tween tables). If multiple forms of a
+property definition are present, the highest-precidence form will be selected
+and all lower-precedence fields will be ignored, allowing for graceful
+degradation in older clients).
+
+ {
+ -- old syntax
+ maxpos = {x = 0, y = 0, z = 0},
+ minpos = {x = 0, y = 0, z = 0},
+
+ -- absolute value
+ pos = 0,
+ -- all components of every particle's position vector will be set to this
+ -- value
+
+ -- vec3
+ pos = vector.new(0,0,0),
+ -- all particles will appear at this exact position throughout the lifetime
+ -- of the particlespawner
+
+ -- vec3 range
+ pos = {
+ -- the particle will appear at a position that is picked at random from
+ -- within a cubic range
+
+ min = vector.new(0,0,0),
+ -- `min` is the minimum value this property will be set to in particles
+ -- spawned by the generator
+
+ max = vector.new(0,0,0),
+ -- `max` is the minimum value this property will be set to in particles
+ -- spawned by the generator
+
+ bias = 0,
+ -- when `bias` is 0, all random values are exactly as likely as any
+ -- other. when it is positive, the higher it is, the more likely values
+ -- will appear towards the minimum end of the allowed spectrum. when
+ -- it is negative, the lower it is, the more likely values will appear
+ -- towards the maximum end of the allowed spectrum. the curve is
+ -- exponential and there is no particular maximum or minimum value
+ },
+
+ -- tween table
+ pos_tween = {...},
+ -- a tween table should consist of a list of frames in the same form as the
+ -- untweened pos property above, which the engine will interpolate between,
+ -- and optionally a number of properties that control how the interpolation
+ -- takes place. currently **only two frames**, the first and the last, are
+ -- used, but extra frames are accepted for the sake of forward compatibility.
+ -- any of the above definition styles can be used here as well in any combination
+ -- supported by the property type
+
+ pos_tween = {
+ style = "fwd",
+ -- linear animation from first to last frame (default)
+ style = "rev",
+ -- linear animation from last to first frame
+ style = "pulse",
+ -- linear animation from first to last then back to first again
+ style = "flicker",
+ -- like "pulse", but slightly randomized to add a bit of stutter
+
+ reps = 1,
+ -- number of times the animation is played over the particle's lifespan
+
+ start = 0.0,
+ -- point in the spawner's lifespan at which the animation begins. 0 is
+ -- the very beginning, 1 is the very end
+
+ -- frames can be defined in a number of different ways, depending on the
+ -- underlying type of the property. for now, all but the first and last
+ -- frame are ignored
+
+ -- frames
+
+ -- floats
+ 0, 0,
+
+ -- vec3s
+ vector.new(0,0,0),
+ vector.new(0,0,0),
+
+ -- vec3 ranges
+ { min = vector.new(0,0,0), max = vector.new(0,0,0), bias = 0 },
+ { min = vector.new(0,0,0), max = vector.new(0,0,0), bias = 0 },
+
+ -- mixed
+ 0, { min = vector.new(0,0,0), max = vector.new(0,0,0), bias = 0 },
+ },
+ }
+
+All of the properties that can be defined in this way are listed in the next
+section, along with the datatypes they accept.
+
+#### List of particlespawner properties
+All of the properties in this list can be animated with `*_tween` tables
+unless otherwise specified. For example, `jitter` can be tweened by setting
+a `jitter_tween` table instead of (or in addition to) a `jitter` table/value.
+Types used are defined in the previous section.
+
+* vec3 range `pos`: the position at which particles can appear
+* vec3 range `vel`: the initial velocity of the particle
+* vec3 range `acc`: the direction and speed with which the particle
+ accelerates
+* vec3 range `jitter`: offsets the velocity of each particle by a random
+ amount within the specified range each frame. used to create Brownian motion.
+* vec3 range `drag`: the amount by which absolute particle velocity along
+ each axis is decreased per second. a value of 1.0 means that the particle
+ will be slowed to a stop over the space of a second; a value of -1.0 means
+ that the particle speed will be doubled every second. to avoid interfering
+ with gravity provided by `acc`, a drag vector like `vector.new(1,0,1)` can
+ be used instead of a uniform value.
+* float range `bounce`: how bouncy the particles are when `collisiondetection`
+ is turned on. values less than or equal to `0` turn off particle bounce;
+ `1` makes the particles bounce without losing any velocity, and `2` makes
+ them double their velocity with every bounce. `bounce` is not bounded but
+ values much larger than `1.0` probably aren't very useful.
+* float range `exptime`: the number of seconds after which the particle
+ disappears.
+* table `attract`: sets the birth orientation of particles relative to various
+ shapes defined in world coordinate space. this is an alternative means of
+ setting the velocity which allows particles to emerge from or enter into
+ some entity or node on the map, rather than simply being assigned random
+ velocity values within a range. the velocity calculated by this method will
+ be **added** to that specified by `vel` if `vel` is also set, so in most
+ cases **`vel` should be set to 0**. `attract` has the fields:
+ * string `kind`: selects the kind of shape towards which the particles will
+ be oriented. it must have one of the following values:
+ * `"none"`: no attractor is set and the `attractor` table is ignored
+ * `"point"`: the particles are attracted to a specific point in space.
+ use this also if you want a sphere-like effect, in combination with
+ the `radius` property.
+ * `"line"`: the particles are attracted to an (infinite) line passing
+ through the points `origin` and `angle`. use this for e.g. beacon
+ effects, energy beam effects, etc.
+ * `"plane"`: the particles are attracted to an (infinite) plane on whose
+ surface `origin` designates a point in world coordinate space. use this
+ for e.g. particles entering or emerging from a portal.
+ * float range `strength`: the speed with which particles will move towards
+ `attractor`. If negative, the particles will instead move away from that
+ point.
+ * vec3 `origin`: the origin point of the shape towards which particles will
+ initially be oriented. functions as an offset if `origin_attached` is also
+ set.
+ * vec3 `direction`: sets the direction in which the attractor shape faces. for
+ lines, this sets the angle of the line; e.g. a vector of (0,1,0) will
+ create a vertical line that passes through `origin`. for planes, `direction`
+ is the surface normal of an infinite plane on whose surface `origin` is
+ a point. functions as an offset if `direction_attached` is also set.
+ * entity `origin_attached`: allows the origin to be specified as an offset
+ from the position of an entity rather than a coordinate in world space.
+ * entity `direction_attached`: allows the direction to be specified as an offset
+ from the position of an entity rather than a coordinate in world space.
+ * bool `die_on_contact`: if true, the particles' lifetimes are adjusted so
+ that they will die as they cross the attractor threshold. this behavior
+ is the default but is undesirable for some kinds of animations; set it to
+ false to allow particles to live out their natural lives.
+* vec3 range `radius`: if set, particles will be arranged in a sphere around
+ `pos`. A constant can be used to create a spherical shell of particles, a
+ vector to create an ovoid shell, and a range to create a volume; e.g.
+ `{min = 0.5, max = 1, bias = 1}` will allow particles to appear between 0.5
+ and 1 nodes away from `pos` but will cluster them towards the center of the
+ sphere. Usually if `radius` is used, `pos` should be a single point, but it
+ can still be a range if you really know what you're doing (e.g. to create a
+ "roundcube" emitter volume).
+
+### Textures
+
+In versions before v5.6.0, particlespawner textures could only be specified as a single
+texture string. After v5.6.0, textures can now be specified as a table as well. This
+table contains options that allow simple animations to be applied to the texture.
+
+ texture = {
+ name = "mymod_particle_texture.png",
+ -- the texture specification string
+
+ alpha = 1.0,
+ -- controls how visible the particle is; at 1.0 the particle is fully
+ -- visible, at 0, it is completely invisible.
+
+ alpha_tween = {1, 0},
+ -- can be used instead of `alpha` to animate the alpha value over the
+ -- particle's lifetime. these tween tables work identically to the tween
+ -- tables used in particlespawner properties, except that time references
+ -- are understood with respect to the particle's lifetime, not the
+ -- spawner's. {1,0} fades the particle out over its lifetime.
+
+ scale = 1,
+ scale = {x = 1, y = 1},
+ -- scales the texture onscreen
+
+ scale_tween = {
+ {x = 1, y = 1},
+ {x = 0, y = 1},
+ },
+ -- animates the scale over the particle's lifetime. works like the
+ -- alpha_tween table, but can accept two-dimensional vectors as well as
+ -- integer values. the example value would cause the particle to shrink
+ -- in one dimension over the course of its life until it disappears
+
+ blend = "alpha",
+ -- (default) blends transparent pixels with those they are drawn atop
+ -- according to the alpha channel of the source texture. useful for
+ -- e.g. material objects like rocks, dirt, smoke, or node chunks
+ blend = "add",
+ -- adds the value of pixels to those underneath them, modulo the sources
+ -- alpha channel. useful for e.g. bright light effects like sparks or fire
+ blend = "screen",
+ -- like "add" but less bright. useful for subtler light effecs. note that
+ -- this is NOT formally equivalent to the "screen" effect used in image
+ -- editors and compositors, as it does not respect the alpha channel of
+ -- of the image being blended
+ blend = "sub",
+ -- the inverse of "add"; the value of the source pixel is subtracted from
+ -- the pixel underneath it. a white pixel will turn whatever is underneath
+ -- it black; a black pixel will be "transparent". useful for creating
+ -- darkening effects
+
+ animation = {Tile Animation definition},
+ -- overrides the particlespawner's global animation property for a single
+ -- specific texture
+ }
+
+Instead of setting a single texture definition, it is also possible to set a
+`texpool` property. A `texpool` consists of a list of possible particle textures.
+Every time a particle is spawned, the engine will pick a texture at random from
+the `texpool` and assign it as that particle's texture. You can also specify a
+`texture` in addition to a `texpool`; the `texture` value will be ignored on newer
+clients but will be sent to older (pre-v5.6.0) clients that do not implement
+texpools.
+
+ texpool = {
+ "mymod_particle_texture.png";
+ { name = "mymod_spark.png", fade = "out" },
+ {
+ name = "mymod_dust.png",
+ alpha = 0.3,
+ scale = 1.5,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16, aspect_h = 16,
+
+ length = 3,
+ -- the animation lasts for 3s and then repeats
+ length = -3,
+ -- repeat the animation three times over the particle's lifetime
+ -- (post-v5.6.0 clients only)
+ },
+ },
+ }
+
+#### List of animatable texture properties
+
+While animated particlespawner values vary over the course of the particlespawner's
+lifetime, animated texture properties vary over the lifespans of the individual
+particles spawned with that texture. So a particle with the texture property
+
+ alpha_tween = {
+ 0.0, 1.0,
+ style = "pulse",
+ reps = 4,
+ }
+
+would be invisible at its spawning, pulse visible four times throughout its
+lifespan, and then vanish again before expiring.
+
+* float `alpha` (0.0 - 1.0): controls the visibility of the texture
+* vec2 `scale`: controls the size of the displayed billboard onscreen. Its units
+ are multiples of the parent particle's assigned size (see the `size` property above)
+
+`HTTPRequest` definition
+------------------------
+
+Used by `HTTPApiTable.fetch` and `HTTPApiTable.fetch_async`.
{
url = "http://example.org",
+
timeout = 10,
- -- ^ Timeout for connection in seconds. Default is 3 seconds.
- post_data = "Raw POST request data string" OR { field1 = "data1", field2 = "data2" },
- -- ^ Optional, if specified a POST request with post_data is performed.
- -- ^ Accepts both a string and a table. If a table is specified, encodes table
- -- ^ as x-www-form-urlencoded key-value pairs.
- -- ^ If post_data ist not specified, a GET request is performed instead.
+ -- Timeout for request to be completed in seconds. Default depends on engine settings.
+
+ method = "GET", "POST", "PUT" or "DELETE"
+ -- The http method to use. Defaults to "GET".
+
+ data = "Raw request data string" OR {field1 = "data1", field2 = "data2"},
+ -- Data for the POST, PUT or DELETE request.
+ -- Accepts both a string and a table. If a table is specified, encodes
+ -- table as x-www-form-urlencoded key-value pairs.
+
user_agent = "ExampleUserAgent",
- -- ^ Optional, if specified replaces the default minetest user agent with given string
+ -- Optional, if specified replaces the default minetest user agent with
+ -- given string
+
extra_headers = { "Accept-Language: en-us", "Accept-Charset: utf-8" },
- -- ^ Optional, if specified adds additional headers to the HTTP request. You must make sure
- -- ^ that the header strings follow HTTP specification ("Key: Value").
+ -- Optional, if specified adds additional headers to the HTTP request.
+ -- You must make sure that the header strings follow HTTP specification
+ -- ("Key: Value").
+
multipart = boolean
- -- ^ Optional, if true performs a multipart HTTP request. Default is false.
+ -- Optional, if true performs a multipart HTTP request.
+ -- Default is false.
+ -- Post only, data must be array
+
+ post_data = "Raw POST request data string" OR {field1 = "data1", field2 = "data2"},
+ -- Deprecated, use `data` instead. Forces `method = "POST"`.
}
-### `HTTPRequestResult` definition (`HTTPApiTable.fetch` callback, `HTTPApiTable.fetch_async_get`)
+`HTTPRequestResult` definition
+------------------------------
+
+Passed to `HTTPApiTable.fetch` callback. Returned by
+`HTTPApiTable.fetch_async_get`.
{
completed = true,
- -- ^ If true, the request has finished (either succeeded, failed or timed out)
+ -- If true, the request has finished (either succeeded, failed or timed
+ -- out)
+
succeeded = true,
- -- ^ If true, the request was succesful
+ -- If true, the request was successful
+
timeout = false,
- -- ^ If true, the request timed out
+ -- If true, the request timed out
+
code = 200,
- -- ^ HTTP status code
+ -- HTTP status code
+
data = "response"
}
+
+Authentication handler definition
+---------------------------------
+
+Used by `minetest.register_authentication_handler`.
+
+ {
+ get_auth = function(name),
+ -- Get authentication data for existing player `name` (`nil` if player
+ -- doesn't exist).
+ -- Returns following structure:
+ -- `{password=<string>, privileges=<table>, last_login=<number or nil>}`
+
+ create_auth = function(name, password),
+ -- Create new auth data for player `name`.
+ -- Note that `password` is not plain-text but an arbitrary
+ -- representation decided by the engine.
+
+ delete_auth = function(name),
+ -- Delete auth data of player `name`.
+ -- Returns boolean indicating success (false if player is nonexistent).
+
+ set_password = function(name, password),
+ -- Set password of player `name` to `password`.
+ -- Auth data should be created if not present.
+
+ set_privileges = function(name, privileges),
+ -- Set privileges of player `name`.
+ -- `privileges` is in table form, auth data should be created if not
+ -- present.
+
+ reload = function(),
+ -- Reload authentication data from the storage location.
+ -- Returns boolean indicating success.
+
+ record_login = function(name),
+ -- Called when player joins, used for keeping track of last_login
+
+ iterate = function(),
+ -- Returns an iterator (use with `for` loops) for all player names
+ -- currently in the auth database
+ }
+
+Bit Library
+-----------
+
+Functions: bit.tobit, bit.tohex, bit.bnot, bit.band, bit.bor, bit.bxor, bit.lshift, bit.rshift, bit.arshift, bit.rol, bit.ror, bit.bswap
+
+See http://bitop.luajit.org/ for advanced information.
diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt
index 479880266..4d495f21e 100644
--- a/doc/menu_lua_api.txt
+++ b/doc/menu_lua_api.txt
@@ -1,64 +1,63 @@
-Minetest Lua Mainmenu API Reference 0.4.14
-========================================
+Minetest Lua Mainmenu API Reference 5.6.0
+=========================================
Introduction
-------------
+
The main menu is defined as a formspec by Lua in builtin/mainmenu/
Description of formspec language to show your menu is in lua_api.txt
+
Callbacks
---------
-core.buttonhandler(fields): called when a button is pressed.
+
+core.button_handler(fields): called when a button is pressed.
^ fields = {name1 = value1, name2 = value2, ...}
core.event_handler(event)
^ event: "MenuQuit", "KeyEnter", "ExitButton" or "EditBoxEnter"
+
Gamedata
--------
+
The "gamedata" table is read when calling core.start(). It should contain:
{
- playername = <name>,
- password = <password>,
- address = <IP/adress>,
- port = <port>,
- selected_world = <index>, -- 0 for client mode
- singleplayer = <true/false>,
+ playername = <name>,
+ password = <password>,
+ address = <IP/adress>,
+ port = <port>,
+ selected_world = <index>, -- 0 for client mode
+ singleplayer = <true/false>,
}
+
Functions
---------
+
core.start()
core.close()
+core.get_min_supp_proto()
+^ returns the minimum supported network protocol version
+core.get_max_supp_proto()
+^ returns the maximum supported network protocol version
+core.open_url(url)
+^ opens the URL in a web browser, returns false on failure.
+^ Must begin with http:// or https://
+core.open_dir(path)
+^ opens the path in the system file browser/explorer, returns false on failure.
+^ Must be an existing directory.
+core.share_file(path)
+^ Android only. Shares file using the share popup
+core.get_version() (possible in async calls)
+^ returns current core version
+
+
+
+Filesystem
+----------
-Filesystem:
core.get_builtin_path()
^ returns path to builtin root
-core.get_modpath() (possible in async calls)
-^ returns path to global modpath
-core.get_modstore_details(modid) (possible in async calls)
-^ modid numeric id of mod in modstore
-^ returns {
- id = <numeric id of mod in modstore>,
- title = <human readable title>,
- basename = <basename for mod>,
- description = <description of mod>,
- author = <author of mod>,
- download_url= <best match download url>,
- license = <short description of license>,
- rating = <float value of current rating>
-}
-core.get_modstore_list() (possible in async calls)
-^ returns {
- [1] = {
- id = <numeric id of mod in modstore>,
- title = <human readable title>,
- basename = <basename for mod>
- }
-}
-core.get_gamepath() (possible in async calls)
-^ returns path to global gamepath
-core.get_texturepath() (possible in async calls)
-^ returns path to default textures
core.create_dir(absolute_path) (possible in async calls)
^ absolute_path to directory to create (needs to be absolute)
^ returns true/false
@@ -70,16 +69,12 @@ core.copy_dir(source,destination,keep_soure) (possible in async calls)
^ destination folder
^ keep_source DEFAULT true --> if set to false source is deleted after copying
^ returns true/false
+core.is_dir(path) (possible in async calls)
+^ returns true if path is a valid dir
core.extract_zip(zipfile,destination) [unzip within path required]
^ zipfile to extract
^ destination folder to extract to
^ returns true/false
-core.download_file(url,target) (possible in async calls)
-^ url to download
-^ target to store to
-^ returns true/false
-core.get_version() (possible in async calls)
-^ returns current core version
core.sound_play(spec, looped) -> handle
^ spec = SimpleSoundSpec (see lua-api.txt)
^ looped = bool
@@ -89,8 +84,89 @@ core.get_video_drivers()
^ returns list of available video drivers' settings name and 'friendly' display name
^ e.g. { {name="opengl", friendly_name="OpenGL"}, {name="software", friendly_name="Software Renderer"} }
^ first element of returned list is guaranteed to be the NULL driver
+core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
+ registered in the core (possible in async calls)
+core.get_cache_path() -> path of cache
+core.get_temp_path([param]) (possible in async calls)
+^ param=true: returns path to a temporary file
+^ otherwise: returns path to the temporary folder
+
+
+HTTP Requests
+-------------
+
+* core.download_file(url, target) (possible in async calls)
+ * url to download, and target to store to
+ * returns true/false
+* `minetest.get_http_api()` (possible in async calls)
+ * returns `HTTPApiTable` containing http functions.
+ * The returned table contains the functions `fetch_sync`, `fetch_async` and
+ `fetch_async_get` described below.
+ * Function only exists if minetest server was built with cURL support.
+* `HTTPApiTable.fetch_sync(HTTPRequest req)`: returns HTTPRequestResult
+ * Performs given request synchronously
+* `HTTPApiTable.fetch_async(HTTPRequest req)`: returns handle
+ * Performs given request asynchronously and returns handle for
+ `HTTPApiTable.fetch_async_get`
+* `HTTPApiTable.fetch_async_get(handle)`: returns HTTPRequestResult
+ * Return response data for given asynchronous HTTP request
+
+### `HTTPRequest` definition
+
+Used by `HTTPApiTable.fetch` and `HTTPApiTable.fetch_async`.
+
+ {
+ url = "http://example.org",
+
+ timeout = 10,
+ -- Timeout for connection in seconds. Default is 3 seconds.
+
+ post_data = "Raw POST request data string" OR {field1 = "data1", field2 = "data2"},
+ -- Optional, if specified a POST request with post_data is performed.
+ -- Accepts both a string and a table. If a table is specified, encodes
+ -- table as x-www-form-urlencoded key-value pairs.
+ -- If post_data is not specified, a GET request is performed instead.
+
+ user_agent = "ExampleUserAgent",
+ -- Optional, if specified replaces the default minetest user agent with
+ -- given string
+
+ extra_headers = { "Accept-Language: en-us", "Accept-Charset: utf-8" },
+ -- Optional, if specified adds additional headers to the HTTP request.
+ -- You must make sure that the header strings follow HTTP specification
+ -- ("Key: Value").
+
+ multipart = boolean
+ -- Optional, if true performs a multipart HTTP request.
+ -- Default is false.
+ }
+
+### `HTTPRequestResult` definition
+
+Passed to `HTTPApiTable.fetch` callback. Returned by
+`HTTPApiTable.fetch_async_get`.
+
+ {
+ completed = true,
+ -- If true, the request has finished (either succeeded, failed or timed
+ -- out)
+
+ succeeded = true,
+ -- If true, the request was successful
+
+ timeout = false,
+ -- If true, the request timed out
+
+ code = 200,
+ -- HTTP status code
+
+ data = "response"
+ }
+
+
+Formspec
+--------
-Formspec:
core.update_formspec(formspec)
core.get_table_index(tablename) -> index
^ can also handle textlists
@@ -102,8 +178,13 @@ core.explode_table_event(string) -> table
core.explode_textlist_event(string) -> table
^ returns e.g. {type="CHG", index=1}
^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click)
+core.set_formspec_prepend(formspec)
+^ string to be added to every mainmenu formspec, to be used for theming.
+
+
+GUI
+---
-GUI:
core.set_background(type, texturepath,[tile],[minsize])
^ type: "background", "overlay", "header" or "footer"
^ tile: tile the image instead of scaling (background only)
@@ -112,85 +193,143 @@ core.set_background(type, texturepath,[tile],[minsize])
core.set_clouds(<true/false>)
core.set_topleft_text(text)
core.show_keys_menu()
-core.file_open_dialog(formname,caption)
-^ shows a file open dialog
+core.show_path_select_dialog(formname, caption, is_file_select)
+^ shows a path select dialog
^ formname is base name of dialog response returned in fields
^ -if dialog was accepted "_accepted"
-^^ will be added to fieldname containing the path
+^ will be added to fieldname containing the path
^ -if dialog was canceled "_cancelled"
^ will be added to fieldname value is set to formname itself
+^ if `is_file_select` is `true`, a file and not a folder will be selected
^ returns nil or selected file/folder
core.get_screen_info()
^ returns {
- density = <screen density 0.75,1.0,2.0,3.0 ... (dpi)>,
- display_width = <width of display>,
- display_height = <height of display>,
- window_width = <current window width>,
- window_height = <current window height>
- }
-
-Games:
-core.get_game(index)
-^ returns {
- id = <id>,
- path = <full path to game>,
- gamemods_path = <path>,
- name = <name of game>,
- menuicon_path = <full path to menuicon>,
- DEPRECATED:
- addon_mods_paths = {[1] = <path>,},
-}
-core.get_games() -> table of all games in upper format (possible in async calls)
-core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
- registered in the core (possible in async calls)
+ density = <screen density 0.75,1.0,2.0,3.0 ... (dpi)>,
+ display_width = <width of display>,
+ display_height = <height of display>,
+ window_width = <current window width>,
+ window_height = <current window height>,
+ render_info = <active render information>
+ }
-Favorites:
-core.get_favorites(location) -> list of favorites (possible in async calls)
-^ location: "local" or "online"
-^ returns {
- [1] = {
- clients = <number of clients/nil>,
- clients_max = <maximum number of clients/nil>,
- version = <server version/nil>,
- password = <true/nil>,
- creative = <true/nil>,
- damage = <true/nil>,
- pvp = <true/nil>,
- description = <server description/nil>,
- name = <server name/nil>,
- address = <address of server/nil>,
- port = <port>
- },
-}
-core.delete_favorite(id, location) -> success
-Logging:
+Content and Packages
+--------------------
+
+Content - an installed mod, modpack, game, or texture pack (txt)
+Package - content which is downloadable from the content db, may or may not be installed.
+
+* core.get_user_path() (possible in async calls)
+ * returns path to global user data,
+ the directory that contains user-provided mods, worlds, games, and texture packs.
+* core.get_modpath() (possible in async calls)
+ * returns path to global modpath in the user path, where mods can be installed
+* core.get_modpaths() (possible in async calls)
+ * returns table of virtual path to global modpaths, where mods have been installed
+ The difference with "core.get_modpath" is that no mods should be installed in these
+ directories by Minetest -- they might be read-only.
+
+ Ex:
+
+ ```
+ {
+ mods = "/home/user/.minetest/mods",
+ share = "/usr/share/minetest/mods",
+
+ -- Custom dirs can be specified by the MINETEST_MOD_DIR env variable
+ ["/path/to/custom/dir"] = "/path/to/custom/dir",
+ }
+ ```
+
+* core.get_clientmodpath() (possible in async calls)
+ * returns path to global client-side modpath
+* core.get_gamepath() (possible in async calls)
+ * returns path to global gamepath
+* core.get_texturepath() (possible in async calls)
+ * returns path to default textures
+* core.get_game(index)
+ * `name` in return value is deprecated, use `title` instead.
+ * returns:
+
+ {
+ id = <id>,
+ path = <full path to game>,
+ gamemods_path = <path>,
+ title = <title of game>,
+ menuicon_path = <full path to menuicon>,
+ author = "author",
+ DEPRECATED:
+ addon_mods_paths = {[1] = <path>,},
+ }
+
+* core.get_games() -> table of all games in upper format (possible in async calls)
+* core.get_content_info(path)
+ * returns
+
+ {
+ name = "technical_id",
+ type = "mod" or "modpack" or "game" or "txp",
+ title = "Human readable title",
+ description = "description",
+ author = "author",
+ path = "path/to/content",
+ depends = {"mod", "names"}, -- mods only
+ optional_depends = {"mod", "names"}, -- mods only
+ }
+* core.check_mod_configuration(world_path, mod_paths)
+ * Checks whether configuration is valid.
+ * `world_path`: path to the world
+ * `mod_paths`: list of enabled mod paths
+ * returns:
+
+ {
+ is_consistent = true, -- true is consistent, false otherwise
+ unsatisfied_mods = {}, -- list of mod specs
+ satisfied_mods = {}, -- list of mod specs
+ error_message = "", -- message or nil
+ }
+
+Logging
+-------
+
core.debug(line) (possible in async calls)
^ Always printed to stderr and logfile (print() is redirected here)
core.log(line) (possible in async calls)
core.log(loglevel, line) (possible in async calls)
^ loglevel one of "error", "action", "info", "verbose"
-Settings:
-core.setting_set(name, value)
-core.setting_get(name) -> string or nil (possible in async calls)
-core.setting_setbool(name, value)
-core.setting_getbool(name) -> bool or nil (possible in async calls)
-core.setting_save() -> nil, save all settings to config file
-Worlds:
+Settings
+--------
+
+core.settings:set(name, value)
+core.settings:get(name) -> string or nil (possible in async calls)
+core.settings:set_bool(name, value)
+core.settings:get_bool(name) -> bool or nil (possible in async calls)
+core.settings:save() -> nil, save all settings to config file
+
+For a complete list of methods of the Settings object see
+[lua_api.txt](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt)
+
+
+Worlds
+------
+
core.get_worlds() -> list of worlds (possible in async calls)
^ returns {
- [1] = {
- path = <full path to world>,
- name = <name of world>,
- gameid = <gameid of world>,
- },
+ [1] = {
+ path = <full path to world>,
+ name = <name of world>,
+ gameid = <gameid of world>,
+ },
}
core.create_world(worldname, gameid)
core.delete_world(index)
-Helpers:
+
+Helpers
+-------
+
core.get_us_time()
^ returns time with microsecond precision
core.gettext(string) -> string
@@ -215,13 +354,10 @@ minetest.encode_base64(string) (possible in async calls)
minetest.decode_base64(string) (possible in async calls)
^ Decodes a string encoded in base64.
-Version compat:
-core.get_min_supp_proto()
-^ returns the minimum supported network protocol version
-core.get_max_supp_proto()
-^ returns the maximum supported network protocol version
-Async:
+Async
+-----
+
core.handle_async(async_job,parameters,finished)
^ execute a function asynchronously
^ async_job is a function receiving one parameter and returning one parameter
@@ -232,10 +368,15 @@ core.handle_async(async_job,parameters,finished)
Limitations of Async operations
-No access to global lua variables, don't even try
-Limited set of available functions
- e.g. No access to functions modifying menu like core.start,core.close,
- core.file_open_dialog
-
+ e.g. No access to functions modifying menu like core.start,core.close,
+ core.show_path_select_dialog
-Class reference
+
+Background music
----------------
-Settings: see lua_api.txt
+
+The main menu supports background music.
+It looks for a `main_menu` sound in `$USER_PATH/sounds`. The same naming
+conventions as for normal sounds apply.
+This means the player can add a custom sound.
+It will be played in the main menu (gain = 1.0), looped.
diff --git a/doc/minetest.6 b/doc/minetest.6
index a135e541c..27a3d0024 100644
--- a/doc/minetest.6
+++ b/doc/minetest.6
@@ -1,4 +1,4 @@
-.TH minetest 6 "10 September 2013" "" ""
+.TH minetest 6 "2 February 2019" "" ""
.SH NAME
minetest, minetestserver \- Multiplayer infinite-world block sandbox
@@ -15,10 +15,12 @@ minetest, minetestserver \- Multiplayer infinite-world block sandbox
[\fBWORLD PATH\fR]
.SH DESCRIPTION
-.B Minetest
-is one of the first InfiniMiner/Minecraft(/whatever) inspired games (started October 2010), with a goal of taking the survival multiplayer gameplay to a slightly different direction.
+.B Minetest is one of the first InfiniMiner/Minecraft(/whatever) inspired games
+(started October 2010), with a goal of taking the survival multiplayer gameplay
+in a slightly different direction.
.PP
-The main design philosophy is to keep it technically simple, stable and portable. It will be kept lightweight enough to run on fairly old hardware.
+The main design philosophy is to keep it technically simple, stable and
+portable. It will be kept lightweight enough to run on fairly old hardware.
.SH COMMON OPTIONS
.TP
@@ -32,7 +34,7 @@ Print version information and exit
Load configuration from specified file
.TP
.B \-\-logfile <value>
-Set logfile path (debug.txt)
+Set logfile path ('' for no logging)
.TP
.B \-\-info
Print more information to console
@@ -43,14 +45,23 @@ Print even more information to console
.B \-\-trace
Print enormous amounts of information to console
.TP
-.B \-\-gameid <value>
-Set gameid
+.B \-\-quiet
+Print only errors to console
+.TP
+.B \-\-color <value>
+Colorize the logs ('always', 'never' or 'auto'), defaults to 'auto'
+.TP
+.B \-\-gameid <value> | list
+Set gameid or list available ones
.TP
.B \-\-worldname <value>
Set world path by name
.TP
-.B \-\-world <value> | list
-Set world path or list worlds
+.B \-\-world <value>
+Set world path
+.TP
+.B \-\-worldlist path | name | both
+Get list of worlds ('path' lists paths, 'name' lists names, 'both' lists both)
.TP
.B \-\-map\-dir <value>
Same as \-\-world (deprecated)
@@ -75,11 +86,12 @@ Set player name
.B \-\-password <value>
Set password
.TP
+.B \-\-password\-file <value>
+Set password from contents of file
+.TP
.B \-\-random\-input
Enable random user input, for testing (client only)
.TP
-.B \-\-videomodes
-List available video modes (client only)
.TP
.B \-\-speedtests
Run speed tests
@@ -88,7 +100,19 @@ Run speed tests
.TP
.B \-\-migrate <value>
Migrate from current map backend to another. Possible values are sqlite3,
-leveldb, redis, and dummy.
+leveldb, redis, postgresql, and dummy.
+.TP
+.B \-\-migrate-auth <value>
+Migrate from current auth backend to another. Possible values are sqlite3,
+leveldb, and files.
+.TP
+.B \-\-migrate-players <value>
+Migrate from current players backend to another. Possible values are sqlite3,
+leveldb, postgresql, dummy, and files.
+.TP
+.B \-\-migrate-mod-storage <value>
+Migrate from current mod storage backend to another. Possible values are
+sqlite3, dummy, and files.
.TP
.B \-\-terminal
Display an interactive terminal over ncurses during execution.
@@ -96,19 +120,20 @@ Display an interactive terminal over ncurses during execution.
.SH ENVIRONMENT
.TP
.B MINETEST_SUBGAME_PATH
-Colon delimited list of directories to search for subgames.
+Colon delimited list of directories to search for games.
+.TP
+.B MINETEST_MOD_PATH
+Colon delimited list of directories to search for mods.
.SH BUGS
-Please report all bugs to Perttu Ahola <celeron55@gmail.com>.
+Please report all bugs at https://github.com/minetest/minetest/issues.
.SH AUTHOR
.PP
-Perttu Ahola <celeron55@gmail.com>
-and contributors.
+Perttu Ahola <celeron55@gmail.com> and contributors.
.PP
This man page was originally written by
Juhani Numminen <juhaninumminen0@gmail.com>.
.SH WWW
http://www.minetest.net/
-
diff --git a/doc/mkdocs/build.sh b/doc/mkdocs/build.sh
new file mode 100755
index 000000000..f4d946874
--- /dev/null
+++ b/doc/mkdocs/build.sh
@@ -0,0 +1,41 @@
+#!/bin/sh -e
+
+# Patch Python-Markdown
+MARKDOWN_FILE=$(pip show markdown | awk '/Location/ { print $2 }')/markdown/extensions/codehilite.py
+patch -N -r - $MARKDOWN_FILE lua_highlight.patch || true
+
+# Split lua_api.txt on top level headings
+cat ../lua_api.txt | csplit -sz -f docs/section - '/^=/-1' '{*}'
+
+cat > mkdocs.yml << EOF
+site_name: Minetest API Documentation
+theme:
+ name: readthedocs
+ highlightjs: False
+extra_css:
+ - css/code_styles.css
+ - css/extra.css
+markdown_extensions:
+ - toc:
+ permalink: True
+ - codehilite
+plugins:
+ - search:
+ separator: '[\s\-\.\(]+'
+nav:
+- "Home": index.md
+EOF
+
+mv docs/section00 docs/index.md
+
+for f in docs/section*
+do
+ title=$(head -1 $f)
+ fname=$(echo $title | tr '[:upper:]' '[:lower:]')
+ fname=$(echo $fname | sed 's/ /-/g')
+ fname=$(echo $fname | sed "s/'//g").md
+ mv $f docs/$fname
+ echo "- \"$title\": $fname" >> mkdocs.yml
+done
+
+mkdocs build --site-dir ../../public
diff --git a/doc/mkdocs/docs/css/code_styles.css b/doc/mkdocs/docs/css/code_styles.css
new file mode 100644
index 000000000..c135acd94
--- /dev/null
+++ b/doc/mkdocs/docs/css/code_styles.css
@@ -0,0 +1,68 @@
+.codehilite .hll { background-color: #ffffcc }
+.codehilite .c { color: #408080; font-style: italic } /* Comment */
+/* .codehilite .err { border: 1px solid #FF0000 } /* Error */
+.codehilite .k { color: #008000; font-weight: bold } /* Keyword */
+.codehilite .o { color: #666666 } /* Operator */
+.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */
+.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */
+.codehilite .gd { color: #A00000 } /* Generic.Deleted */
+.codehilite .ge { font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #FF0000 } /* Generic.Error */
+.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.codehilite .gi { color: #00A000 } /* Generic.Inserted */
+.codehilite .go { color: #888888 } /* Generic.Output */
+.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.codehilite .gt { color: #0044DD } /* Generic.Traceback */
+.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.codehilite .kp { color: #008000 } /* Keyword.Pseudo */
+.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #B00040 } /* Keyword.Type */
+.codehilite .m { color: #666666 } /* Literal.Number */
+.codehilite .s { color: #BA2121 } /* Literal.String */
+.codehilite .na { color: #7D9029 } /* Name.Attribute */
+.codehilite .nb { color: #008000 } /* Name.Builtin */
+.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #880000 } /* Name.Constant */
+.codehilite .nd { color: #AA22FF } /* Name.Decorator */
+.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.codehilite .nf { color: #0000FF } /* Name.Function */
+.codehilite .nl { color: #A0A000 } /* Name.Label */
+.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.codehilite .nv { color: #19177C } /* Name.Variable */
+.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mb { color: #666666 } /* Literal.Number.Bin */
+.codehilite .mf { color: #666666 } /* Literal.Number.Float */
+.codehilite .mh { color: #666666 } /* Literal.Number.Hex */
+.codehilite .mi { color: #666666 } /* Literal.Number.Integer */
+.codehilite .mo { color: #666666 } /* Literal.Number.Oct */
+.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
+.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
+.codehilite .sc { color: #BA2121 } /* Literal.String.Char */
+.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
+.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.codehilite .sx { color: #008000 } /* Literal.String.Other */
+.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
+.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
+.codehilite .ss { color: #19177C } /* Literal.String.Symbol */
+.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.codehilite .fm { color: #0000FF } /* Name.Function.Magic */
+.codehilite .vc { color: #19177C } /* Name.Variable.Class */
+.codehilite .vg { color: #19177C } /* Name.Variable.Global */
+.codehilite .vi { color: #19177C } /* Name.Variable.Instance */
+.codehilite .vm { color: #19177C } /* Name.Variable.Magic */
+.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/doc/mkdocs/docs/css/extra.css b/doc/mkdocs/docs/css/extra.css
new file mode 100644
index 000000000..8fde9f893
--- /dev/null
+++ b/doc/mkdocs/docs/css/extra.css
@@ -0,0 +1,15 @@
+/* Fix partly obscured last TOC element */
+.wy-menu {
+ padding-bottom: 20px;
+}
+
+/* Use Minetest green instead of blue */
+.wy-nav-content a {
+ color: hsl(100, 40%, 40%);
+}
+.wy-nav-content a:hover {
+ color: hsl(100, 30%, 30%);
+}
+.wy-side-nav-search, .wy-nav-top, .wy-menu-vertical a:active {
+ background: hsl(100, 40%, 40%);
+}
diff --git a/doc/mkdocs/docs/img/favicon.ico b/doc/mkdocs/docs/img/favicon.ico
new file mode 120000
index 000000000..cac34a30c
--- /dev/null
+++ b/doc/mkdocs/docs/img/favicon.ico
@@ -0,0 +1 @@
+../../../../misc/minetest-icon.ico \ No newline at end of file
diff --git a/doc/mkdocs/lua_highlight.patch b/doc/mkdocs/lua_highlight.patch
new file mode 100644
index 000000000..e231081d6
--- /dev/null
+++ b/doc/mkdocs/lua_highlight.patch
@@ -0,0 +1,9 @@
+@@ -75,7 +75,7 @@
+ css_class="codehilite", lang=None, style='default',
+ noclasses=False, tab_length=4, hl_lines=None, use_pygments=True):
+ self.src = src
+- self.lang = lang
++ self.lang = "lua"
+ self.linenums = linenums
+ self.guess_lang = guess_lang
+ self.css_class = css_class
diff --git a/doc/mod_channels.png b/doc/mod_channels.png
new file mode 100644
index 000000000..08fdfca29
--- /dev/null
+++ b/doc/mod_channels.png
Binary files differ
diff --git a/doc/protocol.txt b/doc/protocol.txt
index b151f88d8..4c8ddd500 100644
--- a/doc/protocol.txt
+++ b/doc/protocol.txt
@@ -59,29 +59,31 @@ function check_if_minetestserver_up($host, $port)
{
# We got a reply! read the peer id from it.
$peer_id = substr($buf, 9, 2);
-
+
# Disconnect
$buf = "\x4f\x45\x74\x03".$peer_id."\x00\x00\x03";
socket_sendto($socket, $buf, strlen($buf), 0, $host, $port);
socket_close($socket);
-
+
return true;
}
return false;
}
- Here's a Python script for checking if a minetest server is up, confirmed working
-#!/usr/bin/env python
+
+#!/usr/bin/env python3
import sys, time, socket
+
address = ""
port = 30000
if len(sys.argv) <= 1:
print("Usage: %s <address>" % sys.argv[0])
exit()
-if ':' in sys.argv[1]:
- address = sys.argv[1].split(':')[0]
+if ":" in sys.argv[1]:
+ address = sys.argv[1].split(":")[0]
try:
- port = int(sys.argv[1].split(':')[1])
+ port = int(sys.argv[1].split(":")[1])
except ValueError:
print("Please specify a valid port")
exit()
@@ -92,17 +94,17 @@ try:
start = time.time()
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2.0)
- buf = "\x4f\x45\x74\x03\x00\x00\x00\x01"
+ buf = b"\x4f\x45\x74\x03\x00\x00\x00\x01"
sock.sendto(buf, (address, port))
data, addr = sock.recvfrom(1000)
if data:
peer_id = data[12:14]
- buf = "\x4f\x45\x74\x03" + peer_id + "\x00\x00\x03"
+ buf = b"\x4f\x45\x74\x03" + peer_id + b"\x00\x00\x03"
sock.sendto(buf, (address, port))
sock.close()
end = time.time()
- print("%s is up (%0.5fms)" % (sys.argv[1],end-start))
+ print("%s is up (%0.5fms)" % (sys.argv[1], end - start))
else:
print("%s seems to be down " % sys.argv[1])
-except:
- print("%s seems to be down " % sys.argv[1])
+except Exception as err:
+ print("%s seems to be down (%s) " % (sys.argv[1], str(err)))
diff --git a/doc/texture_packs.txt b/doc/texture_packs.txt
index 5c535a9f1..f738032b6 100644
--- a/doc/texture_packs.txt
+++ b/doc/texture_packs.txt
@@ -9,6 +9,7 @@ Texture pack directory structure
textures
|-- Texture Pack
+ | |-- texture_pack.conf
| |-- screenshot.png
| |-- description.txt
| |-- override.txt
@@ -21,9 +22,17 @@ This is a directory containing the entire contents of a single texture pack.
It can be chosen more or less freely and will also become the name of the
texture pack. The name must not be “base”.
+### `texture_pack.conf`
+A key-value config file with the following keys:
+
+* `title` - human readable title
+* `description` - short description, shown in the content tab
+
### `description.txt`
+**Deprecated**, you should use texture_pack.conf instead.
+
A file containing a short description of the texture pack to be shown in the
-texture packs tab.
+content tab.
### `screenshot.png`
A preview image showing an in-game screenshot of this texture pack; it will be
@@ -54,17 +63,28 @@ by texture packs. All existing fallback textures can be found in the directory
### Gameplay textures
* `bubble.png`: the bubble texture when the player is drowning
+ (default size: 12×12)
+* `bubble_gone.png`: like `bubble.png`, but denotes lack of breath
+ (transparent by default, same size as bubble.png)
* `crack_anylength.png`: node overlay texture when digging
* `crosshair.png`
* the crosshair texture in the center of the screen. The settings
`crosshair_color` and `crosshair_alpha` are used to create a cross
- when no texture was found
+ when no texture is found.
+
+* `object_crosshair.png`
+ * the crosshair seen when pointing at an object. The settings
+ `crosshair_color` and `crosshair_alpha` are used to create a cross
+ when no texture is found.
* `halo.png`: used for the node highlighting mesh
* `heart.png`: used to display the health points of the player
+ (default size: 12×12)
+* `heart_gone.png`: like `heart.png`, but denotes lack of health points
+ (transparent by default, same size as heart.png)
* `minimap_mask_round.png`: round minimap mask, white gets replaced by the map
* `minimap_mask_square.png`: mask used for the square minimap
@@ -72,10 +92,15 @@ by texture packs. All existing fallback textures can be found in the directory
* `minimap_overlay_square.png`: overlay texture for the square minimap
* `object_marker_red.png`: texture for players on the minimap
* `player_marker.png`: texture for the own player on the square minimap
+* `no_texture_airlike.png`: fallback inventory image for airlike nodes
+* `no_texture.png`: fallback image for unspecified textures
* `player.png`: front texture of the 2D upright sprite player
* `player_back.png`: back texture of the 2D upright sprite player
+* `progress_bar.png`: foreground texture of the loading screen's progress bar
+* `progress_bar_bg.png`: background texture of the loading screen's progress bar
+
* `moon.png`: texture of the moon. Default texture is generated by Minetest
* `moon_tonemap.png`: tonemap to be used when `moon.png` was found
* `sun.png`: texture of the sun. Default texture is generated by Minetest
@@ -90,6 +115,9 @@ by texture packs. All existing fallback textures can be found in the directory
* `wieldhand.png`: texture of the wieldhand
+Note: The default textures of `player.png`, `player_back.png` and `wieldhand.png`
+are placeholders intended to be overwritten by the game.
+
### Mainmenu textures
* `menu_bg.png`: used as mainmenu background when the clouds are disabled
@@ -128,31 +156,105 @@ by texture packs. All existing fallback textures can be found in the directory
Texture Overrides
-----------------
-You can override the textures of a node from a texture pack using
-texture overrides. To do this, create a file in a texture pack
-called override.txt
+You can override the textures of nodes and items from a
+texture pack using texture overrides. To do this, create one or
+more files in a texture pack called override.txt
Each line in an override.txt file is a rule. It consists of
- nodename face-selector texture
+ itemname target texture
For example,
default:dirt_with_grass sides default_stone.png
-You can use ^ operators as usual:
+or
+
+ default:sword_steel inventory my_steel_sword.png
+
+You can list multiple targets on one line as a comma-separated list:
+
+ default:tree top,bottom my_special_tree.png
+
+You can use texture modifiers, as usual:
default:dirt_with_grass sides default_stone.png^[brighten
-Here are face selectors you can choose from:
+Finally, if a line is empty or starts with '#' it will be considered
+a comment and not read as a rule. You can use this to better organize
+your override.txt files.
+
+Here are targets you can choose from:
-| face-selector | behavior |
+| target | behavior |
|---------------|---------------------------------------------------|
-| left | x- |
-| right | x+ |
-| front | z- |
-| back | z+ |
-| top | y+ |
-| bottom | y- |
-| sides | x-, x+, z-, z+ |
+| left | x- face |
+| right | x+ face |
+| front | z- face |
+| back | z+ face |
+| top | y+ face |
+| bottom | y- face |
+| sides | x-, x+, z-, z+ faces |
| all | All faces. You can also use '*' instead of 'all'. |
+| special1 | The first entry in the special_tiles list |
+| special2 | The second entry in the special_tiles list |
+| special3 | The third entry in the special_tiles list |
+| special4 | The fourth entry in the special_tiles list |
+| special5 | The fifth entry in the special_tiles list |
+| special6 | The sixth entry in the special_tiles list |
+| inventory | The inventory texture |
+| wield | The texture used when held by the player |
+
+Nodes support all targets, but other items only support 'inventory'
+and 'wield'.
+
+### Using the special targets
+
+The special* targets only apply to specific drawtypes:
+
+* `flowingliquid`: special1 sets the top texture, special2 sets the side texture
+* `allfaces_optional`: special1 is used by simple mode, see below
+* `glasslike_framed`: When containing a liquid, special1 sets the liquid texture
+* `glasslike_framed_optional`: Same as `glasslike_framed`
+* `plantlike_rooted`: special1 sets the plant's texture
+
+Designing leaves textures for the leaves rendering options
+----------------------------------------------------------
+
+Minetest has three modes for rendering leaves nodes if the node has the
+`allfaces_optional` drawtype.
+
+### Fancy
+
+Uses the texture specified in the `tiles` nodedef field.
+The texture should have some transparent pixels and be in the RGBA format so
+that the transparent pixels can have color information.
+Faces of every leaves node are rendered even if they are inside a solid volume
+of leaves; this gives a dense appearance.
+
+### Opaque
+
+Uses the texture specified in `tiles` but makes it opaque by converting each
+transparent pixel into an opaque pixel that uses the color information of that
+transparent pixel.
+Due to this the `tiles` texture format must be RGBA not 'indexed alpha' to allow
+each transparent pixel to have color information.
+
+The colors of the transparent pixels should be set for a good appearance in
+`opaque` mode. This can be done by painting the pixels the desired colors then
+erasing them. Then when saving the texture, use the 'save color information from
+transparent pixels' option (or equivalent).
+
+### Simple
+
+Uses the texture specified in the `special_tiles` nodedef field if it exists, if
+not, the `tiles` texture.
+The `special_tiles` texture should have fewer transparent pixels than the
+`tiles` texture and be in the 'indexed alpha' format.
+
+This mode is between the other two in terms of appearance and rendering load.
+The nodes are rendered using the `glasslike` drawtype, only showing the surface
+faces for any solid volume of leaves, not the internal faces.
+Due to this the `tiles` texture might appear lacking in density, so optionally a
+`special_tiles` texture can be used to provide a texture with fewer transparent
+pixels for a denser appearance.
diff --git a/doc/world_format.txt b/doc/world_format.txt
index a4fb3d8f2..17923df8e 100644
--- a/doc/world_format.txt
+++ b/doc/world_format.txt
@@ -1,23 +1,19 @@
=============================
-Minetest World Format 22...25
+Minetest World Format 22...29
=============================
This applies to a world format carrying the block serialization version
-22...25, used at least in
+22...27, used at least in
- 0.4.dev-20120322 ... 0.4.dev-20120606 (22...23)
- 0.4.0 (23)
- 24 was never released as stable and existed for ~2 days
+- 27 was added in 0.4.15-dev
+- 29 was added in 5.5.0-dev
The block serialization version does not fully specify every aspect of this
format; if compliance with this format is to be checked, it needs to be
done by detecting if the files and data indeed follows it.
-Legacy stuff
-=============
-Data can, in theory, be contained in the flat file directory structure
-described below in Version 17, but it is not officially supported. Also you
-may stumble upon all kinds of oddities in not-so-recent formats.
-
Files
======
Everything is contained in a directory, the name of which is freeform, but
@@ -28,6 +24,7 @@ It can be copied over from an old world to a newly created world.
World
|-- auth.txt ----- Authentication data
+|-- auth.sqlite -- Authentication data (SQLite alternative)
|-- env_meta.txt - Environment metadata
|-- ipban.txt ---- Banned ips/users
|-- map_meta.txt - Map metadata
@@ -61,6 +58,34 @@ Example lines:
- Player "bar", no password, no privileges:
bar::
+auth.sqlite
+------------
+Contains authentification data as an SQLite database. This replaces auth.txt
+above when auth_backend is set to "sqlite3" in world.mt .
+
+This database contains two tables "auth" and "user_privileges":
+
+CREATE TABLE `auth` (
+ `id` INTEGER PRIMARY KEY AUTOINCREMENT,
+ `name` VARCHAR(32) UNIQUE,
+ `password` VARCHAR(512),
+ `last_login` INTEGER
+);
+CREATE TABLE `user_privileges` (
+ `id` INTEGER,
+ `privilege` VARCHAR(32),
+ PRIMARY KEY (id, privilege)
+ CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES auth (id) ON DELETE CASCADE
+);
+
+The "name" and "password" fields of the auth table are the same as the auth.txt
+fields (with modern password hash). The "last_login" field is the last login
+time as a unix time stamp.
+
+The "user_privileges" table contains one entry per privilege and player.
+A player with "interact" and "shout" privileges will have two entries, one
+with privilege="interact" and the second with privilege="shout".
+
env_meta.txt
-------------
Simple global environment variables.
@@ -97,8 +122,41 @@ See Player File Format below.
world.mt
---------
World metadata.
-Example content (added indentation):
- gameid = mesetint
+Example content (added indentation and - explanations):
+ gameid = mesetint - name of the game
+ enable_damage = true - whether damage is enabled or not
+ creative_mode = false - whether creative mode is enabled or not
+ backend = sqlite3 - which DB backend to use for blocks (sqlite3, dummy, leveldb, redis, postgresql)
+ player_backend = sqlite3 - which DB backend to use for player data
+ readonly_backend = sqlite3 - optionally readonly seed DB (DB file _must_ be located in "readonly" subfolder)
+ auth_backend = files - which DB backend to use for authentication data
+ server_announce = false - whether the server is publicly announced or not
+ load_mod_<mod> = false - whether <mod> is to be loaded in this world
+
+For load_mod_<mod>, the possible values are:
+
+* `false` - Do not load the mod.
+* `true` - Load the mod from wherever it is found (may cause conflicts if the same mod appears also in some other place).
+* `mods/modpack/moddir` - Relative path to the mod
+ * Must be one of the following:
+ * `mods/`: mods in the user path's mods folder (ex `/home/user/.minetest/mods`)
+ * `share/`: mods in the share's mods folder (ex: `/usr/share/minetest/mods`)
+ * `/path/to/env`: you can use absolute paths to mods inside folders specified with the `MINETEST_MOD_PATH` env variable.
+ * Other locations and absolute paths are not supported
+ * Note that `moddir` is the directory name, not the mod name specified in mod.conf.
+
+PostgreSQL backend specific settings:
+ pgsql_connection = host=127.0.0.1 port=5432 user=mt_user password=mt_password dbname=minetest
+ pgsql_player_connection = (same parameters as above)
+ pgsql_readonly_connection = (same parameters as above)
+ pgsql_auth_connection = (same parameters as above)
+
+Redis backend specific settings:
+ redis_address = 127.0.0.1 - Redis server address
+ redis_hash = foo - Database hash
+ redis_port = 6379 - (optional) connection port
+ redis_password = hunter2 - (optional) server password
+
Player File Format
===================
@@ -249,6 +307,8 @@ MapBlock serialization format
NOTE: Byte order is MSB first (big-endian).
NOTE: Zlib data is in such a format that Python's zlib at least can
directly decompress.
+NOTE: Since version 29 zstd is used instead of zlib. In addition the entire
+ block is first serialized and then compressed (except the version byte).
u8 version
- map format version number, see serialisation.h for the latest number
@@ -262,15 +322,53 @@ u8 flags
- 0x02: day_night_differs: Whether the lighting of the block is different
on day and night. Only blocks that have this bit set are updated when
day transforms to night.
- - 0x04: lighting_expired: If true, lighting is invalid and should be
- updated. If you can't calculate lighting in your generator properly,
- you could try setting this 1 to everything and setting the uppermost
- block in every sector as is_underground=0. I am quite sure it doesn't
- work properly, though.
+ - 0x04: lighting_expired: Not used in version 27 and above. If true,
+ lighting is invalid and should be updated. If you can't calculate
+ lighting in your generator properly, you could try setting this 1 to
+ everything and setting the uppermost block in every sector as
+ is_underground=0. I am quite sure it doesn't work properly, though.
- 0x08: generated: True if the block has been generated. If false, block
is mostly filled with CONTENT_IGNORE and is likely to contain eg. parts
of trees of neighboring blocks.
+u16 lighting_complete
+- Added in version 27.
+- This contains 12 flags, each of them corresponds to a direction.
+- Indicates if the light is correct at the sides of a map block.
+ Lighting may not be correct if the light changed, but a neighbor
+ block was not loaded at that time.
+ If these flags are false, Minetest will automatically recompute light
+ when both this block and its required neighbor are loaded.
+- The bit order is:
+ nothing, nothing, nothing, nothing,
+ night X-, night Y-, night Z-, night Z+, night Y+, night X+,
+ day X-, day Y-, day Z-, day Z+, day Y+, day X+.
+ Where 'day' is for the day light bank, 'night' is for the night
+ light bank.
+ The 'nothing' bits should be always set, as they will be used
+ to indicate if direct sunlight spreading is finished.
+- Example: if the block at (0, 0, 0) has
+ lighting_complete = 0b1111111111111110,
+ then Minetest will correct lighting in the day light bank when
+ the block at (1, 0, 0) is also loaded.
+
+if map format version >= 29:
+ u32 timestamp
+ - Timestamp when last saved, as seconds from starting the game.
+ - 0xffffffff = invalid/unknown timestamp, nothing should be done with the time
+ difference when loaded
+
+ u8 name_id_mapping_version
+ - Should be zero for map format version 29.
+
+ u16 num_name_id_mappings
+ foreach num_name_id_mappings
+ u16 id
+ u16 name_len
+ u8[name_len] name
+if map format version < 29:
+ -- Nothing right here, timpstamp and node id mappings are serialized later
+
u8 content_width
- Number of bytes in the content (param0) fields of nodes
if map format version <= 23:
@@ -282,7 +380,7 @@ u8 params_width
- Number of bytes used for parameters per node
- Always 2
-zlib-compressed node data:
+node data (zlib-compressed if version < 29):
if content_width == 1:
- content:
u8[4096]: param0 fields
@@ -295,28 +393,31 @@ if content_width == 2:
u8[4096]: param2 fields
- The location of a node in each of those arrays is (z*16*16 + y*16 + x).
-zlib-compressed node metadata list
+node metadata list (zlib-compressed if version < 29):
- content:
-if map format version <= 22:
- u16 version (=1)
- u16 count of metadata
- foreach count:
- u16 position (p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
- u16 type_id
- u16 content_size
- u8[content_size] content of metadata. Format depends on type_id, see below.
-if map format version >= 23:
- u8 version (=1) -- Note the type is u8, while for map format version <= 22 it's u16
- u16 count of metadata
- foreach count:
- u16 position (p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
- u32 num_vars
- foreach num_vars:
- u16 key_len
- u8[key_len] key
- u32 val_len
- u8[val_len] value
- serialized inventory
+ if map format version <= 22:
+ u16 version (=1)
+ u16 count of metadata
+ foreach count:
+ u16 position (p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
+ u16 type_id
+ u16 content_size
+ u8[content_size] content of metadata. Format depends on type_id, see below.
+ if map format version >= 23:
+ u8 version -- Note: type was u16 for map format version <= 22
+ -- = 1 for map format version < 28
+ -- = 2 since map format version 28
+ u16 count of metadata
+ foreach count:
+ u16 position (p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
+ u32 num_vars
+ foreach num_vars:
+ u16 key_len
+ u8[key_len] key
+ u32 val_len
+ u8[val_len] value
+ u8 is_private -- only for version >= 2. 0 = not private, 1 = private
+ serialized inventory
- Node timers
if map format version == 23:
@@ -347,23 +448,21 @@ foreach static_object_count:
u16 data_size
u8[data_size] data
-u32 timestamp
-- Timestamp when last saved, as seconds from starting the game.
-- 0xffffffff = invalid/unknown timestamp, nothing should be done with the time
- difference when loaded
-
-u8 name-id-mapping version
-- Always 0
+if map format version < 29:
+ u32 timestamp
+ - Same meaning as the timestamp further up
-u16 num_name_id_mappings
+ u8 name-id-mapping version
+ - Always 0
-foreach num_name_id_mappings
- u16 id
- u16 name_len
- u8[name_len] name
+ u16 num_name_id_mappings
+ foreach num_name_id_mappings
+ u16 id
+ u16 name_len
+ u8[name_len] name
- Node timers
-if map format version == 25:
+if map format version >= 25:
u8 length of the data of a single timer (always 2+4+4=10)
u16 num_of_timers
foreach num_of_timers:
@@ -437,31 +536,23 @@ Static objects are persistent freely moving objects in the world.
Object types:
1: Test object
-2: Item
-3: Rat (deprecated)
-4: Oerkki (deprecated)
-5: Firefly (deprecated)
-6: MobV2 (deprecated)
7: LuaEntity
-1: Item:
- u8 version
- version 0:
- u16 len
- u8[len] itemstring
-
7: LuaEntity:
- u8 version
- version 1:
- u16 len
- u8[len] entity name
- u32 len
- u8[len] static data
- s16 hp
- s32 velocity.x * 10000
- s32 velocity.y * 10000
- s32 velocity.z * 10000
- s32 yaw * 1000
+ u8 compatibility_byte (always 1)
+ u16 len
+ u8[len] entity name
+ u32 len
+ u8[len] static data
+ s16 hp
+ s32 velocity.x * 10000
+ s32 velocity.y * 10000
+ s32 velocity.z * 10000
+ s32 yaw * 1000
+ if PROTOCOL_VERSION >= 37:
+ u8 version2 (=1)
+ s32 pitch * 1000
+ s32 roll * 1000
Itemstring format
------------------
@@ -503,107 +594,3 @@ Empty
EndInventoryList
EndInventory
---
-
-==============================================
-Minetest World Format used as of 2011-05 or so
-==============================================
-
-Map data serialization format version 17.
-
-0.3.1 does not use this format, but a more recent one. This exists here for
-historical reasons.
-
-Directory structure:
-sectors/XXXXZZZZ or sectors2/XXX/ZZZ
-XXXX, ZZZZ, XXX and ZZZ being the hexadecimal X and Z coordinates.
-Under these, the block files are stored, called YYYY.
-
-There also exists files map_meta.txt and chunk_meta, that are used by the
-generator. If they are not found or invalid, the generator will currently
-behave quite strangely.
-
-The MapBlock file format (sectors2/XXX/ZZZ/YYYY):
--------------------------------------------------
-
-NOTE: Byte order is MSB first.
-
-u8 version
-- map format version number, this one is version 17
-
-u8 flags
-- Flag bitmasks:
- - 0x01: is_underground: Should be set to 0 if there will be no light
- obstructions above the block. If/when sunlight of a block is updated and
- there is no block above it, this value is checked for determining whether
- sunlight comes from the top.
- - 0x02: day_night_differs: Whether the lighting of the block is different on
- day and night. Only blocks that have this bit set are updated when day
- transforms to night.
- - 0x04: lighting_expired: If true, lighting is invalid and should be updated.
- If you can't calculate lighting in your generator properly, you could try
- setting this 1 to everything and setting the uppermost block in every
- sector as is_underground=0. I am quite sure it doesn't work properly,
- though.
-
-zlib-compressed map data:
-- content:
- u8[4096]: content types
- u8[4096]: param1 values
- u8[4096]: param2 values
-
-zlib-compressed node metadata
-- content:
- u16 version (=1)
- u16 count of metadata
- foreach count:
- u16 position (= p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
- u16 type_id
- u16 content_size
- u8[content_size] misc. stuff contained in the metadata
-
-u16 mapblockobject_count
-- always write as 0.
-- if read != 0, just fail.
-
-foreach mapblockobject_count:
- - deprecated, should not be used. Length of this data can only be known by
- properly parsing it. Just hope not to run into any of this.
-
-u8 static object version:
-- currently 0
-
-u16 static_object_count
-
-foreach static_object_count:
- u8 type (object type-id)
- s32 pos_x * 1000
- s32 pos_y * 1000
- s32 pos_z * 1000
- u16 data_size
- u8[data_size] data
-
-u32 timestamp
-- Timestamp when last saved, as seconds from starting the game.
-- 0xffffffff = invalid/unknown timestamp, nothing will be done with the time
- difference when loaded (recommended)
-
-Node metadata format:
----------------------
-
-Sign metadata:
- u16 string_len
- u8[string_len] string
-
-Furnace metadata:
- TBD
-
-Chest metadata:
- TBD
-
-Locking Chest metadata:
- u16 string_len
- u8[string_len] string
- TBD
-
-// END
-
diff --git a/fonts/Arimo-Bold.ttf b/fonts/Arimo-Bold.ttf
new file mode 100644
index 000000000..0b05b445e
--- /dev/null
+++ b/fonts/Arimo-Bold.ttf
Binary files differ
diff --git a/fonts/Arimo-BoldItalic.ttf b/fonts/Arimo-BoldItalic.ttf
new file mode 100644
index 000000000..3ca5311e0
--- /dev/null
+++ b/fonts/Arimo-BoldItalic.ttf
Binary files differ
diff --git a/fonts/Arimo-Italic.ttf b/fonts/Arimo-Italic.ttf
new file mode 100644
index 000000000..fe31082e0
--- /dev/null
+++ b/fonts/Arimo-Italic.ttf
Binary files differ
diff --git a/fonts/Arimo-LICENSE.txt b/fonts/Arimo-LICENSE.txt
new file mode 100644
index 000000000..d68578f6a
--- /dev/null
+++ b/fonts/Arimo-LICENSE.txt
@@ -0,0 +1,2 @@
+Arimo - Apache License, version 2.0
+Arimo-Regular.ttf: Digitized data copyright (c) 2010-2012 Google Corporation.
diff --git a/fonts/Arimo-Regular.ttf b/fonts/Arimo-Regular.ttf
new file mode 100644
index 000000000..9be443c7d
--- /dev/null
+++ b/fonts/Arimo-Regular.ttf
Binary files differ
diff --git a/fonts/Cousine-Bold.ttf b/fonts/Cousine-Bold.ttf
new file mode 100644
index 000000000..997817a2c
--- /dev/null
+++ b/fonts/Cousine-Bold.ttf
Binary files differ
diff --git a/fonts/Cousine-BoldItalic.ttf b/fonts/Cousine-BoldItalic.ttf
new file mode 100644
index 000000000..3d918787c
--- /dev/null
+++ b/fonts/Cousine-BoldItalic.ttf
Binary files differ
diff --git a/fonts/Cousine-Italic.ttf b/fonts/Cousine-Italic.ttf
new file mode 100644
index 000000000..2ec2c3404
--- /dev/null
+++ b/fonts/Cousine-Italic.ttf
Binary files differ
diff --git a/fonts/Cousine-LICENSE.txt b/fonts/Cousine-LICENSE.txt
new file mode 100644
index 000000000..c84465f01
--- /dev/null
+++ b/fonts/Cousine-LICENSE.txt
@@ -0,0 +1,2 @@
+Cousine - Apache License, version 2.0
+Cousine-Regular.ttf: Digitized data copyright (c) 2010-2012 Google Corporation.
diff --git a/fonts/Cousine-Regular.ttf b/fonts/Cousine-Regular.ttf
new file mode 100644
index 000000000..4d6990a25
--- /dev/null
+++ b/fonts/Cousine-Regular.ttf
Binary files differ
diff --git a/fonts/DroidSansFallbackFull-LICENSE.txt b/fonts/DroidSansFallbackFull-LICENSE.txt
new file mode 100644
index 000000000..a7bf409b7
--- /dev/null
+++ b/fonts/DroidSansFallbackFull-LICENSE.txt
@@ -0,0 +1,13 @@
+Copyright (C) 2012 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/fonts/DroidSansFallbackFull.ttf b/fonts/DroidSansFallbackFull.ttf
index a9df00585..0cacabedc 100644
--- a/fonts/DroidSansFallbackFull.ttf
+++ b/fonts/DroidSansFallbackFull.ttf
Binary files differ
diff --git a/fonts/liberationmono.ttf b/fonts/liberationmono.ttf
deleted file mode 100644
index 7260bd65e..000000000
--- a/fonts/liberationmono.ttf
+++ /dev/null
Binary files differ
diff --git a/fonts/liberationsans.ttf b/fonts/liberationsans.ttf
deleted file mode 100644
index 59d2e251b..000000000
--- a/fonts/liberationsans.ttf
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_10.xml b/fonts/lucida_sans_10.xml
deleted file mode 100755
index d54e9f6a6..000000000
--- a/fonts/lucida_sans_10.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_100.png b/fonts/lucida_sans_100.png
deleted file mode 100755
index 9f3dc25c8..000000000
--- a/fonts/lucida_sans_100.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_11.xml b/fonts/lucida_sans_11.xml
deleted file mode 100755
index 33d06c376..000000000
--- a/fonts/lucida_sans_11.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_110.png b/fonts/lucida_sans_110.png
deleted file mode 100755
index 1c98efcca..000000000
--- a/fonts/lucida_sans_110.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_12.xml b/fonts/lucida_sans_12.xml
deleted file mode 100755
index 382981dcf..000000000
--- a/fonts/lucida_sans_12.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_120.png b/fonts/lucida_sans_120.png
deleted file mode 100755
index c106feb27..000000000
--- a/fonts/lucida_sans_120.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_14.xml b/fonts/lucida_sans_14.xml
deleted file mode 100755
index 99398d792..000000000
--- a/fonts/lucida_sans_14.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_140.png b/fonts/lucida_sans_140.png
deleted file mode 100755
index d314dc5b3..000000000
--- a/fonts/lucida_sans_140.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_16.xml b/fonts/lucida_sans_16.xml
deleted file mode 100755
index b07c1119f..000000000
--- a/fonts/lucida_sans_16.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_160.png b/fonts/lucida_sans_160.png
deleted file mode 100755
index 233ee9d42..000000000
--- a/fonts/lucida_sans_160.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_18.xml b/fonts/lucida_sans_18.xml
deleted file mode 100755
index 881aff18d..000000000
--- a/fonts/lucida_sans_18.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_180.png b/fonts/lucida_sans_180.png
deleted file mode 100755
index 68cbe3bc8..000000000
--- a/fonts/lucida_sans_180.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_20.xml b/fonts/lucida_sans_20.xml
deleted file mode 100755
index 329c226c0..000000000
--- a/fonts/lucida_sans_20.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_200.png b/fonts/lucida_sans_200.png
deleted file mode 100755
index 7b57632b8..000000000
--- a/fonts/lucida_sans_200.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_22.xml b/fonts/lucida_sans_22.xml
deleted file mode 100755
index 14d0cc2b9..000000000
--- a/fonts/lucida_sans_22.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_220.png b/fonts/lucida_sans_220.png
deleted file mode 100755
index 4f385f4d4..000000000
--- a/fonts/lucida_sans_220.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_24.xml b/fonts/lucida_sans_24.xml
deleted file mode 100755
index 5956f46e6..000000000
--- a/fonts/lucida_sans_24.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_240.png b/fonts/lucida_sans_240.png
deleted file mode 100755
index 8fc4e9d6b..000000000
--- a/fonts/lucida_sans_240.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_26.xml b/fonts/lucida_sans_26.xml
deleted file mode 100755
index ae10ff8d7..000000000
--- a/fonts/lucida_sans_26.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_260.png b/fonts/lucida_sans_260.png
deleted file mode 100755
index 9bae8de5b..000000000
--- a/fonts/lucida_sans_260.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_28.xml b/fonts/lucida_sans_28.xml
deleted file mode 100755
index c1b3361d3..000000000
--- a/fonts/lucida_sans_28.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_280.png b/fonts/lucida_sans_280.png
deleted file mode 100755
index 527fa3734..000000000
--- a/fonts/lucida_sans_280.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_36.xml b/fonts/lucida_sans_36.xml
deleted file mode 100755
index ca300d6de..000000000
--- a/fonts/lucida_sans_36.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_360.png b/fonts/lucida_sans_360.png
deleted file mode 100755
index eecf35e33..000000000
--- a/fonts/lucida_sans_360.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_4.xml b/fonts/lucida_sans_4.xml
deleted file mode 100755
index edc5af951..000000000
--- a/fonts/lucida_sans_4.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_40.png b/fonts/lucida_sans_40.png
deleted file mode 100755
index 5c10c1ed3..000000000
--- a/fonts/lucida_sans_40.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_48.xml b/fonts/lucida_sans_48.xml
deleted file mode 100755
index c8c75974d..000000000
--- a/fonts/lucida_sans_48.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_480.png b/fonts/lucida_sans_480.png
deleted file mode 100755
index 928a0d723..000000000
--- a/fonts/lucida_sans_480.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_56.xml b/fonts/lucida_sans_56.xml
deleted file mode 100755
index 9f2cc831e..000000000
--- a/fonts/lucida_sans_56.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_560.png b/fonts/lucida_sans_560.png
deleted file mode 100755
index 7afb09912..000000000
--- a/fonts/lucida_sans_560.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_6.xml b/fonts/lucida_sans_6.xml
deleted file mode 100755
index 069c9aa80..000000000
--- a/fonts/lucida_sans_6.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_60.png b/fonts/lucida_sans_60.png
deleted file mode 100755
index 0efcd9e32..000000000
--- a/fonts/lucida_sans_60.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_8.xml b/fonts/lucida_sans_8.xml
deleted file mode 100755
index 44f0e6a74..000000000
--- a/fonts/lucida_sans_8.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_80.png b/fonts/lucida_sans_80.png
deleted file mode 100755
index 287c65663..000000000
--- a/fonts/lucida_sans_80.png
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_9.xml b/fonts/lucida_sans_9.xml
deleted file mode 100755
index 99aa6447c..000000000
--- a/fonts/lucida_sans_9.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/lucida_sans_90.png b/fonts/lucida_sans_90.png
deleted file mode 100755
index 822a465f2..000000000
--- a/fonts/lucida_sans_90.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_10.xml b/fonts/mono_dejavu_sans_10.xml
deleted file mode 100755
index 0276cedb6..000000000
--- a/fonts/mono_dejavu_sans_10.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_100.png b/fonts/mono_dejavu_sans_100.png
deleted file mode 100755
index 45a312542..000000000
--- a/fonts/mono_dejavu_sans_100.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_11.xml b/fonts/mono_dejavu_sans_11.xml
deleted file mode 100755
index f727ed2bb..000000000
--- a/fonts/mono_dejavu_sans_11.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_110.png b/fonts/mono_dejavu_sans_110.png
deleted file mode 100755
index c90c0e242..000000000
--- a/fonts/mono_dejavu_sans_110.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_12.xml b/fonts/mono_dejavu_sans_12.xml
deleted file mode 100755
index 38f6427be..000000000
--- a/fonts/mono_dejavu_sans_12.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_120.png b/fonts/mono_dejavu_sans_120.png
deleted file mode 100755
index 0cebd70e8..000000000
--- a/fonts/mono_dejavu_sans_120.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_14.xml b/fonts/mono_dejavu_sans_14.xml
deleted file mode 100755
index b90a34960..000000000
--- a/fonts/mono_dejavu_sans_14.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_140.png b/fonts/mono_dejavu_sans_140.png
deleted file mode 100755
index a413759ea..000000000
--- a/fonts/mono_dejavu_sans_140.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_16.xml b/fonts/mono_dejavu_sans_16.xml
deleted file mode 100755
index 3f7d2c2a2..000000000
--- a/fonts/mono_dejavu_sans_16.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_160.png b/fonts/mono_dejavu_sans_160.png
deleted file mode 100755
index bd8a2f40a..000000000
--- a/fonts/mono_dejavu_sans_160.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_18.xml b/fonts/mono_dejavu_sans_18.xml
deleted file mode 100755
index 92865cbfc..000000000
--- a/fonts/mono_dejavu_sans_18.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_180.png b/fonts/mono_dejavu_sans_180.png
deleted file mode 100755
index a299afcbe..000000000
--- a/fonts/mono_dejavu_sans_180.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_20.xml b/fonts/mono_dejavu_sans_20.xml
deleted file mode 100755
index acd8c77d0..000000000
--- a/fonts/mono_dejavu_sans_20.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_200.png b/fonts/mono_dejavu_sans_200.png
deleted file mode 100755
index 68ee62681..000000000
--- a/fonts/mono_dejavu_sans_200.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_22.xml b/fonts/mono_dejavu_sans_22.xml
deleted file mode 100755
index eafb4def6..000000000
--- a/fonts/mono_dejavu_sans_22.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_220.png b/fonts/mono_dejavu_sans_220.png
deleted file mode 100755
index 042d7e094..000000000
--- a/fonts/mono_dejavu_sans_220.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_24.xml b/fonts/mono_dejavu_sans_24.xml
deleted file mode 100755
index fc8b6232e..000000000
--- a/fonts/mono_dejavu_sans_24.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_240.png b/fonts/mono_dejavu_sans_240.png
deleted file mode 100755
index d2d68c5bb..000000000
--- a/fonts/mono_dejavu_sans_240.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_26.xml b/fonts/mono_dejavu_sans_26.xml
deleted file mode 100755
index 829f09948..000000000
--- a/fonts/mono_dejavu_sans_26.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_260.png b/fonts/mono_dejavu_sans_260.png
deleted file mode 100755
index 3a8cb6c57..000000000
--- a/fonts/mono_dejavu_sans_260.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_28.xml b/fonts/mono_dejavu_sans_28.xml
deleted file mode 100755
index b5b25bd07..000000000
--- a/fonts/mono_dejavu_sans_28.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_280.png b/fonts/mono_dejavu_sans_280.png
deleted file mode 100755
index ccf62ba48..000000000
--- a/fonts/mono_dejavu_sans_280.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_4.xml b/fonts/mono_dejavu_sans_4.xml
deleted file mode 100755
index cfebb39b3..000000000
--- a/fonts/mono_dejavu_sans_4.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_40.png b/fonts/mono_dejavu_sans_40.png
deleted file mode 100755
index 24ed693f7..000000000
--- a/fonts/mono_dejavu_sans_40.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_6.xml b/fonts/mono_dejavu_sans_6.xml
deleted file mode 100755
index d0e1de21d..000000000
--- a/fonts/mono_dejavu_sans_6.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_60.png b/fonts/mono_dejavu_sans_60.png
deleted file mode 100755
index 326af996f..000000000
--- a/fonts/mono_dejavu_sans_60.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_8.xml b/fonts/mono_dejavu_sans_8.xml
deleted file mode 100755
index c48bf7ccc..000000000
--- a/fonts/mono_dejavu_sans_8.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_80.png b/fonts/mono_dejavu_sans_80.png
deleted file mode 100755
index 04326dbb2..000000000
--- a/fonts/mono_dejavu_sans_80.png
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_9.xml b/fonts/mono_dejavu_sans_9.xml
deleted file mode 100755
index 74e841034..000000000
--- a/fonts/mono_dejavu_sans_9.xml
+++ /dev/null
Binary files differ
diff --git a/fonts/mono_dejavu_sans_90.png b/fonts/mono_dejavu_sans_90.png
deleted file mode 100755
index 65ac51858..000000000
--- a/fonts/mono_dejavu_sans_90.png
+++ /dev/null
Binary files differ
diff --git a/games/devtest/.luacheckrc b/games/devtest/.luacheckrc
new file mode 100644
index 000000000..1c7d3994f
--- /dev/null
+++ b/games/devtest/.luacheckrc
@@ -0,0 +1,43 @@
+unused_args = false
+allow_defined_top = true
+max_string_line_length = false
+max_line_length = false
+
+ignore = {
+ "131", -- Unused global variable
+ "211", -- Unused local variable
+ "231", -- Local variable never accessed
+ "311", -- Value assigned to a local variable is unused
+ "412", -- Redefining an argument
+ "421", -- Shadowing a local variable
+ "431", -- Shadowing an upvalue
+ "432", -- Shadowing an upvalue argument
+ "611", -- Line contains only whitespace
+}
+
+read_globals = {
+ "ItemStack",
+ "INIT",
+ "DIR_DELIM",
+ "dump", "dump2",
+ "fgettext", "fgettext_ne",
+ "vector",
+ "VoxelArea",
+ "profiler",
+ "Settings",
+ "check",
+ "PseudoRandom",
+
+ string = {fields = {"split", "trim"}},
+ table = {fields = {"copy", "getn", "indexof", "insert_all"}},
+ math = {fields = {"hypot", "round"}},
+}
+
+globals = {
+ "aborted",
+ "minetest",
+ "core",
+ os = { fields = { "tempfolder" } },
+ "_",
+}
+
diff --git a/games/devtest/LICENSE.txt b/games/devtest/LICENSE.txt
new file mode 100644
index 000000000..71bd0e596
--- /dev/null
+++ b/games/devtest/LICENSE.txt
@@ -0,0 +1,4 @@
+License information for Development Test
+----------------------------------------
+
+The same license as for Minetest applies.
diff --git a/games/devtest/README.md b/games/devtest/README.md
new file mode 100644
index 000000000..77e722af7
--- /dev/null
+++ b/games/devtest/README.md
@@ -0,0 +1,51 @@
+# Development Test (devtest)
+
+This is a basic testing environment that contains a bunch of things to test the engine, but it could also be used as a minimal testbed for testing out mods.
+
+## Features
+
+* Basic nodes for mapgen
+* Basic, minimal map generator
+* Lots of example nodes for testing drawtypes, param2, light level, and many other node properties
+* Example entities
+* Other example items
+* Formspec test (via `/test_formspec` command)
+* Automated unit tests (disabled by default)
+* Tools for manipulating nodes and entities, like the "Param2 Tool"
+
+## Getting started
+
+Basically, just create a world and start. A few important things to note:
+
+* Items are gotten from the “Chest of Everything” (`chest_of_everything:chest`)
+* When you lost your initial items, type in `/stuff` command to get them back
+* By default, Creative Mode activates infinite node placement. This behavior can be changed with the `devtest_infplace` setting
+* Use the `/infplace` command to toggle infinite node placement in-game
+* Use the Param2 Tool to change the param2 of nodes; it's useful to experiment with the various drawtype test nodes
+* Check out the game settings and server commands for additional tests and features
+
+Confused by a certain node or item? Check out for inline code comments. The usages of most tools are explained in their tooltips.
+
+### Example tests
+
+* You can use this to test what happens if a player is simultaneously in 2 nodes with `damage_per_second` but with a different value.
+* Or use the Falling Node Tool on various test nodes to see how they behave when falling.
+* You could also use this as a testbed for dependency-free mods, e.g. to test out how your formspecs behave without theming.
+
+## Random notes
+
+* Experimental/strange/unstructured tests can be found in the `experimental` mod
+* Textures of drawtype test nodes have a red dot at the top left corner. This is to see whether the textures are oriented properly
+
+## Design philosophy
+
+This should loosely follow the following principles:
+
+* Engine testing: The main focus of this is to aid testing of *engine* features, such as mapgen or node drawtypes
+* Mod testing: The secondary focus is to help modders as well, either as a minimal testbed for mods or even as a code example
+* Minimal interference: Under default settings, it shall not interfere with APIs except on explicit user wish. Non-trivial tests and features need to be enabled by a setting first
+* Convenience: Have various tools to make usage easier and more convenient
+* Reproducing engine bugs: When an engine bug was found, consider creating a test case
+* Clarity: Textures and names need to be designed to keep different things clearly visually apart at a glance
+* Low loading time: It must load blazing-fast so stuff can be tested quickly
+
diff --git a/games/devtest/game.conf b/games/devtest/game.conf
new file mode 100644
index 000000000..0f5656c99
--- /dev/null
+++ b/games/devtest/game.conf
@@ -0,0 +1,2 @@
+title = Development Test
+description = Testing environment to help with testing the engine features of Minetest. It can also be helpful in mod development.
diff --git a/games/devtest/menu/background.png b/games/devtest/menu/background.png
new file mode 100644
index 000000000..89c45fcd5
--- /dev/null
+++ b/games/devtest/menu/background.png
Binary files differ
diff --git a/games/devtest/menu/header.png b/games/devtest/menu/header.png
new file mode 100644
index 000000000..c80ed71f1
--- /dev/null
+++ b/games/devtest/menu/header.png
Binary files differ
diff --git a/games/devtest/menu/icon.png b/games/devtest/menu/icon.png
new file mode 100644
index 000000000..f854b9c31
--- /dev/null
+++ b/games/devtest/menu/icon.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/init.lua b/games/devtest/mods/basenodes/init.lua
new file mode 100644
index 000000000..2c808c35e
--- /dev/null
+++ b/games/devtest/mods/basenodes/init.lua
@@ -0,0 +1,351 @@
+local WATER_ALPHA = "^[opacity:" .. 160
+local WATER_VISC = 1
+local LAVA_VISC = 7
+
+--
+-- Node definitions
+--
+
+-- Register nodes
+
+minetest.register_node("basenodes:stone", {
+ description = "Stone",
+ tiles = {"default_stone.png"},
+ groups = {cracky=3},
+})
+
+minetest.register_node("basenodes:desert_stone", {
+ description = "Desert Stone",
+ tiles = {"default_desert_stone.png"},
+ groups = {cracky=3},
+})
+
+minetest.register_node("basenodes:dirt_with_grass", {
+ description = "Dirt with Grass",
+ tiles ={"default_grass.png",
+ -- a little dot on the bottom to distinguish it from dirt
+ "default_dirt.png^basenodes_dirt_with_grass_bottom.png",
+ {name = "default_dirt.png^default_grass_side.png",
+ tileable_vertical = false}},
+ groups = {crumbly=3, soil=1},
+})
+
+minetest.register_node("basenodes:dirt_with_snow", {
+ description = "Dirt with Snow",
+ tiles ={"basenodes_dirt_with_snow.png",
+ -- a little dot on the bottom to distinguish it from dirt
+ "default_dirt.png^basenodes_dirt_with_snow_bottom.png",
+ {name = "default_dirt.png^default_snow_side.png",
+ tileable_vertical = false}},
+ groups = {crumbly=3, soil=1},
+})
+
+minetest.register_node("basenodes:dirt", {
+ description = "Dirt",
+ tiles ={"default_dirt.png"},
+ groups = {crumbly=3, soil=1},
+})
+
+minetest.register_node("basenodes:sand", {
+ description = "Sand",
+ tiles ={"default_sand.png"},
+ groups = {crumbly=3},
+})
+
+minetest.register_node("basenodes:desert_sand", {
+ description = "Desert Sand",
+ tiles ={"default_desert_sand.png"},
+ groups = {crumbly=3},
+})
+
+minetest.register_node("basenodes:gravel", {
+ description = "Gravel",
+ tiles ={"default_gravel.png"},
+ groups = {crumbly=2},
+})
+
+minetest.register_node("basenodes:junglegrass", {
+ description = "Jungle Grass",
+ drawtype = "plantlike",
+ tiles ={"default_junglegrass.png"},
+ inventory_image = "default_junglegrass.png",
+ wield_image = "default_junglegrass.png",
+ paramtype = "light",
+ walkable = false,
+ groups = {snappy=3},
+})
+
+minetest.register_node("basenodes:tree", {
+ description = "Normal Tree Trunk",
+ tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
+ is_ground_content = false,
+ groups = {choppy=2,oddly_breakable_by_hand=1},
+})
+
+minetest.register_node("basenodes:leaves", {
+ description = "Normal Leaves",
+ drawtype = "allfaces_optional",
+ tiles = {"default_leaves.png"},
+ paramtype = "light",
+ is_ground_content = false,
+ groups = {snappy=3},
+})
+
+minetest.register_node("basenodes:jungletree", {
+ description = "Jungle Tree Trunk",
+ tiles = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"},
+ is_ground_content = false,
+ groups = {choppy=2,oddly_breakable_by_hand=1},
+})
+
+minetest.register_node("basenodes:jungleleaves", {
+ description = "Jungle Leaves",
+ drawtype = "allfaces_optional",
+ tiles = {"default_jungleleaves.png"},
+ paramtype = "light",
+ is_ground_content = false,
+ groups = {snappy=3},
+})
+
+minetest.register_node("basenodes:pine_tree", {
+ description = "Pine Tree Trunk",
+ tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", "default_pine_tree.png"},
+ is_ground_content = false,
+ groups = {choppy=2,oddly_breakable_by_hand=1},
+})
+
+minetest.register_node("basenodes:pine_needles", {
+ description = "Pine Needles",
+ drawtype = "allfaces_optional",
+ tiles = {"default_pine_needles.png"},
+ paramtype = "light",
+ is_ground_content = false,
+ groups = {snappy=3},
+})
+
+minetest.register_node("basenodes:water_source", {
+ description = "Water Source".."\n"..
+ "Drowning damage: 1",
+ drawtype = "liquid",
+ waving = 3,
+ tiles = {"default_water.png"..WATER_ALPHA},
+ special_tiles = {
+ {name = "default_water.png"..WATER_ALPHA, backface_culling = false},
+ {name = "default_water.png"..WATER_ALPHA, backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ liquidtype = "source",
+ liquid_alternative_flowing = "basenodes:water_flowing",
+ liquid_alternative_source = "basenodes:water_source",
+ liquid_viscosity = WATER_VISC,
+ post_effect_color = {a = 64, r = 100, g = 100, b = 200},
+ groups = {water = 3, liquid = 3},
+})
+
+minetest.register_node("basenodes:water_flowing", {
+ description = "Flowing Water".."\n"..
+ "Drowning damage: 1",
+ drawtype = "flowingliquid",
+ waving = 3,
+ tiles = {"default_water_flowing.png"},
+ special_tiles = {
+ {name = "default_water_flowing.png"..WATER_ALPHA,
+ backface_culling = false},
+ {name = "default_water_flowing.png"..WATER_ALPHA,
+ backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "basenodes:water_flowing",
+ liquid_alternative_source = "basenodes:water_source",
+ liquid_viscosity = WATER_VISC,
+ post_effect_color = {a = 64, r = 100, g = 100, b = 200},
+ groups = {water = 3, liquid = 3},
+})
+
+minetest.register_node("basenodes:river_water_source", {
+ description = "River Water Source".."\n"..
+ "Drowning damage: 1",
+ drawtype = "liquid",
+ waving = 3,
+ tiles = { "default_river_water.png"..WATER_ALPHA },
+ special_tiles = {
+ {name = "default_river_water.png"..WATER_ALPHA, backface_culling = false},
+ {name = "default_river_water.png"..WATER_ALPHA, backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ liquidtype = "source",
+ liquid_alternative_flowing = "basenodes:river_water_flowing",
+ liquid_alternative_source = "basenodes:river_water_source",
+ liquid_viscosity = 1,
+ liquid_renewable = false,
+ liquid_range = 2,
+ post_effect_color = {a = 103, r = 30, g = 76, b = 90},
+ groups = {water = 3, liquid = 3, },
+})
+
+minetest.register_node("basenodes:river_water_flowing", {
+ description = "Flowing River Water".."\n"..
+ "Drowning damage: 1",
+ drawtype = "flowingliquid",
+ waving = 3,
+ tiles = {"default_river_water_flowing.png"..WATER_ALPHA},
+ special_tiles = {
+ {name = "default_river_water_flowing.png"..WATER_ALPHA,
+ backface_culling = false},
+ {name = "default_river_water_flowing.png"..WATER_ALPHA,
+ backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "basenodes:river_water_flowing",
+ liquid_alternative_source = "basenodes:river_water_source",
+ liquid_viscosity = 1,
+ liquid_renewable = false,
+ liquid_range = 2,
+ post_effect_color = {a = 103, r = 30, g = 76, b = 90},
+ groups = {water = 3, liquid = 3, },
+})
+
+minetest.register_node("basenodes:lava_flowing", {
+ description = "Flowing Lava".."\n"..
+ "4 damage per second".."\n"..
+ "Drowning damage: 1",
+ drawtype = "flowingliquid",
+ tiles = {"default_lava_flowing.png"},
+ special_tiles = {
+ {name="default_lava_flowing.png", backface_culling = false},
+ {name="default_lava_flowing.png", backface_culling = false},
+ },
+ paramtype = "light",
+ light_source = minetest.LIGHT_MAX,
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ damage_per_second = 4,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "basenodes:lava_flowing",
+ liquid_alternative_source = "basenodes:lava_source",
+ liquid_viscosity = LAVA_VISC,
+ post_effect_color = {a=192, r=255, g=64, b=0},
+ groups = {lava=3, liquid=1},
+})
+
+minetest.register_node("basenodes:lava_source", {
+ description = "Lava Source".."\n"..
+ "4 damage per second".."\n"..
+ "Drowning damage: 1",
+ drawtype = "liquid",
+ tiles = { "default_lava.png" },
+ special_tiles = {
+ {name = "default_lava.png", backface_culling = false},
+ {name = "default_lava.png", backface_culling = true},
+ },
+ paramtype = "light",
+ light_source = minetest.LIGHT_MAX,
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ drowning = 1,
+ damage_per_second = 4,
+ liquidtype = "source",
+ liquid_alternative_flowing = "basenodes:lava_flowing",
+ liquid_alternative_source = "basenodes:lava_source",
+ liquid_viscosity = LAVA_VISC,
+ post_effect_color = {a=192, r=255, g=64, b=0},
+ groups = {lava=3, liquid=1},
+})
+
+minetest.register_node("basenodes:cobble", {
+ description = "Cobblestone",
+ tiles ={"default_cobble.png"},
+ is_ground_content = false,
+ groups = {cracky=3},
+})
+
+minetest.register_node("basenodes:mossycobble", {
+ description = "Mossy Cobblestone",
+ tiles ={"default_mossycobble.png"},
+ is_ground_content = false,
+ groups = {cracky=3},
+})
+
+minetest.register_node("basenodes:apple", {
+ description = "Apple".."\n"..
+ "Food (+2)",
+ drawtype = "plantlike",
+ tiles ={"default_apple.png"},
+ inventory_image = "default_apple.png",
+ paramtype = "light",
+ is_ground_content = false,
+ sunlight_propagates = true,
+ walkable = false,
+ groups = {dig_immediate=3},
+
+ -- Make eatable because why not?
+ on_use = minetest.item_eat(2),
+})
+
+minetest.register_node("basenodes:ice", {
+ description = "Ice",
+ tiles ={"default_ice.png"},
+ groups = {cracky=3},
+})
+
+-- The snow nodes intentionally have different tints to make them more
+-- distinguishable
+minetest.register_node("basenodes:snow", {
+ description = "Snow Sheet",
+ tiles = {"basenodes_snow_sheet.png"},
+ groups = {crumbly=3},
+ walkable = false,
+ paramtype = "light",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ },
+})
+
+minetest.register_node("basenodes:snowblock", {
+ description = "Snow Block",
+ tiles ={"default_snow.png"},
+ groups = {crumbly=3},
+})
+
+
diff --git a/games/devtest/mods/basenodes/mod.conf b/games/devtest/mods/basenodes/mod.conf
new file mode 100644
index 000000000..25024dc63
--- /dev/null
+++ b/games/devtest/mods/basenodes/mod.conf
@@ -0,0 +1,2 @@
+name = basenodes
+description = Contains basic nodes for mapgen
diff --git a/games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png
new file mode 100644
index 000000000..5e8fc41a9
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.png
new file mode 100644
index 000000000..7ea2d8d31
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png
new file mode 100644
index 000000000..447c94e98
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/basenodes_snow_sheet.png b/games/devtest/mods/basenodes/textures/basenodes_snow_sheet.png
new file mode 100644
index 000000000..455332093
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/basenodes_snow_sheet.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_apple.png b/games/devtest/mods/basenodes/textures/default_apple.png
new file mode 100644
index 000000000..9c115dae4
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_apple.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_cobble.png b/games/devtest/mods/basenodes/textures/default_cobble.png
new file mode 100644
index 000000000..5b859e9c2
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_cobble.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_desert_sand.png b/games/devtest/mods/basenodes/textures/default_desert_sand.png
new file mode 100644
index 000000000..19ec87dc0
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_desert_sand.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_desert_stone.png b/games/devtest/mods/basenodes/textures/default_desert_stone.png
new file mode 100644
index 000000000..5126fb61c
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_desert_stone.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_dirt.png b/games/devtest/mods/basenodes/textures/default_dirt.png
new file mode 100644
index 000000000..aa75bffb6
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_dirt.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_grass.png b/games/devtest/mods/basenodes/textures/default_grass.png
new file mode 100644
index 000000000..3d6397186
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_grass.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_gravel.png b/games/devtest/mods/basenodes/textures/default_gravel.png
new file mode 100644
index 000000000..7e5ff616f
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_gravel.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_ice.png b/games/devtest/mods/basenodes/textures/default_ice.png
new file mode 100644
index 000000000..c4bddd223
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_ice.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_junglegrass.png b/games/devtest/mods/basenodes/textures/default_junglegrass.png
new file mode 100644
index 000000000..d64e33abc
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_junglegrass.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_jungleleaves.png b/games/devtest/mods/basenodes/textures/default_jungleleaves.png
new file mode 100644
index 000000000..1fa67e83a
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_jungleleaves.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_jungletree.png b/games/devtest/mods/basenodes/textures/default_jungletree.png
new file mode 100644
index 000000000..053850fa7
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_jungletree.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_jungletree_top.png b/games/devtest/mods/basenodes/textures/default_jungletree_top.png
new file mode 100644
index 000000000..e80de8a69
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_jungletree_top.png
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_lava.png b/games/devtest/mods/basenodes/textures/default_lava.png
index a4cf649f1..a4cf649f1 100644
--- a/games/minimal/mods/default/textures/default_lava.png
+++ b/games/devtest/mods/basenodes/textures/default_lava.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_lava_flowing.png b/games/devtest/mods/basenodes/textures/default_lava_flowing.png
new file mode 100644
index 000000000..07066a6e3
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_lava_flowing.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_leaves.png b/games/devtest/mods/basenodes/textures/default_leaves.png
new file mode 100644
index 000000000..c0475d4d2
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_leaves.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_mossycobble.png b/games/devtest/mods/basenodes/textures/default_mossycobble.png
new file mode 100644
index 000000000..69585e37b
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_mossycobble.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_pine_needles.png b/games/devtest/mods/basenodes/textures/default_pine_needles.png
new file mode 100644
index 000000000..137caa2a3
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_pine_needles.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_pine_tree.png b/games/devtest/mods/basenodes/textures/default_pine_tree.png
new file mode 100644
index 000000000..5743183c0
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_pine_tree.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_pine_tree_top.png b/games/devtest/mods/basenodes/textures/default_pine_tree_top.png
new file mode 100644
index 000000000..cc18f3462
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_pine_tree_top.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_river_water.png b/games/devtest/mods/basenodes/textures/default_river_water.png
new file mode 100644
index 000000000..e1074d2ef
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_river_water.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_river_water_flowing.png b/games/devtest/mods/basenodes/textures/default_river_water_flowing.png
new file mode 100644
index 000000000..4a756b2bd
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_river_water_flowing.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_sand.png b/games/devtest/mods/basenodes/textures/default_sand.png
new file mode 100644
index 000000000..0ed0e4ceb
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_sand.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_snow.png b/games/devtest/mods/basenodes/textures/default_snow.png
new file mode 100644
index 000000000..c42e0eecb
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_snow.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_snow_side.png b/games/devtest/mods/basenodes/textures/default_snow_side.png
new file mode 100644
index 000000000..f34d10991
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_snow_side.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_stone.png b/games/devtest/mods/basenodes/textures/default_stone.png
new file mode 100644
index 000000000..763b4396a
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_stone.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_tree.png b/games/devtest/mods/basenodes/textures/default_tree.png
new file mode 100644
index 000000000..189ec1593
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_tree.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_tree_top.png b/games/devtest/mods/basenodes/textures/default_tree_top.png
new file mode 100644
index 000000000..d1a4fa704
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_tree_top.png
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_water.png b/games/devtest/mods/basenodes/textures/default_water.png
index 3e385ae8b..3e385ae8b 100644
--- a/games/minimal/mods/default/textures/default_water.png
+++ b/games/devtest/mods/basenodes/textures/default_water.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/default_water_flowing.png b/games/devtest/mods/basenodes/textures/default_water_flowing.png
new file mode 100644
index 000000000..7cdafd51d
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/default_water_flowing.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass.png b/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass.png
new file mode 100644
index 000000000..29fde6b26
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass.png
Binary files differ
diff --git a/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass_side.png b/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass_side.png
new file mode 100644
index 000000000..04770b6f6
--- /dev/null
+++ b/games/devtest/mods/basenodes/textures/dirt_with_grass/default_grass_side.png
Binary files differ
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/basetools/init.lua b/games/devtest/mods/basetools/init.lua
new file mode 100644
index 000000000..3ec69d39f
--- /dev/null
+++ b/games/devtest/mods/basetools/init.lua
@@ -0,0 +1,449 @@
+--
+-- Tool definitions
+--
+
+--[[ TOOLS SUMMARY:
+
+Tool types:
+
+* Hand: basic tool/weapon (special capabilities in creative mode)
+* Pickaxe: dig cracky
+* Axe: dig choppy
+* Shovel: dig crumbly
+* Shears: dig snappy
+* Sword: deal damage
+* Dagger: deal damage, but faster
+
+Tool materials:
+
+* Wood: dig nodes of rating 3
+* Stone: dig nodes of rating 3 or 2
+* Steel: dig nodes of rating 3, 2 or 1
+* Mese: dig "everything" instantly
+* n-Uses: can be used n times before breaking
+]]
+
+-- The hand
+if minetest.settings:get_bool("creative_mode") then
+ local digtime = 42
+ local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256}
+
+ minetest.register_item(":", {
+ type = "none",
+ wield_image = "wieldhand.png",
+ wield_scale = {x = 1, y = 1, z = 2.5},
+ range = 10,
+ tool_capabilities = {
+ full_punch_interval = 0.5,
+ max_drop_level = 3,
+ groupcaps = {
+ crumbly = caps,
+ cracky = caps,
+ snappy = caps,
+ choppy = caps,
+ oddly_breakable_by_hand = caps,
+ -- dig_immediate group doesn't use value 1. Value 3 is instant dig
+ dig_immediate =
+ {times = {[2] = digtime, [3] = 0}, uses = 0, maxlevel = 256},
+ },
+ damage_groups = {fleshy = 10},
+ }
+ })
+else
+ minetest.register_item(":", {
+ type = "none",
+ wield_image = "wieldhand.png",
+ wield_scale = {x = 1, y = 1, z = 2.5},
+ tool_capabilities = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ crumbly = {times = {[2] = 3.00, [3] = 0.70}, uses = 0, maxlevel = 1},
+ snappy = {times = {[3] = 0.40}, uses = 0, maxlevel = 1},
+ oddly_breakable_by_hand =
+ {times = {[1] = 3.50, [2] = 2.00, [3] = 0.70}, uses = 0}
+ },
+ damage_groups = {fleshy = 1},
+ }
+ })
+end
+
+-- Mese Pickaxe: special tool that digs "everything" instantly
+minetest.register_tool("basetools:pick_mese", {
+ description = "Mese Pickaxe".."\n"..
+ "Digs diggable nodes instantly",
+ inventory_image = "basetools_mesepick.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ cracky={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255},
+ crumbly={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255},
+ snappy={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255},
+ choppy={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255},
+ dig_immediate={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255},
+ },
+ damage_groups = {fleshy=100},
+ },
+})
+
+
+--
+-- Pickaxes: Dig cracky
+--
+
+minetest.register_tool("basetools:pick_wood", {
+ description = "Wooden Pickaxe".."\n"..
+ "Digs cracky=3",
+ inventory_image = "basetools_woodpick.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ cracky={times={[3]=2.00}, uses=30, maxlevel=0}
+ },
+ },
+})
+minetest.register_tool("basetools:pick_stone", {
+ description = "Stone Pickaxe".."\n"..
+ "Digs cracky=2..3",
+ inventory_image = "basetools_stonepick.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ cracky={times={[2]=1.20, [3]=0.80}, uses=60, maxlevel=0}
+ },
+ },
+})
+minetest.register_tool("basetools:pick_steel", {
+ description = "Steel Pickaxe".."\n"..
+ "Digs cracky=1..3",
+ inventory_image = "basetools_steelpick.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=0}
+ },
+ },
+})
+minetest.register_tool("basetools:pick_steel_l1", {
+ description = "Steel Pickaxe Level 1".."\n"..
+ "Digs cracky=1..3".."\n"..
+ "maxlevel=1",
+ inventory_image = "basetools_steelpick_l1.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=1}
+ },
+ },
+})
+minetest.register_tool("basetools:pick_steel_l2", {
+ description = "Steel Pickaxe Level 2".."\n"..
+ "Digs cracky=1..3".."\n"..
+ "maxlevel=2",
+ inventory_image = "basetools_steelpick_l2.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=2}
+ },
+ },
+})
+
+--
+-- Shovels (dig crumbly)
+--
+
+minetest.register_tool("basetools:shovel_wood", {
+ description = "Wooden Shovel".."\n"..
+ "Digs crumbly=3",
+ inventory_image = "basetools_woodshovel.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ crumbly={times={[3]=0.50}, uses=30, maxlevel=0}
+ },
+ },
+})
+minetest.register_tool("basetools:shovel_stone", {
+ description = "Stone Shovel".."\n"..
+ "Digs crumbly=2..3",
+ inventory_image = "basetools_stoneshovel.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ crumbly={times={[2]=0.50, [3]=0.30}, uses=60, maxlevel=0}
+ },
+ },
+})
+minetest.register_tool("basetools:shovel_steel", {
+ description = "Steel Shovel".."\n"..
+ "Digs crumbly=1..3",
+ inventory_image = "basetools_steelshovel.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ crumbly={times={[1]=1.00, [2]=0.70, [3]=0.60}, uses=90, maxlevel=0}
+ },
+ },
+})
+
+--
+-- Axes (dig choppy)
+--
+
+minetest.register_tool("basetools:axe_wood", {
+ description = "Wooden Axe".."\n"..
+ "Digs choppy=3",
+ inventory_image = "basetools_woodaxe.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ choppy={times={[3]=0.80}, uses=30, maxlevel=0},
+ },
+ },
+})
+minetest.register_tool("basetools:axe_stone", {
+ description = "Stone Axe".."\n"..
+ "Digs choppy=2..3",
+ inventory_image = "basetools_stoneaxe.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ choppy={times={[2]=1.00, [3]=0.60}, uses=60, maxlevel=0},
+ },
+ },
+})
+minetest.register_tool("basetools:axe_steel", {
+ description = "Steel Axe".."\n"..
+ "Digs choppy=1..3",
+ inventory_image = "basetools_steelaxe.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ choppy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=90, maxlevel=0},
+ },
+ },
+})
+
+--
+-- Shears (dig snappy)
+--
+
+minetest.register_tool("basetools:shears_wood", {
+ description = "Wooden Shears".."\n"..
+ "Digs snappy=3",
+ inventory_image = "basetools_woodshears.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ snappy={times={[3]=1.00}, uses=30, maxlevel=0},
+ },
+ },
+})
+minetest.register_tool("basetools:shears_stone", {
+ description = "Stone Shears".."\n"..
+ "Digs snappy=2..3",
+ inventory_image = "basetools_stoneshears.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ snappy={times={[2]=1.00, [3]=0.50}, uses=60, maxlevel=0},
+ },
+ },
+})
+minetest.register_tool("basetools:shears_steel", {
+ description = "Steel Shears".."\n"..
+ "Digs snappy=1..3",
+ inventory_image = "basetools_steelshears.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ snappy={times={[1]=1.00, [2]=0.50, [3]=0.25}, uses=90, maxlevel=0},
+ },
+ },
+})
+
+--
+-- Swords (deal damage)
+--
+
+minetest.register_tool("basetools:sword_wood", {
+ description = "Wooden Sword".."\n"..
+ "Damage: fleshy=2",
+ inventory_image = "basetools_woodsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ damage_groups = {fleshy=2},
+ }
+})
+minetest.register_tool("basetools:sword_stone", {
+ description = "Stone Sword".."\n"..
+ "Damage: fleshy=5",
+ inventory_image = "basetools_stonesword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ damage_groups = {fleshy=5},
+ }
+})
+minetest.register_tool("basetools:sword_steel", {
+ description = "Steel Sword".."\n"..
+ "Damage: fleshy=10",
+ inventory_image = "basetools_steelsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ damage_groups = {fleshy=10},
+ }
+})
+minetest.register_tool("basetools:sword_titanium", {
+ description = "Titanium Sword".."\n"..
+ "Damage: fleshy=100",
+ inventory_image = "basetools_titaniumsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ damage_groups = {fleshy=100},
+ }
+})
+minetest.register_tool("basetools:sword_blood", {
+ description = "Blood Sword".."\n"..
+ "Damage: fleshy=1000",
+ inventory_image = "basetools_bloodsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ damage_groups = {fleshy=1000},
+ }
+})
+
+-- Max. damage sword
+minetest.register_tool("basetools:sword_mese", {
+ description = "Mese Sword".."\n"..
+ "Damage: fleshy=32767, fiery=32767, icy=32767".."\n"..
+ "Full Punch Interval: 0.0s",
+ inventory_image = "basetools_mesesword.png",
+ tool_capabilities = {
+ full_punch_interval = 0.0,
+ max_drop_level=1,
+ damage_groups = {fleshy=32767, fiery=32767, icy=32767},
+ }
+})
+
+-- Fire/Ice sword: Deal damage to non-fleshy damage groups
+minetest.register_tool("basetools:sword_fire", {
+ description = "Fire Sword".."\n"..
+ "Damage: icy=10",
+ inventory_image = "basetools_firesword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ damage_groups = {icy=10},
+ }
+})
+minetest.register_tool("basetools:sword_ice", {
+ description = "Ice Sword".."\n"..
+ "Damage: fiery=10",
+ inventory_image = "basetools_icesword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ damage_groups = {fiery=10},
+ }
+})
+minetest.register_tool("basetools:sword_elemental", {
+ description = "Elemental Sword".."\n"..
+ "Damage: fiery=10, icy=10",
+ inventory_image = "basetools_elementalsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ damage_groups = {fiery=10, icy=10},
+ }
+})
+
+-- Healing weapons: heal HP
+minetest.register_tool("basetools:dagger_heal", {
+ description = "Healing Dagger".."\n"..
+ "Heal: fleshy=1".."\n"..
+ "Full Punch Interval: 0.5s",
+ inventory_image = "basetools_healdagger.png",
+ tool_capabilities = {
+ full_punch_interval = 0.5,
+ damage_groups = {fleshy=-1},
+ }
+})
+minetest.register_tool("basetools:sword_heal", {
+ description = "Healing Sword".."\n"..
+ "Heal: fleshy=10",
+ inventory_image = "basetools_healsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ damage_groups = {fleshy=-10},
+ }
+})
+minetest.register_tool("basetools:sword_heal_super", {
+ description = "Super Healing Sword".."\n"..
+ "Heal: fleshy=32768, fiery=32768, icy=32768",
+ inventory_image = "basetools_superhealsword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ damage_groups = {fleshy=-32768, fiery=-32768, icy=-32768},
+ }
+})
+
+
+--
+-- Dagger: Low damage, fast punch interval
+--
+minetest.register_tool("basetools:dagger_wood", {
+ description = "Wooden Dagger".."\n"..
+ "Damage: fleshy=1".."\n"..
+ "Full Punch Interval: 0.5s",
+ inventory_image = "basetools_wooddagger.png",
+ tool_capabilities = {
+ full_punch_interval = 0.5,
+ max_drop_level=0,
+ damage_groups = {fleshy=1},
+ }
+})
+minetest.register_tool("basetools:dagger_steel", {
+ description = "Steel Dagger".."\n"..
+ "Damage: fleshy=2".."\n"..
+ "Full Punch Interval: 0.5s",
+ inventory_image = "basetools_steeldagger.png",
+ tool_capabilities = {
+ full_punch_interval = 0.5,
+ max_drop_level=0,
+ damage_groups = {fleshy=2},
+ }
+})
+
+-- Test tool uses and punch_attack_uses
+local uses = { 1, 2, 3, 5, 10, 50, 100, 1000, 10000, 65535 }
+for i=1, #uses do
+ local u = uses[i]
+ local color = string.format("#FF00%02X", math.floor(((i-1)/#uses) * 255))
+ minetest.register_tool("basetools:pick_uses_"..string.format("%05d", u), {
+ description = u.."-Uses Pickaxe".."\n"..
+ "Digs cracky=3",
+ inventory_image = "basetools_usespick.png^[colorize:"..color..":127",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ cracky={times={[3]=0.1, [2]=0.2, [1]=0.3}, uses=u, maxlevel=0}
+ },
+ },
+ })
+
+ minetest.register_tool("basetools:sword_uses_"..string.format("%05d", u), {
+ description = u.."-Uses Sword".."\n"..
+ "Damage: fleshy=1",
+ inventory_image = "basetools_usessword.png^[colorize:"..color..":127",
+ tool_capabilities = {
+ damage_groups = {fleshy=1},
+ punch_attack_uses = u,
+ },
+ })
+end
diff --git a/games/devtest/mods/basetools/mod.conf b/games/devtest/mods/basetools/mod.conf
new file mode 100644
index 000000000..f0d9f657d
--- /dev/null
+++ b/games/devtest/mods/basetools/mod.conf
@@ -0,0 +1,2 @@
+name = basetools
+description = Contains basic digging tools
diff --git a/games/devtest/mods/basetools/textures/basetools_bloodsword.png b/games/devtest/mods/basetools/textures/basetools_bloodsword.png
new file mode 100644
index 000000000..a521ba4a2
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_bloodsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_elementalsword.png b/games/devtest/mods/basetools/textures/basetools_elementalsword.png
new file mode 100644
index 000000000..d007217ee
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_elementalsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_firesword.png b/games/devtest/mods/basetools/textures/basetools_firesword.png
new file mode 100644
index 000000000..eca999ba1
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_firesword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_healdagger.png b/games/devtest/mods/basetools/textures/basetools_healdagger.png
new file mode 100644
index 000000000..3e6eb9cd0
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_healdagger.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_healsword.png b/games/devtest/mods/basetools/textures/basetools_healsword.png
new file mode 100644
index 000000000..f93fddfb2
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_healsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_icesword.png b/games/devtest/mods/basetools/textures/basetools_icesword.png
new file mode 100644
index 000000000..55a8d609d
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_icesword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_mesepick.png b/games/devtest/mods/basetools/textures/basetools_mesepick.png
new file mode 100644
index 000000000..2993b475b
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_mesepick.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_mesesword.png b/games/devtest/mods/basetools/textures/basetools_mesesword.png
new file mode 100644
index 000000000..bc82769bc
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_mesesword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelaxe.png b/games/devtest/mods/basetools/textures/basetools_steelaxe.png
new file mode 100644
index 000000000..aac594d84
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelaxe.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steeldagger.png b/games/devtest/mods/basetools/textures/basetools_steeldagger.png
new file mode 100644
index 000000000..4c9173094
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steeldagger.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelpick.png b/games/devtest/mods/basetools/textures/basetools_steelpick.png
new file mode 100644
index 000000000..bc02aac3e
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelpick.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelpick_l1.png b/games/devtest/mods/basetools/textures/basetools_steelpick_l1.png
new file mode 100644
index 000000000..dc03f3f65
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelpick_l1.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelpick_l2.png b/games/devtest/mods/basetools/textures/basetools_steelpick_l2.png
new file mode 100644
index 000000000..011df4584
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelpick_l2.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelshears.png b/games/devtest/mods/basetools/textures/basetools_steelshears.png
new file mode 100644
index 000000000..04c86c370
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelshears.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelshovel.png b/games/devtest/mods/basetools/textures/basetools_steelshovel.png
new file mode 100644
index 000000000..8cab60784
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelshovel.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_steelsword.png b/games/devtest/mods/basetools/textures/basetools_steelsword.png
new file mode 100644
index 000000000..9909365c3
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_steelsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_stoneaxe.png b/games/devtest/mods/basetools/textures/basetools_stoneaxe.png
new file mode 100644
index 000000000..a374c547d
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_stoneaxe.png
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_stonepick.png b/games/devtest/mods/basetools/textures/basetools_stonepick.png
index d9156ee3a..d9156ee3a 100644
--- a/games/minimal/mods/default/textures/default_tool_stonepick.png
+++ b/games/devtest/mods/basetools/textures/basetools_stonepick.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_stoneshears.png b/games/devtest/mods/basetools/textures/basetools_stoneshears.png
new file mode 100644
index 000000000..0b4bd3b74
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_stoneshears.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_stoneshovel.png b/games/devtest/mods/basetools/textures/basetools_stoneshovel.png
new file mode 100644
index 000000000..3c1bb48cb
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_stoneshovel.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_stonesword.png b/games/devtest/mods/basetools/textures/basetools_stonesword.png
new file mode 100644
index 000000000..6f3e94cda
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_stonesword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_superhealsword.png b/games/devtest/mods/basetools/textures/basetools_superhealsword.png
new file mode 100644
index 000000000..4175a0917
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_superhealsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_titaniumsword.png b/games/devtest/mods/basetools/textures/basetools_titaniumsword.png
new file mode 100644
index 000000000..55e22c7d5
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_titaniumsword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_usespick.png b/games/devtest/mods/basetools/textures/basetools_usespick.png
new file mode 100644
index 000000000..27850f961
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_usespick.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_usessword.png b/games/devtest/mods/basetools/textures/basetools_usessword.png
new file mode 100644
index 000000000..0eaf4cf38
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_usessword.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_woodaxe.png b/games/devtest/mods/basetools/textures/basetools_woodaxe.png
new file mode 100644
index 000000000..4015e910f
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_woodaxe.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_wooddagger.png b/games/devtest/mods/basetools/textures/basetools_wooddagger.png
new file mode 100644
index 000000000..6e5ab0fd6
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_wooddagger.png
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_woodpick.png b/games/devtest/mods/basetools/textures/basetools_woodpick.png
index 15c61f408..15c61f408 100644
--- a/games/minimal/mods/default/textures/default_tool_woodpick.png
+++ b/games/devtest/mods/basetools/textures/basetools_woodpick.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_woodshears.png b/games/devtest/mods/basetools/textures/basetools_woodshears.png
new file mode 100644
index 000000000..4ff92fd7c
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_woodshears.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_woodshovel.png b/games/devtest/mods/basetools/textures/basetools_woodshovel.png
new file mode 100644
index 000000000..6cc52f8a1
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_woodshovel.png
Binary files differ
diff --git a/games/devtest/mods/basetools/textures/basetools_woodsword.png b/games/devtest/mods/basetools/textures/basetools_woodsword.png
new file mode 100644
index 000000000..364016ed6
--- /dev/null
+++ b/games/devtest/mods/basetools/textures/basetools_woodsword.png
Binary files differ
diff --git a/games/devtest/mods/broken/init.lua b/games/devtest/mods/broken/init.lua
new file mode 100644
index 000000000..04993ca16
--- /dev/null
+++ b/games/devtest/mods/broken/init.lua
@@ -0,0 +1,11 @@
+-- Register stuff with empty definitions to test if Minetest fallback options
+-- for these things work properly.
+
+-- The itemstrings are deliberately kept descriptive to keep them easy to
+-- recognize.
+
+minetest.register_node("broken:node_with_empty_definition", {})
+minetest.register_tool("broken:tool_with_empty_definition", {})
+minetest.register_craftitem("broken:craftitem_with_empty_definition", {})
+
+minetest.register_entity("broken:entity_with_empty_definition", {})
diff --git a/games/devtest/mods/broken/mod.conf b/games/devtest/mods/broken/mod.conf
new file mode 100644
index 000000000..a24378a34
--- /dev/null
+++ b/games/devtest/mods/broken/mod.conf
@@ -0,0 +1,2 @@
+name = broken
+description = Register items and an entity with empty definitions to test fallback
diff --git a/games/devtest/mods/bucket/init.lua b/games/devtest/mods/bucket/init.lua
new file mode 100644
index 000000000..ff58b0669
--- /dev/null
+++ b/games/devtest/mods/bucket/init.lua
@@ -0,0 +1,27 @@
+-- Bucket: Punch liquid source or flowing liquid to collect it
+
+minetest.register_tool("bucket:bucket", {
+ description = "Bucket".."\n"..
+ "Picks up liquid nodes",
+ inventory_image = "bucket.png",
+ stack_max = 1,
+ liquids_pointable = true,
+ groups = { disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ -- Must be pointing to node
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ -- Check if pointing to a liquid
+ local n = minetest.get_node(pointed_thing.under)
+ local def = minetest.registered_nodes[n.name]
+ if def ~= nil and (def.liquidtype == "source" or def.liquidtype == "flowing") then
+ minetest.add_node(pointed_thing.under, {name="air"})
+ local inv = user:get_inventory()
+ if inv then
+ inv:add_item("main", ItemStack(n.name))
+ end
+ end
+ end,
+})
+
diff --git a/games/devtest/mods/bucket/mod.conf b/games/devtest/mods/bucket/mod.conf
new file mode 100644
index 000000000..d14deb4ea
--- /dev/null
+++ b/games/devtest/mods/bucket/mod.conf
@@ -0,0 +1,2 @@
+name = bucket
+description = Minimal bucket to pick up liquids
diff --git a/games/devtest/mods/bucket/textures/bucket.png b/games/devtest/mods/bucket/textures/bucket.png
new file mode 100644
index 000000000..677952875
--- /dev/null
+++ b/games/devtest/mods/bucket/textures/bucket.png
Binary files differ
diff --git a/games/devtest/mods/bucket/textures/bucket_lava.png b/games/devtest/mods/bucket/textures/bucket_lava.png
new file mode 100644
index 000000000..dfcae65fb
--- /dev/null
+++ b/games/devtest/mods/bucket/textures/bucket_lava.png
Binary files differ
diff --git a/games/devtest/mods/bucket/textures/bucket_water.png b/games/devtest/mods/bucket/textures/bucket_water.png
new file mode 100644
index 000000000..e164b0a50
--- /dev/null
+++ b/games/devtest/mods/bucket/textures/bucket_water.png
Binary files differ
diff --git a/games/devtest/mods/chest/init.lua b/games/devtest/mods/chest/init.lua
new file mode 100644
index 000000000..5798c13e7
--- /dev/null
+++ b/games/devtest/mods/chest/init.lua
@@ -0,0 +1,40 @@
+minetest.register_node("chest:chest", {
+ description = "Chest" .. "\n" ..
+ "32 inventory slots",
+ tiles ={"chest_chest.png^[sheet:2x2:0,0", "chest_chest.png^[sheet:2x2:0,0",
+ "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:1,0",
+ "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:0,1"},
+ paramtype2 = "facedir",
+ groups = {dig_immediate=2,choppy=3},
+ is_ground_content = false,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "list[current_name;main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]" ..
+ "listring[]")
+ meta:set_string("infotext", "Chest")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ 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/chest/mod.conf b/games/devtest/mods/chest/mod.conf
new file mode 100644
index 000000000..0d7500164
--- /dev/null
+++ b/games/devtest/mods/chest/mod.conf
@@ -0,0 +1,2 @@
+name = chest
+description = A simple chest to store items
diff --git a/games/devtest/mods/chest/textures/chest_chest.png b/games/devtest/mods/chest/textures/chest_chest.png
new file mode 100644
index 000000000..824b4d502
--- /dev/null
+++ b/games/devtest/mods/chest/textures/chest_chest.png
Binary files differ
diff --git a/games/devtest/mods/chest_of_everything/init.lua b/games/devtest/mods/chest_of_everything/init.lua
new file mode 100644
index 000000000..3e9d2678a
--- /dev/null
+++ b/games/devtest/mods/chest_of_everything/init.lua
@@ -0,0 +1,136 @@
+local F = minetest.formspec_escape
+
+-- Create a detached inventory
+local inv_everything = minetest.create_detached_inventory("everything", {
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ return 0
+ end,
+ allow_put = function(inv, listname, index, stack, player)
+ return 0
+ end,
+ allow_take = function(inv, listname, index, stack, player)
+ return -1
+ end,
+})
+local inv_trash = minetest.create_detached_inventory("trash", {
+ allow_take = function(inv, listname, index, stack, player)
+ return 0
+ end,
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ return 0
+ end,
+ on_put = function(inv, listname, index, stack, player)
+ inv:set_list("main", {})
+ end,
+})
+inv_trash:set_size("main", 1)
+
+local max_page = 1
+
+local function get_chest_formspec(page)
+ local start = 0 + (page-1)*32
+ return "size[8,9]"..
+ "list[detached:everything;main;0,0;8,4;"..start.."]"..
+ "list[current_player;main;0,5;8,4;]" ..
+ "label[6,4;Trash:]" ..
+ "list[detached:trash;main;7,4;1,1]" ..
+ "button[0,4;1,1;chest_of_everything_prev;"..F("<").."]"..
+ "button[1,4;1,1;chest_of_everything_next;"..F(">").."]"..
+ "label[2,4;"..F("Page: "..page).."]"..
+ "listring[detached:everything;main]"..
+ "listring[current_player;main]"..
+ "listring[detached:trash;main]"
+end
+
+minetest.register_node("chest_of_everything:chest", {
+ description = "Chest of Everything" .. "\n" ..
+ "Grants access to all items",
+ tiles ={"chest_of_everything_chest.png^[sheet:2x2:0,0", "chest_of_everything_chest.png^[sheet:2x2:0,0",
+ "chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:1,0",
+ "chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:0,1"},
+ paramtype2 = "facedir",
+ groups = {dig_immediate=2,choppy=3},
+ is_ground_content = false,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Chest of Everything")
+ meta:set_int("page", 1)
+ meta:set_string("formspec", get_chest_formspec(1))
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if formname == "" then
+ local meta = minetest.get_meta(pos)
+ local page = meta:get_int("page")
+ if fields.chest_of_everything_prev then
+ page = page - 1
+ elseif fields.chest_of_everything_next then
+ page = page + 1
+ end
+ if page < 1 then
+ page = 1
+ end
+ if page > max_page then
+ page = max_page
+ end
+ meta:set_int("page", page)
+ meta:set_string("formspec", get_chest_formspec(page))
+ end
+ end,
+})
+
+minetest.register_on_mods_loaded(function()
+ local items = {}
+ for itemstring,_ in pairs(minetest.registered_items) do
+ if itemstring ~= "" and itemstring ~= "unknown" and itemstring ~= "ignore" then
+ table.insert(items, itemstring)
+ end
+ end
+ --[[ Sort items in this order:
+ * Chest of Everything
+ * Test tools
+ * Other tools
+ * Craftitems
+ * Other items
+ * Dummy items ]]
+ local function compare(item1, item2)
+ local def1 = minetest.registered_items[item1]
+ local def2 = minetest.registered_items[item2]
+ local tool1 = def1.type == "tool"
+ local tool2 = def2.type == "tool"
+ local testtool1 = minetest.get_item_group(item1, "testtool") == 1
+ local testtool2 = minetest.get_item_group(item2, "testtool") == 1
+ local dummy1 = minetest.get_item_group(item1, "dummy") == 1
+ local dummy2 = minetest.get_item_group(item2, "dummy") == 1
+ local craftitem1 = def1.type == "craft"
+ local craftitem2 = def2.type == "craft"
+ if item1 == "chest_of_everything:chest" then
+ return true
+ elseif item2 == "chest_of_everything:chest" then
+ return false
+ elseif dummy1 and not dummy2 then
+ return false
+ elseif not dummy1 and dummy2 then
+ return true
+ elseif testtool1 and not testtool2 then
+ return true
+ elseif not testtool1 and testtool2 then
+ return false
+ elseif tool1 and not tool2 then
+ return true
+ elseif not tool1 and tool2 then
+ return false
+ elseif craftitem1 and not craftitem2 then
+ return true
+ elseif not craftitem1 and craftitem2 then
+ return false
+ else
+ return item1 < item2
+ end
+ end
+ table.sort(items, compare)
+ inv_everything:set_size("main", #items)
+ max_page = math.ceil(#items / 32)
+ for i=1, #items do
+ inv_everything:add_item("main", items[i])
+ end
+end)
diff --git a/games/devtest/mods/chest_of_everything/mod.conf b/games/devtest/mods/chest_of_everything/mod.conf
new file mode 100644
index 000000000..4a4425e05
--- /dev/null
+++ b/games/devtest/mods/chest_of_everything/mod.conf
@@ -0,0 +1,2 @@
+name = chest_of_everything
+description = Adds the chest of everything from which you can take all items
diff --git a/games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.png b/games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.png
new file mode 100644
index 000000000..6b2fd58d5
--- /dev/null
+++ b/games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/init.lua b/games/devtest/mods/dignodes/init.lua
new file mode 100644
index 000000000..833150873
--- /dev/null
+++ b/games/devtest/mods/dignodes/init.lua
@@ -0,0 +1,37 @@
+local groups = {
+ "cracky", "dig_immediate"
+}
+
+-- Register dig nodes with 1 digging group, a rating between 1-3 and a level between 0-2
+for g=1, #groups do
+ local gr = groups[g]
+ for r=1, 3 do
+ for l=0, 2 do
+ if not (gr=="dig_immediate" and (l>0 or r==1)) then
+ local d
+ if l > 0 then
+ d = string.format("Dig Test Node: %s=%d, level=%d", gr, r, l)
+ else
+ d = string.format("Dig Test Node: %s=%d", gr, r)
+ end
+ local tile = "dignodes_"..gr..".png^dignodes_rating"..r..".png"
+ if l==1 then
+ tile = tile .. "^[colorize:#FFFF00:127"
+ elseif l==2 then
+ tile = tile .. "^[colorize:#FF0000:127"
+ end
+ minetest.register_node("dignodes:"..gr.."_"..r.."_"..l, {
+ description = d,
+ tiles = { tile },
+ groups = { [gr] = r, level = l },
+ })
+ end
+ end
+ end
+end
+
+-- Node without any digging groups
+minetest.register_node("dignodes:none", {
+ description = "Dig Test Node: groupless",
+ tiles = {"dignodes_none.png"},
+})
diff --git a/games/devtest/mods/dignodes/mod.conf b/games/devtest/mods/dignodes/mod.conf
new file mode 100644
index 000000000..52a80d66e
--- /dev/null
+++ b/games/devtest/mods/dignodes/mod.conf
@@ -0,0 +1,2 @@
+name = dignodes
+description = Nodes with different digging groups
diff --git a/games/devtest/mods/dignodes/textures/dignodes_choppy.png b/games/devtest/mods/dignodes/textures/dignodes_choppy.png
new file mode 100644
index 000000000..a73fc2424
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_choppy.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_cracky.png b/games/devtest/mods/dignodes/textures/dignodes_cracky.png
new file mode 100644
index 000000000..eb84e3079
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_cracky.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_crumbly.png b/games/devtest/mods/dignodes/textures/dignodes_crumbly.png
new file mode 100644
index 000000000..23f2f7c71
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_crumbly.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_dig_immediate.png b/games/devtest/mods/dignodes/textures/dignodes_dig_immediate.png
new file mode 100644
index 000000000..a532ad90b
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_dig_immediate.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_none.png b/games/devtest/mods/dignodes/textures/dignodes_none.png
new file mode 100644
index 000000000..60f13650b
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_none.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_rating1.png b/games/devtest/mods/dignodes/textures/dignodes_rating1.png
new file mode 100644
index 000000000..d2fee3a23
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_rating1.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_rating2.png b/games/devtest/mods/dignodes/textures/dignodes_rating2.png
new file mode 100644
index 000000000..15329b93f
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_rating2.png
Binary files differ
diff --git a/games/devtest/mods/dignodes/textures/dignodes_rating3.png b/games/devtest/mods/dignodes/textures/dignodes_rating3.png
new file mode 100644
index 000000000..37216bfd1
--- /dev/null
+++ b/games/devtest/mods/dignodes/textures/dignodes_rating3.png
Binary files differ
diff --git a/games/devtest/mods/experimental/commands.lua b/games/devtest/mods/experimental/commands.lua
new file mode 100644
index 000000000..e42ae954d
--- /dev/null
+++ b/games/devtest/mods/experimental/commands.lua
@@ -0,0 +1,221 @@
+minetest.register_chatcommand("test_inv", {
+ params = "",
+ description = "Test: Modify player's inventory formspec",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ player:set_inventory_formspec(
+ "size[13,7.5]"..
+ "image[6,0.6;1,2;player.png]"..
+ "list[current_player;main;5,3.5;8,4;]"..
+ "list[current_player;craft;8,0;3,3;]"..
+ "list[current_player;craftpreview;12,1;1,1;]"..
+ "list[detached:test_inventory;main;0,0;4,6;0]"..
+ "button[0.5,7;2,1;button1;Button 1]"..
+ "button_exit[2.5,7;2,1;button2;Exit Button]")
+ return true, "Done."
+ end,
+})
+
+minetest.register_chatcommand("test_bulk_set_node", {
+ params = "",
+ description = "Test: Bulk-set 9×9×9 stone nodes",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local pos_list = {}
+ local ppos = player:get_pos()
+ local i = 1
+ for x=2,10 do
+ for y=2,10 do
+ for z=2,10 do
+ pos_list[i] = {x=ppos.x + x,y = ppos.y + y,z = ppos.z + z}
+ i = i + 1
+ end
+ end
+ end
+ minetest.bulk_set_node(pos_list, {name = "mapgen_stone"})
+ return true, "Done."
+ end,
+})
+
+minetest.register_chatcommand("bench_bulk_set_node", {
+ params = "",
+ description = "Benchmark: Bulk-set 99×99×99 stone nodes",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local pos_list = {}
+ local ppos = player:get_pos()
+ local i = 1
+ for x=2,100 do
+ for y=2,100 do
+ for z=2,100 do
+ pos_list[i] = {x=ppos.x + x,y = ppos.y + y,z = ppos.z + z}
+ i = i + 1
+ end
+ end
+ end
+
+ minetest.chat_send_player(name, "Benchmarking minetest.bulk_set_node. Warming up ...");
+
+ -- warm up with stone to prevent having different callbacks
+ -- due to different node topology
+ minetest.bulk_set_node(pos_list, {name = "mapgen_stone"})
+
+ minetest.chat_send_player(name, "Warming up finished, now benchmarking ...");
+
+ local start_time = minetest.get_us_time()
+ for i=1,#pos_list do
+ minetest.set_node(pos_list[i], {name = "mapgen_stone"})
+ end
+ local middle_time = minetest.get_us_time()
+ minetest.bulk_set_node(pos_list, {name = "mapgen_stone"})
+ local end_time = minetest.get_us_time()
+ local msg = string.format("Benchmark results: minetest.set_node loop: %.2f ms; minetest.bulk_set_node: %.2f ms",
+ ((middle_time - start_time)) / 1000,
+ ((end_time - middle_time)) / 1000
+ )
+ return true, msg
+ end,
+})
+
+local function advance_pos(pos, start_pos, advance_z)
+ if advance_z then
+ pos.z = pos.z + 2
+ pos.x = start_pos.x
+ else
+ pos.x = pos.x + 2
+ end
+ if pos.x > 30900 or pos.x - start_pos.x > 46 then
+ pos.x = start_pos.x
+ pos.z = pos.z + 2
+ end
+ if pos.z > 30900 then
+ -- We ran out of space! Aborting
+ aborted = true
+ return false
+ end
+ return pos
+end
+
+local function place_nodes(param)
+ local nodes = param.nodes
+ local name = param.name
+ local pos = param.pos
+ local start_pos = param.start_pos
+ table.sort(nodes)
+ minetest.chat_send_player(name, "Placing nodes …")
+ local nodes_placed = 0
+ local aborted = false
+ for n=1, #nodes do
+ local itemstring = nodes[n]
+ local def = minetest.registered_nodes[itemstring]
+ local p2_max = 0
+ if param.param ~= "no_param2" then
+ -- Also test the param2 values of the nodes
+ -- ... but we only use permissible param2 values
+ if def.paramtype2 == "wallmounted" then
+ p2_max = 5
+ elseif def.paramtype2 == "facedir" then
+ p2_max = 23
+ elseif def.paramtype2 == "glasslikeliquidlevel" then
+ p2_max = 63
+ elseif def.paramtype2 == "meshoptions" and def.drawtype == "plantlike" then
+ p2_max = 63
+ elseif def.paramtype2 == "leveled" then
+ p2_max = 127
+ elseif def.paramtype2 == "degrotate" and (def.drawtype == "plantlike" or def.drawtype == "mesh") then
+ p2_max = 239
+ elseif def.paramtype2 == "colorfacedir" or
+ def.paramtype2 == "colorwallmounted" or
+ def.paramtype2 == "colordegrotate" or
+ def.paramtype2 == "color" then
+ p2_max = 255
+ end
+ end
+ for p2 = 0, p2_max do
+ -- Skip undefined param2 values
+ if not ((def.paramtype2 == "meshoptions" and p2 % 8 > 4) or
+ (def.paramtype2 == "colorwallmounted" and p2 % 8 > 5) or
+ ((def.paramtype2 == "colorfacedir" or def.paramtype2 == "colordegrotate")
+ and p2 % 32 > 23)) then
+
+ minetest.set_node(pos, { name = itemstring, param2 = p2 })
+ nodes_placed = nodes_placed + 1
+ pos = advance_pos(pos, start_pos)
+ if not pos then
+ aborted = true
+ break
+ end
+ end
+ end
+ if aborted then
+ break
+ end
+ end
+ if aborted then
+ minetest.chat_send_player(name, "Not all nodes could be placed, please move further away from the world boundary. Nodes placed: "..nodes_placed)
+ end
+ minetest.chat_send_player(name, "Nodes placed: "..nodes_placed..".")
+end
+
+local function after_emerge(blockpos, action, calls_remaining, param)
+ if calls_remaining == 0 then
+ place_nodes(param)
+ end
+end
+
+minetest.register_chatcommand("test_place_nodes", {
+ params = "[ no_param2 ]",
+ description = "Test: Place all non-experimental nodes and optionally their permissible param2 variants",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local pos = vector.floor(player:get_pos())
+ pos.x = math.ceil(pos.x + 3)
+ pos.z = math.ceil(pos.z + 3)
+ pos.y = math.ceil(pos.y + 1)
+ local start_pos = table.copy(pos)
+ if pos.x > 30800 then
+ return false, "Too close to world boundary (+X). Please move to X < 30800."
+ end
+ if pos.z > 30800 then
+ return false, "Too close to world boundary (+Z). Please move to Z < 30800."
+ end
+
+ local aborted = false
+ local nodes = {}
+ local emerge_estimate = 0
+ for itemstring, def in pairs(minetest.registered_nodes) do
+ if itemstring ~= "ignore" and string.sub(itemstring, 1, 13) ~= "experimental:" then
+ table.insert(nodes, itemstring)
+ if def.paramtype2 == 0 then
+ emerge_estimate = emerge_estimate + 1
+ else
+ emerge_estimate = emerge_estimate + 255
+ end
+ end
+ end
+ -- Emerge area to make sure that all nodes are being placed.
+ -- Note we will emerge much more than we need to (overestimation),
+ -- the estimation code could be improved performance-wise …
+ local length = 16 + math.ceil(emerge_estimate / 24) * 2
+ minetest.emerge_area(start_pos,
+ { x = start_pos.x + 46, y = start_pos.y, z = start_pos.z + length },
+ after_emerge, { nodes = nodes, name = name, pos = pos, start_pos = start_pos, param = param })
+ return true, "Emerging area …"
+ end,
+})
+
+core.register_on_chatcommand(function(name, command, params)
+ minetest.log("action", "caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'")
+end)
diff --git a/games/devtest/mods/experimental/detached.lua b/games/devtest/mods/experimental/detached.lua
new file mode 100644
index 000000000..673adfdd4
--- /dev/null
+++ b/games/devtest/mods/experimental/detached.lua
@@ -0,0 +1,29 @@
+-- Create a detached inventory
+local inv = minetest.create_detached_inventory("test_inventory", {
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ experimental.print_to_everything("allow move asked")
+ return count -- Allow all
+ end,
+ allow_put = function(inv, listname, index, stack, player)
+ experimental.print_to_everything("allow put asked")
+ return 1 -- Allow only 1
+ end,
+ allow_take = function(inv, listname, index, stack, player)
+ experimental.print_to_everything("allow take asked")
+ return 4 -- Allow 4 at max
+ end,
+ on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ experimental.print_to_everything(player:get_player_name().." moved items")
+ end,
+ on_put = function(inv, listname, index, stack, player)
+ experimental.print_to_everything(player:get_player_name().." put items")
+ end,
+ on_take = function(inv, listname, index, stack, player)
+ experimental.print_to_everything(player:get_player_name().." took items")
+ end,
+})
+inv:set_size("main", 4*6)
+inv:add_item("main", "experimental:callback_node")
+inv:add_item("main", "experimental:particle_spawner")
+
+
diff --git a/games/devtest/mods/experimental/init.lua b/games/devtest/mods/experimental/init.lua
new file mode 100644
index 000000000..b292f792e
--- /dev/null
+++ b/games/devtest/mods/experimental/init.lua
@@ -0,0 +1,23 @@
+--
+-- Experimental things
+--
+
+experimental = {}
+
+dofile(minetest.get_modpath("experimental").."/detached.lua")
+dofile(minetest.get_modpath("experimental").."/items.lua")
+dofile(minetest.get_modpath("experimental").."/commands.lua")
+
+function experimental.print_to_everything(msg)
+ minetest.log("action", msg)
+ minetest.chat_send_all(msg)
+end
+
+minetest.log("info", "[experimental] modname="..dump(minetest.get_current_modname()))
+minetest.log("info", "[experimental] modpath="..dump(minetest.get_modpath("experimental")))
+minetest.log("info", "[experimental] worldpath="..dump(minetest.get_worldpath()))
+
+
+minetest.register_on_mods_loaded(function()
+ minetest.log("action", "[experimental] on_mods_loaded()")
+end)
diff --git a/games/devtest/mods/experimental/items.lua b/games/devtest/mods/experimental/items.lua
new file mode 100644
index 000000000..94be71cf7
--- /dev/null
+++ b/games/devtest/mods/experimental/items.lua
@@ -0,0 +1,105 @@
+minetest.register_node("experimental:callback_node", {
+ description = "Callback Test Node (construct/destruct/timer)",
+ tiles = {"experimental_callback_node.png"},
+ groups = {dig_immediate=3},
+ -- This was known to cause a bug in minetest.item_place_node() when used
+ -- via minetest.place_node(), causing a placer with no position
+ paramtype2 = "facedir",
+ drop = "",
+
+ on_construct = function(pos)
+ experimental.print_to_everything("experimental:callback_node:on_construct("..minetest.pos_to_string(pos)..")")
+ local meta = minetest.get_meta(pos)
+ meta:set_string("mine", "test")
+ local timer = minetest.get_node_timer(pos)
+ timer:start(4, 3)
+ end,
+
+ after_place_node = function(pos, placer)
+ experimental.print_to_everything("experimental:callback_node:after_place_node("..minetest.pos_to_string(pos)..")")
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("mine") == "test" then
+ experimental.print_to_everything("correct metadata found")
+ else
+ experimental.print_to_everything("incorrect metadata found")
+ end
+ end,
+
+ on_destruct = function(pos)
+ experimental.print_to_everything("experimental:callback_node:on_destruct("..minetest.pos_to_string(pos)..")")
+ end,
+
+ after_destruct = function(pos)
+ experimental.print_to_everything("experimental:callback_node:after_destruct("..minetest.pos_to_string(pos)..")")
+ end,
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ experimental.print_to_everything("experimental:callback_node:after_dig_node("..minetest.pos_to_string(pos)..")")
+ end,
+
+ on_timer = function(pos, elapsed)
+ experimental.print_to_everything("on_timer(): elapsed="..dump(elapsed))
+ return true
+ end,
+})
+
+minetest.register_tool("experimental:privatizer", {
+ description = "Node Meta Privatizer".."\n"..
+ "Punch: Marks 'infotext' and 'formspec' meta fields of chest as private",
+ inventory_image = "experimental_tester_tool_1.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type == "node" then
+ local node = minetest.get_node(pointed_thing.under)
+ if node.name == "chest:chest" then
+ local p = pointed_thing.under
+ minetest.log("action", "Privatizer used at "..minetest.pos_to_string(p))
+ minetest.get_meta(p):mark_as_private({"infotext", "formspec"})
+ if user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), "Chest metadata (infotext, formspec) set private!")
+ end
+ return
+ end
+ end
+ if user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), "Privatizer can only be used on chest!")
+ end
+ end,
+})
+
+minetest.register_tool("experimental:particle_spawner", {
+ description = "Particle Spawner".."\n"..
+ "Punch: Spawn random test particle",
+ inventory_image = "experimental_tester_tool_1.png^[invert:g",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing, true)
+ if pos == nil then
+ if user then
+ pos = user:get_pos()
+ end
+ end
+ pos = vector.add(pos, {x=0, y=0.5, z=0})
+ local tex, anim
+ if math.random(0, 1) == 0 then
+ tex = "experimental_particle_sheet.png"
+ anim = {type="sheet_2d", frames_w=3, frames_h=2, frame_length=0.5}
+ else
+ tex = "experimental_particle_vertical.png"
+ anim = {type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3}
+ end
+
+ minetest.add_particle({
+ pos = pos,
+ velocity = {x=0, y=0, z=0},
+ acceleration = {x=0, y=0.04, z=0},
+ expirationtime = 6,
+ collisiondetection = true,
+ texture = tex,
+ animation = anim,
+ size = 4,
+ glow = math.random(0, 5),
+ })
+ end,
+})
+
diff --git a/games/devtest/mods/experimental/mod.conf b/games/devtest/mods/experimental/mod.conf
new file mode 100644
index 000000000..cf0f9cb42
--- /dev/null
+++ b/games/devtest/mods/experimental/mod.conf
@@ -0,0 +1,2 @@
+name = experimental
+description = Chaotic mod containing unstructured tests for testing out engine features. The features in this mod should be moved to other mods.
diff --git a/games/devtest/mods/experimental/textures/experimental_callback_node.png b/games/devtest/mods/experimental/textures/experimental_callback_node.png
new file mode 100644
index 000000000..e9d87434c
--- /dev/null
+++ b/games/devtest/mods/experimental/textures/experimental_callback_node.png
Binary files differ
diff --git a/games/devtest/mods/experimental/textures/experimental_particle_sheet.png b/games/devtest/mods/experimental/textures/experimental_particle_sheet.png
new file mode 100644
index 000000000..6d70394e4
--- /dev/null
+++ b/games/devtest/mods/experimental/textures/experimental_particle_sheet.png
Binary files differ
diff --git a/games/devtest/mods/experimental/textures/experimental_particle_vertical.png b/games/devtest/mods/experimental/textures/experimental_particle_vertical.png
new file mode 100644
index 000000000..0320b7545
--- /dev/null
+++ b/games/devtest/mods/experimental/textures/experimental_particle_vertical.png
Binary files differ
diff --git a/games/devtest/mods/experimental/textures/experimental_tester_tool_1.png b/games/devtest/mods/experimental/textures/experimental_tester_tool_1.png
new file mode 100644
index 000000000..5df416a58
--- /dev/null
+++ b/games/devtest/mods/experimental/textures/experimental_tester_tool_1.png
Binary files differ
diff --git a/games/devtest/mods/give_initial_stuff/init.lua b/games/devtest/mods/give_initial_stuff/init.lua
new file mode 100644
index 000000000..491a531e4
--- /dev/null
+++ b/games/devtest/mods/give_initial_stuff/init.lua
@@ -0,0 +1,37 @@
+local give_if_not_gotten_already = function(inv, list, item)
+ if not inv:contains_item(list, item) then
+ inv:add_item(list, item)
+ end
+end
+
+local give_initial_stuff = function(player)
+ local inv = player:get_inventory()
+ give_if_not_gotten_already(inv, "main", "basetools:pick_mese")
+ give_if_not_gotten_already(inv, "main", "basetools:axe_steel")
+ give_if_not_gotten_already(inv, "main", "basetools:shovel_steel")
+ give_if_not_gotten_already(inv, "main", "bucket:bucket")
+ give_if_not_gotten_already(inv, "main", "testnodes:light14")
+ give_if_not_gotten_already(inv, "main", "chest_of_everything:chest")
+ minetest.log("action", "[give_initial_stuff] Giving initial stuff to "..player:get_player_name())
+end
+
+minetest.register_on_newplayer(function(player)
+ if minetest.settings:get_bool("give_initial_stuff", true) then
+ give_initial_stuff(player)
+ end
+end)
+
+minetest.register_chatcommand("stuff", {
+ params = "",
+ privs = { give = true },
+ description = "Give yourself initial items",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player or not player:is_player() then
+ return false, "No player."
+ end
+ give_initial_stuff(player)
+ return true
+ end,
+})
+
diff --git a/games/devtest/mods/give_initial_stuff/mod.conf b/games/devtest/mods/give_initial_stuff/mod.conf
new file mode 100644
index 000000000..1ba49f52a
--- /dev/null
+++ b/games/devtest/mods/give_initial_stuff/mod.conf
@@ -0,0 +1,3 @@
+name = give_initial_stuff
+description = Gives items to players on join
+depends = basetools, bucket, chest_of_everything, testnodes
diff --git a/games/devtest/mods/initial_message/init.lua b/games/devtest/mods/initial_message/init.lua
new file mode 100644
index 000000000..59e9f5f4b
--- /dev/null
+++ b/games/devtest/mods/initial_message/init.lua
@@ -0,0 +1,9 @@
+minetest.register_on_joinplayer(function(player)
+ local cb = function(player)
+ if not player or not player:is_player() then
+ return
+ end
+ minetest.chat_send_player(player:get_player_name(), "This is the \"Development Test\" [devtest], meant only for testing and development. Use Minetest Game for the real thing.")
+ end
+ minetest.after(2.0, cb, player)
+end)
diff --git a/games/devtest/mods/initial_message/mod.conf b/games/devtest/mods/initial_message/mod.conf
new file mode 100644
index 000000000..32aa2ac4e
--- /dev/null
+++ b/games/devtest/mods/initial_message/mod.conf
@@ -0,0 +1,2 @@
+name = initial_message
+description = Show message to joining players explaining what this testing game is about
diff --git a/games/devtest/mods/mapgen/init.lua b/games/devtest/mods/mapgen/init.lua
new file mode 100644
index 000000000..a5f9128fb
--- /dev/null
+++ b/games/devtest/mods/mapgen/init.lua
@@ -0,0 +1,104 @@
+--
+-- Aliases for map generator outputs
+--
+
+-- ESSENTIAL node aliases
+-- Basic nodes
+minetest.register_alias("mapgen_stone", "basenodes:stone")
+minetest.register_alias("mapgen_water_source", "basenodes:water_source")
+minetest.register_alias("mapgen_river_water_source", "basenodes:river_water_source")
+
+-- Additional essential aliases for v6
+minetest.register_alias("mapgen_lava_source", "basenodes:lava_source")
+minetest.register_alias("mapgen_dirt", "basenodes:dirt")
+minetest.register_alias("mapgen_dirt_with_grass", "basenodes:dirt_with_grass")
+minetest.register_alias("mapgen_sand", "basenodes:sand")
+minetest.register_alias("mapgen_tree", "basenodes:tree")
+minetest.register_alias("mapgen_leaves", "basenodes:leaves")
+minetest.register_alias("mapgen_apple", "basenodes:apple")
+
+-- Essential alias for dungeons
+minetest.register_alias("mapgen_cobble", "basenodes:cobble")
+
+-- Optional aliases for v6 (they all have fallback values in the engine)
+if minetest.settings:get_bool("devtest_v6_mapgen_aliases", false) then
+ minetest.register_alias("mapgen_gravel", "basenodes:gravel")
+ minetest.register_alias("mapgen_desert_stone", "basenodes:desert_stone")
+ minetest.register_alias("mapgen_desert_sand", "basenodes:desert_sand")
+ minetest.register_alias("mapgen_dirt_with_snow", "basenodes:dirt_with_snow")
+ minetest.register_alias("mapgen_snowblock", "basenodes:snowblock")
+ minetest.register_alias("mapgen_snow", "basenodes:snow")
+ minetest.register_alias("mapgen_ice", "basenodes:ice")
+ minetest.register_alias("mapgen_junglegrass", "basenodes:junglegrass")
+ minetest.register_alias("mapgen_jungletree", "basenodes:jungletree")
+ minetest.register_alias("mapgen_jungleleaves", "basenodes:jungleleaves")
+ minetest.register_alias("mapgen_pine_tree", "basenodes:pine_tree")
+ minetest.register_alias("mapgen_pine_needles", "basenodes:pine_needles")
+end
+-- Optional alias for mossycobble (should fall back to cobble)
+if minetest.settings:get_bool("devtest_dungeon_mossycobble", false) then
+ minetest.register_alias("mapgen_mossycobble", "basenodes:mossycobble")
+end
+-- Optional aliases for dungeon stairs (should fall back to full nodes)
+if minetest.settings:get_bool("devtest_dungeon_stairs", false) then
+ minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
+ if minetest.settings:get_bool("devtest_v6_mapgen_aliases", false) then
+ minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
+ end
+end
+
+--
+-- Register biomes for biome API
+--
+
+minetest.clear_registered_biomes()
+minetest.clear_registered_decorations()
+
+if minetest.settings:get_bool("devtest_register_biomes", true) then
+ minetest.register_biome({
+ name = "mapgen:grassland",
+ node_top = "basenodes:dirt_with_grass",
+ depth_top = 1,
+ node_filler = "basenodes:dirt",
+ depth_filler = 1,
+ node_riverbed = "basenodes:sand",
+ depth_riverbed = 2,
+ node_dungeon = "basenodes:cobble",
+ node_dungeon_alt = "basenodes:mossycobble",
+ node_dungeon_stair = "stairs:stair_cobble",
+ y_max = 31000,
+ y_min = 4,
+ heat_point = 50,
+ humidity_point = 50,
+ })
+
+ minetest.register_biome({
+ name = "mapgen:grassland_ocean",
+ node_top = "basenodes:sand",
+ depth_top = 1,
+ node_filler = "basenodes:sand",
+ depth_filler = 3,
+ node_riverbed = "basenodes:sand",
+ depth_riverbed = 2,
+ node_cave_liquid = "basenodes:water_source",
+ node_dungeon = "basenodes:cobble",
+ node_dungeon_alt = "basenodes:mossycobble",
+ node_dungeon_stair = "stairs:stair_cobble",
+ y_max = 3,
+ y_min = -255,
+ heat_point = 50,
+ humidity_point = 50,
+ })
+
+ minetest.register_biome({
+ name = "mapgen:grassland_under",
+ node_cave_liquid = {"basenodes:water_source", "basenodes:lava_source"},
+ node_dungeon = "basenodes:cobble",
+ node_dungeon_alt = "basenodes:mossycobble",
+ node_dungeon_stair = "stairs:stair_cobble",
+ y_max = -256,
+ y_min = -31000,
+ heat_point = 50,
+ humidity_point = 50,
+ })
+end
diff --git a/games/devtest/mods/mapgen/mod.conf b/games/devtest/mods/mapgen/mod.conf
new file mode 100644
index 000000000..15750ccbe
--- /dev/null
+++ b/games/devtest/mods/mapgen/mod.conf
@@ -0,0 +1,3 @@
+name = mapgen
+description = Minimal map generator
+depends = basenodes
diff --git a/games/devtest/mods/modchannels/init.lua b/games/devtest/mods/modchannels/init.lua
new file mode 100644
index 000000000..ee925f09b
--- /dev/null
+++ b/games/devtest/mods/modchannels/init.lua
@@ -0,0 +1,14 @@
+--
+-- Mod channels experimental handlers
+--
+local mod_channel = minetest.mod_channel_join("experimental_preview")
+
+minetest.register_on_modchannel_message(function(channel, sender, message)
+ minetest.log("action", "[modchannels] Server received message `" .. message
+ .. "` on channel `" .. channel .. "` from sender `" .. sender .. "`")
+
+ if mod_channel:is_writeable() then
+ mod_channel:send_all("experimental answers to preview")
+ mod_channel:leave()
+ end
+end)
diff --git a/games/devtest/mods/modchannels/mod.conf b/games/devtest/mods/modchannels/mod.conf
new file mode 100644
index 000000000..7c13aadfb
--- /dev/null
+++ b/games/devtest/mods/modchannels/mod.conf
@@ -0,0 +1,2 @@
+name = modchannels
+description = Add experimental mod channel handlers
diff --git a/games/devtest/mods/soundstuff/init.lua b/games/devtest/mods/soundstuff/init.lua
new file mode 100644
index 000000000..b263a3f35
--- /dev/null
+++ b/games/devtest/mods/soundstuff/init.lua
@@ -0,0 +1,174 @@
+local simple_nodes = {
+ footstep = { "Footstep Sound Node", "soundstuff_node_footstep.png" },
+ dig = { "Dig Sound Node", "soundstuff_node_dig.png" },
+ dug = { "Dug Sound Node", "soundstuff_node_dug.png" },
+ place = { "Place Sound Node", "soundstuff_node_place.png" },
+ place_failed = { "Place Failed Sound Node", "soundstuff_node_place_failed.png" },
+}
+
+for k,v in pairs(simple_nodes) do
+ minetest.register_node("soundstuff:"..k, {
+ description = v[1],
+ tiles = {"soundstuff_node_sound.png","soundstuff_node_sound.png",v[2]},
+ groups = {dig_immediate=2},
+ sounds = {
+ [k] = { name = "soundstuff_mono", gain = 1.0 },
+ }
+ })
+end
+
+minetest.register_node("soundstuff:place_failed_attached", {
+ description = "Attached Place Failed Sound Node",
+ tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_place_failed.png"},
+ groups = {dig_immediate=2, attached_node=1},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = { type = "fixed", fixed = {
+ { -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 },
+ { -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 },
+ }},
+ sounds = {
+ place_failed = { name = "soundstuff_mono", gain = 1.0 },
+ },
+})
+
+minetest.register_node("soundstuff:fall", {
+ description = "Fall Sound Node",
+ tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"},
+ groups = {dig_immediate=2, falling_node=1},
+ sounds = {
+ fall = { name = "soundstuff_mono", gain = 1.0 },
+ }
+})
+
+minetest.register_node("soundstuff:fall_attached", {
+ description = "Attached Fall Sound Node",
+ tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"},
+ groups = {dig_immediate=2, attached_node=1},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = { type = "fixed", fixed = {
+ { -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 },
+ { -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 },
+ }},
+ sounds = {
+ fall = { name = "soundstuff_mono", gain = 1.0 },
+ }
+})
+
+minetest.register_node("soundstuff:footstep_liquid", {
+ description = "Liquid Footstep Sound Node",
+ drawtype = "liquid",
+ tiles = {
+ "soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
+ },
+ special_tiles = {
+ {name = "soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
+ backface_culling = false},
+ {name = "soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
+ backface_culling = true},
+ },
+ liquids_pointable = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "soundstuff:footstep_liquid",
+ liquid_alternative_source = "soundstuff:footstep_liquid",
+ liquid_renewable = false,
+ liquid_range = 0,
+ liquid_viscosity = 0,
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ post_effect_color = {a = 64, r = 0, g = 0, b = 200},
+ sounds = {
+ footstep = { name = "soundstuff_mono", gain = 1.0 },
+ }
+})
+
+minetest.register_node("soundstuff:footstep_climbable", {
+ description = "Climbable Footstep Sound Node",
+ drawtype = "allfaces",
+ tiles = {
+ "soundstuff_node_climbable.png",
+ },
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ climbable = true,
+ is_ground_content = false,
+ groups = { dig_immediate = 2 },
+ sounds = {
+ footstep = { name = "soundstuff_mono", gain = 1.0 },
+ }
+})
+
+
+
+minetest.register_craftitem("soundstuff:eat", {
+ description = "Eat Sound Item".."\n"..
+ "Makes a sound when 'eaten' (with punch key)",
+ inventory_image = "soundstuff_eat.png",
+ on_use = minetest.item_eat(0),
+ sound = {
+ eat = { name = "soundstuff_mono", gain = 1.0 },
+ }
+})
+
+minetest.register_tool("soundstuff:breaks", {
+ description = "Break Sound Tool".."\n"..
+ "Digs cracky=3 and more".."\n"..
+ "Makes a sound when it breaks",
+ inventory_image = "soundstuff_node_dug.png",
+ sound = {
+ breaks = { name = "soundstuff_mono", gain = 1.0 },
+ },
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ cracky={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
+ choppy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
+ snappy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
+ crumbly={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
+ },
+ },
+})
+
+-- Plays sound repeatedly
+minetest.register_node("soundstuff:positional", {
+ description = "Positional Sound Node",
+ on_construct = function(pos)
+ local timer = minetest.get_node_timer(pos)
+ timer:start(0)
+ end,
+ on_timer = function(pos, elapsed)
+ local node = minetest.get_node(pos)
+ local dist = node.param2
+ if dist == 0 then
+ dist = nil
+ end
+ minetest.sound_play("soundstuff_mono", { pos = pos, max_hear_distance = dist })
+ local timer = minetest.get_node_timer(pos)
+ timer:start(0.7)
+ end,
+ on_rightclick = function(pos, node, clicker)
+ node.param2 = (node.param2 + 1) % 64
+ minetest.set_node(pos, node)
+ if clicker and clicker:is_player() then
+ local dist = node.param2
+ local diststr
+ if dist == 0 then
+ diststr = "<default>"
+ else
+ diststr = tostring(dist)
+ end
+ minetest.chat_send_player(clicker:get_player_name(), "max_hear_distance = " .. diststr)
+ end
+ end,
+
+ groups = { dig_immediate = 2 },
+ tiles = { "soundstuff_node_sound.png" },
+})
+
diff --git a/games/devtest/mods/soundstuff/mod.conf b/games/devtest/mods/soundstuff/mod.conf
new file mode 100644
index 000000000..2c631e2da
--- /dev/null
+++ b/games/devtest/mods/soundstuff/mod.conf
@@ -0,0 +1,2 @@
+name = soundstuff
+description = Example items and nodes for testing sound effects
diff --git a/games/devtest/mods/soundstuff/sounds/soundstuff_mono.ogg b/games/devtest/mods/soundstuff/sounds/soundstuff_mono.ogg
new file mode 100644
index 000000000..43428d566
--- /dev/null
+++ b/games/devtest/mods/soundstuff/sounds/soundstuff_mono.ogg
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_eat.png b/games/devtest/mods/soundstuff/textures/soundstuff_eat.png
new file mode 100644
index 000000000..aed205422
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_eat.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_blank.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_blank.png
new file mode 100644
index 000000000..4dffacc4c
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_blank.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.png
new file mode 100644
index 000000000..3888f793c
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_dig.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_dig.png
new file mode 100644
index 000000000..67ba111d8
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_dig.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_dug.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_dug.png
new file mode 100644
index 000000000..bab5fbe51
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_dug.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_fall.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_fall.png
new file mode 100644
index 000000000..17b14f1e4
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_fall.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.png
new file mode 100644
index 000000000..6367ae909
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_place.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_place.png
new file mode 100644
index 000000000..d159ad533
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_place.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.png
new file mode 100644
index 000000000..780ba946d
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.png
Binary files differ
diff --git a/games/devtest/mods/soundstuff/textures/soundstuff_node_sound.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_sound.png
new file mode 100644
index 000000000..0592a0299
--- /dev/null
+++ b/games/devtest/mods/soundstuff/textures/soundstuff_node_sound.png
Binary files differ
diff --git a/games/minimal/mods/stairs/init.lua b/games/devtest/mods/stairs/init.lua
index 4929d1370..2701cabab 100644
--- a/games/minimal/mods/stairs/init.lua
+++ b/games/devtest/mods/stairs/init.lua
@@ -2,10 +2,10 @@ stairs = {}
-- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, recipeitem, groups, images, description)
- minetest.register_node("stairs:stair_" .. subname, {
+ minetest.register_node(":stairs:stair_" .. subname, {
description = description,
drawtype = "nodebox",
- tile_images = images,
+ tiles = images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
@@ -18,23 +18,14 @@ function stairs.register_stair(subname, recipeitem, groups, images, description)
},
},
})
-
- minetest.register_craft({
- output = 'stairs:stair_' .. subname .. ' 4',
- recipe = {
- {recipeitem, "", ""},
- {recipeitem, recipeitem, ""},
- {recipeitem, recipeitem, recipeitem},
- },
- })
end
-- Node will be called stairs:slab_<subname>
function stairs.register_slab(subname, recipeitem, groups, images, description)
- minetest.register_node("stairs:slab_" .. subname, {
+ minetest.register_node(":stairs:slab_" .. subname, {
description = description,
drawtype = "nodebox",
- tile_images = images,
+ tiles = images,
paramtype = "light",
is_ground_content = true,
groups = groups,
@@ -47,13 +38,6 @@ function stairs.register_slab(subname, recipeitem, groups, images, description)
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
})
-
- minetest.register_craft({
- output = 'stairs:slab_' .. subname .. ' 3',
- recipe = {
- {recipeitem, recipeitem, recipeitem},
- },
- })
end
-- Nodes will be called stairs:{stair,slab}_<subname>
@@ -62,32 +46,20 @@ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, des
stairs.register_slab(subname, recipeitem, groups, images, desc_slab)
end
-stairs.register_stair_and_slab("wood", "default:wood",
- {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- {"default_wood.png"},
- "Wooden stair",
- "Wooden slab")
-
-stairs.register_stair_and_slab("stone", "default:stone",
+stairs.register_stair_and_slab("stone", "basenodes:stone",
{cracky=3},
{"default_stone.png"},
- "Stone stair",
- "Stone slab")
+ "Stone Stair",
+ "Stone Slab")
-stairs.register_stair_and_slab("cobble", "default:cobble",
+stairs.register_stair_and_slab("desert_stone", "basenodes:desert_stone",
{cracky=3},
- {"default_cobble.png"},
- "Cobble stair",
- "Cobble slab")
+ {"default_desert_stone.png"},
+ "Desert Stone Stair",
+ "Desert Stone Slab")
-stairs.register_stair_and_slab("brick", "default:brick",
+stairs.register_stair_and_slab("cobble", "basenodes:cobble",
{cracky=3},
- {"default_brick.png"},
- "Brick stair",
- "Brick slab")
-
-stairs.register_stair_and_slab("sandstone", "default:sandstone",
- {crumbly=2,cracky=2},
- {"default_sandstone.png"},
- "Sandstone stair",
- "Sandstone slab")
+ {"default_cobble.png"},
+ "Cobblestone Stair",
+ "Cobblestone Slab")
diff --git a/games/devtest/mods/stairs/mod.conf b/games/devtest/mods/stairs/mod.conf
new file mode 100644
index 000000000..724bff881
--- /dev/null
+++ b/games/devtest/mods/stairs/mod.conf
@@ -0,0 +1,3 @@
+name = stairs
+description = Adds stairs and slabs
+depends = basenodes
diff --git a/games/devtest/mods/testentities/armor.lua b/games/devtest/mods/testentities/armor.lua
new file mode 100644
index 000000000..415e5bd19
--- /dev/null
+++ b/games/devtest/mods/testentities/armor.lua
@@ -0,0 +1,61 @@
+-- Armorball: Test entity for testing armor groups
+-- Rightclick to change armor group
+
+local phasearmor = {
+ [0]={icy=100},
+ [1]={fiery=100},
+ [2]={icy=100, fiery=100},
+ [3]={fleshy=-100},
+ [4]={fleshy=1},
+ [5]={fleshy=10},
+ [6]={fleshy=50},
+ [7]={fleshy=100},
+ [8]={fleshy=200},
+ [9]={fleshy=1000},
+ [10]={fleshy=32767},
+ [11]={immortal=1},
+ [12]={punch_operable=1},
+}
+local max_phase = 12
+
+minetest.register_entity("testentities:armorball", {
+ initial_properties = {
+ hp_max = 20,
+ physical = false,
+ collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4},
+ visual = "sprite",
+ visual_size = {x=1, y=1},
+ textures = {"testentities_armorball.png"},
+ spritediv = {x=1, y=max_phase+1},
+ initial_sprite_basepos = {x=0, y=0},
+ },
+
+ _phase = 7,
+
+ on_activate = function(self, staticdata)
+ minetest.log("action", "[testentities] armorball.on_activate")
+ self.object:set_armor_groups(phasearmor[self._phase])
+ self.object:set_sprite({x=0, y=self._phase})
+ end,
+
+ on_rightclick = function(self, clicker)
+ -- Change armor group and sprite
+ self._phase = self._phase + 1
+ if self._phase >= max_phase + 1 then
+ self._phase = 0
+ end
+ self.object:set_sprite({x=0, y=self._phase})
+ self.object:set_armor_groups(phasearmor[self._phase])
+ end,
+
+ on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
+ if not puncher then
+ return
+ end
+ local name = puncher:get_player_name()
+ if not name then
+ return
+ end
+ minetest.chat_send_player(name, "time_from_last_punch="..string.format("%.3f", time_from_last_punch).."; damage="..tostring(damage))
+ end,
+})
diff --git a/games/devtest/mods/testentities/callbacks.lua b/games/devtest/mods/testentities/callbacks.lua
new file mode 100644
index 000000000..a212fbfbe
--- /dev/null
+++ b/games/devtest/mods/testentities/callbacks.lua
@@ -0,0 +1,78 @@
+-- Entities that test their callbacks
+
+local message = function(msg)
+ minetest.log("action", msg)
+ minetest.chat_send_all(msg)
+end
+
+local get_object_name = function(obj)
+ local name = "<nil>"
+ if obj then
+ if obj:is_player() then
+ name = obj:get_player_name()
+ else
+ name = "<entity>"
+ end
+ end
+ return name
+end
+
+local spos = function(self)
+ return minetest.pos_to_string(vector.round(self.object:get_pos()))
+end
+
+-- Callback test entity (all callbacks except on_step)
+minetest.register_entity("testentities:callback", {
+ initial_properties = {
+ visual = "upright_sprite",
+ textures = { "testentities_callback.png" },
+ },
+
+ on_activate = function(self, staticdata, dtime_s)
+ message("Callback entity: on_activate! pos="..spos(self).."; dtime_s="..dtime_s)
+ end,
+ on_deactivate = function(self, removal)
+ message("Callback entity: on_deactivate! pos="..spos(self) .. "; removal=" .. tostring(removal))
+ end,
+ on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
+ local name = get_object_name(puncher)
+ message(
+ "Callback entity: on_punch! "..
+ "pos="..spos(self).."; puncher="..name.."; "..
+ "time_from_last_punch="..time_from_last_punch.."; "..
+ "tool_capabilities="..tostring(dump(tool_capabilities)).."; "..
+ "dir="..tostring(dump(dir)).."; damage="..damage)
+ end,
+ on_rightclick = function(self, clicker)
+ local name = get_object_name(clicker)
+ message("Callback entity: on_rightclick! pos="..spos(self).."; clicker="..name)
+ end,
+ on_death = function(self, killer)
+ local name = get_object_name(killer)
+ message("Callback entity: on_death! pos="..spos(self).."; killer="..name)
+ end,
+ on_attach_child = function(self, child)
+ local name = get_object_name(child)
+ message("Callback entity: on_attach_child! pos="..spos(self).."; child="..name)
+ end,
+ on_detach_child = function(self, child)
+ local name = get_object_name(child)
+ message("Callback entity: on_detach_child! pos="..spos(self).."; child="..name)
+ end,
+ on_detach = function(self, parent)
+ local name = get_object_name(parent)
+ message("Callback entity: on_detach! pos="..spos(self).."; parent="..name)
+ end,
+ get_staticdata = function(self)
+ message("Callback entity: get_staticdata! pos="..spos(self))
+ end,
+})
+
+-- Only test on_step callback
+minetest.register_entity("testentities:callback_step", {
+ visual = "upright_sprite",
+ textures = { "testentities_callback_step.png" },
+ on_step = function(self, dtime)
+ message("on_step callback entity: on_step! pos="..spos(self).."; dtime="..dtime)
+ end,
+})
diff --git a/games/devtest/mods/testentities/init.lua b/games/devtest/mods/testentities/init.lua
new file mode 100644
index 000000000..df8c72ea7
--- /dev/null
+++ b/games/devtest/mods/testentities/init.lua
@@ -0,0 +1,3 @@
+dofile(minetest.get_modpath("testentities").."/visuals.lua")
+dofile(minetest.get_modpath("testentities").."/armor.lua")
+dofile(minetest.get_modpath("testentities").."/callbacks.lua")
diff --git a/games/devtest/mods/testentities/mod.conf b/games/devtest/mods/testentities/mod.conf
new file mode 100644
index 000000000..7a8cb5a3e
--- /dev/null
+++ b/games/devtest/mods/testentities/mod.conf
@@ -0,0 +1,2 @@
+name = testentities
+description = Example entities for testing
diff --git a/games/devtest/mods/testentities/textures/testentities_armorball.png b/games/devtest/mods/testentities/textures/testentities_armorball.png
new file mode 100644
index 000000000..708c7b36d
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_armorball.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_callback.png b/games/devtest/mods/testentities/textures/testentities_callback.png
new file mode 100644
index 000000000..c4c9066d1
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_callback.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_callback_step.png b/games/devtest/mods/testentities/textures/testentities_callback_step.png
new file mode 100644
index 000000000..b67506a97
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_callback_step.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube1.png b/games/devtest/mods/testentities/textures/testentities_cube1.png
new file mode 100644
index 000000000..c667e425f
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube1.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube2.png b/games/devtest/mods/testentities/textures/testentities_cube2.png
new file mode 100644
index 000000000..481823420
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube2.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube3.png b/games/devtest/mods/testentities/textures/testentities_cube3.png
new file mode 100644
index 000000000..03b5daa15
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube3.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube4.png b/games/devtest/mods/testentities/textures/testentities_cube4.png
new file mode 100644
index 000000000..639204896
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube4.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube5.png b/games/devtest/mods/testentities/textures/testentities_cube5.png
new file mode 100644
index 000000000..d8acdf0b6
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube5.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_cube6.png b/games/devtest/mods/testentities/textures/testentities_cube6.png
new file mode 100644
index 000000000..5f81a64d9
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_cube6.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_dungeon_master.png b/games/devtest/mods/testentities/textures/testentities_dungeon_master.png
new file mode 100644
index 000000000..1e3107746
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_dungeon_master.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_sprite.png b/games/devtest/mods/testentities/textures/testentities_sprite.png
new file mode 100644
index 000000000..a4b019699
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_sprite.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_upright_sprite1.png b/games/devtest/mods/testentities/textures/testentities_upright_sprite1.png
new file mode 100644
index 000000000..6242511df
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_upright_sprite1.png
Binary files differ
diff --git a/games/devtest/mods/testentities/textures/testentities_upright_sprite2.png b/games/devtest/mods/testentities/textures/testentities_upright_sprite2.png
new file mode 100644
index 000000000..a79a760e3
--- /dev/null
+++ b/games/devtest/mods/testentities/textures/testentities_upright_sprite2.png
Binary files differ
diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua
new file mode 100644
index 000000000..e382ec44c
--- /dev/null
+++ b/games/devtest/mods/testentities/visuals.lua
@@ -0,0 +1,137 @@
+-- Minimal test entities to test visuals
+
+minetest.register_entity("testentities:sprite", {
+ initial_properties = {
+ visual = "sprite",
+ textures = { "testentities_sprite.png" },
+ },
+})
+
+minetest.register_entity("testentities:upright_sprite", {
+ initial_properties = {
+ visual = "upright_sprite",
+ textures = {
+ "testentities_upright_sprite1.png",
+ "testentities_upright_sprite2.png",
+ },
+ },
+})
+
+minetest.register_entity("testentities:cube", {
+ initial_properties = {
+ visual = "cube",
+ textures = {
+ "testentities_cube1.png",
+ "testentities_cube2.png",
+ "testentities_cube3.png",
+ "testentities_cube4.png",
+ "testentities_cube5.png",
+ "testentities_cube6.png",
+ },
+ },
+})
+
+minetest.register_entity("testentities:item", {
+ initial_properties = {
+ visual = "item",
+ wield_item = "testnodes:normal",
+ },
+})
+
+minetest.register_entity("testentities:wielditem", {
+ initial_properties = {
+ visual = "wielditem",
+ wield_item = "testnodes:normal",
+ },
+})
+
+minetest.register_entity("testentities:mesh", {
+ initial_properties = {
+ visual = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ textures = {
+ "testnodes_mesh_stripes2.png"
+ },
+ },
+})
+
+minetest.register_entity("testentities:mesh_unshaded", {
+ initial_properties = {
+ visual = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ textures = {
+ "testnodes_mesh_stripes2.png"
+ },
+ shaded = false,
+ },
+})
+
+-- Advanced visual tests
+
+-- An entity for testing animated and yaw-modulated sprites
+minetest.register_entity("testentities:yawsprite", {
+ initial_properties = {
+ selectionbox = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3},
+ visual = "sprite",
+ visual_size = {x=0.6666, y=1},
+ textures = {"testentities_dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"},
+ spritediv = {x=6, y=5},
+ initial_sprite_basepos = {x=0, y=0},
+ },
+ on_activate = function(self, staticdata)
+ self.object:set_sprite({x=0, y=0}, 3, 0.5, true)
+ end,
+})
+
+-- An entity for testing animated upright sprites
+minetest.register_entity("testentities:upright_animated", {
+ initial_properties = {
+ visual = "upright_sprite",
+ textures = {"testnodes_anim.png"},
+ spritediv = {x = 1, y = 4},
+ },
+ on_activate = function(self)
+ self.object:set_sprite({x=0, y=0}, 4, 1.0, false)
+ end,
+})
+
+minetest.register_entity("testentities:nametag", {
+ initial_properties = {
+ visual = "sprite",
+ textures = { "testentities_sprite.png" },
+ },
+
+ on_activate = function(self, staticdata)
+ if staticdata ~= "" then
+ 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, bgcolor = self.bgcolor })
+ end,
+})
diff --git a/games/devtest/mods/testfood/init.lua b/games/devtest/mods/testfood/init.lua
new file mode 100644
index 000000000..39b121306
--- /dev/null
+++ b/games/devtest/mods/testfood/init.lua
@@ -0,0 +1,31 @@
+local S = minetest.get_translator("testfood")
+
+minetest.register_craftitem("testfood:good1", {
+ description = S("Good Food (+1)"),
+ inventory_image = "testfood_good.png",
+ on_use = minetest.item_eat(1),
+})
+minetest.register_craftitem("testfood:good5", {
+ description = S("Good Food (+5)"),
+ inventory_image = "testfood_good2.png",
+ on_use = minetest.item_eat(5),
+})
+
+minetest.register_craftitem("testfood:bad1", {
+ description = S("Bad Food (-1)"),
+ inventory_image = "testfood_bad.png",
+ on_use = minetest.item_eat(-1),
+})
+minetest.register_craftitem("testfood:bad5", {
+ description = S("Bad Food (-5)"),
+ inventory_image = "testfood_bad2.png",
+ on_use = minetest.item_eat(-5),
+})
+
+minetest.register_craftitem("testfood:replace1", {
+ description = S("Replacing Food (+1)").."\n"..
+ S("Replaced with 'Good Food (+1)' when eaten"),
+ inventory_image = "testfood_replace.png",
+ on_use = minetest.item_eat(1, "testfood:good1"),
+})
+
diff --git a/games/devtest/mods/testfood/mod.conf b/games/devtest/mods/testfood/mod.conf
new file mode 100644
index 000000000..7bff21b6e
--- /dev/null
+++ b/games/devtest/mods/testfood/mod.conf
@@ -0,0 +1,2 @@
+name = testfood
+description = For testing food items
diff --git a/games/devtest/mods/testfood/textures/testfood_bad.png b/games/devtest/mods/testfood/textures/testfood_bad.png
new file mode 100644
index 000000000..6e9251440
--- /dev/null
+++ b/games/devtest/mods/testfood/textures/testfood_bad.png
Binary files differ
diff --git a/games/devtest/mods/testfood/textures/testfood_bad2.png b/games/devtest/mods/testfood/textures/testfood_bad2.png
new file mode 100644
index 000000000..22b567890
--- /dev/null
+++ b/games/devtest/mods/testfood/textures/testfood_bad2.png
Binary files differ
diff --git a/games/devtest/mods/testfood/textures/testfood_good.png b/games/devtest/mods/testfood/textures/testfood_good.png
new file mode 100644
index 000000000..31df7f5dd
--- /dev/null
+++ b/games/devtest/mods/testfood/textures/testfood_good.png
Binary files differ
diff --git a/games/devtest/mods/testfood/textures/testfood_good2.png b/games/devtest/mods/testfood/textures/testfood_good2.png
new file mode 100644
index 000000000..e43dda209
--- /dev/null
+++ b/games/devtest/mods/testfood/textures/testfood_good2.png
Binary files differ
diff --git a/games/devtest/mods/testfood/textures/testfood_replace.png b/games/devtest/mods/testfood/textures/testfood_replace.png
new file mode 100644
index 000000000..1ef6876e5
--- /dev/null
+++ b/games/devtest/mods/testfood/textures/testfood_replace.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/LICENSE.txt b/games/devtest/mods/testformspec/LICENSE.txt
new file mode 100644
index 000000000..07696cc30
--- /dev/null
+++ b/games/devtest/mods/testformspec/LICENSE.txt
@@ -0,0 +1,14 @@
+License of media files
+----------------------
+Content imported from minetest_game.
+
+
+BlockMen (CC BY-SA 3.0)
+ default_chest_front.png
+ default_chest_lock.png
+ default_chest_side.png
+ default_chest_top.png
+
+stujones11 (CC BY-SA 3.0)
+An0n3m0us (CC BY-SA 3.0)
+ testformspec_character.b3d
diff --git a/games/devtest/mods/testformspec/callbacks.lua b/games/devtest/mods/testformspec/callbacks.lua
new file mode 100644
index 000000000..559380580
--- /dev/null
+++ b/games/devtest/mods/testformspec/callbacks.lua
@@ -0,0 +1,51 @@
+local callback_test = 0
+
+local out = function(player, formname, fields, number)
+ local snum = ""
+ if number then
+ snum = " "..number
+ end
+ local msg = "Formspec callback"..snum..": player="..player:get_player_name()..", formname=\""..tostring(formname).."\", fields="..dump(fields)
+ minetest.chat_send_player(player:get_player_name(), msg)
+ minetest.log("action", msg)
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if callback_test == 1 then
+ out(player, formname, fields)
+ elseif callback_test == 2 then
+ out(player, formname, fields, 1)
+ end
+end)
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if callback_test == 2 then
+ out(player, formname, fields, 2)
+ return true -- Disable the first callback
+ end
+end)
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if callback_test == 2 then
+ out(player, formname, fields, 3)
+ end
+end)
+
+minetest.register_chatcommand("test_formspec_callbacks", {
+ params = "[ 0 | 1 | 2 ]",
+ description = "Test: Change formspec callbacks testing mode",
+ func = function(name, param)
+ local mode = tonumber(param)
+ if not mode then
+ callback_test = (callback_test + 1 % 3)
+ else
+ callback_test = mode
+ end
+ if callback_test == 1 then
+ minetest.chat_send_player(name, "Formspec callback test mode 1 enabled: Logging only")
+ elseif callback_test == 2 then
+ minetest.chat_send_player(name, "Formspec callback test mode 2 enabled: Three callbacks, disable pre-registered callbacks")
+ else
+ callback_test = 0
+ minetest.chat_send_player(name, "Formspec callback test disabled!")
+ end
+ end
+})
diff --git a/games/devtest/mods/testformspec/dummy_items.lua b/games/devtest/mods/testformspec/dummy_items.lua
new file mode 100644
index 000000000..2037ae9cf
--- /dev/null
+++ b/games/devtest/mods/testformspec/dummy_items.lua
@@ -0,0 +1,14 @@
+-- This code adds dummy items that are supposed to be used in formspecs
+-- for testing item_image formspec elements.
+
+minetest.register_node("testformspec:node", {
+ description = "Formspec Test Node",
+ tiles = { "testformspec_node.png" },
+ groups = { dig_immediate = 3, dummy = 1 },
+})
+
+minetest.register_craftitem("testformspec:item", {
+ description = "Formspec Test Item",
+ inventory_image = "testformspec_item.png",
+ groups = { dummy = 1 },
+})
diff --git a/games/devtest/mods/testformspec/formspec.lua b/games/devtest/mods/testformspec/formspec.lua
new file mode 100644
index 000000000..5f1f8970e
--- /dev/null
+++ b/games/devtest/mods/testformspec/formspec.lua
@@ -0,0 +1,536 @@
+local color = minetest.colorize
+
+local clip_fs = [[
+ style_type[label,button,image_button,item_image_button,
+ tabheader,scrollbar,table,animated_image
+ ,field,textarea,checkbox,dropdown;noclip=%c]
+
+ label[0,0;A clipping test]
+ button[0,1;3,0.8;clip_button;A clipping test]
+ image_button[0,2;3,0.8;testformspec_button_image.png;clip_image_button;A clipping test]
+ item_image_button[0,3;3,0.8;testformspec:item;clip_item_image_button;A clipping test]
+ tabheader[0,4.7;3,0.63;clip_tabheader;Clip,Test,Text,Tabs;1;false;false]
+ field[0,5;3,0.8;clip_field;Title;]
+ textarea[0,6;3,1;clip_textarea;Title;]
+ checkbox[0,7.5;clip_checkbox;This is a test;true]
+ dropdown[0,8;3,0.8;clip_dropdown;Select An Item,One,Two,Three,Four,Five;1]
+ scrollbar[0,9;3,0.8;horizontal;clip_scrollbar;3]
+ tablecolumns[text;text]
+ table[0,10;3,1;clip_table;one,two,three,four;1]
+ animated_image[-0.5,11;4.5,1;clip_animated_image;testformspec_animation.png;4;100]
+]]
+
+local tabheaders_fs = [[
+ tabheader[0,0;10,0.63;tabs_opaque;Opaque,Without,Border;1;false;false]
+ tabheader[0,1;10,0.63;tabs_opaque_border;Opaque,With,Border;1;false;true]
+ tabheader[0,2;10,0.63;tabs_transparent;Transparent,Without,Border;1;true;false]
+ tabheader[0,3;10,0.63;tabs_transparent_border;Transparent,With,Border;1;true;true]
+ tabheader[0,4;tabs_default;Default,Tabs;1]
+ tabheader[0,6;10,0.5;tabs_size1;Height=0.5;1;false;false]
+ tabheader[2,6;10,0.75;tabs_size1;Height=0.75;1;false;false]
+ tabheader[4,6;10,1;tabs_size2;Height=1;1;false;false]
+ tabheader[6,6;10,1.25;tabs_size2;Height=1.25;1;false;false]
+ tabheader[8,6;10,1.5;tabs_size2;Height=1.5;1;false;false]
+]]
+
+local inv_style_fs = [[
+ style_type[list;noclip=true]
+ list[current_player;main;-0.75,0.75;2,2]
+
+ real_coordinates[false]
+ list[current_player;main;1.5,0;3,2]
+ real_coordinates[true]
+
+ real_coordinates[false]
+ style_type[list;size=1.1;spacing=0.1]
+ list[current_player;main;5,0;3,2]
+ real_coordinates[true]
+
+ style_type[list;size=.001;spacing=0]
+ list[current_player;main;7,3.5;8,4]
+
+ box[3,3.5;1,1;#000000]
+ box[5,3.5;1,1;#000000]
+ box[4,4.5;1,1;#000000]
+ box[3,5.5;1,1;#000000]
+ box[5,5.5;1,1;#000000]
+ style_type[list;spacing=.25,.125;size=.75,.875]
+ list[current_player;main;3,3.5;3,3]
+
+ style_type[list;spacing=0;size=1.1]
+ list[current_player;main;.5,7;8,4]
+]]
+
+local hypertext_basic = [[
+<bigger>Normal test</bigger>
+This is a normal text.
+
+<bigger><mono>style</mono> test</bigger>
+<style color=#FFFF00>Yellow text.</style> <style color=#FF0000>Red text.</style>
+<style size=24>Size 24.</style> <style size=16>Size 16</style>. <style size=12>Size 12.</style>
+<style font=normal>Normal font.</style> <style font=mono>Mono font.</style>
+
+<bigger>Tag test</bigger>
+<normal>normal</normal>
+<mono>mono</mono>
+<b>bold</b>
+<i>italic</i>
+<u>underlined</u>
+<big>big</big>
+<bigger>bigger</bigger>
+<left>left</left>
+<center>center</center>
+<right>right</right>
+<justify>justify. Here comes a blind text: Lorem testum dolor sit amet consecutor celeron fiftifahivus e shadoninia e smalus jokus anrus relsocutoti rubenwardus. Erasputinus hara holisti dominus wusi. Grumarinsti erltusmuate ol fortitusti fla flo, blani burki e sfani fahif. Ultae ratii, e megus gigae don anonimus. Grinus dimondus krockus e nore. Endus finalus nowus comus endus o blindus tekstus.</justify>
+
+<bigger>Custom tag test</bigger>
+<tag name=t_green color=green>
+<tag name=t_hover hovercolor=yellow>
+<tag name=t_size size=24>
+<tag name=t_mono font=mono>
+<tag name=t_multi color=green font=mono size=24>
+<t_green>color=green</t_green>
+Action: <action name=color><t_green>color=green</t_green></action>
+Action: <action name=hovercolor><t_hover>hovercolor=yellow</t_hover></action>
+<t_size>size=24</t_size>
+<t_mono>font=mono</t_mono>
+<t_multi>color=green font=mono size=24</t_multi>
+
+<bigger><mono>action</mono> test</bigger>
+<action name=action_test>action</action>
+
+<bigger><mono>img</mono> test</bigger>
+Normal:
+<img name=testformspec_item.png>
+<mono>width=48 height=48</mono>:
+<img name=testformspec_item.png width=48 height=48>
+<mono>float=left</mono>:
+<img name=testformspec_item.png float=left>
+<mono>float=right</mono>:
+<img name=testformspec_item.png float=right>
+
+<bigger><mono>item</mono> test</bigger>
+Normal:
+<item name=testformspec:node>
+<mono>width=48 height=48</mono>
+<item name=testformspec:node width=48 height=48>
+<mono>angle=30,0,0</mono>:
+<item name=testformspec:node angle=30,0,0>
+<mono>angle=0,30,0</mono>:
+<item name=testformspec:node angle=0,30,0>
+<mono>angle=0,0,30</mono>:
+<item name=testformspec:node angle=0,0,30>
+<mono>rotate=yes</mono>:
+<item name=testformspec:node rotate=yes>
+<mono>rotate=100,0,0</mono>:
+<item name=testformspec:node rotate=100,0,0>
+<mono>rotate=0,100,0</mono>:
+<item name=testformspec:node rotate=0,100,0>
+<mono>rotate=0,0,100</mono>:
+<item name=testformspec:node rotate=0,0,100>
+<mono>rotate=50,75,100</mono>:
+<item name=testformspec:node rotate=50,75,100>
+<mono>angle=-30,-45,90 rotate=100,150,-50</mono>:
+<item name=testformspec:node angle=-30,-45,90 rotate=100,150,-50>]]
+
+local hypertext_global = [[
+<global background=gray margin=20 valign=bottom halign=right color=pink hovercolor=purple size=12 font=mono>
+This is a test of the global tag. The parameters are:
+background=gray margin=20 valign=bottom halign=right color=pink hovercolor=purple size=12 font=mono
+<action name=global>action</action>]]
+
+local hypertext_fs = "hypertext[0,0;11,9;hypertext;"..minetest.formspec_escape(hypertext_basic).."]"..
+ "hypertext[0,9.5;11,2.5;hypertext;"..minetest.formspec_escape(hypertext_global).."]"
+
+local style_fs = [[
+ style[one_btn1;bgcolor=red;textcolor=yellow;bgcolor_hovered=orange;
+ bgcolor_pressed=purple]
+ button[0,0;2.5,0.8;one_btn1;Button]
+
+ style[one_btn2;border=false;textcolor=cyan] ]]..
+ "button[0,1.05;2.5,0.8;one_btn2;Text " .. color("#FF0", "Yellow") .. [[]
+
+ style[one_btn3;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png;
+ bgimg_pressed=testformspec_pressed.png]
+ button[0,2.1;1,1;one_btn3;Border]
+
+ style[one_btn4;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png;
+ bgimg_pressed=testformspec_pressed.png;border=false]
+ button[1.25,2.1;1,1;one_btn4;NoBor]
+
+ style[one_btn5;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png;
+ bgimg_pressed=testformspec_pressed.png;border=false;alpha=false]
+ button[0,3.35;1,1;one_btn5;Alph]
+
+ style[one_btn6;border=true]
+ image_button[0,4.6;1,1;testformspec_button_image.png;one_btn6;Border]
+
+ style[one_btn7;border=false]
+ image_button[1.25,4.6;1,1;testformspec_button_image.png;one_btn7;NoBor]
+
+ style[one_btn8;border=false]
+ image_button[0,5.85;1,1;testformspec_button_image.png;one_btn8;Border;false;true;testformspec_pressed.png]
+
+ style[one_btn9;border=true]
+ image_button[1.25,5.85;1,1;testformspec_button_image.png;one_btn9;NoBor;false;false;testformspec_pressed.png]
+
+ style[one_btn10;alpha=false]
+ image_button[0,7.1;1,1;testformspec_button_image.png;one_btn10;NoAlpha]
+
+ style[one_btn11;alpha=true]
+ image_button[1.25,7.1;1,1;testformspec_button_image.png;one_btn11;Alpha]
+
+ style[one_btn12;border=true]
+ item_image_button[0,8.35;1,1;testformspec:item;one_btn12;Border]
+
+ style[one_btn13;border=false]
+ item_image_button[1.25,8.35;1,1;testformspec:item;one_btn13;NoBor]
+
+ style[one_btn14;border=false;bgimg=testformspec_bg.png;fgimg=testformspec_button_image.png]
+ style[one_btn14:hovered;bgimg=testformspec_bg_hovered.png;fgimg=testformspec_hovered.png;textcolor=yellow]
+ style[one_btn14:pressed;bgimg=testformspec_bg_pressed.png;fgimg=testformspec_pressed.png;textcolor=blue]
+ style[one_btn14:hovered+pressed;textcolor=purple]
+ image_button[0,9.6;1,1;testformspec_button_image.png;one_btn14;Bg]
+
+ style[one_btn15;border=false;bgcolor=#1cc;bgimg=testformspec_bg.png;bgimg_hovered=testformspec_bg_hovered.png;bgimg_pressed=testformspec_bg_pressed.png]
+ item_image_button[1.25,9.6;1,1;testformspec:item;one_btn15;Bg]
+
+ style[one_btn16;border=false;bgimg=testformspec_bg_9slice.png;bgimg_middle=4,6;padding=5,7;fgimg=testformspec_bg.png;fgimg_middle=1]
+ style[one_btn16:hovered;bgimg=testformspec_bg_9slice_hovered.png;fgimg=testformspec_bg_hovered.png]
+ style[one_btn16:pressed;bgimg=testformspec_bg_9slice_pressed.png;fgimg=testformspec_bg_pressed.png]
+ image_button[2.5,9.6;2,1;;one_btn16;9-Slice Bg]
+
+
+
+ container[2.75,0]
+
+ style[one_tb1;textcolor=Yellow]
+ tabheader[0,3;2.5,0.63;one_tb1;Yellow,Text,Tabs;1;false;false]
+
+ style[one_f1;textcolor=yellow]
+ field[0,4.25;2.5,0.8;one_f1;Field One;Yellow Text]
+
+ style[one_f2;border=false;textcolor=cyan]
+ field[0,5.75;2.5,0.8;one_f2;Field Two;Borderless Cyan Text]
+
+ style[one_f3;textcolor=yellow]
+ textarea[0,7.025;2.5,0.8;one_f3;Label;]] ..
+ minetest.formspec_escape("Yellow Text\nLine two") .. [[ ]
+
+ style[one_f4;border=false;textcolor=cyan]
+ textarea[0,8.324999999999999;2.5,0.8;one_f4;Label;]] ..
+ minetest.formspec_escape("Borderless Cyan Text\nLine two") .. [[ ]
+
+ container_end[]
+]]
+
+local scroll_fs =
+ "button[8.5,1;4,1;outside;Outside of container]"..
+ "box[1,1;8,6;#00aa]"..
+ "scroll_container[1,1;8,6;scrbar;vertical]"..
+ "button[0,1;1,1;lorem;Lorem]"..
+ "animated_image[0,1;4.5,1;clip_animated_image;testformspec_animation.png;4;100]" ..
+ "button[0,10;1,1;ipsum;Ipsum]"..
+ "pwdfield[2,2;1,1;lorem2;Lorem]"..
+ "list[current_player;main;4,4;1,5;]"..
+ "box[2,5;3,2;#ffff00]"..
+ "image[1,10;3,2;testformspec_item.png]"..
+ "image[3,1;testformspec_item.png]"..
+ "item_image[2,6;3,2;testformspec:node]"..
+ "label[2,15;bla Bli\nfoo bar]"..
+ "item_image_button[2,3;1,1;testformspec:node;itemimagebutton;ItemImageButton]"..
+ "tooltip[0,11;3,2;Buz;#f00;#000]"..
+ "box[0,11;3,2;#00ff00]"..
+ "hypertext[3,13;3,3;;" .. hypertext_basic .. "]" ..
+ "hypertext[3,17;3,3;;Hypertext with no scrollbar\\; the scroll container should scroll.]" ..
+ "textarea[3,21;3,1;textarea;;More scroll within scroll]" ..
+ "container[0,18]"..
+ "box[1,2;3,2;#0a0a]"..
+ "scroll_container[1,2;3,2;scrbar2;horizontal;0.06]"..
+ "button[0,0;6,1;butnest;Nest]"..
+ "label[10,0.5;nest]"..
+ "scroll_container_end[]"..
+ "scrollbar[1,0;3.5,0.3;horizontal;scrbar2;0]"..
+ "container_end[]"..
+ "dropdown[0,6;2;hmdrpdwn;apple,bulb;1]"..
+ "image_button[0,4;2,2;testformspec_button_image.png;imagebutton;bbbbtt;false;true;testformspec_pressed.png]"..
+ "box[1,22.5;4,1;#a00a]"..
+ "scroll_container_end[]"..
+ "scrollbaroptions[max=170]".. -- lowest seen pos is: 0.1*170+6=23 (factor*max+height)
+ "scrollbar[7.5,0;0.3,4;vertical;scrbar;0]"..
+ "scrollbar[8,0;0.3,4;vertical;scrbarhmmm;0]"..
+ "dropdown[0,6;2;hmdrpdwnnn;Outside,of,container;1]"
+
+--style_type[label;textcolor=green]
+--label[0,0;Green]
+--style_type[label;textcolor=blue]
+--label[0,1;Blue]
+--style_type[label;textcolor=;border=true]
+--label[1.2,0;Border]
+--style_type[label;border=true;bgcolor=red]
+--label[1.2,1;Background]
+--style_type[label;border=;bgcolor=]
+--label[0.75,2;Reset]
+
+local window = {
+ sizex = 12,
+ sizey = 13,
+ positionx = 0.5,
+ positiony = 0.5,
+ anchorx = 0.5,
+ anchory = 0.5,
+ paddingx = 0.05,
+ paddingy = 0.05
+}
+
+local pages = {
+ -- Real Coordinates
+ [[
+ formspec_version[3]
+ size[12,13]
+ image_button[0,0;1,1;logo.png;rc_image_button_1x1;1x1]
+ image_button[1,0;2,2;logo.png;rc_image_button_2x2;2x2]
+ button[0,2;1,1;rc_button_1x1;1x1]
+ button[1,2;2,2;rc_button_2x2;2x2]
+ item_image[0,4;1,1;air]
+ item_image[1,4;2,2;air]
+ item_image_button[0,6;1,1;testformspec:node;rc_item_image_button_1x1;1x1]
+ item_image_button[1,6;2,2;testformspec:node;rc_item_image_button_2x2;2x2]
+ field[3,.5;3,.5;rc_field;Field;text]
+ pwdfield[6,.5;3,1;rc_pwdfield;Password Field]
+ field[3,1;3,1;;Read-Only Field;text]
+ textarea[3,2;3,.5;rc_textarea_small;Textarea;text]
+ textarea[6,2;3,2;rc_textarea_big;Textarea;text\nmore text]
+ textarea[3,3;3,1;;Read-Only Textarea;text\nmore text]
+ textlist[3,4;3,2;rc_textlist;Textlist,Perfect Coordinates;1;false]
+ tableoptions[highlight=#ABCDEF75;background=#00000055;border=false]
+ table[6,4;3,2;rc_table;Table,Cool Stuff,Foo,Bar;2]
+ dropdown[3,6;3,1;rc_dropdown_small;This,is,a,dropdown;1]
+ dropdown[6,6;3,2;rc_dropdown_big;I,am,a,bigger,dropdown;5]
+ image[0,8;3,2;ignore.png]
+ box[3,7;3,1;#00A3FF]
+ checkbox[3,8;rc_checkbox_1;Check me!;false]
+ checkbox[3,9;rc_checkbox_2;Uncheck me now!;true]
+ scrollbar[0,11.5;11.5,.5;horizontal;rc_scrollbar_horizontal;500]
+ scrollbar[11.5,0;.5,11.5;vertical;rc_scrollbar_vertical;0]
+ list[current_player;main;6,8;3,2;1]
+ button[9,0;2.5,1;rc_empty_button_1;]
+ button[9,1;2.5,1;rc_empty_button_2;]
+ button[9,2;2.5,1;rc_empty_button_3;] ]]..
+ "label[9,0.5;This is a label.\nLine\nLine\nLine\nEnd]"..
+ [[button[9,3;1,1;rc_empty_button_4;]
+ vertlabel[9,4;VERT]
+ label[10,3;HORIZ]
+ tabheader[8,0;6,0.65;rc_tabheader;Tab 1,Tab 2,Tab 3,Secrets;1;false;false]
+ ]],
+ -- Style
+
+ "formspec_version[3]size[12,13]" ..
+ ("label[0.375,0.375;Styled - %s %s]"):format(
+ color("#F00", "red text"),
+ color("#77FF00CC", "green text")) ..
+ "label[6.375,0.375;Unstyled]" ..
+ "box[0,0.75;12,0.1;#999]" ..
+ "box[6,0.85;0.1,11.15;#999]" ..
+ "container[0.375,1.225]" ..
+ style_fs ..
+ "container_end[]container[6.375,1.225]" ..
+ style_fs:gsub("one_", "two_"):gsub("style%[[^%]]+%]", ""):gsub("style_type%[[^%]]+%]", "") ..
+ "container_end[]",
+
+ -- Noclip
+ "formspec_version[3]size[12,13]" ..
+ "label[0.1,0.5;Clip]" ..
+ "container[-2.5,1]" .. clip_fs:gsub("%%c", "false") .. "container_end[]" ..
+ "label[11,0.5;Noclip]" ..
+ "container[11.5,1]" .. clip_fs:gsub("%%c", "true") .. "container_end[]",
+
+ -- Hypertext
+ "size[12,13]real_coordinates[true]" ..
+ "container[0.5,0.5]" .. hypertext_fs .. "container_end[]",
+
+ -- Tabheaders
+ "size[12,13]real_coordinates[true]" ..
+ "container[0.5,1.5]" .. tabheaders_fs .. "container_end[]",
+
+ -- Inv
+ "size[12,13]real_coordinates[true]" .. inv_style_fs,
+
+ -- Window
+ function()
+ return "formspec_version[3]" ..
+ string.format("size[%s,%s]position[%s,%s]anchor[%s,%s]padding[%s,%s]",
+ window.sizex, window.sizey, window.positionx, window.positiony,
+ window.anchorx, window.anchory, window.paddingx, window.paddingy) ..
+ string.format("field[0.5,0.5;2.5,0.5;sizex;X Size;%s]field[3.5,0.5;2.5,0.5;sizey;Y Size;%s]" ..
+ "field[0.5,1.5;2.5,0.5;positionx;X Position;%s]field[3.5,1.5;2.5,0.5;positiony;Y Position;%s]" ..
+ "field[0.5,2.5;2.5,0.5;anchorx;X Anchor;%s]field[3.5,2.5;2.5,0.5;anchory;Y Anchor;%s]" ..
+ "field[0.5,3.5;2.5,0.5;paddingx;X Padding;%s]field[3.5,3.5;2.5,0.5;paddingy;Y Padding;%s]" ..
+ "button[2,4.5;2.5,0.5;submit_window;Submit]",
+ window.sizex, window.sizey, window.positionx, window.positiony,
+ window.anchorx, window.anchory, window.paddingx, window.paddingy) ..
+ "field_close_on_enter[sizex;false]field_close_on_enter[sizey;false]" ..
+ "field_close_on_enter[positionx;false]field_close_on_enter[positiony;false]" ..
+ "field_close_on_enter[anchorx;false]field_close_on_enter[anchory;false]" ..
+ "field_close_on_enter[paddingx;false]field_close_on_enter[paddingy;false]"
+ end,
+
+ -- Animation
+ [[
+ formspec_version[6]
+ size[12,13]
+ animated_image[0.5,0.5;1,1;;testformspec_animation.png;4;100]
+ animated_image[0.5,1.75;1,1;;testformspec_animation.jpg;4;100]
+ animated_image[1.75,0.5;1,1;;testformspec_animation.png;100;100]
+ animated_image[3,0.5;1,1;ani_img_1;testformspec_animation.png;4;1000]
+ image[0.5,3;1,1;testformspec_bg.png;1]
+ animated_image[0.5,4.25;1,1;;[combine:16x48:0,0=testformspec_bg.png:0,16=testformspec_bg_hovered.png:0,32=testformspec_bg_pressed.png;3;250;1;1]
+ image[0.5,5.5;2,1;testformspec_9slice.png;16,0,-16,-16]
+ animated_image[2.75,5.5;1.5,0.5;;[combine:300x140:0,0=testformspec_9slice.png:0,70=(testformspec_9slice.png^[transformFX);2;500;1;16,0,-16,-16]
+ button[4.25,0.5;1,1;ani_btn_1;Current
+Number]
+ animated_image[3,1.75;1,1;ani_img_2;testformspec_animation.png;4;1000;2]
+ button[4.25,1.75;1,1;ani_btn_2;Current
+Number]
+ animated_image[3,3;1,1;;testformspec_animation.png;4;0]
+ animated_image[3,4.25;1,1;;testformspec_animation.png;4;0;3]
+ 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]
+ 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]
+ ]],
+
+ -- Background
+ [[
+ formspec_version[3]
+ size[12,13]
+ box[0,0;12,13;#f0f1]
+ background[0,0;0,0;testformspec_bg.png;true]
+ box[3.9,2.9;6.2,4.2;#d00f]
+ scroll_container[4,3;6,4;scrbar;vertical]
+ background9[1,0.5;0,0;testformspec_bg_9slice.png;true;4,6]
+ label[0,0.2;Backgrounds are not be applied to scroll containers,]
+ label[0,0.5;but to the whole form.]
+ scroll_container_end[]
+ scrollbar[3.5,3;0.3,4;vertical;scrbar;0]
+ container[2,11]
+ box[-0.1,0.5;3.2,1;#fff5]
+ background[0,0;2,3;testformspec_bg.png;false]
+ background9[1,0;2,3;testformspec_bg_9slice.png;false;4,6]
+ container_end[]
+ ]],
+
+ -- Unsized
+ [[
+ formspec_version[3]
+ background9[0,0;0,0;testformspec_bg_9slice.png;true;4,6]
+ background[1,1;0,0;testformspec_bg.png;true]
+ ]],
+}
+
+local page_id = 2
+local function show_test_formspec(pname)
+ local page = pages[page_id]
+ if type(page) == "function" then
+ page = page()
+ end
+
+ local fs = page .. "tabheader[0,0;11,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Invs,Window,Anim,Model,ScrollC,Sound,Background,Unsized;" .. page_id .. ";false;false]"
+
+ minetest.show_formspec(pname, "testformspec:formspec", fs)
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname ~= "testformspec:formspec" then
+ return false
+ end
+
+ if fields.maintabs then
+ page_id = tonumber(fields.maintabs)
+ show_test_formspec(player:get_player_name())
+ return true
+ end
+
+ if fields.ani_img_1 and fields.ani_btn_1 then
+ minetest.chat_send_player(player:get_player_name(), "ani_img_1 = " .. tostring(fields.ani_img_1))
+ return true
+ elseif fields.ani_img_2 and fields.ani_btn_2 then
+ minetest.chat_send_player(player:get_player_name(), "ani_img_2 = " .. tostring(fields.ani_img_2))
+ return true
+ end
+
+ if fields.hypertext then
+ minetest.chat_send_player(player:get_player_name(), "Hypertext action received: " .. tostring(fields.hypertext))
+ return true
+ end
+
+ for name, value in pairs(fields) do
+ if window[name] then
+ print(name, window[name])
+ local num_val = tonumber(value) or 0
+
+ if name == "sizex" and num_val < 4 then
+ num_val = 6.5
+ elseif name == "sizey" and num_val < 5 then
+ num_val = 5.5
+ end
+
+ window[name] = num_val
+ print(name, window[name])
+ end
+ end
+
+ if fields.submit_window then
+ show_test_formspec(player:get_player_name())
+ end
+end)
+
+minetest.register_chatcommand("test_formspec", {
+ params = "",
+ description = "Open the test formspec",
+ func = function(name)
+ if not minetest.get_player_by_name(name) then
+ return false, "You need to be online!"
+ end
+
+ show_test_formspec(name)
+ return true
+ end,
+})
diff --git a/games/devtest/mods/testformspec/init.lua b/games/devtest/mods/testformspec/init.lua
new file mode 100644
index 000000000..23b565f08
--- /dev/null
+++ b/games/devtest/mods/testformspec/init.lua
@@ -0,0 +1,3 @@
+dofile(minetest.get_modpath("testformspec").."/dummy_items.lua")
+dofile(minetest.get_modpath("testformspec").."/formspec.lua")
+dofile(minetest.get_modpath("testformspec").."/callbacks.lua")
diff --git a/games/devtest/mods/testformspec/mod.conf b/games/devtest/mods/testformspec/mod.conf
new file mode 100644
index 000000000..00eac307a
--- /dev/null
+++ b/games/devtest/mods/testformspec/mod.conf
@@ -0,0 +1,2 @@
+name = testformspec
+description = Contains an example formspec to test all the features of formspecs
diff --git a/games/devtest/mods/testformspec/models/testformspec_character.b3d b/games/devtest/mods/testformspec/models/testformspec_character.b3d
new file mode 100644
index 000000000..8edbaf637
--- /dev/null
+++ b/games/devtest/mods/testformspec/models/testformspec_character.b3d
Binary files differ
diff --git a/games/devtest/mods/testformspec/models/testformspec_chest.obj b/games/devtest/mods/testformspec/models/testformspec_chest.obj
new file mode 100644
index 000000000..72ba175a0
--- /dev/null
+++ b/games/devtest/mods/testformspec/models/testformspec_chest.obj
@@ -0,0 +1,79 @@
+# Blender v2.78 (sub 0) OBJ File: 'chest-open.blend'
+# www.blender.org
+o Top_Cube.002_None_Top_Cube.002_None_bottom
+v -0.500000 0.408471 0.720970
+v -0.500000 1.115578 0.013863
+v -0.500000 0.894607 -0.207108
+v -0.500000 0.187501 0.499999
+v 0.500000 1.115578 0.013863
+v 0.500000 0.408471 0.720970
+v 0.500000 0.187501 0.499999
+v 0.500000 0.894607 -0.207108
+v -0.500000 0.187500 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 0.187500 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 0.0000 1.0000
+vt 1.0000 1.0000
+vt 1.0000 0.6875
+vt 0.0000 0.6875
+vt 1.0000 1.0000
+vt 0.0000 0.6875
+vt 1.0000 0.6875
+vt 1.0000 0.6875
+vt 1.0000 0.0000
+vt 0.0000 0.0000
+vt 1.0000 0.6875
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 1.0000 0.6875
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vt 0.0000 0.6875
+vt 0.0000 0.6875
+vt 0.0000 0.0000
+vt 1.0000 0.5000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.7071 0.7071
+vn -0.0000 -1.0000 -0.0000
+vn -1.0000 0.0000 0.0000
+vn 1.0000 0.0000 -0.0000
+vn 0.0000 -0.7071 0.7071
+vn 0.0000 0.0000 1.0000
+vn -0.0000 0.7071 -0.7071
+vn -0.0000 0.0000 -1.0000
+vn -0.0000 -0.7071 -0.7071
+vn -0.0000 1.0000 -0.0000
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Top
+s off
+f 6/1/1 5/2/1 2/3/1 1/4/1
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Bottom
+f 11/5/2 10/6/2 14/7/2 13/8/2
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Right-Left
+f 1/9/3 2/10/3 3/11/3 4/12/3
+f 5/13/4 6/1/4 7/14/4 8/15/4
+f 4/12/3 9/16/3 10/17/3 11/18/3
+f 12/19/4 7/14/4 13/8/4 14/20/4
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Back
+f 6/21/5 1/9/5 4/12/5 7/22/5
+f 7/22/6 4/12/6 11/18/6 13/23/6
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Front
+f 2/10/7 5/24/7 8/25/7 3/11/7
+f 9/16/8 12/26/8 14/27/8 10/17/8
+g Top_Cube.002_None_Top_Cube.002_None_bottom_Top_Cube.002_None_Top_Cube.002_None_bottom_Inside
+f 4/28/9 3/29/9 8/30/9 7/31/9
+f 7/31/10 12/32/10 9/33/10 4/28/10
diff --git a/games/devtest/mods/testformspec/textures/default_chest_front.png b/games/devtest/mods/testformspec/textures/default_chest_front.png
new file mode 100644
index 000000000..85227d8fd
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/default_chest_front.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/default_chest_inside.png b/games/devtest/mods/testformspec/textures/default_chest_inside.png
new file mode 100644
index 000000000..5f7b6b132
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/default_chest_inside.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/default_chest_side.png b/games/devtest/mods/testformspec/textures/default_chest_side.png
new file mode 100644
index 000000000..44a65a43d
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/default_chest_side.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/default_chest_top.png b/games/devtest/mods/testformspec/textures/default_chest_top.png
new file mode 100644
index 000000000..f4a92ee07
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/default_chest_top.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_9slice.png b/games/devtest/mods/testformspec/textures/testformspec_9slice.png
new file mode 100644
index 000000000..70b6412a4
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_9slice.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_animation.jpg b/games/devtest/mods/testformspec/textures/testformspec_animation.jpg
new file mode 100644
index 000000000..b98ca2677
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_animation.jpg
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_animation.png b/games/devtest/mods/testformspec/textures/testformspec_animation.png
new file mode 100644
index 000000000..b972e5dbb
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_animation.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg.png b/games/devtest/mods/testformspec/textures/testformspec_bg.png
new file mode 100644
index 000000000..cd1e50900
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg_9slice.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice.png
new file mode 100644
index 000000000..34433ac82
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.png
new file mode 100644
index 000000000..01c2dc777
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.png
new file mode 100644
index 000000000..0cbac7536
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_bg_hovered.png
new file mode 100644
index 000000000..3ebbb988c
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg_hovered.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_bg_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_bg_pressed.png
new file mode 100644
index 000000000..2fb5fc21e
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_bg_pressed.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_button_image.png b/games/devtest/mods/testformspec/textures/testformspec_button_image.png
new file mode 100644
index 000000000..75c438a9a
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_button_image.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_character.png b/games/devtest/mods/testformspec/textures/testformspec_character.png
new file mode 100644
index 000000000..05021781e
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_character.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_hovered.png
new file mode 100644
index 000000000..3ccad30a2
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_hovered.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_item.png b/games/devtest/mods/testformspec/textures/testformspec_item.png
new file mode 100644
index 000000000..4fd823b55
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_item.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_node.png b/games/devtest/mods/testformspec/textures/testformspec_node.png
new file mode 100644
index 000000000..c107f28a3
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_node.png
Binary files differ
diff --git a/games/devtest/mods/testformspec/textures/testformspec_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_pressed.png
new file mode 100644
index 000000000..45c504f27
--- /dev/null
+++ b/games/devtest/mods/testformspec/textures/testformspec_pressed.png
Binary files differ
diff --git a/games/devtest/mods/testhud/init.lua b/games/devtest/mods/testhud/init.lua
new file mode 100644
index 000000000..2fa12fd71
--- /dev/null
+++ b/games/devtest/mods/testhud/init.lua
@@ -0,0 +1,81 @@
+local player_huds = {}
+
+local states = {
+ {0, "Normal font"},
+ {1, "Bold font"},
+ {2, "Italic font"},
+ {3, "Bold and italic font"},
+ {4, "Monospace font"},
+ {5, "Bold and monospace font"},
+ {7, "ZOMG all the font styles"},
+}
+
+
+local default_def = {
+ hud_elem_type = "text",
+ position = {x = 0.5, y = 0.5},
+ scale = {x = 2, y = 2},
+ alignment = { x = 0, y = 0 },
+}
+
+local function add_hud(player, state)
+ local def = table.copy(default_def)
+ local statetbl = states[state]
+ def.offset = {x = 0, y = 32 * state}
+ def.style = statetbl[1]
+ def.text = statetbl[2]
+ return player:hud_add(def)
+end
+
+minetest.register_on_leaveplayer(function(player)
+ player_huds[player:get_player_name()] = nil
+end)
+
+local etime = 0
+local state = 0
+
+minetest.register_globalstep(function(dtime)
+ etime = etime + dtime
+ if etime < 1 then
+ return
+ end
+ etime = 0
+ for _, player in ipairs(minetest.get_connected_players()) do
+ local huds = player_huds[player:get_player_name()]
+ if huds then
+ for i, hud_id in ipairs(huds) do
+ local statetbl = states[(state + i) % #states + 1]
+ player:hud_change(hud_id, "style", statetbl[1])
+ player:hud_change(hud_id, "text", statetbl[2])
+ end
+ end
+ end
+ state = state + 1
+end)
+
+minetest.register_chatcommand("hudfonts", {
+ params = "",
+ description = "Show/Hide some text on the HUD with various font options",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ local param = tonumber(param) or 0
+ param = math.min(math.max(param, 1), #states)
+ if player_huds[name] == nil then
+ player_huds[name] = {}
+ for i = 1, param do
+ table.insert(player_huds[name], add_hud(player, i))
+ end
+ minetest.chat_send_player(name, ("%d HUD element(s) added."):format(param))
+ else
+ local huds = player_huds[name]
+ if huds then
+ for _, hud_id in ipairs(huds) do
+ player:hud_remove(hud_id)
+ end
+ minetest.chat_send_player(name, "All HUD elements removed.")
+ end
+ player_huds[name] = nil
+ end
+ return true
+ end,
+})
diff --git a/games/devtest/mods/testhud/mod.conf b/games/devtest/mods/testhud/mod.conf
new file mode 100644
index 000000000..ed9f65c59
--- /dev/null
+++ b/games/devtest/mods/testhud/mod.conf
@@ -0,0 +1,2 @@
+name = testhud
+description = For testing HUD functionality
diff --git a/games/devtest/mods/testitems/init.lua b/games/devtest/mods/testitems/init.lua
new file mode 100644
index 000000000..33ebf50fc
--- /dev/null
+++ b/games/devtest/mods/testitems/init.lua
@@ -0,0 +1,55 @@
+local S = minetest.get_translator("testitems")
+
+--
+-- Texture overlays for items
+--
+
+-- For the global overlay color test
+local GLOBAL_COLOR_ARG = "orange"
+
+-- Punch handler to set random color with "color" argument in item metadata
+local overlay_on_use = function(itemstack, user, pointed_thing)
+ local meta = itemstack:get_meta()
+ local color = math.random(0x0, 0xFFFFFF)
+ local colorstr = string.format("#%06x", color)
+ meta:set_string("color", colorstr)
+ minetest.log("action", "[testitems] Color of "..itemstack:get_name().." changed to "..colorstr)
+ return itemstack
+end
+-- Place handler to clear item metadata color
+local overlay_on_place = function(itemstack, user, pointed_thing)
+ local meta = itemstack:get_meta()
+ meta:set_string("color", "")
+ return itemstack
+end
+
+minetest.register_craftitem("testitems:overlay_meta", {
+ description = S("Texture Overlay Test Item, Meta Color") .. "\n" ..
+ S("Image must be a square with rainbow cross (inventory and wield)") .. "\n" ..
+ S("Item meta color must only change square color") .. "\n" ..
+ S("Punch: Set random color") .. "\n" ..
+ S("Place: Clear color"),
+ -- Base texture: A grayscale square (can be colorized)
+ inventory_image = "testitems_overlay_base.png",
+ wield_image = "testitems_overlay_base.png",
+ -- Overlay: A rainbow cross (NOT to be colorized!)
+ inventory_overlay = "testitems_overlay_overlay.png",
+ wield_overlay = "testitems_overlay_overlay.png",
+
+ on_use = overlay_on_use,
+ on_place = overlay_on_place,
+ on_secondary_use = overlay_on_place,
+})
+minetest.register_craftitem("testitems:overlay_global", {
+ description = S("Texture Overlay Test Item, Global Color") .. "\n" ..
+ S("Image must be an orange square with rainbow cross (inventory and wield)"),
+ -- Base texture: A grayscale square (to be colorized)
+ inventory_image = "testitems_overlay_base.png",
+ wield_image = "testitems_overlay_base.png",
+ -- Overlay: A rainbow cross (NOT to be colorized!)
+ inventory_overlay = "testitems_overlay_overlay.png",
+ wield_overlay = "testitems_overlay_overlay.png",
+ color = GLOBAL_COLOR_ARG,
+})
+
+
diff --git a/games/devtest/mods/testitems/mod.conf b/games/devtest/mods/testitems/mod.conf
new file mode 100644
index 000000000..f91febe01
--- /dev/null
+++ b/games/devtest/mods/testitems/mod.conf
@@ -0,0 +1,2 @@
+name = testitems
+description = Test mod to test misc. items that are neither tools nor nodes
diff --git a/games/devtest/mods/testitems/textures/testitems_overlay_base.png b/games/devtest/mods/testitems/textures/testitems_overlay_base.png
new file mode 100644
index 000000000..f473623be
--- /dev/null
+++ b/games/devtest/mods/testitems/textures/testitems_overlay_base.png
Binary files differ
diff --git a/games/devtest/mods/testitems/textures/testitems_overlay_overlay.png b/games/devtest/mods/testitems/textures/testitems_overlay_overlay.png
new file mode 100644
index 000000000..75a7d9fc3
--- /dev/null
+++ b/games/devtest/mods/testitems/textures/testitems_overlay_overlay.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/README.md b/games/devtest/mods/testnodes/README.md
new file mode 100644
index 000000000..13ed972c0
--- /dev/null
+++ b/games/devtest/mods/testnodes/README.md
@@ -0,0 +1,11 @@
+# Test Nodes
+
+This mod contains a bunch of basic nodes to test development stuff.
+Most nodes are kept as minimal as possible in order to show off one particular feature of the engine, to make testing stuff easier.
+
+This mod includes tests for:
+
+* drawtypes
+* paramtype2's
+* node properties such as damage, drowning, falling, etc.
+* other random stuff
diff --git a/games/devtest/mods/testnodes/drawtypes.lua b/games/devtest/mods/testnodes/drawtypes.lua
new file mode 100644
index 000000000..208774f6c
--- /dev/null
+++ b/games/devtest/mods/testnodes/drawtypes.lua
@@ -0,0 +1,629 @@
+--[[ Drawtype Test: This file tests out and provides examples for
+all drawtypes in Minetest. It is attempted to keep the node
+definitions as simple and minimal as possible to keep
+side-effects to a minimum.
+
+How to read the node definitions:
+There are two parts which are separated by 2 newlines:
+The first part contains the things that are more or less essential
+for defining the drawtype (except description, which is
+at the top for readability).
+The second part (after the 2 newlines) contains stuff that are
+unrelated to the drawtype, stuff that is mostly there to make
+testing this node easier and more convenient.
+]]
+
+local S = minetest.get_translator("testnodes")
+
+-- A regular cube
+minetest.register_node("testnodes:normal", {
+ description = S("Normal Drawtype Test Node"),
+ drawtype = "normal",
+ tiles = { "testnodes_normal.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+-- Standard glasslike node
+minetest.register_node("testnodes:glasslike", {
+ description = S("Glasslike Drawtype Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ tiles = { "testnodes_glasslike.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+-- Glasslike framed with the two textures (normal and "detail")
+minetest.register_node("testnodes:glasslike_framed", {
+ description = S("Glasslike Framed Drawtype Test Node"),
+ drawtype = "glasslike_framed",
+ paramtype = "light",
+ tiles = {
+ "testnodes_glasslike_framed.png",
+ "testnodes_glasslike_detail.png",
+ },
+
+
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+-- Like the one above, but without the "detail" texture (texture 2).
+-- This node was added to see how the engine behaves when the "detail" texture
+-- is missing.
+minetest.register_node("testnodes:glasslike_framed_no_detail", {
+ description = S("Glasslike Framed without Detail Drawtype Test Node"),
+ drawtype = "glasslike_framed",
+ paramtype = "light",
+ tiles = { "testnodes_glasslike_framed2.png" },
+
+
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+
+minetest.register_node("testnodes:glasslike_framed_optional", {
+ description = S("Glasslike Framed Optional Drawtype Test Node"),
+ drawtype = "glasslike_framed_optional",
+ paramtype = "light",
+ tiles = {
+ "testnodes_glasslike_framed_optional.png",
+ "testnodes_glasslike_detail.png",
+ },
+
+
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+
+
+minetest.register_node("testnodes:allfaces", {
+ description = S("Allfaces Drawtype Test Node"),
+ drawtype = "allfaces",
+ paramtype = "light",
+ tiles = { "testnodes_allfaces.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:allfaces_optional", {
+ description = S("Allfaces Optional Drawtype Test Node"),
+ drawtype = "allfaces_optional",
+ paramtype = "light",
+ tiles = { "testnodes_allfaces_optional.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:allfaces_optional_waving", {
+ description = S("Waving Allfaces Optional Drawtype Test Node"),
+ drawtype = "allfaces_optional",
+ paramtype = "light",
+ tiles = { "testnodes_allfaces_optional.png^[brighten" },
+ waving = 2,
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:firelike", {
+ description = S("Firelike Drawtype Test Node"),
+ drawtype = "firelike",
+ paramtype = "light",
+ tiles = { "testnodes_firelike.png" },
+
+
+ walkable = false,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:fencelike", {
+ description = S("Fencelike Drawtype Test Node"),
+ drawtype = "fencelike",
+ paramtype = "light",
+ tiles = { "testnodes_fencelike.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:torchlike", {
+ description = S("Floor Torchlike Drawtype Test Node"),
+ drawtype = "torchlike",
+ paramtype = "light",
+ tiles = { "testnodes_torchlike_floor.png^[colorize:#FF0000:64" },
+
+
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:torchlike_wallmounted", {
+ description = S("Wallmounted Torchlike Drawtype Test Node"),
+ drawtype = "torchlike",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ tiles = {
+ "testnodes_torchlike_floor.png",
+ "testnodes_torchlike_ceiling.png",
+ "testnodes_torchlike_wall.png",
+ },
+
+
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:signlike", {
+ description = S("Floor Signlike Drawtype Test Node"),
+ drawtype = "signlike",
+ paramtype = "light",
+ tiles = { "testnodes_signlike.png^[colorize:#FF0000:64" },
+
+
+ walkable = false,
+ groups = { dig_immediate = 3 },
+ sunlight_propagates = true,
+})
+
+
+minetest.register_node("testnodes:signlike_wallmounted", {
+ description = S("Wallmounted Signlike Drawtype Test Node"),
+ drawtype = "signlike",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ tiles = { "testnodes_signlike.png" },
+
+
+ walkable = false,
+ groups = { dig_immediate = 3 },
+ sunlight_propagates = true,
+})
+
+minetest.register_node("testnodes:plantlike", {
+ description = S("Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = { "testnodes_plantlike.png" },
+
+
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:plantlike_waving", {
+ description = S("Waving Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = { "testnodes_plantlike_waving.png" },
+ waving = 1,
+
+
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:plantlike_wallmounted", {
+ description = S("Wallmounted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ tiles = { "testnodes_plantlike_wallmounted.png" },
+ leveled = 1,
+
+
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+
+-- param2 will rotate
+local function rotate_on_rightclick(pos, node, clicker)
+ local def = minetest.registered_nodes[node.name]
+ local aux1 = clicker:get_player_control().aux1
+
+ local deg, deg_max
+ local color, color_mult = 0, 0
+ if def.paramtype2 == "degrotate" then
+ deg = node.param2
+ deg_max = 240
+ elseif def.paramtype2 == "colordegrotate" then
+ -- MSB [3x color, 5x rotation] LSB
+ deg = node.param2 % 2^5
+ deg_max = 24
+ color_mult = 2^5
+ color = math.floor(node.param2 / color_mult)
+ end
+
+ deg = (deg + (aux1 and 10 or 1)) % deg_max
+ node.param2 = color * color_mult + deg
+ minetest.swap_node(pos, node)
+ minetest.chat_send_player(clicker:get_player_name(),
+ "Rotation is now " .. deg .. " / " .. deg_max)
+end
+
+minetest.register_node("testnodes:plantlike_degrotate", {
+ description = S("Degrotate Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "degrotate",
+ tiles = { "testnodes_plantlike_degrotate.png" },
+
+ on_rightclick = rotate_on_rightclick,
+ place_param2 = 7,
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:mesh_degrotate", {
+ description = S("Degrotate Mesh Drawtype Test Node"),
+ drawtype = "mesh",
+ paramtype = "light",
+ paramtype2 = "degrotate",
+ mesh = "testnodes_ocorner.obj",
+ tiles = { "testnodes_mesh_stripes2.png" },
+
+ on_rightclick = rotate_on_rightclick,
+ place_param2 = 10, -- 15°
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:mesh_colordegrotate", {
+ description = S("Color Degrotate Mesh Drawtype Test Node"),
+ drawtype = "mesh",
+ paramtype = "light",
+ paramtype2 = "colordegrotate",
+ palette = "testnodes_palette_facedir.png",
+ mesh = "testnodes_ocorner.obj",
+ tiles = { "testnodes_mesh_stripes3.png" },
+
+ on_rightclick = rotate_on_rightclick,
+ -- color index 1, 1 step (=15°) rotated
+ place_param2 = 1 * 2^5 + 1,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+-- param2 will change height
+minetest.register_node("testnodes:plantlike_leveled", {
+ description = S("Leveled Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "leveled",
+ tiles = {
+ { name = "testnodes_plantlike_leveled.png", tileable_vertical = true },
+ },
+
+
+ -- We set a default param2 here only for convenience, to make the "plant" visible after placement
+ place_param2 = 8,
+ walkable = false,
+ sunlight_propagates = true,
+ groups = { dig_immediate = 3 },
+})
+
+-- param2 changes shape
+minetest.register_node("testnodes:plantlike_meshoptions", {
+ description = S("Meshoptions Plantlike Drawtype Test Node"),
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "meshoptions",
+ tiles = { "testnodes_plantlike_meshoptions.png" },
+
+
+ walkable = false,
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:plantlike_rooted", {
+ description = S("Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ tiles = { "testnodes_plantlike_rooted_base.png" },
+ special_tiles = { "testnodes_plantlike_rooted.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:plantlike_rooted_wallmounted", {
+ description = S("Wallmounted Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ tiles = {
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base_side_wallmounted.png" },
+ special_tiles = { "testnodes_plantlike_rooted_wallmounted.png" },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:plantlike_rooted_waving", {
+ description = S("Waving Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ tiles = {
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base_side_waving.png",
+ },
+ special_tiles = { "testnodes_plantlike_rooted_waving.png" },
+ waving = 1,
+
+ groups = { dig_immediate = 3 },
+})
+
+-- param2 changes height
+minetest.register_node("testnodes:plantlike_rooted_leveled", {
+ description = S("Leveled Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ paramtype2 = "leveled",
+ tiles = {
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base_side_leveled.png",
+ },
+ special_tiles = {
+ { name = "testnodes_plantlike_rooted_leveled.png", tileable_vertical = true },
+ },
+
+
+ -- We set a default param2 here only for convenience, to make the "plant" visible after placement
+ place_param2 = 8,
+ groups = { dig_immediate = 3 },
+})
+
+-- param2 changes shape
+minetest.register_node("testnodes:plantlike_rooted_meshoptions", {
+ description = S("Meshoptions Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ paramtype2 = "meshoptions",
+ tiles = {
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base_side_meshoptions.png",
+ },
+ special_tiles = {
+ "testnodes_plantlike_rooted_meshoptions.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+-- param2 changes rotation
+minetest.register_node("testnodes:plantlike_rooted_degrotate", {
+ description = S("Degrotate Rooted Plantlike Drawtype Test Node"),
+ drawtype = "plantlike_rooted",
+ paramtype = "light",
+ paramtype2 = "degrotate",
+ tiles = {
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base.png",
+ "testnodes_plantlike_rooted_base_side_degrotate.png",
+ },
+ special_tiles = {
+ "testnodes_plantlike_rooted_degrotate.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+-- Demonstrative liquid nodes, source and flowing form.
+-- DRAWTYPE ONLY, NO LIQUID PHYSICS!
+-- Liquid ranges 0 to 8
+for r = 0, 8 do
+ minetest.register_node("testnodes:liquid_"..r, {
+ description = S("Source Liquid Drawtype Test Node, Range @1", r),
+ drawtype = "liquid",
+ paramtype = "light",
+ tiles = {
+ "testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100",
+ },
+ special_tiles = {
+ {name="testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+ {name="testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=true},
+ },
+ use_texture_alpha = "blend",
+
+
+ walkable = false,
+ liquid_range = r,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquid_flowing_"..r,
+ liquid_alternative_source = "testnodes:liquid_"..r,
+ groups = { dig_immediate = 3 },
+ })
+ minetest.register_node("testnodes:liquid_flowing_"..r, {
+ description = S("Flowing Liquid Drawtype Test Node, Range @1", r),
+ drawtype = "flowingliquid",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ tiles = {
+ "testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100",
+ },
+ special_tiles = {
+ {name="testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+ {name="testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+ },
+ use_texture_alpha = "blend",
+
+
+ walkable = false,
+ liquid_range = r,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquid_flowing_"..r,
+ liquid_alternative_source = "testnodes:liquid_"..r,
+ groups = { dig_immediate = 3 },
+ })
+
+end
+
+-- Waving liquid test (drawtype only)
+minetest.register_node("testnodes:liquid_waving", {
+ description = S("Waving Source Liquid Drawtype Test Node"),
+ drawtype = "liquid",
+ paramtype = "light",
+ tiles = {
+ "testnodes_liquidsource.png^[colorize:#0000FF:127",
+ },
+ special_tiles = {
+ {name="testnodes_liquidsource.png^[colorize:#0000FF:127", backface_culling=false},
+ {name="testnodes_liquidsource.png^[colorize:#0000FF:127", backface_culling=true},
+ },
+ use_texture_alpha = "blend",
+ waving = 3,
+
+
+ walkable = false,
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquid_flowing_waving",
+ liquid_alternative_source = "testnodes:liquid_waving",
+ groups = { dig_immediate = 3 },
+})
+minetest.register_node("testnodes:liquid_flowing_waving", {
+ description = S("Waving Flowing Liquid Drawtype Test Node"),
+ drawtype = "flowingliquid",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ tiles = {
+ "testnodes_liquidflowing.png^[colorize:#0000FF:127",
+ },
+ special_tiles = {
+ {name="testnodes_liquidflowing.png^[colorize:#0000FF:127", backface_culling=false},
+ {name="testnodes_liquidflowing.png^[colorize:#0000FF:127", backface_culling=false},
+ },
+ use_texture_alpha = "blend",
+ waving = 3,
+
+
+ walkable = false,
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquid_flowing_waving",
+ liquid_alternative_source = "testnodes:liquid_waving",
+ groups = { dig_immediate = 3 },
+})
+
+-- Invisible node
+minetest.register_node("testnodes:airlike", {
+ description = S("Airlike Drawtype Test Node"),
+ drawtype = "airlike",
+ paramtype = "light",
+
+
+ walkable = false,
+ groups = { dig_immediate = 3 },
+ sunlight_propagates = true,
+})
+
+-- param2 changes liquid height
+minetest.register_node("testnodes:glassliquid", {
+ description = S("Glasslike Liquid Level Drawtype Test Node"),
+ drawtype = "glasslike_framed",
+ paramtype = "light",
+ paramtype2 = "glasslikeliquidlevel",
+ tiles = {
+ "testnodes_glasslikeliquid.png",
+ },
+ special_tiles = {
+ "testnodes_liquid.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+-- Adding many raillike examples, primarily to demonstrate the behavior of
+-- "raillike groups". Nodes of the same type (rail, groupless, line, street)
+-- should connect to nodes of the same "rail type" (=same shape, different
+-- color) only.
+local rails = {
+ { "rail", {"testnodes_rail_straight.png", "testnodes_rail_curved.png", "testnodes_rail_t_junction.png", "testnodes_rail_crossing.png"} },
+ { "line", {"testnodes_line_straight.png", "testnodes_line_curved.png", "testnodes_line_t_junction.png", "testnodes_line_crossing.png"}, },
+ { "street", {"testnodes_street_straight.png", "testnodes_street_curved.png", "testnodes_street_t_junction.png", "testnodes_street_crossing.png"}, },
+ -- the "groupless" nodes are nodes in which the "connect_to_raillike" group is not set
+ { "groupless", {"testnodes_rail2_straight.png", "testnodes_rail2_curved.png", "testnodes_rail2_t_junction.png", "testnodes_rail2_crossing.png"} },
+}
+local colors = { "", "cyan", "red" }
+
+for r=1, #rails do
+ local id = rails[r][1]
+ local tiles = rails[r][2]
+ local raillike_group
+ if id ~= "groupless" then
+ raillike_group = minetest.raillike_group(id)
+ end
+ for c=1, #colors do
+ local color
+ if colors[c] ~= "" then
+ color = colors[c]
+ end
+ minetest.register_node("testnodes:raillike_"..id..c, {
+ description = S("Raillike Drawtype Test Node: @1 @2", id, c),
+ drawtype = "raillike",
+ paramtype = "light",
+ tiles = tiles,
+ groups = { connect_to_raillike = raillike_group, dig_immediate = 3 },
+
+
+ color = color,
+ selection_box = {
+ type = "fixed",
+ fixed = {{-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}},
+ },
+ sunlight_propagates = true,
+ walkable = false,
+ })
+ end
+end
+
+
+
+-- Add visual_scale variants of previous nodes for half and double size
+local scale = function(subname, desc_double, desc_half)
+ local original = "testnodes:"..subname
+ local def = table.copy(minetest.registered_items[original])
+ def.visual_scale = 2.0
+ def.description = desc_double
+ minetest.register_node("testnodes:"..subname.."_double", def)
+ def = table.copy(minetest.registered_items[original])
+ def.visual_scale = 0.5
+ def.description = desc_half
+ minetest.register_node("testnodes:"..subname.."_half", def)
+end
+
+scale("allfaces",
+ S("Double-sized Allfaces Drawtype Test Node"),
+ S("Half-sized Allfaces Drawtype Test Node"))
+scale("allfaces_optional",
+ S("Double-sized Allfaces Optional Drawtype Test Node"),
+ S("Half-sized Allfaces Optional Drawtype Test Node"))
+scale("allfaces_optional_waving",
+ S("Double-sized Waving Allfaces Optional Drawtype Test Node"),
+ S("Half-sized Waving Allfaces Optional Drawtype Test Node"))
+scale("plantlike",
+ S("Double-sized Plantlike Drawtype Test Node"),
+ S("Half-sized Plantlike Drawtype Test Node"))
+scale("plantlike_wallmounted",
+ S("Double-sized Wallmounted Plantlike Drawtype Test Node"),
+ S("Half-sized Wallmounted Plantlike Drawtype Test Node"))
+scale("torchlike_wallmounted",
+ S("Double-sized Wallmounted Torchlike Drawtype Test Node"),
+ S("Half-sized Wallmounted Torchlike Drawtype Test Node"))
+scale("signlike_wallmounted",
+ S("Double-sized Wallmounted Signlike Drawtype Test Node"),
+ S("Half-sized Wallmounted Signlike Drawtype Test Node"))
+scale("firelike",
+ S("Double-sized Firelike Drawtype Test Node"),
+ S("Half-sized Firelike Drawtype Test Node"))
diff --git a/games/devtest/mods/testnodes/init.lua b/games/devtest/mods/testnodes/init.lua
new file mode 100644
index 000000000..d355c4278
--- /dev/null
+++ b/games/devtest/mods/testnodes/init.lua
@@ -0,0 +1,11 @@
+local path = minetest.get_modpath(minetest.get_current_modname())
+
+dofile(path.."/drawtypes.lua")
+dofile(path.."/meshes.lua")
+dofile(path.."/nodeboxes.lua")
+dofile(path.."/param2.lua")
+dofile(path.."/properties.lua")
+dofile(path.."/liquids.lua")
+dofile(path.."/light.lua")
+dofile(path.."/textures.lua")
+dofile(path.."/overlays.lua")
diff --git a/games/devtest/mods/testnodes/light.lua b/games/devtest/mods/testnodes/light.lua
new file mode 100644
index 000000000..8ab4416d9
--- /dev/null
+++ b/games/devtest/mods/testnodes/light.lua
@@ -0,0 +1,50 @@
+-- Test Nodes: Light test
+
+local S = minetest.get_translator("testnodes")
+
+-- All possible light levels
+for i=1, minetest.LIGHT_MAX do
+ minetest.register_node("testnodes:light"..i, {
+ description = S("Light Source (@1)", i),
+ paramtype = "light",
+ light_source = i,
+
+
+ tiles ={"testnodes_light_"..i..".png"},
+ drawtype = "glasslike",
+ walkable = false,
+ sunlight_propagates = true,
+ is_ground_content = false,
+ groups = {dig_immediate=3},
+ })
+end
+
+-- Lets light through, but not sunlight, leading to a
+-- reduction in light level when light passes through
+minetest.register_node("testnodes:sunlight_filter", {
+ description = S("Sunlight Filter") .."\n"..
+ S("Lets light through, but weakens sunlight"),
+ paramtype = "light",
+
+
+ drawtype = "glasslike",
+ tiles = {
+ "testnodes_sunlight_filter.png",
+ },
+ groups = { dig_immediate = 3 },
+})
+
+-- Lets light and sunlight through without obstruction
+minetest.register_node("testnodes:sunlight_propagator", {
+ description = S("Sunlight Propagator") .."\n"..
+ S("Lets all light through"),
+ paramtype = "light",
+ sunlight_propagates = true,
+
+
+ drawtype = "glasslike",
+ tiles = {
+ "testnodes_sunlight_filter.png^[brighten",
+ },
+ groups = { dig_immediate = 3 },
+})
diff --git a/games/devtest/mods/testnodes/liquids.lua b/games/devtest/mods/testnodes/liquids.lua
new file mode 100644
index 000000000..be33814af
--- /dev/null
+++ b/games/devtest/mods/testnodes/liquids.lua
@@ -0,0 +1,134 @@
+-- Add liquids for ranges and viscosity levels 0-8
+
+for d=0, 8 do
+ minetest.register_node("testnodes:rliquid_"..d, {
+ description = "Test Liquid Source, Range "..d,
+ drawtype = "liquid",
+ tiles = {"testnodes_liquidsource_r"..d..".png"},
+ special_tiles = {
+ {name = "testnodes_liquidsource_r"..d..".png", backface_culling = false},
+ {name = "testnodes_liquidsource_r"..d..".png", backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "source",
+ liquid_alternative_flowing = "testnodes:rliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:rliquid_"..d,
+ liquid_range = d,
+ })
+
+ minetest.register_node("testnodes:rliquid_flowing_"..d, {
+ description = "Flowing Test Liquid, Range "..d,
+ drawtype = "flowingliquid",
+ tiles = {"testnodes_liquidflowing_r"..d..".png"},
+ special_tiles = {
+ {name = "testnodes_liquidflowing_r"..d..".png", backface_culling = false},
+ {name = "testnodes_liquidflowing_r"..d..".png", backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "testnodes:rliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:rliquid_"..d,
+ liquid_range = d,
+ })
+
+ if d <= 7 then
+
+ local mod = "^[colorize:#000000:127"
+ minetest.register_node("testnodes:vliquid_"..d, {
+ description = "Test Liquid Source, Viscosity/Resistance "..d,
+ drawtype = "liquid",
+ tiles = {"testnodes_liquidsource_r"..d..".png"..mod},
+ special_tiles = {
+ {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = false},
+ {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "source",
+ liquid_alternative_flowing = "testnodes:vliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:vliquid_"..d,
+ liquid_viscosity = d,
+ })
+
+ minetest.register_node("testnodes:vliquid_flowing_"..d, {
+ description = "Flowing Test Liquid, Viscosity/Resistance "..d,
+ drawtype = "flowingliquid",
+ tiles = {"testnodes_liquidflowing_r"..d..".png"..mod},
+ special_tiles = {
+ {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false},
+ {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "testnodes:vliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:vliquid_"..d,
+ liquid_viscosity = d,
+ })
+
+ mod = "^[colorize:#000000:192"
+ local v = 4
+ minetest.register_node("testnodes:vrliquid_"..d, {
+ description = "Test Liquid Source, Viscosity "..v..", Resistance "..d,
+ drawtype = "liquid",
+ tiles = {"testnodes_liquidsource_r"..d..".png"..mod},
+ special_tiles = {
+ {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = false},
+ {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "source",
+ liquid_alternative_flowing = "testnodes:vrliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:vrliquid_"..d,
+ liquid_viscosity = v,
+ move_resistance = d,
+ })
+
+ minetest.register_node("testnodes:vrliquid_flowing_"..d, {
+ description = "Flowing Test Liquid, Viscosity "..v..", Resistance "..d,
+ drawtype = "flowingliquid",
+ tiles = {"testnodes_liquidflowing_r"..d..".png"..mod},
+ special_tiles = {
+ {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false},
+ {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ is_ground_content = false,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "testnodes:vrliquid_flowing_"..d,
+ liquid_alternative_source = "testnodes:vrliquid_"..d,
+ liquid_viscosity = v,
+ move_resistance = d,
+ })
+
+ end
+
+end
diff --git a/games/devtest/mods/testnodes/meshes.lua b/games/devtest/mods/testnodes/meshes.lua
new file mode 100644
index 000000000..900abc180
--- /dev/null
+++ b/games/devtest/mods/testnodes/meshes.lua
@@ -0,0 +1,145 @@
+-- Meshes
+
+local S = minetest.get_translator("testnodes")
+
+local ocorner_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, -0.25, 0.25, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
+ }
+}
+
+local tall_pyr_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 },
+ { -0.375, -0.25, -0.375, 0.375, 0, 0.375},
+ { -0.25, 0, -0.25, 0.25, 0.25, 0.25},
+ { -0.125, 0.25, -0.125, 0.125, 0.5, 0.125}
+ }
+}
+
+-- Normal mesh
+minetest.register_node("testnodes:mesh", {
+ description = S("Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes2.png"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+
+ groups = {dig_immediate=3},
+})
+
+-- Facedir mesh: outer corner slope
+minetest.register_node("testnodes:mesh_facedir", {
+ description = S("Facedir Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_ocorner.obj",
+ tiles = {"testnodes_mesh_stripes.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ collision_box = ocorner_cbox,
+
+ groups = {dig_immediate=3},
+})
+
+minetest.register_node("testnodes:mesh_colorfacedir", {
+ description = S("Color Facedir Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_ocorner.obj",
+ tiles = {"testnodes_mesh_stripes3.png"},
+ paramtype = "light",
+ paramtype2 = "colorfacedir",
+ palette = "testnodes_palette_facedir.png",
+ collision_box = ocorner_cbox,
+
+ groups = {dig_immediate=3},
+})
+
+-- Wallmounted mesh: pyramid
+minetest.register_node("testnodes:mesh_wallmounted", {
+ description = S("Wallmounted Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes2.png"},
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ collision_box = tall_pyr_cbox,
+
+ groups = {dig_immediate=3},
+})
+
+minetest.register_node("testnodes:mesh_colorwallmounted", {
+ description = S("Color Wallmounted Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes3.png"},
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "testnodes_palette_wallmounted.png",
+ collision_box = tall_pyr_cbox,
+
+ groups = {dig_immediate=3},
+})
+
+
+minetest.register_node("testnodes:mesh_double", {
+ description = S("Double-sized Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes2.png"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+ visual_scale = 2,
+
+ groups = {dig_immediate=3},
+})
+minetest.register_node("testnodes:mesh_half", {
+ description = S("Half-sized Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes2.png"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+ visual_scale = 0.5,
+
+ groups = {dig_immediate=3},
+})
+
+minetest.register_node("testnodes:mesh_waving1", {
+ description = S("Plantlike-waving Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes4.png^[multiply:#B0FFB0"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+ waving = 1,
+
+ groups = {dig_immediate=3},
+})
+minetest.register_node("testnodes:mesh_waving2", {
+ description = S("Leaflike-waving Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes4.png^[multiply:#FFFFB0"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+ waving = 2,
+
+ groups = {dig_immediate=3},
+})
+minetest.register_node("testnodes:mesh_waving3", {
+ description = S("Liquidlike-waving Mesh Test Node"),
+ drawtype = "mesh",
+ mesh = "testnodes_pyramid.obj",
+ tiles = {"testnodes_mesh_stripes4.png^[multiply:#B0B0FF"},
+ paramtype = "light",
+ collision_box = tall_pyr_cbox,
+ waving = 3,
+
+ groups = {dig_immediate=3},
+})
diff --git a/games/devtest/mods/testnodes/mod.conf b/games/devtest/mods/testnodes/mod.conf
new file mode 100644
index 000000000..d894c3452
--- /dev/null
+++ b/games/devtest/mods/testnodes/mod.conf
@@ -0,0 +1,3 @@
+name = testnodes
+description = Contains a bunch of basic example nodes for demonstrative purposes, development and testing
+depends = stairs
diff --git a/games/devtest/mods/testnodes/models/testnodes_ocorner.obj b/games/devtest/mods/testnodes/models/testnodes_ocorner.obj
new file mode 100644
index 000000000..231d7056b
--- /dev/null
+++ b/games/devtest/mods/testnodes/models/testnodes_ocorner.obj
@@ -0,0 +1,23 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+s off
+f 3/1/1 2/2/1 4/3/1 5/4/1
+f 1/2/2 3/3/2 5/4/2
+f 1/1/3 2/3/3 3/4/3
+f 1/1/4 4/3/4 2/4/4
+f 1/2/5 5/3/5 4/4/5
diff --git a/games/devtest/mods/testnodes/models/testnodes_pyramid.obj b/games/devtest/mods/testnodes/models/testnodes_pyramid.obj
new file mode 100644
index 000000000..b305af2f8
--- /dev/null
+++ b/games/devtest/mods/testnodes/models/testnodes_pyramid.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend'
+# www.blender.org
+o Cube
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.000000 0.500000 -0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.500000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.894400 0.447200 -0.000000
+vn 0.000000 0.447200 -0.894400
+vn 0.894400 0.447200 0.000000
+vn -0.000000 0.447200 0.894400
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 3/4/2 5/5/2 4/3/2
+f 5/5/3 1/3/3 4/4/3
+f 1/4/4 5/5/4 2/3/4
+f 2/4/5 5/5/5 3/3/5
diff --git a/games/devtest/mods/testnodes/nodeboxes.lua b/games/devtest/mods/testnodes/nodeboxes.lua
new file mode 100644
index 000000000..7e966fdce
--- /dev/null
+++ b/games/devtest/mods/testnodes/nodeboxes.lua
@@ -0,0 +1,81 @@
+local S = minetest.get_translator("testnodes")
+
+-- Nodebox examples and tests.
+
+-- An simple example nodebox with one centered box
+minetest.register_node("testnodes:nodebox_fixed", {
+ description = S("Fixed Nodebox Test Node"),
+ tiles = {"testnodes_nodebox.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+-- 50% higher than a regular node
+minetest.register_node("testnodes:nodebox_overhigh", {
+ description = S("+50% high Nodebox Test Node"),
+ tiles = {"testnodes_nodebox.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 1, 0.5},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+-- 95% higher than a regular node
+minetest.register_node("testnodes:nodebox_overhigh2", {
+ description = S("+95% high Nodebox Test Node"),
+ tiles = {"testnodes_nodebox.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ -- Y max: more is possible, but glitchy
+ fixed = {-0.5, -0.5, -0.5, 0.5, 1.45, 0.5},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+-- Height of nodebox changes with its param2 value
+minetest.register_node("testnodes:nodebox_leveled", {
+ description = S("Leveled Nodebox Test Node"),
+ tiles = {"testnodes_nodebox.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "leveled",
+ node_box = {
+ type = "leveled",
+ fixed = {-0.5, 0.0, -0.5, 0.5, -0.499, 0.5},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+-- Wall-like nodebox that connects to neighbors
+minetest.register_node("testnodes:nodebox_connected", {
+ description = S("Connected Nodebox Test Node"),
+ tiles = {"testnodes_nodebox.png"},
+ groups = {connected_nodebox=1, dig_immediate=3},
+ drawtype = "nodebox",
+ paramtype = "light",
+ connects_to = {"group:connected_nodebox"},
+ connect_sides = {"front", "back", "left", "right"},
+ node_box = {
+ type = "connected",
+ fixed = {-0.125, -0.500, -0.125, 0.125, 0.500, 0.125},
+ connect_front = {-0.125, -0.500, -0.500, 0.125, 0.400, -0.125},
+ connect_back = {-0.125, -0.500, 0.125, 0.125, 0.400, 0.500},
+ connect_left = {-0.500, -0.500, -0.125, -0.125, 0.400, 0.125},
+ connect_right = {0.125, -0.500, -0.125, 0.500, 0.400, 0.125},
+ },
+})
+
diff --git a/games/devtest/mods/testnodes/overlays.lua b/games/devtest/mods/testnodes/overlays.lua
new file mode 100644
index 000000000..294e06a16
--- /dev/null
+++ b/games/devtest/mods/testnodes/overlays.lua
@@ -0,0 +1,93 @@
+local S = minetest.get_translator("testnodes")
+
+minetest.register_node("testnodes:overlay", {
+ description = S("Texture Overlay Test Node") .. "\n" ..
+ S("Uncolorized"),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_color_all", {
+ description = S("Texture Overlay Test Node, Colorized") .. "\n" ..
+ S("param2 changes color"),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_color_overlay", {
+ description = S("Texture Overlay Test Node, Colorized Overlay") .. "\n" ..
+ S("param2 changes color of overlay"),
+ tiles = {{name = "testnodes_overlayable.png", color="white"}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_color_overlayed", {
+ description = S("Texture Overlay Test Node, Colorized Base") .. "\n" ..
+ S("param2 changes color of base texture"),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png", color="white"}},
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
+
+local global_overlay_color = "#FF2000"
+minetest.register_node("testnodes:overlay_global", {
+ description = S("Texture Overlay Test Node, Global Color") .. "\n" ..
+ S("Global color = @1", global_overlay_color),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ color = global_overlay_color,
+
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_global_color_all", {
+ description = S("Texture Overlay Test Node, Global Color + Colorized") .. "\n" ..
+ S("Global color = @1", global_overlay_color) .. "\n" ..
+ S("param2 changes color"),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ color = global_overlay_color,
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_global_color_overlay", {
+ description = S("Texture Overlay Test Node, Global Color + Colorized Overlay") .. "\n" ..
+ S("Global color = @1", global_overlay_color) .. "\n" ..
+ S("param2 changes color of overlay"),
+ tiles = {{name = "testnodes_overlayable.png", color=global_overlay_color}},
+ overlay_tiles = {{name = "testnodes_overlay.png"}},
+ color = global_overlay_color,
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:overlay_global_color_overlayed", {
+ description = S("Texture Overlay Test Node, Global Color + Colorized Base") .. "\n" ..
+ S("Global color = @1", global_overlay_color) .. "\n" ..
+ S("param2 changes color of base texture"),
+ tiles = {{name = "testnodes_overlayable.png"}},
+ overlay_tiles = {{name = "testnodes_overlay.png", color=global_overlay_color}},
+ color = global_overlay_color,
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+
+
+ groups = { dig_immediate = 2 },
+})
diff --git a/games/devtest/mods/testnodes/param2.lua b/games/devtest/mods/testnodes/param2.lua
new file mode 100644
index 000000000..5d64376fa
--- /dev/null
+++ b/games/devtest/mods/testnodes/param2.lua
@@ -0,0 +1,168 @@
+-- This file is for misc. param2 tests that aren't covered in drawtypes.lua already.
+
+local S = minetest.get_translator("testnodes")
+
+minetest.register_node("testnodes:facedir", {
+ description = S("Facedir Test Node"),
+ paramtype2 = "facedir",
+ tiles = {
+ "testnodes_1.png",
+ "testnodes_2.png",
+ "testnodes_3.png",
+ "testnodes_4.png",
+ "testnodes_5.png",
+ "testnodes_6.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:facedir_nodebox", {
+ description = S("Facedir Nodebox Test Node"),
+ tiles = {
+ "testnodes_1.png",
+ "testnodes_2.png",
+ "testnodes_3.png",
+ "testnodes_4.png",
+ "testnodes_5.png",
+ "testnodes_6.png",
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.2, 0.2, 0.2},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+minetest.register_node("testnodes:wallmounted", {
+ description = S("Wallmounted Test Node"),
+ paramtype2 = "wallmounted",
+ tiles = {
+ "testnodes_1w.png",
+ "testnodes_2w.png",
+ "testnodes_3w.png",
+ "testnodes_4w.png",
+ "testnodes_5w.png",
+ "testnodes_6w.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:wallmounted_nodebox", {
+ description = S("Wallmounted Nodebox Test Node"),
+ paramtype2 = "wallmounted",
+ paramtype = "light",
+ tiles = {
+ "testnodes_1w.png",
+ "testnodes_2w.png",
+ "testnodes_3w.png",
+ "testnodes_4w.png",
+ "testnodes_5w.png",
+ "testnodes_6w.png",
+ },
+ drawtype = "nodebox",
+ node_box = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 },
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:color", {
+ description = S("Color Test Node"),
+ paramtype2 = "color",
+ palette = "testnodes_palette_full.png",
+ tiles = {
+ "testnodes_node.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:colorfacedir", {
+ description = S("Color Facedir Test Node"),
+ paramtype2 = "colorfacedir",
+ palette = "testnodes_palette_facedir.png",
+ tiles = {
+ "testnodes_1g.png",
+ "testnodes_2g.png",
+ "testnodes_3g.png",
+ "testnodes_4g.png",
+ "testnodes_5g.png",
+ "testnodes_6g.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:colorfacedir_nodebox", {
+ description = S("Color Facedir Nodebox Test Node"),
+ tiles = {
+ "testnodes_1g.png",
+ "testnodes_2g.png",
+ "testnodes_3g.png",
+ "testnodes_4g.png",
+ "testnodes_5g.png",
+ "testnodes_6g.png",
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "colorfacedir",
+ palette = "testnodes_palette_facedir.png",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.2, 0.2, 0.2},
+ },
+
+ groups = {dig_immediate=3},
+})
+
+minetest.register_node("testnodes:colorwallmounted", {
+ description = S("Color Wallmounted Test Node"),
+ paramtype2 = "colorwallmounted",
+ paramtype = "light",
+ palette = "testnodes_palette_wallmounted.png",
+ tiles = {
+ "testnodes_1wg.png",
+ "testnodes_2wg.png",
+ "testnodes_3wg.png",
+ "testnodes_4wg.png",
+ "testnodes_5wg.png",
+ "testnodes_6wg.png",
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:colorwallmounted_nodebox", {
+ description = S("Color Wallmounted Nodebox Test Node"),
+ paramtype2 = "colorwallmounted",
+ paramtype = "light",
+ palette = "testnodes_palette_wallmounted.png",
+ tiles = {
+ "testnodes_1wg.png",
+ "testnodes_2wg.png",
+ "testnodes_3wg.png",
+ "testnodes_4wg.png",
+ "testnodes_5wg.png",
+ "testnodes_6wg.png",
+ },
+ drawtype = "nodebox",
+ node_box = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 },
+ },
+
+ groups = { dig_immediate = 3 },
+})
+
diff --git a/games/devtest/mods/testnodes/properties.lua b/games/devtest/mods/testnodes/properties.lua
new file mode 100644
index 000000000..bacd555cd
--- /dev/null
+++ b/games/devtest/mods/testnodes/properties.lua
@@ -0,0 +1,397 @@
+-- Test Nodes: Node property tests
+
+local S = minetest.get_translator("testnodes")
+
+-- Is supposed to fall when it doesn't rest on solid ground
+minetest.register_node("testnodes:falling", {
+ description = S("Falling Node"),
+ tiles = {
+ "testnodes_node.png",
+ "testnodes_node.png",
+ "testnodes_node_falling.png",
+ },
+ groups = { falling_node = 1, dig_immediate = 3 },
+})
+
+minetest.register_node("testnodes:falling_facedir", {
+ description = S("Falling Facedir Node"),
+ tiles = {
+ "testnodes_1.png",
+ "testnodes_2.png",
+ "testnodes_3.png",
+ "testnodes_4.png",
+ "testnodes_5.png",
+ "testnodes_6.png",
+ },
+ paramtype2 = "facedir",
+ groups = { falling_node = 1, dig_immediate = 3 },
+})
+
+-- Same as falling node, but will stop falling on top of liquids
+minetest.register_node("testnodes:falling_float", {
+ description = S("Falling+Floating Node"),
+ groups = { falling_node = 1, float = 1, dig_immediate = 3 },
+
+
+ tiles = {
+ "testnodes_node.png",
+ "testnodes_node.png",
+ "testnodes_node_falling.png",
+ },
+ color = "cyan",
+})
+
+-- This node attaches to the floor and drops as item
+-- when the floor is gone.
+minetest.register_node("testnodes:attached", {
+ description = S("Floor-Attached Node"),
+ tiles = {
+ "testnodes_attached_top.png",
+ "testnodes_attached_bottom.png",
+ "testnodes_attached_side.png",
+ },
+ groups = { attached_node = 1, dig_immediate = 3 },
+})
+
+-- This node attaches to the side of a node and drops as item
+-- when the node it attaches to is gone.
+minetest.register_node("testnodes:attached_wallmounted", {
+ description = S("Wallmounted Attached Node"),
+ paramtype2 = "wallmounted",
+ tiles = {
+ "testnodes_attachedw_top.png",
+ "testnodes_attachedw_bottom.png",
+ "testnodes_attachedw_side.png",
+ },
+ groups = { attached_node = 1, dig_immediate = 3 },
+})
+
+-- Jump disabled
+minetest.register_node("testnodes:nojump", {
+ description = S("Non-jumping Node"),
+ groups = {disable_jump=1, dig_immediate=3},
+ tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"},
+})
+
+-- Jump disabled plant
+minetest.register_node("testnodes:nojump_walkable", {
+ description = S("Non-jumping Plant Node"),
+ drawtype = "plantlike",
+ groups = {disable_jump=1, dig_immediate=3},
+ walkable = false,
+ tiles = {"testnodes_nojump_top.png"},
+})
+
+-- Climbable up and down with jump and sneak keys
+minetest.register_node("testnodes:climbable", {
+ description = S("Climbable Node"),
+ climbable = true,
+ walkable = false,
+
+
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = false,
+ tiles ={"testnodes_climbable_side.png"},
+ drawtype = "glasslike",
+ groups = {dig_immediate=3},
+})
+
+-- Climbable only downwards with sneak key
+minetest.register_node("testnodes:climbable_nojump", {
+ description = S("Downwards-climbable Node"),
+ climbable = true,
+ walkable = false,
+
+ groups = {disable_jump=1, dig_immediate=3},
+ drawtype = "glasslike",
+ tiles ={"testnodes_climbable_nojump_side.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+-- A liquid in which you can't rise
+minetest.register_node("testnodes:liquid_nojump", {
+ description = S("Non-jumping Liquid Source Node"),
+ liquidtype = "source",
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
+ liquid_alternative_source = "testnodes:liquid_nojump",
+ liquid_renewable = false,
+ groups = {disable_jump=1, dig_immediate=3},
+ walkable = false,
+
+ drawtype = "liquid",
+ tiles = {"testnodes_liquidsource.png^[colorize:#FF0000:127"},
+ special_tiles = {
+ {name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = false},
+ {name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ pointable = false,
+ liquids_pointable = true,
+ buildable_to = true,
+ is_ground_content = false,
+ post_effect_color = {a = 70, r = 255, g = 0, b = 200},
+})
+
+-- A liquid in which you can't rise (flowing variant)
+minetest.register_node("testnodes:liquidflowing_nojump", {
+ description = S("Non-jumping Flowing Liquid Node"),
+ liquidtype = "flowing",
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
+ liquid_alternative_source = "testnodes:liquid_nojump",
+ liquid_renewable = false,
+ groups = {disable_jump=1, dig_immediate=3},
+ walkable = false,
+
+
+ drawtype = "flowingliquid",
+ tiles = {"testnodes_liquidflowing.png^[colorize:#FF0000:127"},
+ special_tiles = {
+ {name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
+ {name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ pointable = false,
+ liquids_pointable = true,
+ buildable_to = true,
+ is_ground_content = false,
+ post_effect_color = {a = 70, r = 255, g = 0, b = 200},
+})
+
+-- A liquid which doesn't have liquid movement physics (source variant)
+minetest.register_node("testnodes:liquid_noswim", {
+ description = S("No-swim Liquid Source Node"),
+ liquidtype = "source",
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquidflowing_noswim",
+ liquid_alternative_source = "testnodes:liquid_noswim",
+ liquid_renewable = false,
+ liquid_move_physics = false,
+ groups = {dig_immediate=3},
+ walkable = false,
+
+ drawtype = "liquid",
+ tiles = {"testnodes_liquidsource.png^[colorize:#FF00FF:127"},
+ special_tiles = {
+ {name = "testnodes_liquidsource.png^[colorize:#FF00FF:127", backface_culling = false},
+ {name = "testnodes_liquidsource.png^[colorize:#FF00FF:127", backface_culling = true},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ pointable = false,
+ liquids_pointable = true,
+ buildable_to = true,
+ is_ground_content = false,
+ post_effect_color = {a = 70, r = 255, g = 200, b = 200},
+})
+
+-- A liquid which doen't have liquid movement physics (flowing variant)
+minetest.register_node("testnodes:liquidflowing_noswim", {
+ description = S("No-swim Flowing Liquid Node"),
+ liquidtype = "flowing",
+ liquid_range = 1,
+ liquid_viscosity = 0,
+ liquid_alternative_flowing = "testnodes:liquidflowing_noswim",
+ liquid_alternative_source = "testnodes:liquid_noswim",
+ liquid_renewable = false,
+ liquid_move_physics = false,
+ groups = {dig_immediate=3},
+ walkable = false,
+
+
+ drawtype = "flowingliquid",
+ tiles = {"testnodes_liquidflowing.png^[colorize:#FF00FF:127"},
+ special_tiles = {
+ {name = "testnodes_liquidflowing.png^[colorize:#FF00FF:127", backface_culling = false},
+ {name = "testnodes_liquidflowing.png^[colorize:#FF00FF:127", backface_culling = false},
+ },
+ use_texture_alpha = "blend",
+ paramtype = "light",
+ paramtype2 = "flowingliquid",
+ pointable = false,
+ liquids_pointable = true,
+ buildable_to = true,
+ is_ground_content = false,
+ post_effect_color = {a = 70, r = 255, g = 200, b = 200},
+})
+
+
+
+-- Nodes that modify fall damage (various damage modifiers)
+for i=-100, 100, 25 do
+ if i ~= 0 then
+ local subname, descnum
+ if i < 0 then
+ subname = "m"..math.abs(i)
+ descnum = tostring(i)
+ else
+ subname = tostring(i)
+ descnum = S("+@1", i)
+ end
+ local tex, color, desc
+ if i > 0 then
+ local val = math.floor((i/100)*255)
+ tex = "testnodes_fall_damage_plus.png"
+ color = { b=0, g=255-val, r=255, a=255 }
+ desc = S("Fall Damage Node (+@1%)", i)
+ else
+ tex = "testnodes_fall_damage_minus.png"
+ if i == -100 then
+ color = { r=0, b=0, g=255, a=255 }
+ else
+ local val = math.floor((math.abs(i)/100)*255)
+ color = { r=0, b=255, g=255-val, a=255 }
+ end
+ desc = S("Fall Damage Node (-@1%)", math.abs(i))
+ end
+ minetest.register_node("testnodes:damage"..subname, {
+ description = desc,
+ groups = {fall_damage_add_percent=i, dig_immediate=3},
+
+
+ tiles = { tex },
+ is_ground_content = false,
+ color = color,
+ })
+ end
+end
+
+-- Bouncy nodes (various bounce levels)
+for i=-140, 180, 20 do
+ local val = math.floor(((i-20)/200)*255)
+ minetest.register_node(("testnodes:bouncy"..i):gsub("-","NEG"), {
+ description = S("Bouncy Node (@1%)", i),
+ groups = {bouncy=i, dig_immediate=3},
+
+
+ tiles ={"testnodes_bouncy.png"},
+ is_ground_content = false,
+ color = { r=255, g=255-val, b=val, a=255 },
+ })
+end
+
+-- Slippery nodes (various slippery levels)
+for i=1, 5 do
+ minetest.register_node("testnodes:slippery"..i, {
+ description = S("Slippery Node (@1)", i),
+ tiles ={"testnodes_slippery.png"},
+ is_ground_content = false,
+ groups = {slippery=i, dig_immediate=3},
+ color = { r=0, g=255, b=math.floor((i/5)*255), a=255 },
+ })
+end
+
+-- Move resistance nodes (various resistance levels)
+for r=0, 7 do
+ if r > 0 then
+ minetest.register_node("testnodes:move_resistance"..r, {
+ description = S("Move-resistant Node (@1)", r),
+ walkable = false,
+ move_resistance = r,
+
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_move_resistance.png" },
+ is_ground_content = false,
+ groups = { dig_immediate = 3 },
+ color = { b = 0, g = 255, r = math.floor((r/7)*255), a = 255 },
+ })
+ end
+
+ minetest.register_node("testnodes:move_resistance_liquidlike"..r, {
+ description = S("Move-resistant Node, liquidlike (@1)", r),
+ walkable = false,
+ move_resistance = r,
+ liquid_move_physics = true,
+
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_move_resistance.png" },
+ is_ground_content = false,
+ groups = { dig_immediate = 3 },
+ color = { b = 255, g = 0, r = math.floor((r/7)*255), a = 255 },
+ })
+end
+
+minetest.register_node("testnodes:climbable_move_resistance_4", {
+ description = S("Climbable Move-resistant Node (4)"),
+ walkable = false,
+ climbable = true,
+ move_resistance = 4,
+
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"testnodes_climbable_resistance_side.png"},
+ is_ground_content = false,
+ groups = { dig_immediate = 3 },
+})
+
+-- By placing something on the node, the node itself will be replaced
+minetest.register_node("testnodes:buildable_to", {
+ description = S("Replacable Node"),
+ buildable_to = true,
+ tiles = {"testnodes_buildable_to.png"},
+ is_ground_content = false,
+ groups = {dig_immediate=3},
+})
+
+-- Nodes that deal damage to players that are inside them.
+-- Negative damage nodes should heal.
+for d=-3,3 do
+ if d ~= 0 then
+ local sub, tile
+ if d > 0 then
+ sub = tostring(d)
+ tile = "testnodes_damage.png"
+ else
+ sub = "m" .. tostring(math.abs(d))
+ tile = "testnodes_damage_neg.png"
+ end
+ if math.abs(d) == 2 then
+ tile = tile .. "^[colorize:#000000:70"
+ elseif math.abs(d) == 3 then
+ tile = tile .. "^[colorize:#000000:140"
+ end
+ minetest.register_node("testnodes:damage_"..sub, {
+ description = S("Damage Node (@1 damage per second)", d),
+ damage_per_second = d,
+
+
+ walkable = false,
+ is_ground_content = false,
+ drawtype = "allfaces",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { tile },
+ groups = {dig_immediate=3},
+ })
+ end
+end
+
+-- Causes drowning damage
+minetest.register_node("testnodes:drowning_1", {
+ description = S("Drowning Node (@1 damage)", 1),
+ drowning = 1,
+
+
+ walkable = false,
+ is_ground_content = false,
+ drawtype = "allfaces",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_drowning.png" },
+ groups = {dig_immediate=3},
+})
+
diff --git a/games/devtest/mods/testnodes/textures.lua b/games/devtest/mods/testnodes/textures.lua
new file mode 100644
index 000000000..2faacdd78
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures.lua
@@ -0,0 +1,290 @@
+-- Node texture tests
+
+local S = minetest.get_translator("testnodes")
+
+minetest.register_node("testnodes:6sides", {
+ description = S("Six Textures Test Node"),
+ tiles = {
+ "testnodes_normal1.png",
+ "testnodes_normal2.png",
+ "testnodes_normal3.png",
+ "testnodes_normal4.png",
+ "testnodes_normal5.png",
+ "testnodes_normal6.png",
+ },
+
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:anim", {
+ description = S("Animated Test Node"),
+ tiles = {
+ { name = "testnodes_anim.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 4.0,
+ }, },
+ },
+
+ groups = { dig_immediate = 2 },
+})
+
+-- Node texture transparency test
+
+local alphas = { 64, 128, 191 }
+
+for a=1,#alphas do
+ local alpha = alphas[a]
+
+ -- Transparency taken from texture
+ minetest.register_node("testnodes:alpha_texture_"..alpha, {
+ description = S("Texture Alpha Test Node (@1)", alpha),
+ drawtype = "glasslike",
+ paramtype = "light",
+ tiles = {
+ "testnodes_alpha"..alpha..".png",
+ },
+ use_texture_alpha = "blend",
+
+ groups = { dig_immediate = 3 },
+ })
+
+ -- Transparency set via texture modifier
+ minetest.register_node("testnodes:alpha_"..alpha, {
+ description = S("Alpha Test Node (@1)", alpha),
+ drawtype = "glasslike",
+ paramtype = "light",
+ tiles = {
+ "testnodes_alpha.png^[opacity:" .. alpha,
+ },
+ use_texture_alpha = "blend",
+
+ groups = { dig_immediate = 3 },
+ })
+end
+
+-- Generate PNG textures
+
+local function mandelbrot(w, h, iterations)
+ local r = {}
+ for y=0, h-1 do
+ for x=0, w-1 do
+ local re = (x - w/2) * 4/w
+ local im = (y - h/2) * 4/h
+ -- zoom in on a nice view
+ re = re / 128 - 0.23
+ im = im / 128 - 0.82
+
+ local px, py = 0, 0
+ local i = 0
+ while px*px + py*py <= 4 and i < iterations do
+ px, py = px*px - py*py + re, 2 * px * py + im
+ i = i + 1
+ end
+ r[w*y+x+1] = i / iterations
+ end
+ end
+ return r
+end
+
+local function gen_checkers(w, h, tile)
+ local r = {}
+ for y=0, h-1 do
+ for x=0, w-1 do
+ local hori = math.floor(x / tile) % 2 == 0
+ local vert = math.floor(y / tile) % 2 == 0
+ r[w*y+x+1] = hori ~= vert and 1 or 0
+ end
+ end
+ return r
+end
+
+local fractal = mandelbrot(512, 512, 128)
+local frac_emb = mandelbrot(64, 64, 64)
+local checker = gen_checkers(512, 512, 32)
+
+local floor = math.floor
+local abs = math.abs
+local data_emb = {}
+local data_mb = {}
+local data_ck = {}
+for i=1, #frac_emb do
+ data_emb[i] = {
+ r = floor(abs(frac_emb[i] * 2 - 1) * 255),
+ g = floor(abs(1 - frac_emb[i]) * 255),
+ b = floor(frac_emb[i] * 255),
+ a = frac_emb[i] < 0.95 and 255 or 0,
+ }
+end
+for i=1, #fractal do
+ data_mb[i] = {
+ r = floor(fractal[i] * 255),
+ g = floor(abs(fractal[i] * 2 - 1) * 255),
+ b = floor(abs(1 - fractal[i]) * 255),
+ a = 255,
+ }
+ data_ck[i] = checker[i] > 0 and "#F80" or "#000"
+end
+
+local textures_path = minetest.get_modpath( minetest.get_current_modname() ) .. "/textures/"
+minetest.safe_file_write(
+ textures_path .. "testnodes_generated_mb.png",
+ minetest.encode_png(512,512,data_mb)
+)
+minetest.safe_file_write(
+ textures_path .. "testnodes_generated_ck.png",
+ minetest.encode_png(512,512,data_ck)
+)
+
+minetest.register_node("testnodes:generated_png_mb", {
+ description = S("Generated Mandelbrot PNG Test Node"),
+ tiles = { "testnodes_generated_mb.png" },
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:generated_png_ck", {
+ description = S("Generated Checker PNG Test Node"),
+ tiles = { "testnodes_generated_ck.png" },
+
+ groups = { dig_immediate = 2 },
+})
+
+local png_emb = "[png:" .. minetest.encode_base64(minetest.encode_png(64,64,data_emb))
+
+minetest.register_node("testnodes:generated_png_emb", {
+ description = S("Generated In-Band Mandelbrot PNG Test Node"),
+ tiles = { png_emb },
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:generated_png_src_emb", {
+ description = S("Generated In-Band Source Blit Mandelbrot PNG Test Node"),
+ tiles = { png_emb .. "^testnodes_damage_neg.png" },
+
+ groups = { dig_immediate = 2 },
+})
+minetest.register_node("testnodes:generated_png_dst_emb", {
+ description = S("Generated In-Band Dest Blit Mandelbrot PNG Test Node"),
+ tiles = { "testnodes_generated_ck.png^" .. png_emb },
+
+ groups = { dig_immediate = 2 },
+})
+
+--[[
+
+The following nodes can be used to demonstrate the TGA format support.
+
+Minetest supports TGA types 1, 2, 3 & 10. While adding the support for
+TGA type 9 (RLE-compressed, color-mapped) is easy, it is not advisable
+to do so, as it is not backwards compatible with any Minetest pre-5.5;
+content creators should therefore either use TGA type 1 or 10, or PNG.
+
+TODO: Types 1, 2 & 10 should have two test nodes each (i.e. bottom-top
+and top-bottom) for 16bpp (A1R5G5B5), 24bpp (B8G8R8), 32bpp (B8G8R8A8)
+colors.
+
+Note: Minetest requires the optional TGA footer for a texture to load.
+If a TGA image does not load in Minetest, append eight (8) null bytes,
+then the string “TRUEVISION-XFILE.”, then another null byte.
+
+]]--
+
+minetest.register_node("testnodes:tga_type1_24bpp_bt", {
+ description = S("TGA Type 1 (color-mapped RGB) 24bpp bottom-top Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type1_24bpp_bt.tga" },
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type1_24bpp_tb", {
+ description = S("TGA Type 1 (color-mapped RGB) 24bpp top-bottom Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type1_24bpp_tb.tga" },
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type2_16bpp_bt", {
+ description = S("TGA Type 2 (uncompressed RGB) 16bpp bottom-top Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type2_16bpp_bt.tga" },
+ use_texture_alpha = "clip",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type2_16bpp_tb", {
+ description = S("TGA Type 2 (uncompressed RGB) 16bpp top-bottom Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type2_16bpp_tb.tga" },
+ use_texture_alpha = "clip",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type2_32bpp_bt", {
+ description = S("TGA Type 2 (uncompressed RGB) 32bpp bottom-top Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type2_32bpp_bt.tga" },
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type2_32bpp_tb", {
+ description = S("TGA Type 2 (uncompressed RGB) 32bpp top-bottom Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type2_32bpp_tb.tga" },
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type3_16bpp_bt", {
+ description = S("TGA Type 3 (uncompressed grayscale) 16bpp bottom-top Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type3_16bpp_bt.tga" },
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type3_16bpp_tb", {
+ description = S("TGA Type 3 (uncompressed grayscale) 16bpp top-bottom Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type3_16bpp_tb.tga" },
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type10_32bpp_bt", {
+ description = S("TGA Type 10 (RLE-compressed RGB) 32bpp bottom-top Test Node"),
+ tiles = { "testnodes_tga_type10_32bpp_bt.tga" },
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
+
+minetest.register_node("testnodes:tga_type10_32bpp_tb", {
+ description = S("TGA Type 10 (RLE-compressed RGB) 32bpp top-bottom Test Node"),
+ drawtype = "glasslike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = { "testnodes_tga_type10_32bpp_tb.tga" },
+ use_texture_alpha = "blend",
+ groups = { dig_immediate = 2 },
+})
diff --git a/games/devtest/mods/testnodes/textures/testnodes_1.png b/games/devtest/mods/testnodes/textures/testnodes_1.png
new file mode 100644
index 000000000..6730997e2
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_1.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_1g.png b/games/devtest/mods/testnodes/textures/testnodes_1g.png
new file mode 100644
index 000000000..529298ece
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_1g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_1w.png b/games/devtest/mods/testnodes/textures/testnodes_1w.png
new file mode 100644
index 000000000..d24e571cc
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_1w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_1wg.png b/games/devtest/mods/testnodes/textures/testnodes_1wg.png
new file mode 100644
index 000000000..b2eba0e9a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_1wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_2.png b/games/devtest/mods/testnodes/textures/testnodes_2.png
new file mode 100644
index 000000000..6c87c868d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_2g.png b/games/devtest/mods/testnodes/textures/testnodes_2g.png
new file mode 100644
index 000000000..cb9060f7b
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_2g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_2w.png b/games/devtest/mods/testnodes/textures/testnodes_2w.png
new file mode 100644
index 000000000..b56874ee1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_2w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_2wg.png b/games/devtest/mods/testnodes/textures/testnodes_2wg.png
new file mode 100644
index 000000000..108dc87bb
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_2wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_3.png b/games/devtest/mods/testnodes/textures/testnodes_3.png
new file mode 100644
index 000000000..05b45629a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_3g.png b/games/devtest/mods/testnodes/textures/testnodes_3g.png
new file mode 100644
index 000000000..5c84f5882
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_3g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_3w.png b/games/devtest/mods/testnodes/textures/testnodes_3w.png
new file mode 100644
index 000000000..8b435cf01
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_3w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_3wg.png b/games/devtest/mods/testnodes/textures/testnodes_3wg.png
new file mode 100644
index 000000000..9ee900667
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_3wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_4.png b/games/devtest/mods/testnodes/textures/testnodes_4.png
new file mode 100644
index 000000000..15e6ffec7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_4g.png b/games/devtest/mods/testnodes/textures/testnodes_4g.png
new file mode 100644
index 000000000..8f144fae0
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_4g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_4w.png b/games/devtest/mods/testnodes/textures/testnodes_4w.png
new file mode 100644
index 000000000..214e0df9d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_4w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_4wg.png b/games/devtest/mods/testnodes/textures/testnodes_4wg.png
new file mode 100644
index 000000000..888b3d482
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_4wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_5.png b/games/devtest/mods/testnodes/textures/testnodes_5.png
new file mode 100644
index 000000000..1ef1c728c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_5.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_5g.png b/games/devtest/mods/testnodes/textures/testnodes_5g.png
new file mode 100644
index 000000000..30da4793a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_5g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_5w.png b/games/devtest/mods/testnodes/textures/testnodes_5w.png
new file mode 100644
index 000000000..b4cb42426
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_5w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_5wg.png b/games/devtest/mods/testnodes/textures/testnodes_5wg.png
new file mode 100644
index 000000000..fac9db28e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_5wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_6.png b/games/devtest/mods/testnodes/textures/testnodes_6.png
new file mode 100644
index 000000000..805813e57
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_6.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_6g.png b/games/devtest/mods/testnodes/textures/testnodes_6g.png
new file mode 100644
index 000000000..a88f4c9f8
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_6g.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_6w.png b/games/devtest/mods/testnodes/textures/testnodes_6w.png
new file mode 100644
index 000000000..e6bbf97d9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_6w.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_6wg.png b/games/devtest/mods/testnodes/textures/testnodes_6wg.png
new file mode 100644
index 000000000..29ca933e0
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_6wg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_airlike.png b/games/devtest/mods/testnodes/textures/testnodes_airlike.png
new file mode 100644
index 000000000..5a5664a2a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_airlike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_allfaces.png b/games/devtest/mods/testnodes/textures/testnodes_allfaces.png
new file mode 100644
index 000000000..c0a7dc550
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_allfaces.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.png b/games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.png
new file mode 100644
index 000000000..1f6a17313
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_alpha.png b/games/devtest/mods/testnodes/textures/testnodes_alpha.png
new file mode 100644
index 000000000..157fa7386
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_alpha.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_alpha128.png b/games/devtest/mods/testnodes/textures/testnodes_alpha128.png
new file mode 100644
index 000000000..16babf6c7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_alpha128.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_alpha191.png b/games/devtest/mods/testnodes/textures/testnodes_alpha191.png
new file mode 100644
index 000000000..f165d2887
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_alpha191.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_alpha64.png b/games/devtest/mods/testnodes/textures/testnodes_alpha64.png
new file mode 100644
index 000000000..c343c32c3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_alpha64.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_anim.png b/games/devtest/mods/testnodes/textures/testnodes_anim.png
new file mode 100644
index 000000000..d321fe857
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_anim.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attached_bottom.png b/games/devtest/mods/testnodes/textures/testnodes_attached_bottom.png
new file mode 100644
index 000000000..e01ae576f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attached_bottom.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attached_side.png b/games/devtest/mods/testnodes/textures/testnodes_attached_side.png
new file mode 100644
index 000000000..9459cbb05
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attached_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attached_top.png b/games/devtest/mods/testnodes/textures/testnodes_attached_top.png
new file mode 100644
index 000000000..0148b41e0
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attached_top.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.png
new file mode 100644
index 000000000..488ad23a9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attachedw_side.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_side.png
new file mode 100644
index 000000000..a02facbc7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attachedw_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_attachedw_top.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_top.png
new file mode 100644
index 000000000..1f4fc7b85
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_attachedw_top.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_bouncy.png b/games/devtest/mods/testnodes/textures/testnodes_bouncy.png
new file mode 100644
index 000000000..eabbbdfe4
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_bouncy.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_buildable_to.png b/games/devtest/mods/testnodes/textures/testnodes_buildable_to.png
new file mode 100644
index 000000000..23b5e54d2
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_buildable_to.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.png b/games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.png
new file mode 100644
index 000000000..d5ca13033
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_climbable_resistance_side.png b/games/devtest/mods/testnodes/textures/testnodes_climbable_resistance_side.png
new file mode 100644
index 000000000..be01583e6
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_climbable_resistance_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_climbable_side.png b/games/devtest/mods/testnodes/textures/testnodes_climbable_side.png
new file mode 100644
index 000000000..c56ea90d7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_climbable_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_damage.png b/games/devtest/mods/testnodes/textures/testnodes_damage.png
new file mode 100644
index 000000000..9de2ab5e8
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_damage.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_damage_neg.png b/games/devtest/mods/testnodes/textures/testnodes_damage_neg.png
new file mode 100644
index 000000000..85811bc8e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_damage_neg.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_drowning.png b/games/devtest/mods/testnodes/textures/testnodes_drowning.png
new file mode 100644
index 000000000..57ffc8fcf
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_drowning.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.png b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.png
new file mode 100644
index 000000000..88d3bdf58
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.png b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.png
new file mode 100644
index 000000000..61fdec2e3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_fencelike.png b/games/devtest/mods/testnodes/textures/testnodes_fencelike.png
new file mode 100644
index 000000000..84dea1b7c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_fencelike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_firelike.png b/games/devtest/mods/testnodes/textures/testnodes_firelike.png
new file mode 100644
index 000000000..ee59b0db1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_firelike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslike.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike.png
new file mode 100644
index 000000000..cf3e35414
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.png
new file mode 100644
index 000000000..30c9586e8
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.png
new file mode 100644
index 000000000..8a513f21c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.png
new file mode 100644
index 000000000..4ea839c8b
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.png
new file mode 100644
index 000000000..37de77dd1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.png b/games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.png
new file mode 100644
index 000000000..e1e96ffb9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light.png b/games/devtest/mods/testnodes/textures/testnodes_light.png
new file mode 100644
index 000000000..4ba0081c3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_1.png b/games/devtest/mods/testnodes/textures/testnodes_light_1.png
new file mode 100644
index 000000000..57adf5a4a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_1.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_10.png b/games/devtest/mods/testnodes/textures/testnodes_light_10.png
new file mode 100644
index 000000000..483834770
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_10.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_11.png b/games/devtest/mods/testnodes/textures/testnodes_light_11.png
new file mode 100644
index 000000000..4c423d9b4
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_11.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_12.png b/games/devtest/mods/testnodes/textures/testnodes_light_12.png
new file mode 100644
index 000000000..bc7946d09
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_12.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_13.png b/games/devtest/mods/testnodes/textures/testnodes_light_13.png
new file mode 100644
index 000000000..0b63c84a6
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_13.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_14.png b/games/devtest/mods/testnodes/textures/testnodes_light_14.png
new file mode 100644
index 000000000..a817bd394
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_14.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_2.png b/games/devtest/mods/testnodes/textures/testnodes_light_2.png
new file mode 100644
index 000000000..852eaeff1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_3.png b/games/devtest/mods/testnodes/textures/testnodes_light_3.png
new file mode 100644
index 000000000..79fc834cc
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_4.png b/games/devtest/mods/testnodes/textures/testnodes_light_4.png
new file mode 100644
index 000000000..75f8c6136
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_5.png b/games/devtest/mods/testnodes/textures/testnodes_light_5.png
new file mode 100644
index 000000000..b6eede0ae
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_5.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_6.png b/games/devtest/mods/testnodes/textures/testnodes_light_6.png
new file mode 100644
index 000000000..ef54addec
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_6.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_7.png b/games/devtest/mods/testnodes/textures/testnodes_light_7.png
new file mode 100644
index 000000000..4a885b0f6
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_7.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_8.png b/games/devtest/mods/testnodes/textures/testnodes_light_8.png
new file mode 100644
index 000000000..b283301e3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_8.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_light_9.png b/games/devtest/mods/testnodes/textures/testnodes_light_9.png
new file mode 100644
index 000000000..2aa902358
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_light_9.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_line_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_line_crossing.png
new file mode 100644
index 000000000..e566f2793
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_line_crossing.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_line_curved.png b/games/devtest/mods/testnodes/textures/testnodes_line_curved.png
new file mode 100644
index 000000000..ab9f8e720
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_line_curved.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_line_straight.png b/games/devtest/mods/testnodes/textures/testnodes_line_straight.png
new file mode 100644
index 000000000..4f33d9c6d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_line_straight.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_line_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_line_t_junction.png
new file mode 100644
index 000000000..5668f6ea3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_line_t_junction.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquid.png b/games/devtest/mods/testnodes/textures/testnodes_liquid.png
new file mode 100644
index 000000000..98ab270c2
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquid.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing.png
new file mode 100644
index 000000000..1736b89ba
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.png
new file mode 100644
index 000000000..e8a61039d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.png
new file mode 100644
index 000000000..b4e45b42f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.png
new file mode 100644
index 000000000..e064b8f2d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.png
new file mode 100644
index 000000000..bef773968
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.png
new file mode 100644
index 000000000..de1001b2d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.png
new file mode 100644
index 000000000..97b422e9a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.png
new file mode 100644
index 000000000..4cd8e4e8e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.png
new file mode 100644
index 000000000..711dd961c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.png
new file mode 100644
index 000000000..9cf22b8ca
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource.png
new file mode 100644
index 000000000..b3f29b702
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.png
new file mode 100644
index 000000000..da0a99623
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.png
new file mode 100644
index 000000000..66bf2be8f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.png
new file mode 100644
index 000000000..fc5f65cb6
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.png
new file mode 100644
index 000000000..0f46e291e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.png
new file mode 100644
index 000000000..0693a04d7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.png
new file mode 100644
index 000000000..cc9d03992
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.png
new file mode 100644
index 000000000..e276a07ae
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.png
new file mode 100644
index 000000000..3534a4b15
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.png
new file mode 100644
index 000000000..ee1a8b169
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.png
new file mode 100644
index 000000000..51b8e0025
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.png
new file mode 100644
index 000000000..9ea65c1ec
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.png
new file mode 100644
index 000000000..96bc55ac5
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.png
new file mode 100644
index 000000000..fca33727d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_move_resistance.png b/games/devtest/mods/testnodes/textures/testnodes_move_resistance.png
new file mode 100644
index 000000000..cac3944bf
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_move_resistance.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_node.png b/games/devtest/mods/testnodes/textures/testnodes_node.png
new file mode 100644
index 000000000..145099b3a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_node.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_node_falling.png b/games/devtest/mods/testnodes/textures/testnodes_node_falling.png
new file mode 100644
index 000000000..44153185c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_node_falling.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_nodebox.png b/games/devtest/mods/testnodes/textures/testnodes_nodebox.png
new file mode 100644
index 000000000..66e8dd663
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_nodebox.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_nojump_side.png b/games/devtest/mods/testnodes/textures/testnodes_nojump_side.png
new file mode 100644
index 000000000..6a64cfff0
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_nojump_side.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_nojump_top.png b/games/devtest/mods/testnodes/textures/testnodes_nojump_top.png
new file mode 100644
index 000000000..fe770838f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_nojump_top.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal.png b/games/devtest/mods/testnodes/textures/testnodes_normal.png
new file mode 100644
index 000000000..a1acfd9fd
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal1.png b/games/devtest/mods/testnodes/textures/testnodes_normal1.png
new file mode 100644
index 000000000..edaba77e4
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal1.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal2.png b/games/devtest/mods/testnodes/textures/testnodes_normal2.png
new file mode 100644
index 000000000..0080a9ee7
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal2.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal3.png b/games/devtest/mods/testnodes/textures/testnodes_normal3.png
new file mode 100644
index 000000000..0426ab216
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal3.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal4.png b/games/devtest/mods/testnodes/textures/testnodes_normal4.png
new file mode 100644
index 000000000..0d1922eb6
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal4.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal5.png b/games/devtest/mods/testnodes/textures/testnodes_normal5.png
new file mode 100644
index 000000000..0b7dcd2da
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal5.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_normal6.png b/games/devtest/mods/testnodes/textures/testnodes_normal6.png
new file mode 100644
index 000000000..f34a67d71
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_normal6.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_overlay.png b/games/devtest/mods/testnodes/textures/testnodes_overlay.png
new file mode 100644
index 000000000..1c69b5e08
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_overlay.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_overlayable.png b/games/devtest/mods/testnodes/textures/testnodes_overlayable.png
new file mode 100644
index 000000000..431bc94f4
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_overlayable.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_palette_facedir.png b/games/devtest/mods/testnodes/textures/testnodes_palette_facedir.png
new file mode 100644
index 000000000..8cf47bbbe
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_palette_facedir.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_palette_full.png b/games/devtest/mods/testnodes/textures/testnodes_palette_full.png
new file mode 100644
index 000000000..e0a5f8b34
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_palette_full.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.png b/games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.png
new file mode 100644
index 000000000..682f3ac84
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike.png
new file mode 100644
index 000000000..cc464444d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.png
new file mode 100644
index 000000000..01c81da8e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.png
new file mode 100644
index 000000000..53504dbcd
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.png
new file mode 100644
index 000000000..d504d459f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.png
new file mode 100644
index 000000000..79cf2125e
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.png
new file mode 100644
index 000000000..b9ee9e5be
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png
new file mode 100644
index 000000000..85311cb2c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png
new file mode 100644
index 000000000..bc602bafe
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png
new file mode 100644
index 000000000..d10002375
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_wallmounted.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_wallmounted.png
new file mode 100644
index 000000000..b0be8d077
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_wallmounted.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png
new file mode 100644
index 000000000..527817bc1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png
new file mode 100644
index 000000000..45e75bdd3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png
new file mode 100644
index 000000000..8954b2c34
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png
new file mode 100644
index 000000000..a782d4874
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_wallmounted.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_wallmounted.png
new file mode 100644
index 000000000..421466407
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_wallmounted.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png
new file mode 100644
index 000000000..112a0540f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_wallmounted.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_wallmounted.png
new file mode 100644
index 000000000..c89b29e30
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_wallmounted.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.png
new file mode 100644
index 000000000..b584a8dc9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.png
new file mode 100644
index 000000000..530bbba7a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail2_curved.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_curved.png
new file mode 100644
index 000000000..4ed1ca00f
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail2_curved.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail2_straight.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_straight.png
new file mode 100644
index 000000000..8749330d8
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail2_straight.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.png
new file mode 100644
index 000000000..0517f6570
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_rail_crossing.png
new file mode 100644
index 000000000..3916ce1ef
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail_crossing.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail_curved.png b/games/devtest/mods/testnodes/textures/testnodes_rail_curved.png
new file mode 100644
index 000000000..e44419848
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail_curved.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail_straight.png b/games/devtest/mods/testnodes/textures/testnodes_rail_straight.png
new file mode 100644
index 000000000..872d04fb9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail_straight.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.png
new file mode 100644
index 000000000..7e4af5182
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_signlike.png b/games/devtest/mods/testnodes/textures/testnodes_signlike.png
new file mode 100644
index 000000000..33ffcba6c
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_signlike.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_slippery.png b/games/devtest/mods/testnodes/textures/testnodes_slippery.png
new file mode 100644
index 000000000..b990468a1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_slippery.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_street_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_street_crossing.png
new file mode 100644
index 000000000..d6e35ad7a
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_street_crossing.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_street_curved.png b/games/devtest/mods/testnodes/textures/testnodes_street_curved.png
new file mode 100644
index 000000000..251b7fb71
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_street_curved.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_street_straight.png b/games/devtest/mods/testnodes/textures/testnodes_street_straight.png
new file mode 100644
index 000000000..639e24b93
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_street_straight.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_street_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_street_t_junction.png
new file mode 100644
index 000000000..713621e06
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_street_t_junction.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.png b/games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.png
new file mode 100644
index 000000000..b38ea4072
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_bt.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_bt.tga
new file mode 100644
index 000000000..2dc587bc3
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_bt.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_tb.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_tb.tga
new file mode 100644
index 000000000..b44a81c79
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type10_32bpp_tb.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_bt.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_bt.tga
new file mode 100644
index 000000000..d2c2ca6d2
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_bt.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_tb.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_tb.tga
new file mode 100644
index 000000000..dfcb98864
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type1_24bpp_tb.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_bt.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_bt.tga
new file mode 100644
index 000000000..0206216bb
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_bt.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_tb.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_tb.tga
new file mode 100644
index 000000000..2563f084b
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_16bpp_tb.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_bt.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_bt.tga
new file mode 100644
index 000000000..3350500f8
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_bt.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_tb.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_tb.tga
new file mode 100644
index 000000000..216de0634
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type2_32bpp_tb.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_bt.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_bt.tga
new file mode 100644
index 000000000..695bb4bb1
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_bt.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_tb.tga b/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_tb.tga
new file mode 100644
index 000000000..c08a093b2
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_tga_type3_16bpp_tb.tga
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.png
new file mode 100644
index 000000000..5d9862cc9
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.png
new file mode 100644
index 000000000..adf1e002d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.png
Binary files differ
diff --git a/games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.png
new file mode 100644
index 000000000..cb442b22d
--- /dev/null
+++ b/games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.png
Binary files differ
diff --git a/games/devtest/mods/testpathfinder/README.md b/games/devtest/mods/testpathfinder/README.md
new file mode 100644
index 000000000..2b9d46e70
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/README.md
@@ -0,0 +1,15 @@
+# Pathfinder Tester
+
+Usage:
+
+Use the Pathfinder Tester tool (`testpathfinder:testpathfinder`).
+Here's how it works:
+
+* Place on node: Set destination position
+* Punch: Find path
+* Sneak+punch: Select pathfinding algorithm
+
+Information will be shown in chat. If a path was found, all waypoints
+will be shown for a few seconds.
+
+See `init.lua` for config variables.
diff --git a/games/devtest/mods/testpathfinder/init.lua b/games/devtest/mods/testpathfinder/init.lua
new file mode 100644
index 000000000..67748afca
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/init.lua
@@ -0,0 +1,136 @@
+local S = minetest.get_translator("testpathfinder")
+
+-- Config parameters
+
+-- Maximum direct distance between start and end
+local MAX_DIRECT_DISTANCE = 64
+-- Maximum search distance
+local MAX_SEARCH_DISTANCE = 32
+-- Maximum permitted jump height
+local MAX_JUMP = 1
+-- Maximum permitted drop height
+local MAX_DROP = 5
+-- If true, mod won't refuse to run pathfinder even at long distances
+local IGNORE_MAX_DISTANCE_SAFEGUARD = false
+
+-- End of config parameters
+
+local timer = 0
+local algorithms = {
+ "A*_noprefetch",
+ "A*",
+ "Dijkstra",
+}
+
+local function find_path_for_player(player, itemstack)
+ local meta = itemstack:get_meta()
+ if not meta then
+ return
+ end
+ local x = meta:get_int("pos_x")
+ local y = meta:get_int("pos_y")
+ local z = meta:get_int("pos_z")
+ local algo = meta:get_int("algorithm")
+ if x and y and z then
+ local pos2 = {x=x, y=y, z=z}
+ algo = algorithms[algo+1]
+ local pos1 = vector.round(player:get_pos())
+ -- Don't bother calling pathfinder for high distance to avoid freezing
+ if (not IGNORE_MAX_DISTANCE_SAFEGUARD) and (vector.distance(pos1, pos2) > MAX_DIRECT_DISTANCE) then
+ minetest.chat_send_player(player:get_player_name(), S("Destination too far away! Set a destination (via placing) within a distance of @1 and try again!", MAX_DIRECT_DISTANCE))
+ return
+ end
+ local str = S("Path from @1 to @2:",
+ minetest.pos_to_string(pos1),
+ minetest.pos_to_string(pos2))
+
+ minetest.chat_send_player(player:get_player_name(), str)
+ local time_start = minetest.get_us_time()
+ local path = minetest.find_path(pos1, pos2, MAX_SEARCH_DISTANCE, MAX_JUMP, MAX_DROP, algo)
+ local time_end = minetest.get_us_time()
+ local time_diff = time_end - time_start
+ str = ""
+ if not path then
+ minetest.chat_send_player(player:get_player_name(), S("No path!"))
+ minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000))
+ return
+ end
+ for s=1, #path do
+ str = str .. minetest.pos_to_string(path[s]) .. "\n"
+ local t
+ if s == #path then
+ t = "testpathfinder_waypoint_end.png"
+ elseif s == 1 then
+ t = "testpathfinder_waypoint_start.png"
+ else
+ local c = math.floor(((#path-s)/#path)*255)
+ t = string.format("testpathfinder_waypoint.png^[multiply:#%02x%02x00", 0xFF-c, c)
+ end
+ minetest.add_particle({
+ pos = path[s],
+ expirationtime = 5 + 0.2 * s,
+ playername = player:get_player_name(),
+ glow = minetest.LIGHT_MAX,
+ texture = t,
+ size = 3,
+ })
+ end
+ minetest.chat_send_player(player:get_player_name(), str)
+ minetest.chat_send_player(player:get_player_name(), S("Path length: @1", #path))
+ minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000))
+ end
+end
+
+local function set_destination(itemstack, user, pointed_thing)
+ if not (user and user:is_player()) then
+ return
+ end
+ local name = user:get_player_name()
+ local obj
+ local meta = itemstack:get_meta()
+ if pointed_thing.type == "node" then
+ local pos = pointed_thing.above
+ meta:set_int("pos_x", pos.x)
+ meta:set_int("pos_y", pos.y)
+ meta:set_int("pos_z", pos.z)
+ minetest.chat_send_player(user:get_player_name(), S("Destination set to @1", minetest.pos_to_string(pos)))
+ return itemstack
+ end
+end
+
+local function find_path_or_set_algorithm(itemstack, user, pointed_thing)
+ if not (user and user:is_player()) then
+ return
+ end
+ local ctrl = user:get_player_control()
+ -- No sneak: Find path
+ if not ctrl.sneak then
+ find_path_for_player(user, itemstack)
+ else
+ -- Sneak: Set algorithm
+ local meta = itemstack:get_meta()
+ local algo = meta:get_int("algorithm")
+ algo = (algo + 1) % #algorithms
+ meta:set_int("algorithm", algo)
+ minetest.chat_send_player(user:get_player_name(), S("Algorithm: @1", algorithms[algo+1]))
+ return itemstack
+ end
+end
+
+-- Punch: Find path
+-- Sneak+punch: Select pathfinding algorithm
+-- Place: Select destination node
+minetest.register_tool("testpathfinder:testpathfinder", {
+ description = S("Pathfinder Tester") .."\n"..
+ S("Finds path between 2 points") .."\n"..
+ S("Place on node: Select destination") .."\n"..
+ S("Punch: Find path from here") .."\n"..
+ S("Sneak+Punch: Change algorithm"),
+ inventory_image = "testpathfinder_testpathfinder.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = find_path_or_set_algorithm,
+ on_secondary_use = set_destination,
+ on_place = set_destination,
+})
+
+
diff --git a/games/devtest/mods/testpathfinder/mod.conf b/games/devtest/mods/testpathfinder/mod.conf
new file mode 100644
index 000000000..e6034ae8c
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/mod.conf
@@ -0,0 +1,2 @@
+name = testpathfinder
+description = Tool to test Minetest's pathfinder function
diff --git a/games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.png
new file mode 100644
index 000000000..37eef0565
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.png
Binary files differ
diff --git a/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.png
new file mode 100644
index 000000000..661dcf906
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.png
Binary files differ
diff --git a/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.png
new file mode 100644
index 000000000..41a1cc549
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.png
Binary files differ
diff --git a/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.png
new file mode 100644
index 000000000..a22e31c3b
--- /dev/null
+++ b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.png
Binary files differ
diff --git a/games/devtest/mods/testtools/README.md b/games/devtest/mods/testtools/README.md
new file mode 100644
index 000000000..72f0a2db0
--- /dev/null
+++ b/games/devtest/mods/testtools/README.md
@@ -0,0 +1,128 @@
+# Test Tools readme
+
+Test Tools is a mod for developers that adds a bunch of tools to directly manipulate nodes and entities. This is great for quickly testing out stuff.
+
+Here's the list of tools:
+
+## Remover
+Removes nodes and non-player entities that you punch.
+
+## Node Setter
+Replace a node with another one.
+
+First, punch a node you want to remember.
+Then rightclick any other node to replace it with the node you remembered.
+
+If you rightclick while pointing nothing, you can manually enter the node and param2.
+
+## Param2 Tool
+Change the value param2 of nodes.
+
+* Punch: Add 1 to param2
+* Sneak+Punch: Add 8 to param2
+* Place: Subtract 1 from param2
+* Sneak+Place: Subtract 8 from param2
+
+Note: Use the debug screen (F5) to see the param2 of the pointed node.
+
+## Falling Node Tool
+Turns nodes into falling nodes.
+
+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
+
+## Item Meta Editor
+Edit and view metadata of items.
+
+Usage:
+
+* Place/Punch: Opens item metadata editor of the item in the next
+ inventory slot from the wielded item
+
+## Entity Rotator
+Changes the entity rotation (with `set_rotation`).
+
+Usage:
+
+* Punch entity: Rotate yaw
+* Punch entity while holding down “Sneak” key: Rotate pitch
+* Punch entity while holding down “Special” key (aka “Aux”): Rotate roll
+
+Each usage rotates the entity by 22.5°.
+
+## Entity Spawner
+Spawns entities.
+
+Usage:
+
+* Punch to select entity or spawn one directly
+* Place to place selected entity
+
+## Object Property Editor
+Edits properties of objects.
+
+Usage:
+
+* Punch object to open a formspec that allows you to view and edit properties
+* Punch air to edit properties of your own player object
+
+To edit a property, select it in the list, enter a new value (in Lua syntax)
+and hit “Submit”.
+
+## Object Attacher
+Allows you to attach an object to another one.
+
+Basic usage:
+* First select the parent object, then the child object that should be attached
+* Selecting an object is done by punching it
+* Sneak+punch to detach selected object
+* If you punch air, you select yourself
+
+Configuration:
+* Place: Increase attachment Y position
+* Sneak+place: decrease attachment Y position
+* Aux+place: Increase attachment X rotation
+* Aux+Sneak+Rightclick: Decrease attachment X rotation
+
+Hint: To detach all objects nearby you (including on yourself), use the
+`/detach` server command.
+
+## Object Mover
+Move an object by a given distance.
+
+Usage:
+* Punch object into the direction you want to move it
+* Sneak+punch: Move object towards you
+* 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
+
+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
new file mode 100644
index 000000000..abc1ed79b
--- /dev/null
+++ b/games/devtest/mods/testtools/init.lua
@@ -0,0 +1,951 @@
+local S = minetest.get_translator("testtools")
+local F = minetest.formspec_escape
+
+dofile(minetest.get_modpath("testtools") .. "/light.lua")
+
+minetest.register_tool("testtools:param2tool", {
+ description = S("Param2 Tool") .."\n"..
+ S("Modify param2 value of nodes") .."\n"..
+ S("Punch: +1") .."\n"..
+ S("Sneak+Punch: +8") .."\n"..
+ S("Place: -1") .."\n"..
+ S("Sneak+Place: -8"),
+ inventory_image = "testtools_param2tool.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type ~= "node" or (not pos) then
+ return
+ end
+ local add = 1
+ if user then
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ add = 8
+ end
+ end
+ local node = minetest.get_node(pos)
+ node.param2 = node.param2 + add
+ minetest.swap_node(pos, node)
+ end,
+ on_place = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type ~= "node" or (not pos) then
+ return
+ end
+ local add = -1
+ if user then
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ add = -8
+ end
+ end
+ local node = minetest.get_node(pos)
+ node.param2 = node.param2 + add
+ minetest.swap_node(pos, node)
+ end,
+})
+
+minetest.register_tool("testtools:node_setter", {
+ description = S("Node Setter") .."\n"..
+ S("Replace pointed node with something else") .."\n"..
+ S("Punch: Select pointed node") .."\n"..
+ S("Place on node: Replace node with selected node") .."\n"..
+ S("Place in air: Manually select a node"),
+ inventory_image = "testtools_node_setter.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type == "nothing" then
+ local meta = itemstack:get_meta()
+ meta:set_string("node", "air")
+ meta:set_int("node_param2", 0)
+ if user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), S("Now placing: @1 (param2=@2)", "air", 0))
+ end
+ return itemstack
+ elseif pointed_thing.type ~= "node" or (not pos) then
+ return
+ end
+ local node = minetest.get_node(pos)
+ local meta = itemstack:get_meta()
+ meta:set_string("node", node.name)
+ meta:set_int("node_param2", node.param2)
+ if user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), S("Now placing: @1 (param2=@2)", node.name, node.param2))
+ end
+ return itemstack
+ end,
+ on_secondary_use = function(itemstack, user, pointed_thing)
+ local meta = itemstack:get_meta()
+ local nodename = meta:get_string("node") or ""
+ local param2 = meta:get_int("node_param2") or 0
+
+ minetest.show_formspec(user:get_player_name(), "testtools:node_setter",
+ "size[4,4]"..
+ "field[0.5,1;3,1;nodename;"..F(S("Node name (itemstring):"))..";"..F(nodename).."]"..
+ "field[0.5,2;3,1;param2;"..F(S("param2:"))..";"..F(tostring(param2)).."]"..
+ "button_exit[0.5,3;3,1;submit;"..F(S("Submit")).."]"
+ )
+ end,
+ on_place = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ local meta = itemstack:get_meta()
+ local nodename = meta:get_string("node")
+ if nodename == "" and user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), S("Punch a node first!"))
+ return
+ end
+ local param2 = meta:get_int("node_param2")
+ if not param2 then
+ param2 = 0
+ end
+ local node = { name = nodename, param2 = param2 }
+ if not minetest.registered_nodes[nodename] then
+ minetest.chat_send_player(user:get_player_name(), S("Cannot set unknown node: @1", nodename))
+ return
+ end
+ minetest.set_node(pos, node)
+ end,
+})
+
+minetest.register_tool("testtools:remover", {
+ description = S("Remover") .."\n"..
+ S("Punch: Remove pointed node or object"),
+ inventory_image = "testtools_remover.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type == "node" and pos ~= nil then
+ minetest.remove_node(pos)
+ elseif pointed_thing.type == "object" then
+ local obj = pointed_thing.ref
+ if not obj:is_player() then
+ obj:remove()
+ else
+ minetest.chat_send_player(user:get_player_name(), S("Can't remove players!"))
+ end
+ end
+ end,
+})
+
+minetest.register_tool("testtools:falling_node_tool", {
+ description = S("Falling Node Tool") .."\n"..
+ S("Punch: Make pointed node fall") .."\n"..
+ S("Place: Move pointed node 2 units upwards, then make it fall"),
+ inventory_image = "testtools_falling_node_tool.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_place = function(itemstack, user, pointed_thing)
+ -- Teleport node 1-2 units upwards (if possible) and make it fall
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type ~= "node" or (not pos) then
+ return
+ end
+ local ok = false
+ local highest
+ for i=1,2 do
+ local above = {x=pos.x,y=pos.y+i,z=pos.z}
+ local n2 = minetest.get_node(above)
+ local def2 = minetest.registered_nodes[n2.name]
+ if def2 and (not def2.walkable) then
+ highest = above
+ else
+ break
+ end
+ end
+ if highest then
+ local node = minetest.get_node(pos)
+ local metatable = minetest.get_meta(pos):to_table()
+ minetest.remove_node(pos)
+ minetest.set_node(highest, node)
+ local meta_highest = minetest.get_meta(highest)
+ meta_highest:from_table(metatable)
+ ok = minetest.spawn_falling_node(highest)
+ else
+ ok = minetest.spawn_falling_node(pos)
+ end
+ if not ok and user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), S("Falling node could not be spawned!"))
+ end
+ end,
+ on_use = function(itemstack, user, pointed_thing)
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pointed_thing.type ~= "node" or (not pos) then
+ return
+ end
+ local ok = minetest.spawn_falling_node(pos)
+ if not ok and user and user:is_player() then
+ minetest.chat_send_player(user:get_player_name(), S("Falling node could not be spawned!"))
+ end
+ end,
+})
+
+minetest.register_tool("testtools:rotator", {
+ description = S("Entity Rotator") .. "\n" ..
+ S("Rotate pointed entity") .."\n"..
+ S("Punch: Yaw") .."\n"..
+ S("Sneak+Punch: Pitch") .."\n"..
+ S("Aux1+Punch: Roll"),
+ inventory_image = "testtools_entity_rotator.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "object" then
+ return
+ end
+ local obj = pointed_thing.ref
+ if obj:is_player() then
+ -- No player rotation
+ return
+ else
+ local axis = "y"
+ if user and user:is_player() then
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ axis = "x"
+ elseif ctrl.aux1 then
+ axis = "z"
+ end
+ end
+ local rot = obj:get_rotation()
+ rot[axis] = rot[axis] + math.pi/8
+ if rot[axis] > math.pi*2 then
+ rot[axis] = rot[axis] - math.pi*2
+ end
+ obj:set_rotation(rot)
+ end
+ end,
+})
+
+local mover_config = function(itemstack, user, pointed_thing)
+ if not (user and user:is_player()) then
+ return
+ end
+ local name = user:get_player_name()
+ local ctrl = user:get_player_control()
+ local meta = itemstack:get_meta()
+ local dist = 1.0
+ if meta:contains("distance") then
+ dist = meta:get_int("distance")
+ end
+ if ctrl.sneak then
+ dist = dist - 1
+ else
+ dist = dist + 1
+ end
+ meta:set_int("distance", dist)
+ minetest.chat_send_player(user:get_player_name(), S("distance=@1/10", dist*2))
+ return itemstack
+end
+
+minetest.register_tool("testtools:object_mover", {
+ description = S("Object Mover") .."\n"..
+ S("Move pointed object towards or away from you") .."\n"..
+ S("Punch: Move by distance").."\n"..
+ S("Sneak+Punch: Move by negative distance").."\n"..
+ S("Place: Increase distance").."\n"..
+ S("Sneak+Place: Decrease distance"),
+ inventory_image = "testtools_object_mover.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_place = mover_config,
+ on_secondary_use = mover_config,
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "object" then
+ return
+ end
+ local obj = pointed_thing.ref
+ if not (user and user:is_player()) then
+ return
+ end
+ local yaw = user:get_look_horizontal()
+ local dir = minetest.yaw_to_dir(yaw)
+ local pos = obj:get_pos()
+ local pitch = user:get_look_vertical()
+ if pitch > 0.25 * math.pi then
+ dir.y = -1
+ dir.x = 0
+ dir.z = 0
+ elseif pitch < -0.25 * math.pi then
+ dir.y = 1
+ dir.x = 0
+ dir.z = 0
+ end
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ dir = vector.multiply(dir, -1)
+ end
+ local meta = itemstack:get_meta()
+ if meta:contains("distance") then
+ local dist = meta:get_int("distance")
+ dir = vector.multiply(dir, dist*0.2)
+ end
+ pos = vector.add(pos, dir)
+ obj:set_pos(pos)
+ end,
+})
+
+
+
+minetest.register_tool("testtools:entity_scaler", {
+ description = S("Entity Visual Scaler") .."\n"..
+ S("Scale visual size of entities") .."\n"..
+ S("Punch: Increase size") .."\n"..
+ S("Sneak+Punch: Decrease scale"),
+ inventory_image = "testtools_entity_scaler.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "object" then
+ return
+ end
+ local obj = pointed_thing.ref
+ if obj:is_player() then
+ -- No player scaling
+ return
+ else
+ local diff = 0.1
+ if user and user:is_player() then
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ diff = -0.1
+ end
+ end
+ local prop = obj:get_properties()
+ if not prop.visual_size then
+ prop.visual_size = { x=1, y=1, z=1 }
+ else
+ prop.visual_size = { x=prop.visual_size.x+diff, y=prop.visual_size.y+diff, z=prop.visual_size.z+diff }
+ if prop.visual_size.x <= 0.1 then
+ prop.visual_size.x = 0.1
+ end
+ if prop.visual_size.y <= 0.1 then
+ prop.visual_size.y = 0.1
+ end
+ if prop.visual_size.z <= 0.1 then
+ prop.visual_size.z = 0.1
+ end
+ end
+ obj:set_properties(prop)
+ end
+ end,
+})
+
+local selections = {}
+local entity_list
+local function get_entity_list()
+ if entity_list then
+ return entity_list
+ end
+ local ents = minetest.registered_entities
+ local list = {}
+ for k,_ in pairs(ents) do
+ table.insert(list, k)
+ end
+ table.sort(list)
+ entity_list = list
+ return entity_list
+end
+minetest.register_tool("testtools:entity_spawner", {
+ description = S("Entity Spawner") .."\n"..
+ S("Spawns entities") .."\n"..
+ S("Punch: Select entity to spawn") .."\n"..
+ S("Place: Spawn selected entity"),
+ inventory_image = "testtools_entity_spawner.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_place = function(itemstack, user, pointed_thing)
+ local name = user:get_player_name()
+ if pointed_thing.type == "node" then
+ if selections[name] then
+ local pos = pointed_thing.above
+ minetest.add_entity(pos, get_entity_list()[selections[name]])
+ else
+ minetest.chat_send_player(name, S("Select an entity first (with punch key)!"))
+ end
+ end
+ end,
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type == "object" then
+ return
+ end
+ if user and user:is_player() then
+ local list = table.concat(get_entity_list(), ",")
+ local name = user:get_player_name()
+ local sel = selections[name] or ""
+ minetest.show_formspec(name, "testtools:entity_list",
+ "size[9,9]"..
+ "textlist[0,0;9,8;entity_list;"..list..";"..sel..";false]"..
+ "button[0,8;4,1;spawn;Spawn entity]"
+ )
+ end
+ end,
+})
+
+local function prop_to_string(property)
+ if type(property) == "string" then
+ return "\"" .. property .. "\""
+ elseif type(property) == "table" then
+ return tostring(dump(property)):gsub("\n", "")
+ else
+ return tostring(property)
+ end
+end
+
+local property_formspec_data = {}
+local property_formspec_index = {}
+local selected_objects = {}
+local function get_object_properties_form(obj, playername)
+ if not playername then return "" end
+ local props = obj:get_properties()
+ local str = ""
+ property_formspec_data[playername] = {}
+ local proplist = {}
+ for k,_ in pairs(props) do
+ table.insert(proplist, k)
+ end
+ table.sort(proplist)
+ for p=1, #proplist do
+ local k = proplist[p]
+ local v = props[k]
+ local newline = ""
+ newline = k .. " = "
+ newline = newline .. prop_to_string(v)
+ str = str .. F(newline)
+ if p < #proplist then
+ str = str .. ","
+ end
+ table.insert(property_formspec_data[playername], k)
+ end
+ return str
+end
+
+local editor_formspec_selindex = {}
+
+local editor_formspec = function(playername, obj, value, sel)
+ if not value then
+ value = ""
+ end
+ if not sel then
+ sel = ""
+ end
+ local list = get_object_properties_form(obj, playername)
+ local title
+ if obj:is_player() then
+ title = S("Object properties of player “@1”", obj:get_player_name())
+ else
+ local ent = obj:get_luaentity()
+ title = S("Object properties of @1", ent.name)
+ end
+ minetest.show_formspec(playername, "testtools:object_editor",
+ "size[9,9]"..
+ "label[0,0;"..F(title).."]"..
+ "textlist[0,0.5;9,7.5;object_props;"..list..";"..sel..";false]"..
+ "field[0.2,8.75;8,1;value;"..F(S("Value"))..";"..F(value).."]"..
+ "field_close_on_enter[value;false]"..
+ "button[8,8.5;1,1;submit;"..F(S("Submit")).."]"
+ )
+end
+
+minetest.register_tool("testtools:object_editor", {
+ description = S("Object Property Editor") .."\n"..
+ S("Edit properties of objects") .."\n"..
+ S("Punch object: Edit object") .."\n"..
+ S("Punch air: Edit yourself"),
+ inventory_image = "testtools_object_editor.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()
+
+ if pointed_thing.type == "object" then
+ selected_objects[name] = pointed_thing.ref
+ elseif pointed_thing.type == "nothing" then
+ -- Use on yourself if pointing nothing
+ selected_objects[name] = user
+ else
+ -- Unsupported pointed thing
+ return
+ end
+
+ local sel = editor_formspec_selindex[name]
+ local val
+ if selected_objects[name] and selected_objects[name]:get_properties() then
+ local props = selected_objects[name]:get_properties()
+ local keys = property_formspec_data[name]
+ if property_formspec_index[name] and props then
+ local key = keys[property_formspec_index[name]]
+ val = prop_to_string(props[key])
+ end
+ end
+
+ editor_formspec(name, selected_objects[name], val, sel)
+ end
+ end,
+})
+
+local ent_parent = {}
+local ent_child = {}
+local DEFAULT_ATTACH_OFFSET_Y = 11
+
+local attacher_config = function(itemstack, user, pointed_thing)
+ if not (user and user:is_player()) then
+ return
+ end
+ if pointed_thing.type == "object" then
+ return
+ end
+ local name = user:get_player_name()
+ local ctrl = user:get_player_control()
+ local meta = itemstack:get_meta()
+ if ctrl.aux1 then
+ local rot_x = meta:get_float("rot_x")
+ if ctrl.sneak then
+ rot_x = rot_x - math.pi/8
+ else
+ rot_x = rot_x + math.pi/8
+ end
+ if rot_x > 6.2 then
+ rot_x = 0
+ elseif rot_x < 0 then
+ rot_x = math.pi * (15/8)
+ end
+ minetest.chat_send_player(name, S("rotation=@1", minetest.pos_to_string({x=rot_x,y=0,z=0})))
+ meta:set_float("rot_x", rot_x)
+ else
+ local pos_y
+ if meta:contains("pos_y") then
+ pos_y = meta:get_int("pos_y")
+ else
+ pos_y = DEFAULT_ATTACH_OFFSET_Y
+ end
+ if ctrl.sneak then
+ pos_y = pos_y - 1
+ else
+ pos_y = pos_y + 1
+ end
+ minetest.chat_send_player(name, S("position=@1", minetest.pos_to_string({x=0,y=pos_y,z=0})))
+ meta:set_int("pos_y", pos_y)
+ end
+ return itemstack
+end
+
+minetest.register_tool("testtools:object_attacher", {
+ description = S("Object Attacher") .."\n"..
+ S("Attach object to another") .."\n"..
+ S("Punch objects to first select parent object, then the child object to attach") .."\n"..
+ S("Punch air to select yourself") .."\n"..
+ S("Place: Incease attachment Y offset") .."\n"..
+ S("Sneak+Place: Decease attachment Y offset") .."\n"..
+ S("Aux1+Place: Incease attachment rotation") .."\n"..
+ S("Aux1+Sneak+Place: Decrease attachment rotation"),
+ inventory_image = "testtools_object_attacher.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_place = attacher_config,
+ on_secondary_use = attacher_config,
+ on_use = function(itemstack, user, pointed_thing)
+ if user and user:is_player() then
+ local name = user:get_player_name()
+ local selected_object
+ if pointed_thing.type == "object" then
+ selected_object = pointed_thing.ref
+ elseif pointed_thing.type == "nothing" then
+ selected_object = user
+ else
+ return
+ end
+ local ctrl = user:get_player_control()
+ if ctrl.sneak then
+ if selected_object:get_attach() then
+ selected_object:set_detach()
+ minetest.chat_send_player(name, S("Object detached!"))
+ else
+ minetest.chat_send_player(name, S("Object is not attached!"))
+ end
+ return
+ end
+ local parent = ent_parent[name]
+ local child = ent_child[name]
+ local ename = S("<unknown>")
+ if not parent then
+ parent = selected_object
+ ent_parent[name] = parent
+ elseif not child then
+ child = selected_object
+ ent_child[name] = child
+ end
+ local entity = selected_object:get_luaentity()
+ if entity then
+ ename = entity.name
+ elseif selected_object:is_player() then
+ ename = selected_object:get_player_name()
+ end
+ if selected_object == parent then
+ minetest.chat_send_player(name, S("Parent object selected: @1", ename))
+ elseif selected_object == child then
+ minetest.chat_send_player(name, S("Child object selected: @1", ename))
+ end
+ if parent and child then
+ if parent == child then
+ minetest.chat_send_player(name, S("Can't attach an object to itself!"))
+ ent_parent[name] = nil
+ ent_child[name] = nil
+ return
+ end
+ local meta = itemstack:get_meta()
+ local y
+ if meta:contains("pos_y") then
+ y = meta:get_int("pos_y")
+ else
+ y = DEFAULT_ATTACH_OFFSET_Y
+ end
+ local rx = meta:get_float("rot_x") or 0
+ local offset = {x=0,y=y,z=0}
+ local angle = {x=rx,y=0,z=0}
+ child:set_attach(parent, "", offset, angle)
+ local check_parent = child:get_attach()
+ if check_parent then
+ minetest.chat_send_player(name, S("Object attached! position=@1, rotation=@2",
+ minetest.pos_to_string(offset), minetest.pos_to_string(angle)))
+ else
+ minetest.chat_send_player(name, S("Attachment failed!"))
+ end
+ ent_parent[name] = nil
+ ent_child[name] = nil
+ end
+ end
+ 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
+ -- someone is actually crazy enough to run this on a public server.
+ local privs = minetest.get_player_privs(player:get_player_name())
+ if not privs.server then
+ return false, "You need 'server' privilege to change object properties!"
+ end
+ if not param then
+ return false, "Failed: parameter is nil"
+ end
+ --[[ DANGER ZONE ]]
+ -- Interpret string as Lua value
+ local func, errormsg = loadstring("return (" .. param .. ")")
+ if not func then
+ return false, "Failed: " .. errormsg
+ end
+
+ -- Apply sandbox here using setfenv
+ setfenv(func, {})
+
+ -- Run it
+ local good, errOrResult = pcall(func)
+ if not good then
+ -- A Lua error was thrown
+ return false, "Failed: " .. errOrResult
+ end
+
+ -- errOrResult will be the value
+ return true, errOrResult
+end
+
+-- Item Meta Editor + Node Meta Editor
+local node_meta_posses = {}
+local meta_latest_keylist = {}
+
+local function show_meta_formspec(user, metatype, pos_or_item, key, value, keylist)
+ local textlist
+ if keylist then
+ textlist = "textlist[0,0.5;2.5,6.5;keylist;"..keylist.."]"
+ else
+ textlist = ""
+ end
+
+ local form = "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[4,8;3,1;set;"..F(S("Set value")).."]"
+
+ local extra_label
+ local formname
+ if metatype == "node" then
+ formname = "testtools:node_meta_editor"
+ extra_label = S("pos = @1", minetest.pos_to_string(pos_or_item))
+ else
+ formname = "testtools:item_meta_editor"
+ extra_label = S("item = @1", pos_or_item:get_name())
+ end
+ form = form .. "label[0,7.2;"..F(extra_label).."]"
+
+ minetest.show_formspec(user:get_player_name(), formname, form)
+end
+
+local function get_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
+ 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_meta_formspec(user, "node", pos, "", "", get_meta_keylist(meta, user:get_player_name(), true))
+ return itemstack
+ end,
+})
+
+local function get_item_next_to_wielded_item(player)
+ local inv = player:get_inventory()
+ local wield = player:get_wield_index()
+ local itemstack = inv:get_stack("main", wield+1)
+ return itemstack
+end
+local function set_item_next_to_wielded_item(player, itemstack)
+ local inv = player:get_inventory()
+ local wield = player:get_wield_index()
+ inv:set_stack("main", wield+1, itemstack)
+end
+
+local function use_item_meta_editor(itemstack, user, pointed_thing)
+ if not user:is_player() then
+ return itemstack
+ end
+ local item_to_edit = get_item_next_to_wielded_item(user)
+ if item_to_edit:is_empty() then
+ minetest.chat_send_player(user:get_player_name(), S("Place an item next to the Item Meta Editor in your inventory first!"))
+ return itemstack
+ end
+ local meta = item_to_edit:get_meta()
+ show_meta_formspec(user, "item", item_to_edit, "", "", get_meta_keylist(meta, user:get_player_name(), true))
+ return itemstack
+end
+
+minetest.register_tool("testtools:item_meta_editor", {
+ description = S("Item Meta Editor") .. "\n" ..
+ S("Punch/Place: Edit item metadata of item in the next inventory slot"),
+ inventory_image = "testtools_item_meta_editor.png",
+ groups = { testtool = 1, disable_repair = 1 },
+ on_use = use_item_meta_editor,
+ on_secondary_use = use_item_meta_editor,
+ on_place = use_item_meta_editor,
+})
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if not (player and player:is_player()) then
+ return
+ end
+ if formname == "testtools:entity_list" then
+ local name = player:get_player_name()
+ if fields.entity_list then
+ local expl = minetest.explode_textlist_event(fields.entity_list)
+ if expl.type == "DCL" then
+ local pos = vector.add(player:get_pos(), {x=0,y=1,z=0})
+ selections[name] = expl.index
+ minetest.add_entity(pos, get_entity_list()[expl.index])
+ return
+ elseif expl.type == "CHG" then
+ selections[name] = expl.index
+ return
+ end
+ elseif fields.spawn and selections[name] then
+ local pos = vector.add(player:get_pos(), {x=0,y=1,z=0})
+ minetest.add_entity(pos, get_entity_list()[selections[name]])
+ return
+ end
+ elseif formname == "testtools:object_editor" then
+ local name = player:get_player_name()
+ if fields.object_props then
+ local expl = minetest.explode_textlist_event(fields.object_props)
+ if expl.type == "DCL" or expl.type == "CHG" then
+ property_formspec_index[name] = expl.index
+
+ local props = selected_objects[name]:get_properties()
+ local keys = property_formspec_data[name]
+ if (not property_formspec_index[name]) or (not props) then
+ return
+ end
+ local key = keys[property_formspec_index[name]]
+ editor_formspec_selindex[name] = expl.index
+ editor_formspec(name, selected_objects[name], prop_to_string(props[key]), expl.index)
+ return
+ end
+ end
+ if fields.key_enter_field == "value" or fields.submit then
+ local props = selected_objects[name]:get_properties()
+ local keys = property_formspec_data[name]
+ if (not property_formspec_index[name]) or (not props) then
+ return
+ end
+ local key = keys[property_formspec_index[name]]
+ if not key then
+ return
+ end
+ local success, str = use_loadstring(fields.value, player)
+ if success then
+ props[key] = str
+ else
+ minetest.chat_send_player(name, str)
+ return
+ end
+ selected_objects[name]:set_properties(props)
+ local sel = editor_formspec_selindex[name]
+ 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" or formname == "testtools:item_meta_editor" then
+ local name = player:get_player_name()
+ local metatype
+ local pos_or_item
+ if formname == "testtools:node_meta_editor" then
+ metatype = "node"
+ pos_or_item = node_meta_posses[name]
+ else
+ metatype = "item"
+ pos_or_item = get_item_next_to_wielded_item(player)
+ end
+ if fields.keylist then
+ local evnt = minetest.explode_textlist_event(fields.keylist)
+ if evnt.type == "DCL" or evnt.type == "CHG" then
+ local keylist_table = meta_latest_keylist[name]
+ if metatype == "node" and not pos_or_item then
+ return
+ end
+ local meta
+ if metatype == "node" then
+ meta = minetest.get_meta(pos_or_item)
+ else
+ meta = pos_or_item:get_meta()
+ end
+ 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_meta_formspec(player, metatype, pos_or_item, key, value, keylist)
+ return
+ end
+ elseif fields.key and fields.key ~= "" and fields.value then
+ if metatype == "node" and not pos_or_item then
+ return
+ end
+ local meta
+ if metatype == "node" then
+ meta = minetest.get_meta(pos_or_item)
+ elseif metatype == "item" then
+ if pos_or_item:is_empty() then
+ return
+ end
+ meta = pos_or_item:get_meta()
+ end
+ if fields.set then
+ meta:set_string(fields.key, fields.value)
+ if metatype == "item" then
+ set_item_next_to_wielded_item(player, pos_or_item)
+ end
+ show_meta_formspec(player, metatype, pos_or_item, fields.key, fields.value,
+ get_meta_keylist(meta, name, true))
+ end
+ return
+ end
+ end
+end)
+
+minetest.register_on_leaveplayer(function(player)
+ local name = player:get_player_name()
+ 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
new file mode 100644
index 000000000..afca9a489
--- /dev/null
+++ b/games/devtest/mods/testtools/light.lua
@@ -0,0 +1,37 @@
+
+local S = minetest.get_translator("testtools")
+
+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 = ("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/mod.conf b/games/devtest/mods/testtools/mod.conf
new file mode 100644
index 000000000..cde1b2685
--- /dev/null
+++ b/games/devtest/mods/testtools/mod.conf
@@ -0,0 +1,2 @@
+name = testtools
+description = Some tools to directly manipulate nodes and entities. Great for development and testing
diff --git a/games/devtest/mods/testtools/textures/testtools_children_getter.png b/games/devtest/mods/testtools/textures/testtools_children_getter.png
new file mode 100644
index 000000000..b7fa34025
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_children_getter.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_entity_rotator.png b/games/devtest/mods/testtools/textures/testtools_entity_rotator.png
new file mode 100644
index 000000000..17ebb2d35
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_entity_rotator.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_entity_scaler.png b/games/devtest/mods/testtools/textures/testtools_entity_scaler.png
new file mode 100644
index 000000000..4909c25b0
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_entity_scaler.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_entity_spawner.png b/games/devtest/mods/testtools/textures/testtools_entity_spawner.png
new file mode 100644
index 000000000..6199e0145
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_entity_spawner.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_falling_node_tool.png b/games/devtest/mods/testtools/textures/testtools_falling_node_tool.png
new file mode 100644
index 000000000..30099a7ef
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_falling_node_tool.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_item_meta_editor.png b/games/devtest/mods/testtools/textures/testtools_item_meta_editor.png
new file mode 100644
index 000000000..5cebb0a9d
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_item_meta_editor.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_lighttool.png b/games/devtest/mods/testtools/textures/testtools_lighttool.png
new file mode 100644
index 000000000..6f744b7fa
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_lighttool.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png b/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png
new file mode 100644
index 000000000..89eafd65c
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_node_meta_editor.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_node_setter.png b/games/devtest/mods/testtools/textures/testtools_node_setter.png
new file mode 100644
index 000000000..8599438de
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_node_setter.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_object_attacher.png b/games/devtest/mods/testtools/textures/testtools_object_attacher.png
new file mode 100644
index 000000000..4d9bf6fd1
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_object_attacher.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_object_editor.png b/games/devtest/mods/testtools/textures/testtools_object_editor.png
new file mode 100644
index 000000000..d1ce9cecd
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_object_editor.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_object_mover.png b/games/devtest/mods/testtools/textures/testtools_object_mover.png
new file mode 100644
index 000000000..8b14e9fb2
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_object_mover.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_param2tool.png b/games/devtest/mods/testtools/textures/testtools_param2tool.png
new file mode 100644
index 000000000..dbc663575
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_param2tool.png
Binary files differ
diff --git a/games/devtest/mods/testtools/textures/testtools_remover.png b/games/devtest/mods/testtools/textures/testtools_remover.png
new file mode 100644
index 000000000..73f14cd54
--- /dev/null
+++ b/games/devtest/mods/testtools/textures/testtools_remover.png
Binary files differ
diff --git a/games/devtest/mods/tiled/init.lua b/games/devtest/mods/tiled/init.lua
new file mode 100644
index 000000000..68ead8e3a
--- /dev/null
+++ b/games/devtest/mods/tiled/init.lua
@@ -0,0 +1,33 @@
+minetest.register_node("tiled:tiled", {
+ description = "Tiled Node (world-aligned)",
+ tiles = {{
+ name = "tiled_tiled.png",
+ align_style = "world",
+ scale = 8,
+ }},
+ groups = {cracky=3},
+})
+
+minetest.register_node("tiled:tiled_n", {
+ description = "Tiled Node (node-aligned)",
+ tiles = {{
+ name = "tiled_tiled.png",
+ align_style = "node",
+ scale = 8,
+ }},
+ groups = {cracky=3},
+})
+
+stairs.register_stair_and_slab("tiled_n", "tiled:tiled",
+ {cracky=3},
+ {{name="tiled_tiled.png", align_style="node", scale=8}},
+ "Tiled Stair (node-aligned)",
+ "Tiled Slab (node-aligned)")
+
+stairs.register_stair_and_slab("tiled", "tiled:tiled",
+ {cracky=3},
+ {{name="tiled_tiled.png", align_style="world", scale=8}},
+ "Tiled Stair (world-aligned)",
+ "Tiled Slab (world-aligned)")
+
+
diff --git a/games/devtest/mods/tiled/mod.conf b/games/devtest/mods/tiled/mod.conf
new file mode 100644
index 000000000..78b19f93b
--- /dev/null
+++ b/games/devtest/mods/tiled/mod.conf
@@ -0,0 +1,3 @@
+name = tiled
+description = Add nodes with a special texture that spans multiple nodes (aka "world-aligned")
+depends = stairs
diff --git a/games/devtest/mods/tiled/textures/tiled_tiled.png b/games/devtest/mods/tiled/textures/tiled_tiled.png
new file mode 100644
index 000000000..363a26487
--- /dev/null
+++ b/games/devtest/mods/tiled/textures/tiled_tiled.png
Binary files differ
diff --git a/games/devtest/mods/unittests/async_env.lua b/games/devtest/mods/unittests/async_env.lua
new file mode 100644
index 000000000..b7edf941e
--- /dev/null
+++ b/games/devtest/mods/unittests/async_env.lua
@@ -0,0 +1,168 @@
+-- helper
+
+core.register_async_dofile(core.get_modpath(core.get_current_modname()) ..
+ DIR_DELIM .. "inside_async_env.lua")
+
+local function deepequal(a, b)
+ if type(a) == "function" then
+ return type(b) == "function"
+ elseif type(a) ~= "table" then
+ return a == b
+ elseif type(b) ~= "table" then
+ return false
+ end
+ for k, v in pairs(a) do
+ if not deepequal(v, b[k]) then
+ return false
+ end
+ end
+ for k, v in pairs(b) do
+ if not deepequal(a[k], v) then
+ return false
+ end
+ end
+ return true
+end
+
+-- Object Passing / Serialization
+
+local test_object = {
+ name = "stairs:stair_glass",
+ type = "node",
+ groups = {oddly_breakable_by_hand = 3, cracky = 3, stair = 1},
+ description = "Glass Stair",
+ sounds = {
+ dig = {name = "default_glass_footstep", gain = 0.5},
+ footstep = {name = "default_glass_footstep", gain = 0.3},
+ dug = {name = "default_break_glass", gain = 1}
+ },
+ node_box = {
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5}
+ },
+ type = "fixed"
+ },
+ tiles = {
+ {name = "stairs_glass_split.png", backface_culling = true},
+ {name = "default_glass.png", backface_culling = true},
+ {name = "stairs_glass_stairside.png^[transformFX", backface_culling = true}
+ },
+ on_place = function(itemstack, placer)
+ return core.is_player(placer)
+ end,
+ sunlight_propagates = true,
+ is_ground_content = false,
+ light_source = 0,
+}
+
+local function test_object_passing()
+ local tmp = core.serialize_roundtrip(test_object)
+ assert(deepequal(test_object, tmp))
+
+ local circular_key = {"foo", "bar"}
+ circular_key[circular_key] = true
+ tmp = core.serialize_roundtrip(circular_key)
+ assert(tmp[1] == "foo")
+ assert(tmp[2] == "bar")
+ assert(tmp[tmp] == true)
+
+ local circular_value = {"foo"}
+ circular_value[2] = circular_value
+ tmp = core.serialize_roundtrip(circular_value)
+ assert(tmp[1] == "foo")
+ assert(tmp[2] == tmp)
+
+ -- Two-segment cycle
+ local cycle_seg_1, cycle_seg_2 = {}, {}
+ cycle_seg_1[1] = cycle_seg_2
+ cycle_seg_2[1] = cycle_seg_1
+ tmp = core.serialize_roundtrip(cycle_seg_1)
+ assert(tmp[1][1] == tmp)
+
+ -- Duplicated value without a cycle
+ local acyclic_dup_holder = {}
+ tmp = ItemStack("")
+ acyclic_dup_holder[tmp] = tmp
+ tmp = core.serialize_roundtrip(acyclic_dup_holder)
+ for k, v in pairs(tmp) do
+ assert(rawequal(k, v))
+ end
+end
+unittests.register("test_object_passing", test_object_passing)
+
+local function test_userdata_passing(_, pos)
+ -- basic userdata passing
+ local obj = table.copy(test_object.tiles[1])
+ obj.test = ItemStack("default:cobble 99")
+ local tmp = core.serialize_roundtrip(obj)
+ assert(type(tmp.test) == "userdata")
+ assert(obj.test:to_string() == tmp.test:to_string())
+
+ -- object can't be passed, should error
+ obj = core.raycast(pos, pos)
+ assert(not pcall(core.serialize_roundtrip, obj))
+
+ -- VManip
+ local vm = core.get_voxel_manip(pos, pos)
+ local expect = vm:get_node_at(pos)
+ local vm2 = core.serialize_roundtrip(vm)
+ assert(deepequal(vm2:get_node_at(pos), expect))
+end
+unittests.register("test_userdata_passing", test_userdata_passing, {map=true})
+
+-- Asynchronous jobs
+
+local function test_handle_async(cb)
+ -- Basic test including mod name tracking and unittests.async_test()
+ -- which is defined inside_async_env.lua
+ local func = function(x)
+ return core.get_last_run_mod(), _VERSION, unittests[x]()
+ end
+ local expect = {core.get_last_run_mod(), _VERSION, true}
+
+ core.handle_async(func, function(...)
+ if not deepequal(expect, {...}) then
+ return cb("Values did not equal")
+ end
+ if core.get_last_run_mod() ~= expect[1] then
+ return cb("Mod name not tracked correctly")
+ end
+
+ -- Test passing of nil arguments and return values
+ core.handle_async(function(a, b)
+ return a, b
+ end, function(a, b)
+ if b ~= 123 then
+ return cb("Argument went missing")
+ end
+ cb()
+ end, nil, 123)
+ end, "async_test")
+end
+unittests.register("test_handle_async", test_handle_async, {async=true})
+
+local function test_userdata_passing2(cb, _, pos)
+ -- VManip: check transfer into other env
+ local vm = core.get_voxel_manip(pos, pos)
+ local expect = vm:get_node_at(pos)
+
+ core.handle_async(function(vm_, pos_)
+ return vm_:get_node_at(pos_)
+ end, function(ret)
+ if not deepequal(expect, ret) then
+ return cb("Node data mismatch (one-way)")
+ end
+
+ -- VManip: test a roundtrip
+ core.handle_async(function(vm_)
+ return vm_
+ end, function(vm2)
+ if not deepequal(expect, vm2:get_node_at(pos)) then
+ return cb("Node data mismatch (roundtrip)")
+ end
+ cb()
+ end, vm)
+ end, vm, pos)
+end
+unittests.register("test_userdata_passing2", test_userdata_passing2, {map=true, async=true})
diff --git a/games/devtest/mods/unittests/crafting.lua b/games/devtest/mods/unittests/crafting.lua
new file mode 100644
index 000000000..8c16d3efb
--- /dev/null
+++ b/games/devtest/mods/unittests/crafting.lua
@@ -0,0 +1,112 @@
+dofile(core.get_modpath(core.get_current_modname()) .. "/crafting_prepare.lua")
+
+-- Test minetest.clear_craft function
+local function test_clear_craft()
+ -- Clearing by output
+ minetest.register_craft({
+ output = "foo",
+ recipe = {{"bar"}}
+ })
+ minetest.register_craft({
+ output = "foo 4",
+ recipe = {{"foo", "bar"}}
+ })
+ assert(#minetest.get_all_craft_recipes("foo") == 2)
+ minetest.clear_craft({output="foo"})
+ assert(minetest.get_all_craft_recipes("foo") == nil)
+ -- Clearing by input
+ minetest.register_craft({
+ output = "foo 4",
+ recipe = {{"foo", "bar"}}
+ })
+ assert(#minetest.get_all_craft_recipes("foo") == 1)
+ minetest.clear_craft({recipe={{"foo", "bar"}}})
+ assert(minetest.get_all_craft_recipes("foo") == nil)
+end
+unittests.register("test_clear_craft", test_clear_craft)
+
+-- Test minetest.get_craft_result function
+local function test_get_craft_result()
+ -- normal
+ local input = {
+ method = "normal",
+ width = 2,
+ items = {"", "unittests:coal_lump", "", "unittests:stick"}
+ }
+ minetest.log("info", "[unittests] torch crafting input: "..dump(input))
+ local output, decremented_input = minetest.get_craft_result(input)
+ minetest.log("info", "[unittests] torch crafting output: "..dump(output))
+ minetest.log("info", "[unittests] torch crafting decremented input: "..dump(decremented_input))
+ assert(output.item)
+ minetest.log("info", "[unittests] torch crafting output.item:to_table(): "..dump(output.item:to_table()))
+ assert(output.item:get_name() == "unittests:torch")
+ assert(output.item:get_count() == 4)
+
+ -- fuel
+ input = {
+ method = "fuel",
+ width = 1,
+ items = {"unittests:coal_lump"}
+ }
+ minetest.log("info", "[unittests] coal fuel input: "..dump(input))
+ output, decremented_input = minetest.get_craft_result(input)
+ minetest.log("info", "[unittests] coal fuel output: "..dump(output))
+ minetest.log("info", "[unittests] coal fuel decremented input: "..dump(decremented_input))
+ assert(output.time)
+ assert(output.time > 0)
+
+ -- cooking
+ input = {
+ method = "cooking",
+ width = 1,
+ items = {"unittests:iron_lump"}
+ }
+ minetest.log("info", "[unittests] iron lump cooking input: "..dump(output))
+ output, decremented_input = minetest.get_craft_result(input)
+ minetest.log("info", "[unittests] iron lump cooking output: "..dump(output))
+ minetest.log("info", "[unittests] iron lump cooking decremented input: "..dump(decremented_input))
+ assert(output.time)
+ assert(output.time > 0)
+ assert(output.item)
+ minetest.log("info", "[unittests] iron lump cooking output.item:to_table(): "..dump(output.item:to_table()))
+ assert(output.item:get_name() == "unittests:steel_ingot")
+ assert(output.item:get_count() == 1)
+
+ -- tool repair (repairable)
+ input = {
+ method = "normal",
+ width = 2,
+ -- Using a wear of 60000
+ items = {"unittests:repairable_tool 1 60000", "unittests:repairable_tool 1 60000"}
+ }
+ minetest.log("info", "[unittests] repairable tool crafting input: "..dump(input))
+ output, decremented_input = minetest.get_craft_result(input)
+ minetest.log("info", "[unittests] repairable tool crafting output: "..dump(output))
+ minetest.log("info", "[unittests] repairable tool crafting decremented input: "..dump(decremented_input))
+ assert(output.item)
+ minetest.log("info", "[unittests] repairable tool crafting output.item:to_table(): "..dump(output.item:to_table()))
+ assert(output.item:get_name() == "unittests:repairable_tool")
+ -- Test the wear value.
+ -- See src/craftdef.cpp in Minetest source code for the formula. The formula to calculate
+ -- the value 51187 is:
+ -- 65536 - ((65536-60000)+(65536-60000)) + floor(additonal_wear * 65536 + 0.5) = 51187
+ -- where additional_wear = 0.05
+ assert(output.item:get_wear() == 51187)
+ assert(output.item:get_count() == 1)
+
+ -- failing tool repair (unrepairable)
+ input = {
+ method = "normal",
+ width = 2,
+ items = {"unittests:unrepairable_tool 1 60000", "unittests:unrepairable_tool 1 60000"}
+ }
+ minetest.log("info", "[unittests] unrepairable tool crafting input: "..dump(input))
+ output, decremented_input = minetest.get_craft_result(input)
+ minetest.log("info", "[unittests] unrepairable tool crafting output: "..dump(output))
+ minetest.log("info", "[unittests] unrepairable tool crafting decremented input: "..dump(decremented_input))
+ assert(output.item)
+ minetest.log("info", "[unittests] unrepairable tool crafting output.item:to_table(): "..dump(output.item:to_table()))
+ -- unrepairable tool must not yield any output
+ assert(output.item:is_empty())
+end
+unittests.register("test_get_craft_result", test_get_craft_result)
diff --git a/games/devtest/mods/unittests/crafting_prepare.lua b/games/devtest/mods/unittests/crafting_prepare.lua
new file mode 100644
index 000000000..5cf5775e0
--- /dev/null
+++ b/games/devtest/mods/unittests/crafting_prepare.lua
@@ -0,0 +1,94 @@
+-- Registering some dummy items and recipes for the crafting tests
+
+minetest.register_craftitem("unittests:torch", {
+ description = "Crafting Test Item: Torch",
+ inventory_image = "unittests_torch.png",
+
+ groups = { dummy = 1 },
+})
+minetest.register_craftitem("unittests:coal_lump", {
+ description = "Crafting Test Item: Coal Lump",
+ inventory_image = "unittests_coal_lump.png",
+
+ groups = { dummy = 1 },
+})
+minetest.register_craftitem("unittests:stick", {
+ description = "Crafting Test Item: Stick",
+ inventory_image = "unittests_stick.png",
+
+ groups = { dummy = 1 },
+})
+minetest.register_craftitem("unittests:iron_lump", {
+ description = "Crafting Test Item: Iron Lump",
+ inventory_image = "unittests_iron_lump.png",
+
+ groups = { dummy = 1 },
+})
+minetest.register_craftitem("unittests:steel_ingot", {
+ description = "Crafting Test Item: Steel Ingot",
+ inventory_image = "unittests_steel_ingot.png",
+
+ groups = { dummy = 1 },
+})
+
+-- Use aliases in recipes for more complete testing
+
+minetest.register_alias("unittests:steel_ingot_alias", "unittests:steel_ingot")
+minetest.register_alias("unittests:coal_lump_alias", "unittests:coal_lump")
+minetest.register_alias("unittests:iron_lump_alias", "unittests:iron_lump")
+
+-- Recipes for tests: Normal crafting, cooking and fuel
+
+minetest.register_craft({
+ output = 'unittests:torch 4',
+ recipe = {
+ {'unittests:coal_lump_alias'},
+ {'unittests:stick'},
+ }
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "unittests:steel_ingot_alias",
+ recipe = "unittests:iron_lump_alias",
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "unittests:coal_lump_alias",
+ burntime = 40,
+})
+
+-- Test tool repair
+minetest.register_craft({
+ type = "toolrepair",
+ additional_wear = -0.05,
+})
+
+-- Test the disable_repair=1 group
+minetest.register_tool("unittests:unrepairable_tool", {
+ description = "Crafting Test Item: Unrepairable Tool",
+ inventory_image = "unittests_unrepairable_tool.png",
+ tool_capabilities = {
+ groupcaps = {
+ cracky = {
+ times = {3, 2, 1},
+ }
+ }
+ },
+ groups = { disable_repair = 1, dummy = 1 }
+})
+
+minetest.register_tool("unittests:repairable_tool", {
+ description = "Crafting Test Item: Repairable Tool",
+ inventory_image = "unittests_repairable_tool.png",
+ tool_capabilities = {
+ groupcaps = {
+ cracky = {
+ times = {3, 2, 1},
+ }
+ }
+ },
+
+ groups = { dummy = 1 },
+})
diff --git a/games/devtest/mods/unittests/entity.lua b/games/devtest/mods/unittests/entity.lua
new file mode 100644
index 000000000..68635cad7
--- /dev/null
+++ b/games/devtest/mods/unittests/entity.lua
@@ -0,0 +1,132 @@
+local log = {}
+
+local function insert_log(...)
+ log[#log+1] = string.format(...)
+end
+
+local function objref_str(self, ref)
+ if ref and ref:is_player() then
+ return "player"
+ end
+ return self.object == ref and "self" or tostring(ref)
+end
+
+core.register_entity("unittests:callbacks", {
+ initial_properties = {
+ hp_max = 5,
+ visual = "upright_sprite",
+ textures = { "unittests_stick.png" },
+ static_save = false,
+ },
+
+ on_activate = function(self, staticdata, dtime_s)
+ self.object:set_armor_groups({test = 100})
+ assert(self.object:get_hp() == self.initial_properties.hp_max)
+ insert_log("on_activate(%d)", #staticdata)
+ end,
+ on_deactivate = function(self, removal)
+ insert_log("on_deactivate(%s)", tostring(removal))
+ end,
+ on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
+ insert_log("on_punch(%s, %.1f, %d)", objref_str(self, puncher),
+ time_from_last_punch, damage)
+ end,
+ on_death = function(self, killer)
+ assert(self.object:get_hp() == 0)
+ insert_log("on_death(%s)", objref_str(self, killer))
+ end,
+ on_rightclick = function(self, clicker)
+ insert_log("on_rightclick(%s)", objref_str(self, clicker))
+ end,
+ on_attach_child = function(self, child)
+ insert_log("on_attach_child(%s)", objref_str(self, child))
+ end,
+ on_detach_child = function(self, child)
+ insert_log("on_detach_child(%s)", objref_str(self, child))
+ end,
+ on_detach = function(self, parent)
+ insert_log("on_detach(%s)", objref_str(self, parent))
+ end,
+ get_staticdata = function(self)
+ assert(false)
+ end,
+})
+
+--
+
+local function check_log(expect)
+ if #expect ~= #log then
+ error("Log mismatch: " .. core.write_json(log))
+ end
+ for i, s in ipairs(expect) do
+ if log[i] ~= s then
+ error("Log mismatch at " .. i .. ": " .. core.write_json(log))
+ end
+ end
+ log = {} -- clear it for next time
+end
+
+local function test_entity_lifecycle(_, pos)
+ log = {}
+
+ -- with binary in staticdata
+ local obj = core.add_entity(pos, "unittests:callbacks", "abc\000def")
+ check_log({"on_activate(7)"})
+
+ obj:set_hp(0)
+ check_log({"on_death(nil)", "on_deactivate(true)"})
+
+ -- objectref must be invalid now
+ assert(obj:get_velocity() == nil)
+end
+unittests.register("test_entity_lifecycle", test_entity_lifecycle, {map=true})
+
+local function test_entity_interact(_, pos)
+ log = {}
+
+ local obj = core.add_entity(pos, "unittests:callbacks")
+ check_log({"on_activate(0)"})
+
+ -- rightclick
+ obj:right_click(obj)
+ check_log({"on_rightclick(self)"})
+
+ -- useless punch
+ obj:punch(obj, 0.5, {})
+ check_log({"on_punch(self, 0.5, 0)"})
+
+ -- fatal punch
+ obj:punch(obj, 1.9, {
+ full_punch_interval = 1.0,
+ damage_groups = { test = 10 },
+ })
+ check_log({
+ -- does 10 damage even though we only have 5 hp
+ "on_punch(self, 1.9, 10)",
+ "on_death(self)",
+ "on_deactivate(true)"
+ })
+end
+unittests.register("test_entity_interact", test_entity_interact, {map=true})
+
+local function test_entity_attach(player, pos)
+ log = {}
+
+ local obj = core.add_entity(pos, "unittests:callbacks")
+ check_log({"on_activate(0)"})
+
+ -- attach player to entity
+ player:set_attach(obj)
+ check_log({"on_attach_child(player)"})
+ player:set_detach()
+ check_log({"on_detach_child(player)"})
+
+ -- attach entity to player
+ obj:set_attach(player)
+ check_log({})
+ obj:set_detach()
+ check_log({"on_detach(player)"})
+
+ obj:remove()
+end
+unittests.register("test_entity_attach", test_entity_attach, {player=true, map=true})
diff --git a/games/devtest/mods/unittests/init.lua b/games/devtest/mods/unittests/init.lua
new file mode 100644
index 000000000..0e041be76
--- /dev/null
+++ b/games/devtest/mods/unittests/init.lua
@@ -0,0 +1,202 @@
+unittests = {}
+
+unittests.list = {}
+
+-- name: Name of the test
+-- func:
+-- for sync: function(player, pos), should error on failure
+-- for async: function(callback, player, pos)
+-- MUST call callback() or callback("error msg") in case of error once test is finished
+-- this means you cannot use assert() in the test implementation
+-- opts: {
+-- player = false, -- Does test require a player?
+-- map = false, -- Does test require map access?
+-- async = false, -- Does the test run asynchronously? (read notes above!)
+-- }
+function unittests.register(name, func, opts)
+ local def = table.copy(opts or {})
+ def.name = name
+ def.func = func
+ table.insert(unittests.list, def)
+end
+
+function unittests.on_finished(all_passed)
+ -- free to override
+end
+
+-- Calls invoke with a callback as argument
+-- Suspends coroutine until that callback is called
+-- Return values are passed through
+local function await(invoke)
+ local co = coroutine.running()
+ assert(co)
+ local called_early = true
+ invoke(function(...)
+ if called_early == true then
+ called_early = {...}
+ else
+ coroutine.resume(co, ...)
+ co = nil
+ end
+ end)
+ if called_early ~= true then
+ -- callback was already called before yielding
+ return unpack(called_early)
+ end
+ called_early = nil
+ return coroutine.yield()
+end
+
+function unittests.run_one(idx, counters, out_callback, player, pos)
+ local def = unittests.list[idx]
+ if not def.player then
+ player = nil
+ elseif player == nil then
+ out_callback(false)
+ return false
+ end
+ if not def.map then
+ pos = nil
+ elseif pos == nil then
+ out_callback(false)
+ return false
+ end
+
+ local tbegin = core.get_us_time()
+ local function done(status, err)
+ local tend = core.get_us_time()
+ local ms_taken = (tend - tbegin) / 1000
+
+ if not status then
+ core.log("error", err)
+ end
+ print(string.format("[%s] %s - %dms",
+ status and "PASS" or "FAIL", def.name, ms_taken))
+ counters.time = counters.time + ms_taken
+ counters.total = counters.total + 1
+ if status then
+ counters.passed = counters.passed + 1
+ end
+ end
+
+ if def.async then
+ core.log("info", "[unittest] running " .. def.name .. " (async)")
+ def.func(function(err)
+ done(err == nil, err)
+ out_callback(true)
+ end, player, pos)
+ else
+ core.log("info", "[unittest] running " .. def.name)
+ local status, err = pcall(def.func, player, pos)
+ done(status, err)
+ out_callback(true)
+ end
+
+ return true
+end
+
+local function wait_for_player(callback)
+ if #core.get_connected_players() > 0 then
+ return callback(core.get_connected_players()[1])
+ end
+ local first = true
+ core.register_on_joinplayer(function(player)
+ if first then
+ callback(player)
+ first = false
+ end
+ end)
+end
+
+local function wait_for_map(player, callback)
+ local check = function()
+ if core.get_node_or_nil(player:get_pos()) ~= nil then
+ callback()
+ else
+ core.after(0, check)
+ end
+ end
+ check()
+end
+
+function unittests.run_all()
+ -- This runs in a coroutine so it uses await().
+ local counters = { time = 0, total = 0, passed = 0 }
+
+ -- Run standalone tests first
+ for idx = 1, #unittests.list do
+ local def = unittests.list[idx]
+ def.done = await(function(cb)
+ unittests.run_one(idx, counters, cb, nil, nil)
+ end)
+ end
+
+ -- Wait for a player to join, run tests that require a player
+ local player = await(wait_for_player)
+ for idx = 1, #unittests.list do
+ local def = unittests.list[idx]
+ if not def.done then
+ def.done = await(function(cb)
+ unittests.run_one(idx, counters, cb, player, nil)
+ end)
+ end
+ end
+
+ -- Wait for the world to generate/load, run tests that require map access
+ await(function(cb)
+ wait_for_map(player, cb)
+ end)
+ local pos = vector.round(player:get_pos())
+ for idx = 1, #unittests.list do
+ local def = unittests.list[idx]
+ if not def.done then
+ def.done = await(function(cb)
+ unittests.run_one(idx, counters, cb, player, pos)
+ end)
+ end
+ end
+
+ -- Print stats
+ assert(#unittests.list == counters.total)
+ print(string.rep("+", 80))
+ print(string.format("Unit Test Results: %s",
+ counters.total == counters.passed and "PASSED" or "FAILED"))
+ print(string.format(" %d / %d failed tests.",
+ counters.total - counters.passed, counters.total))
+ print(string.format(" Testing took %dms total.", counters.time))
+ print(string.rep("+", 80))
+ unittests.on_finished(counters.total == counters.passed)
+ return counters.total == counters.passed
+end
+
+--------------
+
+local modpath = core.get_modpath("unittests")
+dofile(modpath .. "/misc.lua")
+dofile(modpath .. "/player.lua")
+dofile(modpath .. "/crafting.lua")
+dofile(modpath .. "/itemdescription.lua")
+dofile(modpath .. "/async_env.lua")
+dofile(modpath .. "/entity.lua")
+
+--------------
+
+if core.settings:get_bool("devtest_unittests_autostart", false) then
+ core.after(0, function()
+ coroutine.wrap(unittests.run_all)()
+ end)
+else
+ core.register_chatcommand("unittests", {
+ privs = {basic_privs=true},
+ description = "Runs devtest unittests (may modify player or map state)",
+ func = function(name, param)
+ unittests.on_finished = function(ok)
+ core.chat_send_player(name,
+ (ok and "All tests passed." or "There were test failures.") ..
+ " Check the console for detailed output.")
+ end
+ coroutine.wrap(unittests.run_all)()
+ return true, ""
+ end,
+ })
+end
diff --git a/games/devtest/mods/unittests/inside_async_env.lua b/games/devtest/mods/unittests/inside_async_env.lua
new file mode 100644
index 000000000..4ed0fccd2
--- /dev/null
+++ b/games/devtest/mods/unittests/inside_async_env.lua
@@ -0,0 +1,25 @@
+unittests = {}
+
+core.log("info", "Hello World")
+
+local function do_tests()
+ assert(core == minetest)
+ -- stuff that should not be here
+ assert(not core.get_player_by_name)
+ assert(not core.set_node)
+ assert(not core.object_refs)
+ -- stuff that should be here
+ assert(ItemStack)
+ assert(core.registered_items[""])
+ -- alias handling
+ assert(core.registered_items["unittests:steel_ingot_alias"].name ==
+ "unittests:steel_ingot")
+end
+
+function unittests.async_test()
+ local ok, err = pcall(do_tests)
+ if not ok then
+ core.log("error", err)
+ end
+ return ok
+end
diff --git a/games/devtest/mods/unittests/itemdescription.lua b/games/devtest/mods/unittests/itemdescription.lua
new file mode 100644
index 000000000..b4c218c98
--- /dev/null
+++ b/games/devtest/mods/unittests/itemdescription.lua
@@ -0,0 +1,42 @@
+local full_description = "Description Test Item\nFor testing item decription"
+minetest.register_tool("unittests:description_test", {
+ description = full_description,
+ inventory_image = "unittests_description_test.png",
+})
+
+minetest.register_chatcommand("item_description", {
+ param = "",
+ description = "Show the short and full description of the wielded item.",
+ func = function(name)
+ local player = minetest.get_player_by_name(name)
+ local item = player:get_wielded_item()
+ return true, string.format("short_description: %s\ndescription: %s",
+ item:get_short_description(), item:get_description())
+ end
+})
+
+local function test_short_desc()
+ local function get_short_description(item)
+ return ItemStack(item):get_short_description()
+ end
+
+ local stack = ItemStack("unittests:description_test")
+ assert(stack:get_short_description() == "Description Test Item")
+ assert(get_short_description("unittests:description_test") == "Description Test Item")
+ assert(minetest.registered_items["unittests:description_test"].short_description == nil)
+ assert(stack:get_description() == full_description)
+ assert(stack:get_description() == minetest.registered_items["unittests:description_test"].description)
+
+ stack:get_meta():set_string("description", "Hello World")
+ 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:description_test") == "Description Test Item")
+
+ stack:get_meta():set_string("short_description", "Foo Bar")
+ assert(stack:get_short_description() == "Foo Bar")
+ assert(stack:get_description() == "Hello World")
+
+ return true
+end
+unittests.register("test_short_desc", test_short_desc)
diff --git a/games/devtest/mods/unittests/misc.lua b/games/devtest/mods/unittests/misc.lua
new file mode 100644
index 000000000..4811c8008
--- /dev/null
+++ b/games/devtest/mods/unittests/misc.lua
@@ -0,0 +1,82 @@
+local function test_random()
+ -- Try out PseudoRandom
+ local pseudo = PseudoRandom(13)
+ assert(pseudo:next() == 22290)
+ assert(pseudo:next() == 13854)
+end
+unittests.register("test_random", test_random)
+
+local function test_dynamic_media(cb, player)
+ if core.get_player_information(player:get_player_name()).protocol_version < 40 then
+ core.log("warning", "test_dynamic_media: Client too old, skipping test.")
+ return cb()
+ end
+
+ -- Check that the client acknowledges media transfers
+ local path = core.get_worldpath() .. "/test_media.obj"
+ local f = io.open(path, "w")
+ f:write("# contents don't matter\n")
+ f:close()
+
+ local call_ok = false
+ local ok = core.dynamic_add_media({
+ filepath = path,
+ to_player = player:get_player_name(),
+ }, function(name)
+ if not call_ok then
+ return cb("impossible condition")
+ end
+ cb()
+ end)
+ if not ok then
+ return cb("dynamic_add_media() returned error")
+ end
+ call_ok = true
+
+ -- if the callback isn't called this test will just hang :shrug:
+end
+unittests.register("test_dynamic_media", test_dynamic_media, {async=true, player=true})
+
+local function test_v3f_metatable(player)
+ assert(vector.check(player:get_pos()))
+end
+unittests.register("test_v3f_metatable", test_v3f_metatable, {player=true})
+
+local function test_v3s16_metatable(player, pos)
+ local node = minetest.get_node(pos)
+ local found_pos = minetest.find_node_near(pos, 0, node.name, true)
+ assert(vector.check(found_pos))
+end
+unittests.register("test_v3s16_metatable", test_v3s16_metatable, {map=true})
+
+local function test_clear_meta(_, pos)
+ local ref = core.get_meta(pos)
+
+ for way = 1, 3 do
+ ref:set_string("foo", "bar")
+ assert(ref:contains("foo"))
+
+ if way == 1 then
+ ref:from_table({})
+ elseif way == 2 then
+ ref:from_table(nil)
+ else
+ ref:set_string("foo", "")
+ end
+
+ assert(#core.find_nodes_with_meta(pos, pos) == 0, "clearing failed " .. way)
+ end
+end
+unittests.register("test_clear_meta", test_clear_meta, {map=true})
+
+local on_punch_called
+minetest.register_on_punchnode(function()
+ on_punch_called = true
+end)
+unittests.register("test_punch_node", function(_, pos)
+ minetest.place_node(pos, {name="basenodes:dirt"})
+ on_punch_called = false
+ minetest.punch_node(pos)
+ minetest.remove_node(pos)
+ -- currently failing: assert(on_punch_called)
+end, {map=true})
diff --git a/games/devtest/mods/unittests/mod.conf b/games/devtest/mods/unittests/mod.conf
new file mode 100644
index 000000000..fa94e01a6
--- /dev/null
+++ b/games/devtest/mods/unittests/mod.conf
@@ -0,0 +1,3 @@
+name = unittests
+description = Adds automated unit tests for the engine
+depends = basenodes
diff --git a/games/devtest/mods/unittests/player.lua b/games/devtest/mods/unittests/player.lua
new file mode 100644
index 000000000..fa0557960
--- /dev/null
+++ b/games/devtest/mods/unittests/player.lua
@@ -0,0 +1,70 @@
+--
+-- HP Change Reasons
+--
+local expect = nil
+minetest.register_on_player_hpchange(function(player, hp, reason)
+ if expect == nil then
+ return
+ end
+
+ for key, value in pairs(reason) do
+ assert(expect[key] == value)
+ end
+ for key, value in pairs(expect) do
+ assert(reason[key] == value)
+ end
+
+ expect = nil
+end)
+
+local function run_hpchangereason_tests(player)
+ local old_hp = player:get_hp()
+
+ player:set_hp(20)
+ expect = { type = "set_hp", from = "mod" }
+ player:set_hp(3)
+ assert(expect == nil)
+
+ expect = { a = 234, type = "set_hp", from = "mod" }
+ player:set_hp(7, { a= 234 })
+ assert(expect == nil)
+
+ expect = { df = 3458973454, type = "fall", from = "mod" }
+ player:set_hp(10, { type = "fall", df = 3458973454 })
+ assert(expect == nil)
+
+ player:set_hp(old_hp)
+end
+unittests.register("test_hpchangereason", run_hpchangereason_tests, {player=true})
+
+--
+-- Player meta
+--
+local function run_player_meta_tests(player)
+ local meta = player:get_meta()
+ meta:set_string("foo", "bar")
+ assert(meta:contains("foo"))
+ assert(meta:get_string("foo") == "bar")
+ assert(meta:get("foo") == "bar")
+
+ local meta2 = player:get_meta()
+ assert(meta2:get_string("foo") == "bar")
+ assert(meta2:get("foo") == "bar")
+ assert(meta:equals(meta2))
+
+ meta:set_string("bob", "dillan")
+ assert(meta:get_string("foo") == "bar")
+ assert(meta:get_string("bob") == "dillan")
+ assert(meta:get("bob") == "dillan")
+ assert(meta2:get_string("foo") == "bar")
+ assert(meta2:get_string("bob") == "dillan")
+ assert(meta2:get("bob") == "dillan")
+ assert(meta:equals(meta2))
+
+ meta:set_string("foo", "")
+ assert(not meta:contains("foo"))
+ assert(meta:get("foo") == nil)
+ assert(meta:get_string("foo") == "")
+ assert(meta:equals(meta2))
+end
+unittests.register("test_player_meta", run_player_meta_tests, {player=true})
diff --git a/games/devtest/mods/unittests/textures/default_dirt.png b/games/devtest/mods/unittests/textures/default_dirt.png
new file mode 100644
index 000000000..58670305d
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/default_dirt.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_coal_lump.png b/games/devtest/mods/unittests/textures/unittests_coal_lump.png
new file mode 100644
index 000000000..f460d909e
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_coal_lump.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_description_test.png b/games/devtest/mods/unittests/textures/unittests_description_test.png
new file mode 100644
index 000000000..a6be43314
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_description_test.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_iron_lump.png b/games/devtest/mods/unittests/textures/unittests_iron_lump.png
new file mode 100644
index 000000000..22f43e9cc
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_iron_lump.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_repairable_tool.png b/games/devtest/mods/unittests/textures/unittests_repairable_tool.png
new file mode 100644
index 000000000..46fbbaa74
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_repairable_tool.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_steel_ingot.png b/games/devtest/mods/unittests/textures/unittests_steel_ingot.png
new file mode 100644
index 000000000..6977696a2
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_steel_ingot.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_stick.png b/games/devtest/mods/unittests/textures/unittests_stick.png
new file mode 100644
index 000000000..ffdce70d4
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_stick.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_torch.png b/games/devtest/mods/unittests/textures/unittests_torch.png
new file mode 100644
index 000000000..ba5eebef0
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_torch.png
Binary files differ
diff --git a/games/devtest/mods/unittests/textures/unittests_unrepairable_tool.png b/games/devtest/mods/unittests/textures/unittests_unrepairable_tool.png
new file mode 100644
index 000000000..c676213a5
--- /dev/null
+++ b/games/devtest/mods/unittests/textures/unittests_unrepairable_tool.png
Binary files differ
diff --git a/games/devtest/mods/util_commands/init.lua b/games/devtest/mods/util_commands/init.lua
new file mode 100644
index 000000000..c37364042
--- /dev/null
+++ b/games/devtest/mods/util_commands/init.lua
@@ -0,0 +1,309 @@
+minetest.register_chatcommand("hotbar", {
+ params = "<size>",
+ description = "Set hotbar size",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local size = tonumber(param)
+ if not size then
+ return false, "Missing or incorrect size parameter!"
+ end
+ local ok = player:hud_set_hotbar_itemcount(size)
+ if ok then
+ return true
+ else
+ return false, "Invalid item count!"
+ end
+ end,
+})
+
+minetest.register_chatcommand("hp", {
+ params = "<hp>",
+ description = "Set your health",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local hp = tonumber(param)
+ if not hp then
+ return false, "Missing or incorrect hp parameter!"
+ end
+ player:set_hp(hp)
+ return true
+ end,
+})
+
+minetest.register_on_joinplayer(function(player)
+ player:set_properties({zoom_fov = 15})
+end)
+
+minetest.register_chatcommand("zoomfov", {
+ params = "[<FOV>]",
+ description = "Set or display your zoom_fov",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ if param == "" then
+ local fov = player:get_properties().zoom_fov
+ return true, "zoom_fov = "..tostring(fov)
+ end
+ local fov = tonumber(param)
+ if not fov then
+ return false, "Missing or incorrect zoom_fov parameter!"
+ end
+ player:set_properties({zoom_fov = fov})
+ fov = player:get_properties().zoom_fov
+ return true, "zoom_fov = "..tostring(fov)
+ end,
+})
+
+local s_infplace = minetest.settings:get("devtest_infplace")
+if s_infplace == "true" then
+ infplace = true
+elseif s_infplace == "false" then
+ infplace = false
+else
+ infplace = minetest.is_creative_enabled("")
+end
+
+minetest.register_chatcommand("infplace", {
+ params = "",
+ description = "Toggle infinite node placement",
+ func = function(name, param)
+ infplace = not infplace
+ if infplace then
+ minetest.chat_send_all("Infinite node placement enabled!")
+ minetest.log("action", "Infinite node placement enabled")
+ else
+ minetest.chat_send_all("Infinite node placement disabled!")
+ minetest.log("action", "Infinite node placement disabled")
+ end
+ return true
+ end,
+})
+
+minetest.register_chatcommand("detach", {
+ params = "[<radius>]",
+ description = "Detach all objects nearby",
+ func = function(name, param)
+ local radius = tonumber(param)
+ if type(radius) ~= "number" then
+ radius = 8
+ end
+ if radius < 1 then
+ radius = 1
+ end
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local objs = minetest.get_objects_inside_radius(player:get_pos(), radius)
+ local num = 0
+ for o=1, #objs do
+ if objs[o]:get_attach() then
+ objs[o]:set_detach()
+ num = num + 1
+ end
+ end
+ return true, string.format("%d object(s) detached.", num)
+ end,
+})
+
+minetest.register_chatcommand("use_tool", {
+ params = "(dig <group> <leveldiff>) | (hit <damage_group> <time_from_last_punch>) [<uses>]",
+ description = "Apply tool wear a number of times, as if it were used for digging",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return false, "No player."
+ end
+ local mode, group, level, uses = string.match(param, "([a-z]+) ([a-z0-9]+) (-?%d+) (%d+)")
+ if not mode then
+ mode, group, level = string.match(param, "([a-z]+) ([a-z0-9]+) (-?%d+)")
+ uses = 1
+ end
+ if not mode or not group or not level then
+ return false
+ end
+ if mode ~= "dig" and mode ~= "hit" then
+ return false
+ end
+ local tool = player:get_wielded_item()
+ local caps = tool:get_tool_capabilities()
+ if not caps or tool:get_count() == 0 then
+ return false, "No tool in hand."
+ end
+ local actual_uses = 0
+ for u=1, uses do
+ local wear = tool:get_wear()
+ local dp
+ if mode == "dig" then
+ dp = minetest.get_dig_params({[group]=3, level=level}, caps, wear)
+ else
+ dp = minetest.get_hit_params({[group]=100}, caps, level, wear)
+ end
+ tool:add_wear(dp.wear)
+ actual_uses = actual_uses + 1
+ if tool:get_count() == 0 then
+ break
+ end
+ end
+ player:set_wielded_item(tool)
+ if tool:get_count() == 0 then
+ return true, string.format("Tool used %d time(s). "..
+ "The tool broke after %d use(s).", uses, actual_uses)
+ else
+ local wear = tool:get_wear()
+ return true, string.format("Tool used %d time(s). "..
+ "Final wear=%d", uses, wear)
+ end
+ end,
+})
+
+
+
+-- Use this to test waypoint capabilities
+minetest.register_chatcommand("test_waypoints", {
+ params = "[change_immediate]",
+ description = "tests waypoint capabilities",
+ func = function(name, params)
+ local player = minetest.get_player_by_name(name)
+ local regular = player:hud_add {
+ hud_elem_type = "waypoint",
+ name = "regular waypoint",
+ text = "m",
+ number = 0xFF0000,
+ world_pos = vector.add(player:get_pos(), {x = 0, y = 1.5, z = 0})
+ }
+ local reduced_precision = player:hud_add {
+ hud_elem_type = "waypoint",
+ name = "better waypoint",
+ text = "m (0.5 steps, precision = 2)",
+ precision = 10,
+ number = 0xFFFF00,
+ world_pos = vector.add(player:get_pos(), {x = 0, y = 1, z = 0})
+ }
+ local function change()
+ if regular then
+ player:hud_change(regular, "world_pos", vector.add(player:get_pos(), {x = 0, y = 3, z = 0}))
+ end
+ if reduced_precision then
+ player:hud_change(reduced_precision, "precision", 2)
+ end
+ end
+ if params ~= "" then
+ -- change immediate
+ change()
+ else
+ minetest.after(0.5, change)
+ end
+ regular = regular or "error"
+ reduced_precision = reduced_precision or "error"
+ local hidden_distance = player:hud_add {
+ hud_elem_type = "waypoint",
+ name = "waypoint with hidden distance",
+ text = "this text is hidden as well (precision = 0)",
+ precision = 0,
+ number = 0x0000FF,
+ world_pos = vector.add(player:get_pos(), {x = 0, y = 0.5, z = 0})
+ } or "error"
+ local image_waypoint = player:hud_add {
+ hud_elem_type = "image_waypoint",
+ text = "wieldhand.png",
+ world_pos = player:get_pos(),
+ scale = {x = 10, y = 10},
+ offset = {x = 0, y = -32}
+ } or "error"
+ minetest.chat_send_player(name, "Waypoint IDs: regular: " .. regular .. ", reduced precision: " .. reduced_precision ..
+ ", hidden distance: " .. hidden_distance .. ", image waypoint: " .. image_waypoint)
+ end
+})
+
+-- Unlimited node placement
+minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
+ if placer and placer:is_player() then
+ return infplace
+ end
+end)
+
+-- Don't pick up if the item is already in the inventory
+local old_handle_node_drops = minetest.handle_node_drops
+function minetest.handle_node_drops(pos, drops, digger)
+ if not digger or not digger:is_player() or not infplace then
+ return old_handle_node_drops(pos, drops, digger)
+ end
+ local inv = digger:get_inventory()
+ if inv then
+ for _, item in ipairs(drops) do
+ if not inv:contains_item("main", item, true) then
+ inv:add_item("main", item)
+ end
+ end
+ end
+end
+
+minetest.register_chatcommand("set_displayed_itemcount", {
+ params = "(-s \"<string>\" [-c <color>]) | -a <alignment_num>",
+ description = "Set the displayed itemcount of the wielded item",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ local item = player:get_wielded_item()
+ local meta = item:get_meta()
+ local flag1 = param:sub(1, 2)
+ if flag1 == "-s" then
+ if param:sub(3, 4) ~= " \"" then
+ return false, "Error: Space and string with \"s expected after -s."
+ end
+ local se = param:find("\"", 5, true)
+ if not se then
+ return false, "Error: String with two \"s expected after -s."
+ end
+ local s = param:sub(5, se - 1)
+ if param:sub(se + 1, se + 4) == " -c " then
+ s = minetest.colorize(param:sub(se + 5), s)
+ end
+ meta:set_string("count_meta", s)
+ elseif flag1 == "-a" then
+ local num = tonumber(param:sub(4))
+ if not num then
+ return false, "Error: Invalid number: "..param:sub(4)
+ end
+ meta:set_int("count_alignment", num)
+ else
+ return false
+ end
+ player:set_wielded_item(item)
+ return true, "Displayed itemcount set."
+ end,
+})
+
+minetest.register_chatcommand("dump_item", {
+ params = "",
+ description = "Prints a dump of the wielded item in table form",
+ func = function(name, param)
+ local player = minetest.get_player_by_name(name)
+ local item = player:get_wielded_item()
+ local str = dump(item:to_table())
+ print(str)
+ return true, str
+ end,
+})
+
+-- shadow control
+minetest.register_on_joinplayer(function (player)
+ player:set_lighting({shadows={intensity = 0.33}})
+end)
+
+core.register_chatcommand("set_shadow", {
+ params = "<shadow_intensity>",
+ description = "Set shadow parameters of current player.",
+ func = function(player_name, param)
+ local shadow_intensity = tonumber(param)
+ minetest.get_player_by_name(player_name):set_lighting({shadows = { intensity = shadow_intensity} })
+ end
+})
diff --git a/games/devtest/mods/util_commands/mod.conf b/games/devtest/mods/util_commands/mod.conf
new file mode 100644
index 000000000..fea6dd3e9
--- /dev/null
+++ b/games/devtest/mods/util_commands/mod.conf
@@ -0,0 +1,2 @@
+name = util_commands
+description = Random server commands to make testing easier and more convenient
diff --git a/games/devtest/screenshot.png b/games/devtest/screenshot.png
new file mode 100644
index 000000000..7324883f6
--- /dev/null
+++ b/games/devtest/screenshot.png
Binary files differ
diff --git a/games/devtest/settingtypes.txt b/games/devtest/settingtypes.txt
new file mode 100644
index 000000000..c4365643e
--- /dev/null
+++ b/games/devtest/settingtypes.txt
@@ -0,0 +1,32 @@
+# If enabled, nodes won't be used up when placed.
+# Note: This behavior can also be toggled in-game with the /infplace command.
+#
+# - true: enabled
+# - false: disabled
+# - auto: only enabled when Creative Mode is enabled (default)
+devtest_infplace (Infinite node placement) enum auto true,false,auto
+
+# If enabled, new players receive some initial items when joining for the first time.
+give_initial_stuff (Give initial stuff) bool true
+
+# If enabled, automated tests of the Lua API such as player health, crafting and PseudoRandom will be performed on startup.
+devtest_unittests_autostart (Perform unit tests) bool false
+
+# If enabled, the game will use all mapgen aliases for the v6 mapgen.
+# If disabled, it will only use a minimal set of mapgen aliases.
+# If enabled, there should be biome-specific tree, leaves and ground nodes. If disabled, stuff should use fallback nodes (like stone instead of desert stone).
+#
+# Many mapgen aliases have fallback values when no value is provided. Having this setting disabled can be useful to test whether those fallback values are functional.
+devtest_v6_mapgen_aliases (Use all v6 mapgen aliases) bool false
+
+# If enabled, the game will use dungeon stairs by enabling the corresponding mapgen aliases.
+#
+# Disabling this setting can be useful to test whether dungeons still work when stairs are not defined.
+devtest_dungeon_stairs (Generate dungeon stairs) bool false
+
+# If enabled, the mapgen alias 'mapgen_mossycobble' will be used. This should enable random mossy cobblestone in dungeons.
+# If disabled, it won't be used. The engine should fall back to cobble instead.
+devtest_dungeon_mossycobble (Generate mossy cobblestone) bool false
+
+# If enabled, some very basic biomes will be registered.
+devtest_register_biomes (Register biomes) bool true
diff --git a/games/minimal/game.conf b/games/minimal/game.conf
deleted file mode 100644
index 99bfaf0a4..000000000
--- a/games/minimal/game.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = Minimal development test
-
diff --git a/games/minimal/menu/background.png b/games/minimal/menu/background.png
deleted file mode 100644
index ea5fbdce5..000000000
--- a/games/minimal/menu/background.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/menu/icon.png b/games/minimal/menu/icon.png
deleted file mode 100644
index 8ef675023..000000000
--- a/games/minimal/menu/icon.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/bucket/depends.txt b/games/minimal/mods/bucket/depends.txt
deleted file mode 100644
index 3a7daa1d7..000000000
--- a/games/minimal/mods/bucket/depends.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-default
-
diff --git a/games/minimal/mods/bucket/init.lua b/games/minimal/mods/bucket/init.lua
deleted file mode 100644
index dcd59ed38..000000000
--- a/games/minimal/mods/bucket/init.lua
+++ /dev/null
@@ -1,95 +0,0 @@
--- bucket (Minetest 0.4 mod)
--- A bucket, which can pick up water and lava
-
-minetest.register_alias("bucket", "bucket:bucket_empty")
-minetest.register_alias("bucket_water", "bucket:bucket_water")
-minetest.register_alias("bucket_lava", "bucket:bucket_lava")
-
-minetest.register_craft({
- output = 'bucket:bucket_empty 1',
- recipe = {
- {'default:steel_ingot', '', 'default:steel_ingot'},
- {'', 'default:steel_ingot', ''},
- }
-})
-
-bucket = {}
-bucket.liquids = {}
-
--- Register a new liquid
--- source = name of the source node
--- flowing = name of the flowing node
--- itemname = name of the new bucket item (or nil if liquid is not takeable)
--- inventory_image = texture of the new bucket item (ignored if itemname == nil)
--- This function can be called from any mod (that depends on bucket).
-function bucket.register_liquid(source, flowing, itemname, inventory_image)
- bucket.liquids[source] = {
- source = source,
- flowing = flowing,
- itemname = itemname,
- }
- bucket.liquids[flowing] = bucket.liquids[source]
-
- if itemname ~= nil then
- minetest.register_craftitem(itemname, {
- inventory_image = inventory_image,
- stack_max = 1,
- liquids_pointable = true,
- on_use = function(itemstack, user, pointed_thing)
- -- Must be pointing to node
- if pointed_thing.type ~= "node" then
- return
- end
- -- Check if pointing to a liquid
- n = minetest.get_node(pointed_thing.under)
- if bucket.liquids[n.name] == nil then
- -- Not a liquid
- minetest.add_node(pointed_thing.above, {name=source})
- elseif n.name ~= source then
- -- It's a liquid
- minetest.add_node(pointed_thing.under, {name=source})
- end
- return {name="bucket:bucket_empty"}
- end
- })
- end
-end
-
-minetest.register_craftitem("bucket:bucket_empty", {
- inventory_image = "bucket.png",
- stack_max = 1,
- liquids_pointable = true,
- on_use = function(itemstack, user, pointed_thing)
- -- Must be pointing to node
- if pointed_thing.type ~= "node" then
- return
- end
- -- Check if pointing to a liquid source
- n = minetest.get_node(pointed_thing.under)
- liquiddef = bucket.liquids[n.name]
- if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then
- minetest.add_node(pointed_thing.under, {name="air"})
- return {name=liquiddef.itemname}
- end
- end,
-})
-
-bucket.register_liquid(
- "default:water_source",
- "default:water_flowing",
- "bucket:bucket_water",
- "bucket_water.png"
-)
-
-bucket.register_liquid(
- "default:lava_source",
- "default:lava_flowing",
- "bucket:bucket_lava",
- "bucket_lava.png"
-)
-
-minetest.register_craft({
- type = "fuel",
- recipe = "bucket:bucket_lava",
- burntime = 60,
-})
diff --git a/games/minimal/mods/bucket/textures/bucket.png b/games/minimal/mods/bucket/textures/bucket.png
deleted file mode 100644
index b775a9fd3..000000000
--- a/games/minimal/mods/bucket/textures/bucket.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/bucket/textures/bucket_lava.png b/games/minimal/mods/bucket/textures/bucket_lava.png
deleted file mode 100644
index 889ed61d4..000000000
--- a/games/minimal/mods/bucket/textures/bucket_lava.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/bucket/textures/bucket_water.png b/games/minimal/mods/bucket/textures/bucket_water.png
deleted file mode 100644
index a3c9d72f7..000000000
--- a/games/minimal/mods/bucket/textures/bucket_water.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/init.lua b/games/minimal/mods/default/init.lua
deleted file mode 100644
index bff7860e3..000000000
--- a/games/minimal/mods/default/init.lua
+++ /dev/null
@@ -1,1797 +0,0 @@
--- default (Minetest 0.4 mod)
--- Most default stuff
-
--- The API documentation in here was moved into doc/lua_api.txt
-
-WATER_ALPHA = 160
-WATER_VISC = 1
-LAVA_VISC = 7
-LIGHT_MAX = 14
-
--- Definitions made by this mod that other mods can use too
-default = {}
-
--- Load other files
-dofile(minetest.get_modpath("default").."/mapgen.lua")
-
--- Set a noticeable inventory formspec for players
-minetest.register_on_joinplayer(function(player)
- local cb = function(player)
- minetest.chat_send_player(player:get_player_name(), "This is the [minimal] \"Minimal Development Test\" game. Use [minetest_game] for the real thing.")
- end
- minetest.after(2.0, cb, player)
-end)
-
---
--- Tool definition
---
-
--- The hand
-minetest.register_item(":", {
- type = "none",
- wield_image = "wieldhand.png",
- wield_scale = {x=1,y=1,z=2.5},
- tool_capabilities = {
- full_punch_interval = 1.0,
- max_drop_level = 0,
- groupcaps = {
- fleshy = {times={[2]=2.00, [3]=1.00}, uses=0, maxlevel=1},
- crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1},
- snappy = {times={[3]=0.40}, uses=0, maxlevel=1},
- oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40}, uses=0, maxlevel=3},
- }
- }
-})
-
-minetest.register_tool("default:pick_wood", {
- description = "Wooden Pickaxe",
- inventory_image = "default_tool_woodpick.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- cracky={times={[2]=2.00, [3]=1.20}, uses=10, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:pick_stone", {
- description = "Stone Pickaxe",
- inventory_image = "default_tool_stonepick.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- cracky={times={[1]=2.00, [2]=1.20, [3]=0.80}, uses=20, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:pick_steel", {
- description = "Steel Pickaxe",
- inventory_image = "default_tool_steelpick.png",
- tool_capabilities = {
- max_drop_level=1,
- groupcaps={
- cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=10, maxlevel=2}
- }
- },
-})
-minetest.register_tool("default:pick_mese", {
- description = "Mese Pickaxe",
- inventory_image = "default_tool_mesepick.png",
- tool_capabilities = {
- full_punch_interval = 1.0,
- max_drop_level=3,
- groupcaps={
- cracky={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3},
- crumbly={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3},
- snappy={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3}
- }
- },
-})
-minetest.register_tool("default:shovel_wood", {
- description = "Wooden Shovel",
- inventory_image = "default_tool_woodshovel.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- crumbly={times={[1]=2.00, [2]=0.80, [3]=0.50}, uses=10, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:shovel_stone", {
- description = "Stone Shovel",
- inventory_image = "default_tool_stoneshovel.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- crumbly={times={[1]=1.20, [2]=0.50, [3]=0.30}, uses=20, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:shovel_steel", {
- description = "Steel Shovel",
- inventory_image = "default_tool_steelshovel.png",
- tool_capabilities = {
- max_drop_level=1,
- groupcaps={
- crumbly={times={[1]=1.00, [2]=0.70, [3]=0.60}, uses=10, maxlevel=2}
- }
- },
-})
-minetest.register_tool("default:axe_wood", {
- description = "Wooden Axe",
- inventory_image = "default_tool_woodaxe.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- choppy={times={[2]=1.40, [3]=0.80}, uses=10, maxlevel=1},
- fleshy={times={[2]=1.50, [3]=0.80}, uses=10, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:axe_stone", {
- description = "Stone Axe",
- inventory_image = "default_tool_stoneaxe.png",
- tool_capabilities = {
- max_drop_level=0,
- groupcaps={
- choppy={times={[1]=1.50, [2]=1.00, [3]=0.60}, uses=20, maxlevel=1},
- fleshy={times={[2]=1.30, [3]=0.70}, uses=20, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:axe_steel", {
- description = "Steel Axe",
- inventory_image = "default_tool_steelaxe.png",
- tool_capabilities = {
- max_drop_level=1,
- groupcaps={
- choppy={times={[1]=2.00, [2]=1.60, [3]=1.00}, uses=10, maxlevel=2},
- fleshy={times={[2]=1.10, [3]=0.60}, uses=40, maxlevel=1}
- }
- },
-})
-minetest.register_tool("default:sword_wood", {
- description = "Wooden Sword",
- inventory_image = "default_tool_woodsword.png",
- tool_capabilities = {
- full_punch_interval = 1.0,
- max_drop_level=0,
- groupcaps={
- fleshy={times={[2]=1.10, [3]=0.60}, uses=10, maxlevel=1},
- snappy={times={[2]=1.00, [3]=0.50}, uses=10, maxlevel=1},
- choppy={times={[3]=1.00}, uses=20, maxlevel=0}
- }
- }
-})
-minetest.register_tool("default:sword_stone", {
- description = "Stone Sword",
- inventory_image = "default_tool_stonesword.png",
- tool_capabilities = {
- full_punch_interval = 1.0,
- max_drop_level=0,
- groupcaps={
- fleshy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1},
- snappy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1},
- choppy={times={[3]=0.90}, uses=20, maxlevel=0}
- }
- }
-})
-minetest.register_tool("default:sword_steel", {
- description = "Steel Sword",
- inventory_image = "default_tool_steelsword.png",
- tool_capabilities = {
- full_punch_interval = 1.0,
- max_drop_level=1,
- groupcaps={
- fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=2},
- snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1},
- choppy={times={[3]=0.70}, uses=40, maxlevel=0}
- }
- }
-})
-
---
--- Crafting definition
---
-
-minetest.register_craft({
- output = 'default:wood 4',
- recipe = {
- {'default:tree'},
- }
-})
-
-minetest.register_craft({
- output = 'default:stick 4',
- recipe = {
- {'default:wood'},
- }
-})
-
-minetest.register_craft({
- output = 'default:fence_wood 2',
- recipe = {
- {'default:stick', 'default:stick', 'default:stick'},
- {'default:stick', 'default:stick', 'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:sign_wall',
- recipe = {
- {'default:wood', 'default:wood', 'default:wood'},
- {'default:wood', 'default:wood', 'default:wood'},
- {'', 'default:stick', ''},
- }
-})
-
-minetest.register_craft({
- output = 'default:torch 4',
- recipe = {
- {'default:coal_lump'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:pick_wood',
- recipe = {
- {'default:wood', 'default:wood', 'default:wood'},
- {'', 'default:stick', ''},
- {'', 'default:stick', ''},
- }
-})
-
-minetest.register_craft({
- output = 'default:pick_stone',
- recipe = {
- {'default:cobble', 'default:cobble', 'default:cobble'},
- {'', 'default:stick', ''},
- {'', 'default:stick', ''},
- }
-})
-
-minetest.register_craft({
- output = 'default:pick_steel',
- recipe = {
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- {'', 'default:stick', ''},
- {'', 'default:stick', ''},
- }
-})
-
-minetest.register_craft({
- output = 'default:pick_mese',
- recipe = {
- {'default:mese', 'default:mese', 'default:mese'},
- {'', 'default:stick', ''},
- {'', 'default:stick', ''},
- }
-})
-
-minetest.register_craft({
- output = 'default:shovel_wood',
- recipe = {
- {'default:wood'},
- {'default:stick'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:shovel_stone',
- recipe = {
- {'default:cobble'},
- {'default:stick'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:shovel_steel',
- recipe = {
- {'default:steel_ingot'},
- {'default:stick'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:axe_wood',
- recipe = {
- {'default:wood', 'default:wood'},
- {'default:wood', 'default:stick'},
- {'', 'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:axe_stone',
- recipe = {
- {'default:cobble', 'default:cobble'},
- {'default:cobble', 'default:stick'},
- {'', 'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:axe_steel',
- recipe = {
- {'default:steel_ingot', 'default:steel_ingot'},
- {'default:steel_ingot', 'default:stick'},
- {'', 'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:sword_wood',
- recipe = {
- {'default:wood'},
- {'default:wood'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:sword_stone',
- recipe = {
- {'default:cobble'},
- {'default:cobble'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:sword_steel',
- recipe = {
- {'default:steel_ingot'},
- {'default:steel_ingot'},
- {'default:stick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:rail 15',
- recipe = {
- {'default:steel_ingot', '', 'default:steel_ingot'},
- {'default:steel_ingot', 'default:stick', 'default:steel_ingot'},
- {'default:steel_ingot', '', 'default:steel_ingot'},
- }
-})
-
-minetest.register_craft({
- output = 'default:chest',
- recipe = {
- {'default:wood', 'default:wood', 'default:wood'},
- {'default:wood', '', 'default:wood'},
- {'default:wood', 'default:wood', 'default:wood'},
- }
-})
-
-minetest.register_craft({
- output = 'default:chest_locked',
- recipe = {
- {'default:wood', 'default:wood', 'default:wood'},
- {'default:wood', 'default:steel_ingot', 'default:wood'},
- {'default:wood', 'default:wood', 'default:wood'},
- }
-})
-
-minetest.register_craft({
- output = 'default:furnace',
- recipe = {
- {'default:cobble', 'default:cobble', 'default:cobble'},
- {'default:cobble', '', 'default:cobble'},
- {'default:cobble', 'default:cobble', 'default:cobble'},
- }
-})
-
-minetest.register_craft({
- output = 'default:steelblock',
- recipe = {
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- }
-})
-
-minetest.register_craft({
- output = 'default:sandstone',
- recipe = {
- {'default:sand', 'default:sand'},
- {'default:sand', 'default:sand'},
- }
-})
-
-minetest.register_craft({
- output = 'default:clay',
- recipe = {
- {'default:clay_lump', 'default:clay_lump'},
- {'default:clay_lump', 'default:clay_lump'},
- }
-})
-
-minetest.register_craft({
- output = 'default:brick',
- recipe = {
- {'default:clay_brick', 'default:clay_brick'},
- {'default:clay_brick', 'default:clay_brick'},
- }
-})
-
-minetest.register_craft({
- output = 'default:paper',
- recipe = {
- {'default:papyrus', 'default:papyrus', 'default:papyrus'},
- }
-})
-
-minetest.register_craft({
- output = 'default:book',
- recipe = {
- {'default:paper'},
- {'default:paper'},
- {'default:paper'},
- }
-})
-
-minetest.register_craft({
- output = 'default:bookshelf',
- recipe = {
- {'default:wood', 'default:wood', 'default:wood'},
- {'default:book', 'default:book', 'default:book'},
- {'default:wood', 'default:wood', 'default:wood'},
- }
-})
-
-minetest.register_craft({
- output = 'default:ladder',
- recipe = {
- {'default:stick', '', 'default:stick'},
- {'default:stick', 'default:stick', 'default:stick'},
- {'default:stick', '', 'default:stick'},
- }
-})
-
--- Tool repair
-minetest.register_craft({
- type = "toolrepair",
- additional_wear = -0.02,
-})
-
---
--- Cooking recipes
---
-
-minetest.register_craft({
- type = "cooking",
- output = "default:glass",
- recipe = "default:sand",
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "default:coal_lump",
- recipe = "default:tree",
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "default:stone",
- recipe = "default:cobble",
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "default:steel_ingot",
- recipe = "default:iron_lump",
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "default:clay_brick",
- recipe = "default:clay_lump",
-})
-
---
--- Fuels
---
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:tree",
- burntime = 30,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:junglegrass",
- burntime = 2,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:leaves",
- burntime = 1,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:cactus",
- burntime = 15,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:papyrus",
- burntime = 1,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:bookshelf",
- burntime = 30,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:fence_wood",
- burntime = 15,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:ladder",
- burntime = 5,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:wood",
- burntime = 7,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:mese",
- burntime = 30,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:lava_source",
- burntime = 60,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:torch",
- burntime = 4,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:sign_wall",
- burntime = 10,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:chest",
- burntime = 30,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:chest_locked",
- burntime = 30,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:nyancat",
- burntime = 1,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:nyancat_rainbow",
- burntime = 1,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:sapling",
- burntime = 10,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:apple",
- burntime = 3,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:coal_lump",
- burntime = 40,
-})
-
---
--- Node definitions
---
-
--- Default node sounds
-
-function default.node_sound_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="", gain=1.0}
- table.dug = table.dug or
- {name="default_dug_node", gain=1.0}
- return table
-end
-
-function default.node_sound_stone_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="default_hard_footstep", gain=0.2}
- default.node_sound_defaults(table)
- return table
-end
-
-function default.node_sound_dirt_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="", gain=0.5}
- --table.dug = table.dug or
- -- {name="default_dirt_break", gain=0.5}
- table.place = table.place or
- {name="default_grass_footstep", gain=0.5}
- default.node_sound_defaults(table)
- return table
-end
-
-function default.node_sound_sand_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="default_grass_footstep", gain=0.25}
- --table.dug = table.dug or
- -- {name="default_dirt_break", gain=0.25}
- table.dug = table.dug or
- {name="", gain=0.25}
- default.node_sound_defaults(table)
- return table
-end
-
-function default.node_sound_wood_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="default_hard_footstep", gain=0.3}
- default.node_sound_defaults(table)
- return table
-end
-
-function default.node_sound_leaves_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="default_grass_footstep", gain=0.25}
- table.dig = table.dig or
- {name="default_dig_crumbly", gain=0.4}
- table.dug = table.dug or
- {name="", gain=1.0}
- default.node_sound_defaults(table)
- return table
-end
-
-function default.node_sound_glass_defaults(table)
- table = table or {}
- table.footstep = table.footstep or
- {name="default_stone_footstep", gain=0.25}
- table.dug = table.dug or
- {name="default_break_glass", gain=1.0}
- default.node_sound_defaults(table)
- return table
-end
-
--- Register nodes
-
-minetest.register_node("default:stone", {
- description = "Stone",
- tiles ={"default_stone.png"},
- groups = {cracky=3},
- drop = 'default:cobble',
- legacy_mineral = true,
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:stone_with_coal", {
- description = "Stone with coal",
- tiles ={"default_stone.png^default_mineral_coal.png"},
- groups = {cracky=3},
- drop = 'default:coal_lump',
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:stone_with_iron", {
- description = "Stone with iron",
- tiles ={"default_stone.png^default_mineral_iron.png"},
- groups = {cracky=3},
- drop = 'default:iron_lump',
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:dirt_with_grass", {
- description = "Dirt with grass",
- tiles ={"default_grass.png", "default_dirt.png",
- {name = "default_dirt.png^default_grass_side.png",
- tileable_vertical = false}},
- groups = {crumbly=3, soil=1},
- drop = 'default:dirt',
- sounds = default.node_sound_dirt_defaults({
- footstep = {name="default_grass_footstep", gain=0.4},
- }),
-})
-
-minetest.register_node("default:dirt_with_grass_footsteps", {
- description = "Dirt with grass and footsteps",
- tiles ={"default_grass_footsteps.png", "default_dirt.png",
- {name = "default_dirt.png^default_grass_side.png",
- tileable_vertical = false}},
- groups = {crumbly=3, soil=1},
- drop = 'default:dirt',
- sounds = default.node_sound_dirt_defaults({
- footstep = {name="default_grass_footstep", gain=0.4},
- }),
-})
-
-minetest.register_node("default:dirt", {
- description = "Dirt",
- tiles ={"default_dirt.png"},
- groups = {crumbly=3, soil=1},
- sounds = default.node_sound_dirt_defaults(),
-})
-
-minetest.register_node("default:sand", {
- description = "Sand",
- tiles ={"default_sand.png"},
- groups = {crumbly=3, falling_node=1},
- sounds = default.node_sound_sand_defaults(),
-})
-
-minetest.register_node("default:gravel", {
- description = "Gravel",
- tiles ={"default_gravel.png"},
- groups = {crumbly=2, falling_node=1},
- sounds = default.node_sound_dirt_defaults({
- footstep = {name="default_gravel_footstep", gain=0.45},
- }),
-})
-
-minetest.register_node("default:sandstone", {
- description = "Sandstone",
- tiles ={"default_sandstone.png"},
- groups = {crumbly=2,cracky=2},
- drop = 'default:sand',
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:clay", {
- description = "Clay",
- tiles ={"default_clay.png"},
- groups = {crumbly=3},
- drop = 'default:clay_lump 4',
- sounds = default.node_sound_dirt_defaults({
- footstep = "",
- }),
-})
-
-minetest.register_node("default:brick", {
- description = "Brick",
- tiles ={"default_brick.png"},
- is_ground_content = false,
- groups = {cracky=3},
- drop = 'default:clay_brick 4',
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:tree", {
- description = "Tree",
- tiles ={"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
- is_ground_content = false,
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1},
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:junglegrass", {
- description = "Jungle Grass",
- drawtype = "plantlike",
- visual_scale = 1.3,
- tiles ={"default_junglegrass.png"},
- inventory_image = "default_junglegrass.png",
- wield_image = "default_junglegrass.png",
- paramtype = "light",
- walkable = false,
- groups = {snappy=3,attached_node=1},
- sounds = default.node_sound_leaves_defaults(),
-})
-
-minetest.register_node("default:leaves", {
- description = "Leaves",
- drawtype = "allfaces_optional",
- visual_scale = 1.3,
- tiles ={"default_leaves.png"},
- paramtype = "light",
- is_ground_content = false,
- groups = {snappy=3},
- drop = {
- max_items = 1,
- items = {
- {
- -- player will get sapling with 1/20 chance
- items = {'default:sapling'},
- rarity = 20,
- },
- {
- -- player will get leaves only if he get no saplings,
- -- this is because max_items is 1
- items = {'default:leaves'},
- }
- }
- },
- sounds = default.node_sound_leaves_defaults(),
-})
-
-minetest.register_node("default:cactus", {
- description = "Cactus",
- tiles ={"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"},
- groups = {snappy=2,choppy=3},
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:papyrus", {
- description = "Papyrus",
- drawtype = "plantlike",
- tiles ={"default_papyrus.png"},
- inventory_image = "default_papyrus.png",
- wield_image = "default_papyrus.png",
- paramtype = "light",
- walkable = false,
- groups = {snappy=3},
- sounds = default.node_sound_leaves_defaults(),
-})
-
-minetest.register_node("default:bookshelf", {
- description = "Bookshelf",
- tiles ={"default_wood.png", "default_wood.png", "default_bookshelf.png"},
- is_ground_content = false,
- groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2},
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:glass", {
- description = "Glass",
- drawtype = "glasslike",
- tiles ={"default_glass.png"},
- paramtype = "light",
- is_ground_content = false,
- sunlight_propagates = true,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- sounds = default.node_sound_glass_defaults(),
-})
-
-minetest.register_node("default:fence_wood", {
- description = "Wooden Fence",
- drawtype = "fencelike",
- tiles ={"default_wood.png"},
- inventory_image = "default_fence.png",
- wield_image = "default_fence.png",
- paramtype = "light",
- is_ground_content = false,
- selection_box = {
- type = "fixed",
- fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
- },
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:rail", {
- description = "Rail",
- drawtype = "raillike",
- tiles ={"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
- inventory_image = "default_rail.png",
- wield_image = "default_rail.png",
- paramtype = "light",
- is_ground_content = false,
- walkable = false,
- selection_box = {
- type = "fixed",
- fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
- },
- groups = {bendy=2,snappy=1,dig_immediate=2},
-})
-
-minetest.register_node("default:ladder", {
- description = "Ladder",
- drawtype = "signlike",
- tiles ={"default_ladder.png"},
- inventory_image = "default_ladder.png",
- wield_image = "default_ladder.png",
- paramtype = "light",
- paramtype2 = "wallmounted",
- is_ground_content = false,
- walkable = false,
- climbable = true,
- selection_box = {
- type = "wallmounted",
- --wall_top = = <default>
- --wall_bottom = = <default>
- --wall_side = = <default>
- },
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3},
- legacy_wallmounted = true,
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:wood", {
- description = "Wood",
- tiles ={"default_wood.png"},
- is_ground_content = false,
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- sounds = default.node_sound_wood_defaults(),
-})
-
-minetest.register_node("default:mese", {
- description = "Mese",
- tiles ={"default_mese.png"},
- groups = {cracky=1,level=2},
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:cloud", {
- description = "Cloud",
- tiles ={"default_cloud.png"},
- is_ground_content = false,
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:water_flowing", {
- description = "Water (flowing)",
- inventory_image = minetest.inventorycube("default_water.png"),
- drawtype = "flowingliquid",
- tiles ={"default_water.png"},
- special_tiles = {
- {name="default_water.png", backface_culling=false},
- {name="default_water.png", backface_culling=true},
- },
- alpha = WATER_ALPHA,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- is_ground_content = false,
- drowning = 1,
- liquidtype = "flowing",
- liquid_alternative_flowing = "default:water_flowing",
- liquid_alternative_source = "default:water_source",
- liquid_viscosity = WATER_VISC,
- post_effect_color = {a=64, r=100, g=100, b=200},
- groups = {water=3, liquid=3},
-})
-
-minetest.register_node("default:water_source", {
- description = "Water",
- inventory_image = minetest.inventorycube("default_water.png"),
- drawtype = "liquid",
- tiles ={"default_water.png"},
- special_tiles = {
- -- New-style water source material (mostly unused)
- {name="default_water.png", backface_culling=false},
- },
- alpha = WATER_ALPHA,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- is_ground_content = false,
- drowning = 1,
- liquidtype = "source",
- liquid_alternative_flowing = "default:water_flowing",
- liquid_alternative_source = "default:water_source",
- liquid_viscosity = WATER_VISC,
- post_effect_color = {a=64, r=100, g=100, b=200},
- groups = {water=3, liquid=3},
-})
-
-minetest.register_node("default:lava_flowing", {
- description = "Lava (flowing)",
- inventory_image = minetest.inventorycube("default_lava.png"),
- drawtype = "flowingliquid",
- tiles ={"default_lava.png"},
- special_tiles = {
- {
- image="default_lava_flowing_animated.png",
- backface_culling=false,
- animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3}
- },
- {
- image="default_lava_flowing_animated.png",
- backface_culling=true,
- animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3}
- },
- },
- paramtype = "light",
- light_source = LIGHT_MAX - 1,
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- is_ground_content = false,
- drowning = 1,
- liquidtype = "flowing",
- liquid_alternative_flowing = "default:lava_flowing",
- liquid_alternative_source = "default:lava_source",
- liquid_viscosity = LAVA_VISC,
- damage_per_second = 4*2,
- post_effect_color = {a=192, r=255, g=64, b=0},
- groups = {lava=3, liquid=2, hot=3},
-})
-
-minetest.register_node("default:lava_source", {
- description = "Lava",
- inventory_image = minetest.inventorycube("default_lava.png"),
- drawtype = "liquid",
- --tiles ={"default_lava.png"},
- tiles ={
- {name="default_lava_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}
- },
- special_tiles = {
- -- New-style lava source material (mostly unused)
- {name="default_lava.png", backface_culling=false},
- },
- paramtype = "light",
- light_source = LIGHT_MAX - 1,
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- is_ground_content = false,
- drowning = 1,
- liquidtype = "source",
- liquid_alternative_flowing = "default:lava_flowing",
- liquid_alternative_source = "default:lava_source",
- liquid_viscosity = LAVA_VISC,
- damage_per_second = 4*2,
- post_effect_color = {a=192, r=255, g=64, b=0},
- groups = {lava=3, liquid=2, hot=3},
-})
-
-minetest.register_node("default:torch", {
- description = "Torch",
- drawtype = "torchlike",
- tiles ={"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"},
- inventory_image = "default_torch_on_floor.png",
- wield_image = "default_torch_on_floor.png",
- paramtype = "light",
- paramtype2 = "wallmounted",
- sunlight_propagates = true,
- is_ground_content = false,
- walkable = false,
- light_source = LIGHT_MAX-1,
- selection_box = {
- type = "wallmounted",
- wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
- wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
- wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
- },
- groups = {choppy=2,dig_immediate=3,attached_node=1},
- legacy_wallmounted = true,
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:sign_wall", {
- description = "Sign",
- drawtype = "signlike",
- tiles ={"default_sign_wall.png"},
- inventory_image = "default_sign_wall.png",
- wield_image = "default_sign_wall.png",
- paramtype = "light",
- paramtype2 = "wallmounted",
- sunlight_propagates = true,
- is_ground_content = false,
- walkable = false,
- selection_box = {
- type = "wallmounted",
- --wall_top = <default>
- --wall_bottom = <default>
- --wall_side = <default>
- },
- groups = {choppy=2,dig_immediate=2,attached_node=1},
- legacy_wallmounted = true,
- sounds = default.node_sound_defaults(),
- on_construct = function(pos)
- --local n = minetest.get_node(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec", "field[text;;${text}]")
- meta:set_string("infotext", "\"\"")
- end,
- on_receive_fields = function(pos, formname, fields, sender)
- --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
- local meta = minetest.get_meta(pos)
- fields.text = fields.text or ""
- print((sender:get_player_name() or "").." wrote \""..fields.text..
- "\" to sign at "..minetest.pos_to_string(pos))
- meta:set_string("text", fields.text)
- meta:set_string("infotext", '"'..fields.text..'"')
- end,
-})
-
-minetest.register_node("default:chest", {
- description = "Chest",
- tiles ={"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
- "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
- paramtype2 = "facedir",
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- legacy_facedir_simple = true,
- is_ground_content = false,
- sounds = default.node_sound_wood_defaults(),
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec",
- "size[8,9]"..
- "list[current_name;main;0,0;8,4;]"..
- "list[current_player;main;0,5;8,4;]" ..
- "listring[]")
- meta:set_string("infotext", "Chest")
- local inv = meta:get_inventory()
- inv:set_size("main", 8*4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.get_meta(pos);
- local inv = meta:get_inventory()
- return inv:is_empty("main")
- end,
-})
-
-local function has_locked_chest_privilege(meta, player)
- if player:get_player_name() ~= meta:get_string("owner") then
- return false
- end
- return true
-end
-
-minetest.register_node("default:chest_locked", {
- description = "Locked Chest",
- tiles ={"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
- "default_chest_side.png", "default_chest_side.png", "default_chest_lock.png"},
- paramtype2 = "facedir",
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- legacy_facedir_simple = true,
- is_ground_content = false,
- sounds = default.node_sound_wood_defaults(),
- after_place_node = function(pos, placer)
- local meta = minetest.get_meta(pos)
- meta:set_string("owner", placer:get_player_name() or "")
- meta:set_string("infotext", "Locked Chest (owned by "..
- meta:get_string("owner")..")")
- end,
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec",
- "size[8,9]"..
- "list[current_name;main;0,0;8,4;]"..
- "list[current_player;main;0,5;8,4;]" ..
- "listring[]")
- meta:set_string("infotext", "Locked Chest")
- meta:set_string("owner", "")
- local inv = meta:get_inventory()
- inv:set_size("main", 8*4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.get_meta(pos);
- local inv = meta:get_inventory()
- return inv:is_empty("main")
- end,
- allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
- local meta = minetest.get_meta(pos)
- if not has_locked_chest_privilege(meta, player) then
- minetest.log("action", player:get_player_name()..
- " tried to access a locked chest belonging to "..
- meta:get_string("owner").." at "..
- minetest.pos_to_string(pos))
- return 0
- end
- return count
- end,
- allow_metadata_inventory_put = function(pos, listname, index, stack, player)
- local meta = minetest.get_meta(pos)
- if not has_locked_chest_privilege(meta, player) then
- minetest.log("action", player:get_player_name()..
- " tried to access a locked chest belonging to "..
- meta:get_string("owner").." at "..
- minetest.pos_to_string(pos))
- return 0
- end
- return stack:get_count()
- end,
- allow_metadata_inventory_take = function(pos, listname, index, stack, player)
- local meta = minetest.get_meta(pos)
- if not has_locked_chest_privilege(meta, player) then
- minetest.log("action", player:get_player_name()..
- " tried to access a locked chest belonging to "..
- meta:get_string("owner").." at "..
- minetest.pos_to_string(pos))
- return 0
- end
- return stack:get_count()
- end,
- on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
- minetest.log("action", player:get_player_name()..
- " moves stuff in locked chest at "..minetest.pos_to_string(pos))
- end,
- on_metadata_inventory_put = function(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " moves stuff to locked chest at "..minetest.pos_to_string(pos))
- end,
- on_metadata_inventory_take = function(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " takes stuff from locked chest at "..minetest.pos_to_string(pos))
- end,
-})
-
-default.furnace_inactive_formspec =
- "size[8,9]"..
- "image[2,2;1,1;default_furnace_fire_bg.png]"..
- "list[current_name;fuel;2,3;1,1;]"..
- "list[current_name;src;2,1;1,1;]"..
- "list[current_name;dst;5,1;2,2;]"..
- "list[current_player;main;0,5;8,4;]" ..
- "listring[current_name;dst]" ..
- "listring[current_player;main]" ..
- "listring[current_name;src]" ..
- "listring[current_player;main]"
-
-minetest.register_node("default:furnace", {
- description = "Furnace",
- tiles ={"default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png",
- "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front.png"},
- paramtype2 = "facedir",
- groups = {cracky=2},
- legacy_facedir_simple = true,
- is_ground_content = false,
- sounds = default.node_sound_stone_defaults(),
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec", default.furnace_inactive_formspec)
- meta:set_string("infotext", "Furnace")
- local inv = meta:get_inventory()
- inv:set_size("fuel", 1)
- inv:set_size("src", 1)
- inv:set_size("dst", 4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.get_meta(pos);
- local inv = meta:get_inventory()
- if not inv:is_empty("fuel") then
- return false
- elseif not inv:is_empty("dst") then
- return false
- elseif not inv:is_empty("src") then
- return false
- end
- return true
- end,
-})
-
-minetest.register_node("default:furnace_active", {
- description = "Furnace",
- tiles ={"default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png",
- "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front_active.png"},
- paramtype2 = "facedir",
- light_source = 8,
- drop = "default:furnace",
- groups = {cracky=2},
- legacy_facedir_simple = true,
- is_ground_content = false,
- sounds = default.node_sound_stone_defaults(),
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec", default.furnace_inactive_formspec)
- meta:set_string("infotext", "Furnace");
- local inv = meta:get_inventory()
- inv:set_size("fuel", 1)
- inv:set_size("src", 1)
- inv:set_size("dst", 4)
- end,
- can_dig = function(pos,player)
- local meta = minetest.get_meta(pos);
- local inv = meta:get_inventory()
- if not inv:is_empty("fuel") then
- return false
- elseif not inv:is_empty("dst") then
- return false
- elseif not inv:is_empty("src") then
- return false
- end
- return true
- end,
-})
-
-function swap_node(pos,name)
- local node = minetest.get_node(pos)
- if node.name == name then
- return
- end
- node.name = name
- minetest.swap_node(pos, node)
-end
-
-minetest.register_abm({
- nodenames = {"default:furnace","default:furnace_active"},
- interval = 1.0,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- local meta = minetest.get_meta(pos)
- for i, name in ipairs({
- "fuel_totaltime",
- "fuel_time",
- "src_totaltime",
- "src_time"
- }) do
- if meta:get_string(name) == "" then
- meta:set_float(name, 0.0)
- end
- end
-
- local inv = meta:get_inventory()
-
- local srclist = inv:get_list("src")
- local cooked = nil
-
- if srclist then
- cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
- end
-
- local was_active = false
-
- if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
- was_active = true
- meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
- meta:set_float("src_time", meta:get_float("src_time") + 1)
- if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
- -- check if there's room for output in "dst" list
- if inv:room_for_item("dst",cooked.item) then
- -- Put result in "dst" list
- inv:add_item("dst", cooked.item)
- -- take stuff from "src" list
- srcstack = inv:get_stack("src", 1)
- srcstack:take_item()
- inv:set_stack("src", 1, srcstack)
- else
- print("Could not insert '"..cooked.item:to_string().."'")
- end
- meta:set_string("src_time", 0)
- end
- end
-
- if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
- local percent = math.floor(meta:get_float("fuel_time") /
- meta:get_float("fuel_totaltime") * 100)
- meta:set_string("infotext","Furnace active: "..percent.."%")
- swap_node(pos,"default:furnace_active")
- meta:set_string("formspec",
- "size[8,9]"..
- "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
- (100-percent)..":default_furnace_fire_fg.png]"..
- "list[current_name;fuel;2,3;1,1;]"..
- "list[current_name;src;2,1;1,1;]"..
- "list[current_name;dst;5,1;2,2;]"..
- "list[current_player;main;0,5;8,4;]" ..
- "listring[current_name;dst]" ..
- "listring[current_player;main]" ..
- "listring[current_name;src]" ..
- "listring[current_player;main]")
- return
- end
-
- local fuel = nil
- local cooked = nil
- local fuellist = inv:get_list("fuel")
- local srclist = inv:get_list("src")
-
- if srclist then
- cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
- end
- if fuellist then
- fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
- end
-
- if fuel.time <= 0 then
- meta:set_string("infotext","Furnace out of fuel")
- swap_node(pos,"default:furnace")
- meta:set_string("formspec", default.furnace_inactive_formspec)
- return
- end
-
- if cooked.item:is_empty() then
- if was_active then
- meta:set_string("infotext","Furnace is empty")
- swap_node(pos,"default:furnace")
- meta:set_string("formspec", default.furnace_inactive_formspec)
- end
- return
- end
-
- meta:set_string("fuel_totaltime", fuel.time)
- meta:set_string("fuel_time", 0)
-
- local stack = inv:get_stack("fuel", 1)
- stack:take_item()
- inv:set_stack("fuel", 1, stack)
- end,
-})
-
-minetest.register_node("default:cobble", {
- description = "Cobble",
- tiles ={"default_cobble.png"},
- is_ground_content = false,
- groups = {cracky=3},
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:mossycobble", {
- description = "Mossy Cobble",
- tiles ={"default_mossycobble.png"},
- is_ground_content = false,
- groups = {cracky=3},
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:steelblock", {
- description = "Steel Block",
- tiles ={"default_steel_block.png"},
- is_ground_content = false,
- groups = {snappy=1,bendy=2},
- sounds = default.node_sound_stone_defaults(),
-})
-
-minetest.register_node("default:nyancat", {
- description = "Nyancat",
- tiles ={"default_nc_side.png", "default_nc_side.png", "default_nc_side.png",
- "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"},
- inventory_image = "default_nc_front.png",
- paramtype2 = "facedir",
- groups = {cracky=2},
- legacy_facedir_simple = true,
- is_ground_content = false,
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:nyancat_rainbow", {
- description = "Nyancat Rainbow",
- tiles ={"default_nc_rb.png"},
- inventory_image = "default_nc_rb.png",
- is_ground_content = false,
- groups = {cracky=2},
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:sapling", {
- description = "Sapling",
- drawtype = "plantlike",
- visual_scale = 1.0,
- tiles ={"default_sapling.png"},
- inventory_image = "default_sapling.png",
- wield_image = "default_sapling.png",
- paramtype = "light",
- walkable = false,
- groups = {snappy=2,dig_immediate=3,attached_node=1},
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:apple", {
- description = "Apple",
- drawtype = "plantlike",
- visual_scale = 1.0,
- tiles ={"default_apple.png"},
- inventory_image = "default_apple.png",
- paramtype = "light",
- is_ground_content = false,
- sunlight_propagates = true,
- walkable = false,
- groups = {fleshy=3,dig_immediate=3},
- on_use = minetest.item_eat(4),
- sounds = default.node_sound_defaults(),
-})
-
---
--- Grow tree function
---
-
-local c_air = minetest.get_content_id("air")
-local c_ignore = minetest.get_content_id("ignore")
-local c_tree = minetest.get_content_id("default:tree")
-local c_leaves = minetest.get_content_id("default:leaves")
-local c_apple = minetest.get_content_id("default:apple")
-function default.grow_tree(data, a, pos, is_apple_tree, seed)
- --[[
- NOTE: Tree-placing code is currently duplicated in the engine
- and in games that have saplings; both are deprecated but not
- replaced yet
- ]]--
- local pr = PseudoRandom(seed)
- local th = pr:next(4, 5)
- local x, y, z = pos.x, pos.y, pos.z
- for yy = y, y+th-1 do
- local vi = a:index(x, yy, z)
- if a:contains(x, yy, z) and (data[vi] == c_air or yy == y) then
- data[vi] = c_tree
- end
- end
- y = y+th-1 -- (x, y, z) is now last piece of trunk
- local leaves_a = VoxelArea:new{MinEdge={x=-2, y=-1, z=-2}, MaxEdge={x=2, y=2, z=2}}
- local leaves_buffer = {}
-
- -- Force leaves near the trunk
- local d = 1
- for xi = -d, d do
- for yi = -d, d do
- for zi = -d, d do
- leaves_buffer[leaves_a:index(xi, yi, zi)] = true
- end
- end
- end
-
- -- Add leaves randomly
- for iii = 1, 8 do
- local d = 1
- local xx = pr:next(leaves_a.MinEdge.x, leaves_a.MaxEdge.x - d)
- local yy = pr:next(leaves_a.MinEdge.y, leaves_a.MaxEdge.y - d)
- local zz = pr:next(leaves_a.MinEdge.z, leaves_a.MaxEdge.z - d)
-
- for xi = 0, d do
- for yi = 0, d do
- for zi = 0, d do
- leaves_buffer[leaves_a:index(xx+xi, yy+yi, zz+zi)] = true
- end
- end
- end
- end
-
- -- Add the leaves
- for xi = leaves_a.MinEdge.x, leaves_a.MaxEdge.x do
- for yi = leaves_a.MinEdge.y, leaves_a.MaxEdge.y do
- for zi = leaves_a.MinEdge.z, leaves_a.MaxEdge.z do
- if a:contains(x+xi, y+yi, z+zi) then
- local vi = a:index(x+xi, y+yi, z+zi)
- if data[vi] == c_air or data[vi] == c_ignore then
- if leaves_buffer[leaves_a:index(xi, yi, zi)] then
- if is_apple_tree and pr:next(1, 100) <= 10 then
- data[vi] = c_apple
- else
- data[vi] = c_leaves
- end
- end
- end
- end
- end
- end
- end
-end
-
---
--- ABMs
---
-
-minetest.register_abm({
- nodenames = {"default:sapling"},
- interval = 10,
- chance = 50,
- action = function(pos, node)
- if minetest.get_item_group(minetest.get_node(
- {x = pos.x, y = pos.y - 1, z = pos.z}).name, "soil") == 0 then
- return
- end
- print("A sapling grows into a tree at "..minetest.pos_to_string(pos))
- local vm = minetest.get_voxel_manip()
- local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
- local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
- local data = vm:get_data()
- default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000))
- vm:set_data(data)
- vm:write_to_map(data)
- vm:update_map()
- end
-})
-
-minetest.register_abm({
- nodenames = {"default:dirt"},
- interval = 2,
- chance = 200,
- action = function(pos, node)
- local above = {x=pos.x, y=pos.y+1, z=pos.z}
- local name = minetest.get_node(above).name
- local nodedef = minetest.registered_nodes[name]
- if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light")
- and nodedef.liquidtype == "none"
- and (minetest.get_node_light(above) or 0) >= 13 then
- if name == "default:snow" or name == "default:snowblock" then
- minetest.set_node(pos, {name = "default:dirt_with_snow"})
- else
- minetest.set_node(pos, {name = "default:dirt_with_grass"})
- end
- end
- end
-})
-
-minetest.register_abm({
- nodenames = {"default:dirt_with_grass"},
- interval = 2,
- chance = 20,
- action = function(pos, node)
- local above = {x=pos.x, y=pos.y+1, z=pos.z}
- local name = minetest.get_node(above).name
- local nodedef = minetest.registered_nodes[name]
- if name ~= "ignore" and nodedef
- and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light")
- and nodedef.liquidtype == "none") then
- minetest.set_node(pos, {name = "default:dirt"})
- end
- end
-})
-
---
--- Crafting items
---
-
-minetest.register_craftitem("default:stick", {
- description = "Stick",
- inventory_image = "default_stick.png",
-})
-
-minetest.register_craftitem("default:paper", {
- description = "Paper",
- inventory_image = "default_paper.png",
-})
-
-minetest.register_craftitem("default:book", {
- description = "Book",
- inventory_image = "default_book.png",
-})
-
-minetest.register_craftitem("default:coal_lump", {
- description = "Lump of coal",
- inventory_image = "default_coal_lump.png",
-})
-
-minetest.register_craftitem("default:iron_lump", {
- description = "Lump of iron",
- inventory_image = "default_iron_lump.png",
-})
-
-minetest.register_craftitem("default:clay_lump", {
- description = "Lump of clay",
- inventory_image = "default_clay_lump.png",
-})
-
-minetest.register_craftitem("default:steel_ingot", {
- description = "Steel ingot",
- inventory_image = "default_steel_ingot.png",
-})
-
-minetest.register_craftitem("default:clay_brick", {
- description = "Clay brick",
- inventory_image = "default_steel_ingot.png",
- inventory_image = "default_clay_brick.png",
-})
-
-minetest.register_craftitem("default:scorched_stuff", {
- description = "Scorched stuff",
- inventory_image = "default_scorched_stuff.png",
-})
-
---
--- Support old code
---
-
-function default.spawn_falling_node(p, nodename)
- spawn_falling_node(p, nodename)
-end
-
--- Horrible crap to support old code
--- Don't use this and never do what this does, it's completely wrong!
--- (More specifically, the client and the C++ code doesn't get the group)
-function default.register_falling_node(nodename, texture)
- minetest.log("error", debug.traceback())
- minetest.log('error', "WARNING: default.register_falling_node is deprecated")
- if minetest.registered_nodes[nodename] then
- minetest.registered_nodes[nodename].groups.falling_node = 1
- end
-end
-
---
--- Global callbacks
---
-
--- Global environment step function
-function on_step(dtime)
- -- print("on_step")
-end
-minetest.register_globalstep(on_step)
-
-function on_placenode(p, node)
- --print("on_placenode")
-end
-minetest.register_on_placenode(on_placenode)
-
-function on_dignode(p, node)
- --print("on_dignode")
-end
-minetest.register_on_dignode(on_dignode)
-
-function on_punchnode(p, node)
-end
-minetest.register_on_punchnode(on_punchnode)
-
---
--- Test some things
---
-
-local function test_get_craft_result()
- minetest.log("info", "test_get_craft_result()")
- -- normal
- local input = {
- method = "normal",
- width = 2,
- items = {"", "default:coal_lump", "", "default:stick"}
- }
- minetest.log("info", "torch crafting input: "..dump(input))
- local output, decremented_input = minetest.get_craft_result(input)
- minetest.log("info", "torch crafting output: "..dump(output))
- minetest.log("info", "torch crafting decremented input: "..dump(decremented_input))
- assert(output.item)
- minetest.log("info", "torch crafting output.item:to_table(): "..dump(output.item:to_table()))
- assert(output.item:get_name() == "default:torch")
- assert(output.item:get_count() == 4)
- -- fuel
- local input = {
- method = "fuel",
- width = 1,
- items = {"default:coal_lump"}
- }
- minetest.log("info", "coal fuel input: "..dump(input))
- local output, decremented_input = minetest.get_craft_result(input)
- minetest.log("info", "coal fuel output: "..dump(output))
- minetest.log("info", "coal fuel decremented input: "..dump(decremented_input))
- assert(output.time)
- assert(output.time > 0)
- -- cook
- local input = {
- method = "cooking",
- width = 1,
- items = {"default:cobble"}
- }
- minetest.log("info", "cobble cooking input: "..dump(output))
- local output, decremented_input = minetest.get_craft_result(input)
- minetest.log("info", "cobble cooking output: "..dump(output))
- minetest.log("info", "cobble cooking decremented input: "..dump(decremented_input))
- assert(output.time)
- assert(output.time > 0)
- assert(output.item)
- minetest.log("info", "cobble cooking output.item:to_table(): "..dump(output.item:to_table()))
- assert(output.item:get_name() == "default:stone")
- assert(output.item:get_count() == 1)
-end
-test_get_craft_result()
-
---
--- Done, print some random stuff
---
-
---print("minetest.registered_entities:")
---dump2(minetest.registered_entities)
-
--- END
-
diff --git a/games/minimal/mods/default/mapgen.lua b/games/minimal/mods/default/mapgen.lua
deleted file mode 100644
index 65b67dae5..000000000
--- a/games/minimal/mods/default/mapgen.lua
+++ /dev/null
@@ -1,136 +0,0 @@
---
--- Aliases for map generator outputs
---
-
-
-minetest.register_alias("mapgen_stone", "default:stone")
-minetest.register_alias("mapgen_dirt", "default:dirt")
-minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass")
-minetest.register_alias("mapgen_sand", "default:sand")
-minetest.register_alias("mapgen_water_source", "default:water_source")
-minetest.register_alias("mapgen_lava_source", "default:lava_source")
-minetest.register_alias("mapgen_gravel", "default:gravel")
-
-minetest.register_alias("mapgen_tree", "default:tree")
-minetest.register_alias("mapgen_leaves", "default:leaves")
-minetest.register_alias("mapgen_apple", "default:apple")
-minetest.register_alias("mapgen_junglegrass", "default:junglegrass")
-
-minetest.register_alias("mapgen_cobble", "default:cobble")
-minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
-minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
-
-
---
--- Ore generation
---
-
-
--- Blob ore first to avoid other ores inside blobs
-
-minetest.register_ore({
- ore_type = "blob",
- ore = "default:clay",
- wherein = {"default:sand"},
- clust_scarcity = 24*24*24,
- clust_size = 7,
- y_min = -15,
- y_max = 0,
- noise_threshold = 0,
- noise_params = {
- offset=0.35,
- scale=0.2,
- spread={x=5, y=5, z=5},
- seed=-316,
- octaves=1,
- persist=0.5
- },
-})
-
-minetest.register_ore({
- ore_type = "scatter",
- ore = "default:stone_with_coal",
- wherein = "default:stone",
- clust_scarcity = 8*8*8,
- clust_num_ores = 8,
- clust_size = 3,
- y_min = -31000,
- y_max = 64,
-})
-
-minetest.register_ore({
- ore_type = "scatter",
- ore = "default:stone_with_iron",
- wherein = "default:stone",
- clust_scarcity = 12*12*12,
- clust_num_ores = 3,
- clust_size = 2,
- y_min = -15,
- y_max = 2,
-})
-
-minetest.register_ore({
- ore_type = "scatter",
- ore = "default:stone_with_iron",
- wherein = "default:stone",
- clust_scarcity = 9*9*9,
- clust_num_ores = 5,
- clust_size = 3,
- y_min = -63,
- y_max = -16,
-})
-
-minetest.register_ore({
- ore_type = "scatter",
- ore = "default:stone_with_iron",
- wherein = "default:stone",
- clust_scarcity = 7*7*7,
- clust_num_ores = 5,
- clust_size = 3,
- y_min = -31000,
- y_max = -64,
-})
-
-
---
--- Register biomes for biome API
---
-
-
-minetest.clear_registered_biomes()
-minetest.clear_registered_decorations()
-
-minetest.register_biome({
- name = "default:grassland",
- --node_dust = "",
- node_top = "default:dirt_with_grass",
- depth_top = 1,
- node_filler = "default:dirt",
- depth_filler = 1,
- --node_stone = "",
- --node_water_top = "",
- --depth_water_top = ,
- --node_water = "",
- y_min = 5,
- y_max = 31000,
- heat_point = 50,
- humidity_point = 50,
-})
-
-minetest.register_biome({
- name = "default:grassland_ocean",
- --node_dust = "",
- node_top = "default:sand",
- depth_top = 1,
- node_filler = "default:sand",
- depth_filler = 2,
- --node_stone = "",
- --node_water_top = "",
- --depth_water_top = ,
- --node_water = "",
- y_min = -31000,
- y_max = 4,
- heat_point = 50,
- humidity_point = 50,
-})
-
diff --git a/games/minimal/mods/default/sounds/default_grass_footstep.1.ogg b/games/minimal/mods/default/sounds/default_grass_footstep.1.ogg
deleted file mode 100644
index ce625d92b..000000000
--- a/games/minimal/mods/default/sounds/default_grass_footstep.1.ogg
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/bubble.png b/games/minimal/mods/default/textures/bubble.png
deleted file mode 100644
index 3bca7e11c..000000000
--- a/games/minimal/mods/default/textures/bubble.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_apple.png b/games/minimal/mods/default/textures/default_apple.png
deleted file mode 100644
index 4473dca28..000000000
--- a/games/minimal/mods/default/textures/default_apple.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_book.png b/games/minimal/mods/default/textures/default_book.png
deleted file mode 100644
index ea14a372a..000000000
--- a/games/minimal/mods/default/textures/default_book.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_bookshelf.png b/games/minimal/mods/default/textures/default_bookshelf.png
deleted file mode 100644
index f225e3449..000000000
--- a/games/minimal/mods/default/textures/default_bookshelf.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_brick.png b/games/minimal/mods/default/textures/default_brick.png
deleted file mode 100644
index def1cf0b1..000000000
--- a/games/minimal/mods/default/textures/default_brick.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_cactus_side.png b/games/minimal/mods/default/textures/default_cactus_side.png
deleted file mode 100644
index 128a4d28a..000000000
--- a/games/minimal/mods/default/textures/default_cactus_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_cactus_top.png b/games/minimal/mods/default/textures/default_cactus_top.png
deleted file mode 100644
index eda1a0bb6..000000000
--- a/games/minimal/mods/default/textures/default_cactus_top.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_chest_front.png b/games/minimal/mods/default/textures/default_chest_front.png
deleted file mode 100644
index 55b076c35..000000000
--- a/games/minimal/mods/default/textures/default_chest_front.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_chest_lock.png b/games/minimal/mods/default/textures/default_chest_lock.png
deleted file mode 100644
index 4b2d1af6c..000000000
--- a/games/minimal/mods/default/textures/default_chest_lock.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_chest_side.png b/games/minimal/mods/default/textures/default_chest_side.png
deleted file mode 100644
index ae4847cb6..000000000
--- a/games/minimal/mods/default/textures/default_chest_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_chest_top.png b/games/minimal/mods/default/textures/default_chest_top.png
deleted file mode 100644
index ac41551b0..000000000
--- a/games/minimal/mods/default/textures/default_chest_top.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_clay.png b/games/minimal/mods/default/textures/default_clay.png
deleted file mode 100644
index 070b69e48..000000000
--- a/games/minimal/mods/default/textures/default_clay.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_clay_brick.png b/games/minimal/mods/default/textures/default_clay_brick.png
deleted file mode 100644
index e25633b70..000000000
--- a/games/minimal/mods/default/textures/default_clay_brick.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_clay_lump.png b/games/minimal/mods/default/textures/default_clay_lump.png
deleted file mode 100644
index ceed6fa75..000000000
--- a/games/minimal/mods/default/textures/default_clay_lump.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_cloud.png b/games/minimal/mods/default/textures/default_cloud.png
deleted file mode 100644
index faf0ec13d..000000000
--- a/games/minimal/mods/default/textures/default_cloud.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_coal_lump.png b/games/minimal/mods/default/textures/default_coal_lump.png
deleted file mode 100644
index dae47e342..000000000
--- a/games/minimal/mods/default/textures/default_coal_lump.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_cobble.png b/games/minimal/mods/default/textures/default_cobble.png
deleted file mode 100644
index 2a28d25a5..000000000
--- a/games/minimal/mods/default/textures/default_cobble.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_dirt.png b/games/minimal/mods/default/textures/default_dirt.png
deleted file mode 100644
index 7cb9c89a6..000000000
--- a/games/minimal/mods/default/textures/default_dirt.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_fence.png b/games/minimal/mods/default/textures/default_fence.png
deleted file mode 100644
index e3510c52a..000000000
--- a/games/minimal/mods/default/textures/default_fence.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_furnace_fire_bg.png b/games/minimal/mods/default/textures/default_furnace_fire_bg.png
deleted file mode 100644
index e3370f438..000000000
--- a/games/minimal/mods/default/textures/default_furnace_fire_bg.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_furnace_fire_fg.png b/games/minimal/mods/default/textures/default_furnace_fire_fg.png
deleted file mode 100644
index 7a126e325..000000000
--- a/games/minimal/mods/default/textures/default_furnace_fire_fg.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_furnace_front.png b/games/minimal/mods/default/textures/default_furnace_front.png
deleted file mode 100644
index 4da398c0a..000000000
--- a/games/minimal/mods/default/textures/default_furnace_front.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_furnace_front_active.png b/games/minimal/mods/default/textures/default_furnace_front_active.png
deleted file mode 100644
index 06c4ab3ef..000000000
--- a/games/minimal/mods/default/textures/default_furnace_front_active.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_furnace_side.png b/games/minimal/mods/default/textures/default_furnace_side.png
deleted file mode 100644
index c729de9bf..000000000
--- a/games/minimal/mods/default/textures/default_furnace_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_glass.png b/games/minimal/mods/default/textures/default_glass.png
deleted file mode 100644
index fd665a40c..000000000
--- a/games/minimal/mods/default/textures/default_glass.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_grass.png b/games/minimal/mods/default/textures/default_grass.png
deleted file mode 100644
index 1d76708a0..000000000
--- a/games/minimal/mods/default/textures/default_grass.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_grass_footsteps.png b/games/minimal/mods/default/textures/default_grass_footsteps.png
deleted file mode 100644
index 8349033d6..000000000
--- a/games/minimal/mods/default/textures/default_grass_footsteps.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_grass_side.png b/games/minimal/mods/default/textures/default_grass_side.png
deleted file mode 100644
index 4f4f680be..000000000
--- a/games/minimal/mods/default/textures/default_grass_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_gravel.png b/games/minimal/mods/default/textures/default_gravel.png
deleted file mode 100644
index 4b47e2346..000000000
--- a/games/minimal/mods/default/textures/default_gravel.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_iron_lump.png b/games/minimal/mods/default/textures/default_iron_lump.png
deleted file mode 100644
index 6b515f66d..000000000
--- a/games/minimal/mods/default/textures/default_iron_lump.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_junglegrass.png b/games/minimal/mods/default/textures/default_junglegrass.png
deleted file mode 100644
index 7066f7dd9..000000000
--- a/games/minimal/mods/default/textures/default_junglegrass.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_ladder.png b/games/minimal/mods/default/textures/default_ladder.png
deleted file mode 100644
index 46757b884..000000000
--- a/games/minimal/mods/default/textures/default_ladder.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_lava_flowing_animated.png b/games/minimal/mods/default/textures/default_lava_flowing_animated.png
deleted file mode 100644
index 0bbd13606..000000000
--- a/games/minimal/mods/default/textures/default_lava_flowing_animated.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_lava_source_animated.png b/games/minimal/mods/default/textures/default_lava_source_animated.png
deleted file mode 100644
index aa9d57cf1..000000000
--- a/games/minimal/mods/default/textures/default_lava_source_animated.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_leaves.png b/games/minimal/mods/default/textures/default_leaves.png
deleted file mode 100644
index 00ce4471c..000000000
--- a/games/minimal/mods/default/textures/default_leaves.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_mese.png b/games/minimal/mods/default/textures/default_mese.png
deleted file mode 100644
index 123f0f4b9..000000000
--- a/games/minimal/mods/default/textures/default_mese.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_mineral_coal.png b/games/minimal/mods/default/textures/default_mineral_coal.png
deleted file mode 100644
index 0f52062af..000000000
--- a/games/minimal/mods/default/textures/default_mineral_coal.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_mineral_iron.png b/games/minimal/mods/default/textures/default_mineral_iron.png
deleted file mode 100644
index 6c894ce1c..000000000
--- a/games/minimal/mods/default/textures/default_mineral_iron.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_mossycobble.png b/games/minimal/mods/default/textures/default_mossycobble.png
deleted file mode 100644
index 5082953a6..000000000
--- a/games/minimal/mods/default/textures/default_mossycobble.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_nc_back.png b/games/minimal/mods/default/textures/default_nc_back.png
deleted file mode 100644
index e479ace83..000000000
--- a/games/minimal/mods/default/textures/default_nc_back.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_nc_front.png b/games/minimal/mods/default/textures/default_nc_front.png
deleted file mode 100644
index c9dd6a330..000000000
--- a/games/minimal/mods/default/textures/default_nc_front.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_nc_rb.png b/games/minimal/mods/default/textures/default_nc_rb.png
deleted file mode 100644
index 685a22ccf..000000000
--- a/games/minimal/mods/default/textures/default_nc_rb.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_nc_side.png b/games/minimal/mods/default/textures/default_nc_side.png
deleted file mode 100644
index bc85427ae..000000000
--- a/games/minimal/mods/default/textures/default_nc_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_paper.png b/games/minimal/mods/default/textures/default_paper.png
deleted file mode 100644
index 3c31f77c2..000000000
--- a/games/minimal/mods/default/textures/default_paper.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_papyrus.png b/games/minimal/mods/default/textures/default_papyrus.png
deleted file mode 100644
index 3707e4081..000000000
--- a/games/minimal/mods/default/textures/default_papyrus.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_rail.png b/games/minimal/mods/default/textures/default_rail.png
deleted file mode 100644
index 777e10c00..000000000
--- a/games/minimal/mods/default/textures/default_rail.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_rail_crossing.png b/games/minimal/mods/default/textures/default_rail_crossing.png
deleted file mode 100644
index a988c4740..000000000
--- a/games/minimal/mods/default/textures/default_rail_crossing.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_rail_curved.png b/games/minimal/mods/default/textures/default_rail_curved.png
deleted file mode 100644
index f87e826c9..000000000
--- a/games/minimal/mods/default/textures/default_rail_curved.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_rail_t_junction.png b/games/minimal/mods/default/textures/default_rail_t_junction.png
deleted file mode 100644
index fd25b5ba6..000000000
--- a/games/minimal/mods/default/textures/default_rail_t_junction.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_sand.png b/games/minimal/mods/default/textures/default_sand.png
deleted file mode 100644
index 1a56cc737..000000000
--- a/games/minimal/mods/default/textures/default_sand.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_sandstone.png b/games/minimal/mods/default/textures/default_sandstone.png
deleted file mode 100644
index bd9cb8692..000000000
--- a/games/minimal/mods/default/textures/default_sandstone.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_sapling.png b/games/minimal/mods/default/textures/default_sapling.png
deleted file mode 100644
index 93602322c..000000000
--- a/games/minimal/mods/default/textures/default_sapling.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_scorched_stuff.png b/games/minimal/mods/default/textures/default_scorched_stuff.png
deleted file mode 100644
index c7efc7e58..000000000
--- a/games/minimal/mods/default/textures/default_scorched_stuff.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_sign_wall.png b/games/minimal/mods/default/textures/default_sign_wall.png
deleted file mode 100644
index 93c075a2d..000000000
--- a/games/minimal/mods/default/textures/default_sign_wall.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_steel_block.png b/games/minimal/mods/default/textures/default_steel_block.png
deleted file mode 100644
index 9c0a0e248..000000000
--- a/games/minimal/mods/default/textures/default_steel_block.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_steel_ingot.png b/games/minimal/mods/default/textures/default_steel_ingot.png
deleted file mode 100644
index ad133bc12..000000000
--- a/games/minimal/mods/default/textures/default_steel_ingot.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_stick.png b/games/minimal/mods/default/textures/default_stick.png
deleted file mode 100644
index 055a6ac04..000000000
--- a/games/minimal/mods/default/textures/default_stick.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_stone.png b/games/minimal/mods/default/textures/default_stone.png
deleted file mode 100644
index a835fe002..000000000
--- a/games/minimal/mods/default/textures/default_stone.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tnt_bottom.png b/games/minimal/mods/default/textures/default_tnt_bottom.png
deleted file mode 100644
index 4eda0603f..000000000
--- a/games/minimal/mods/default/textures/default_tnt_bottom.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tnt_side.png b/games/minimal/mods/default/textures/default_tnt_side.png
deleted file mode 100644
index c259726d6..000000000
--- a/games/minimal/mods/default/textures/default_tnt_side.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tnt_top.png b/games/minimal/mods/default/textures/default_tnt_top.png
deleted file mode 100644
index a031a34ad..000000000
--- a/games/minimal/mods/default/textures/default_tnt_top.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_mesepick.png b/games/minimal/mods/default/textures/default_tool_mesepick.png
deleted file mode 100644
index 2b5e12cdb..000000000
--- a/games/minimal/mods/default/textures/default_tool_mesepick.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_steelaxe.png b/games/minimal/mods/default/textures/default_tool_steelaxe.png
deleted file mode 100644
index fae19dd0d..000000000
--- a/games/minimal/mods/default/textures/default_tool_steelaxe.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_steelpick.png b/games/minimal/mods/default/textures/default_tool_steelpick.png
deleted file mode 100644
index 3a8f58643..000000000
--- a/games/minimal/mods/default/textures/default_tool_steelpick.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_steelshovel.png b/games/minimal/mods/default/textures/default_tool_steelshovel.png
deleted file mode 100644
index d5b1bc6bc..000000000
--- a/games/minimal/mods/default/textures/default_tool_steelshovel.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_steelsword.png b/games/minimal/mods/default/textures/default_tool_steelsword.png
deleted file mode 100644
index efc61a0d1..000000000
--- a/games/minimal/mods/default/textures/default_tool_steelsword.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_stoneaxe.png b/games/minimal/mods/default/textures/default_tool_stoneaxe.png
deleted file mode 100644
index 532e16fbc..000000000
--- a/games/minimal/mods/default/textures/default_tool_stoneaxe.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_stoneshovel.png b/games/minimal/mods/default/textures/default_tool_stoneshovel.png
deleted file mode 100644
index 7bbd2d407..000000000
--- a/games/minimal/mods/default/textures/default_tool_stoneshovel.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_stonesword.png b/games/minimal/mods/default/textures/default_tool_stonesword.png
deleted file mode 100644
index 533b8734f..000000000
--- a/games/minimal/mods/default/textures/default_tool_stonesword.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_woodaxe.png b/games/minimal/mods/default/textures/default_tool_woodaxe.png
deleted file mode 100644
index 6e70f4a21..000000000
--- a/games/minimal/mods/default/textures/default_tool_woodaxe.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_woodshovel.png b/games/minimal/mods/default/textures/default_tool_woodshovel.png
deleted file mode 100644
index e0b3608db..000000000
--- a/games/minimal/mods/default/textures/default_tool_woodshovel.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tool_woodsword.png b/games/minimal/mods/default/textures/default_tool_woodsword.png
deleted file mode 100644
index 8099af139..000000000
--- a/games/minimal/mods/default/textures/default_tool_woodsword.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_torch.png b/games/minimal/mods/default/textures/default_torch.png
deleted file mode 100644
index 21d98bdbb..000000000
--- a/games/minimal/mods/default/textures/default_torch.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_torch_on_ceiling.png b/games/minimal/mods/default/textures/default_torch_on_ceiling.png
deleted file mode 100644
index dccd380b2..000000000
--- a/games/minimal/mods/default/textures/default_torch_on_ceiling.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_torch_on_floor.png b/games/minimal/mods/default/textures/default_torch_on_floor.png
deleted file mode 100644
index c22010750..000000000
--- a/games/minimal/mods/default/textures/default_torch_on_floor.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tree.png b/games/minimal/mods/default/textures/default_tree.png
deleted file mode 100644
index 65abfc243..000000000
--- a/games/minimal/mods/default/textures/default_tree.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_tree_top.png b/games/minimal/mods/default/textures/default_tree_top.png
deleted file mode 100644
index 3e6bd5262..000000000
--- a/games/minimal/mods/default/textures/default_tree_top.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/default_wood.png b/games/minimal/mods/default/textures/default_wood.png
deleted file mode 100644
index 57c1d7c12..000000000
--- a/games/minimal/mods/default/textures/default_wood.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/heart.png b/games/minimal/mods/default/textures/heart.png
deleted file mode 100644
index c25f43b9a..000000000
--- a/games/minimal/mods/default/textures/heart.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/player.png b/games/minimal/mods/default/textures/player.png
deleted file mode 100644
index cf5d83f10..000000000
--- a/games/minimal/mods/default/textures/player.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/player_back.png b/games/minimal/mods/default/textures/player_back.png
deleted file mode 100644
index d498674eb..000000000
--- a/games/minimal/mods/default/textures/player_back.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/treeprop.png b/games/minimal/mods/default/textures/treeprop.png
deleted file mode 100644
index eb8a8e6c4..000000000
--- a/games/minimal/mods/default/textures/treeprop.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/default/textures/wieldhand.png b/games/minimal/mods/default/textures/wieldhand.png
deleted file mode 100644
index dbed6ad0c..000000000
--- a/games/minimal/mods/default/textures/wieldhand.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/errorhandler_test/init.lua b/games/minimal/mods/errorhandler_test/init.lua
deleted file mode 100644
index 9d1535c1d..000000000
--- a/games/minimal/mods/errorhandler_test/init.lua
+++ /dev/null
@@ -1,106 +0,0 @@
---
--- exception handler test module
---
---
--- To avoid this from crashing the module will startup in inactive mode.
--- to make specific errors happen you need to cause them by following
--- chat command:
---
--- exceptiontest <location> <errortype>
---
--- location has to be one of:
--- * mapgen: cause in next on_generate call
--- * entity_step: spawn a entity and make it do error in on_step
--- * globalstep: do error in next globalstep
--- * immediate: cause right in chat handler
---
--- errortypes defined are:
--- * segv: make sigsegv happen
--- * zerodivision: cause a division by zero to happen
--- * exception: throw an exception
-
-if core.cause_error == nil or
- type(core.cause_error) ~= "function" then
- return
-end
-
-
-core.log("action", "WARNING: loading exception handler test module!")
-
-local exceptiondata = {
- tocause = "none",
- mapgen = false,
- entity_step = false,
- globalstep = false,
-}
-
-local exception_entity =
-{
- on_step = function(self, dtime)
- if exceptiondata.entity_step then
- core.cause_error(exceptiondata.tocause)
- end
- end,
-}
-local exception_entity_name = "errorhandler_test:error_entity"
-
-local function exception_chat_handler(playername, param)
- local parameters = param:split(" ")
-
- if #parameters ~= 2 then
- core.chat_send_player(playername, "Invalid argument count for exceptiontest")
- end
-
- core.log("error", "Causing error at:" .. parameters[1])
-
- if parameters[1] == "mapgen" then
- exceptiondata.tocause = parameters[2]
- exceptiondata.mapgen = true
- elseif parameters[1] == "entity_step" then
- --spawn entity at player location
- local player = core.get_player_by_name(playername)
-
- if player:is_player() then
- local pos = player:getpos()
-
- core.add_entity(pos, exception_entity_name)
- end
-
- exceptiondata.tocause = parameters[2]
- exceptiondata.entity_step = true
-
- elseif parameters[1] == "globalstep" then
- exceptiondata.tocause = parameters[2]
- exceptiondata.globalstep = true
-
- elseif parameters[1] == "immediate" then
- core.cause_error(parameters[2])
-
- else
- core.chat_send_player(playername, "Invalid error location: " .. dump(parameters[1]))
- end
-end
-
-core.register_chatcommand("exceptiontest",
- {
- params = "<location> <errortype>",
- description = "cause a given error to happen.\n" ..
- " location=(mapgen,entity_step,globalstep,immediate)\n" ..
- " errortype=(segv,zerodivision,exception)",
- func = exception_chat_handler,
- privs = { server=true }
- })
-
-core.register_globalstep(function(dtime)
- if exceptiondata.globalstep then
- core.cause_error(exceptiondata.tocause)
- end
-end)
-
-core.register_on_generated(function(minp, maxp, blockseed)
- if exceptiondata.mapgen then
- core.cause_error(exceptiondata.tocause)
- end
-end)
-
-core.register_entity(exception_entity_name, exception_entity)
diff --git a/games/minimal/mods/experimental/depends.txt b/games/minimal/mods/experimental/depends.txt
deleted file mode 100644
index 3a7daa1d7..000000000
--- a/games/minimal/mods/experimental/depends.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-default
-
diff --git a/games/minimal/mods/experimental/init.lua b/games/minimal/mods/experimental/init.lua
deleted file mode 100644
index 729191bce..000000000
--- a/games/minimal/mods/experimental/init.lua
+++ /dev/null
@@ -1,601 +0,0 @@
---
--- Experimental things
---
-
--- For testing random stuff
-
-experimental = {}
-
-function experimental.print_to_everything(msg)
- minetest.log("action", msg)
- minetest.chat_send_all(msg)
-end
-
---[[
-experimental.player_visual_index = 0
-function switch_player_visual()
- for _, obj in pairs(minetest.get_connected_players()) do
- if experimental.player_visual_index == 0 then
- obj:set_properties({visual="upright_sprite"})
- else
- obj:set_properties({visual="cube"})
- end
- end
- experimental.player_visual_index = (experimental.player_visual_index + 1) % 2
- minetest.after(1.0, switch_player_visual)
-end
-minetest.after(1.0, switch_player_visual)
-]]
-
-minetest.register_node("experimental:soundblock", {
- tile_images = {"unknown_node.png", "default_tnt_bottom.png",
- "default_tnt_side.png", "default_tnt_side.png",
- "default_tnt_side.png", "default_tnt_side.png"},
- inventory_image = minetest.inventorycube("unknown_node.png",
- "default_tnt_side.png", "default_tnt_side.png"),
- groups = {dig_immediate=3},
-})
-
-minetest.register_alias("sb", "experimental:soundblock")
-
-minetest.register_abm({
- nodenames = {"experimental:soundblock"},
- interval = 1,
- chance = 1,
- action = function(p0, node, _, _)
- minetest.sound_play("default_grass_footstep", {pos=p0, gain=0.5})
- end,
-})
-
---[[
-stepsound = -1
-function test_sound()
- print("test_sound")
- stepsound = minetest.sound_play("default_grass_footstep", {gain=1.0})
- minetest.after(2.0, test_sound)
- --minetest.after(0.1, test_sound_stop)
-end
-function test_sound_stop()
- print("test_sound_stop")
- minetest.sound_stop(stepsound)
- minetest.after(2.0, test_sound)
-end
-test_sound()
---]]
-
-function on_step(dtime)
- -- print("experimental on_step")
- --[[
- objs = minetest.get_objects_inside_radius({x=0,y=0,z=0}, 10)
- for k, obj in pairs(objs) do
- name = obj:get_player_name()
- if name then
- print(name.." at "..dump(obj:getpos()))
- print(name.." dir: "..dump(obj:get_look_dir()))
- print(name.." pitch: "..dump(obj:get_look_pitch()))
- print(name.." yaw: "..dump(obj:get_look_yaw()))
- else
- print("Some object at "..dump(obj:getpos()))
- end
- end
- --]]
- --[[
- if experimental.t1 == nil then
- experimental.t1 = 0
- end
- experimental.t1 = experimental.t1 + dtime
- if experimental.t1 >= 2 then
- experimental.t1 = experimental.t1 - 2
- minetest.log("time of day is "..minetest.get_timeofday())
- if experimental.day then
- minetest.log("forcing day->night")
- experimental.day = false
- minetest.set_timeofday(0.0)
- else
- minetest.log("forcing night->day")
- experimental.day = true
- minetest.set_timeofday(0.5)
- end
- minetest.log("time of day is "..minetest.get_timeofday())
- end
- --]]
-end
-minetest.register_globalstep(on_step)
-
---
--- Random stuff
---
-
---
--- TNT (not functional)
---
-
-minetest.register_craft({
- output = 'experimental:tnt',
- recipe = {
- {'default:wood'},
- {'default:coal_lump'},
- {'default:wood'}
- }
-})
-
-minetest.register_node("experimental:tnt", {
- tile_images = {"default_tnt_top.png", "default_tnt_bottom.png",
- "default_tnt_side.png", "default_tnt_side.png",
- "default_tnt_side.png", "default_tnt_side.png"},
- inventory_image = minetest.inventorycube("default_tnt_top.png",
- "default_tnt_side.png", "default_tnt_side.png"),
- drop = '', -- Get nothing
- material = {
- diggability = "not",
- },
-})
-
-minetest.register_on_punchnode(function(p, node)
- if node.name == "experimental:tnt" then
- minetest.remove_node(p)
- minetest.add_entity(p, "experimental:tnt")
- nodeupdate(p)
- end
-end)
-
-local TNT = {
- -- Static definition
- physical = true, -- Collides with things
- -- weight = 5,
- collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
- visual = "cube",
- textures = {"default_tnt_top.png", "default_tnt_bottom.png",
- "default_tnt_side.png", "default_tnt_side.png",
- "default_tnt_side.png", "default_tnt_side.png"},
- -- Initial value for our timer
- timer = 0,
- -- Number of punches required to defuse
- health = 1,
- blinktimer = 0,
- blinkstatus = true,
-}
-
--- Called when a TNT object is created
-function TNT:on_activate(staticdata)
- print("TNT:on_activate()")
- self.object:setvelocity({x=0, y=4, z=0})
- self.object:setacceleration({x=0, y=-10, z=0})
- self.object:settexturemod("^[brighten")
- self.object:set_armor_groups({immortal=1})
-end
-
--- Called periodically
-function TNT:on_step(dtime)
- --print("TNT:on_step()")
- self.timer = self.timer + dtime
- self.blinktimer = self.blinktimer + dtime
- if self.blinktimer > 0.5 then
- self.blinktimer = self.blinktimer - 0.5
- if self.blinkstatus then
- self.object:settexturemod("")
- else
- self.object:settexturemod("^[brighten")
- end
- self.blinkstatus = not self.blinkstatus
- end
-end
-
--- Called when object is punched
-function TNT:on_punch(hitter)
- print("TNT:on_punch()")
- self.health = self.health - 1
- if self.health <= 0 then
- self.object:remove()
- hitter:get_inventory():add_item("main", "experimental:tnt")
- --hitter:set_hp(hitter:get_hp() - 1)
- end
-end
-
--- Called when object is right-clicked
-function TNT:on_rightclick(clicker)
- --pos = self.object:getpos()
- --pos = {x=pos.x, y=pos.y+0.1, z=pos.z}
- --self.object:moveto(pos, false)
-end
-
---print("TNT dump: "..dump(TNT))
---print("Registering TNT");
-minetest.register_entity("experimental:tnt", TNT)
-
--- Add TNT's old name also
-minetest.register_alias("TNT", "experimental:tnt")
-
---
--- The dummyball!
---
-
-minetest.register_entity("experimental:dummyball", {
- initial_properties = {
- hp_max = 20,
- physical = false,
- collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4},
- visual = "sprite",
- visual_size = {x=1, y=1},
- textures = {"experimental_dummyball.png"},
- spritediv = {x=1, y=3},
- initial_sprite_basepos = {x=0, y=0},
- },
-
- phase = 0,
- phasetimer = 0,
-
- on_activate = function(self, staticdata)
- minetest.log("Dummyball activated!")
- end,
-
- on_step = function(self, dtime)
- self.phasetimer = self.phasetimer + dtime
- if self.phasetimer > 2.0 then
- self.phasetimer = self.phasetimer - 2.0
- self.phase = self.phase + 1
- if self.phase >= 3 then
- self.phase = 0
- end
- self.object:setsprite({x=0, y=self.phase})
- phasearmor = {
- [0]={cracky=3},
- [1]={crumbly=3},
- [2]={fleshy=3}
- }
- self.object:set_armor_groups(phasearmor[self.phase])
- end
- end,
-
- on_punch = function(self, hitter)
- end,
-})
-
-minetest.register_on_chat_message(function(name, message)
- local cmd = "/dummyball"
- if message:sub(0, #cmd) == cmd then
- count = tonumber(message:sub(#cmd+1)) or 1
- if not minetest.get_player_privs(name)["give"] then
- minetest.chat_send_player(name, "you don't have permission to spawn (give)")
- return true -- Handled chat message
- end
- if not minetest.get_player_privs(name)["interact"] then
- minetest.chat_send_player(name, "you don't have permission to interact")
- return true -- Handled chat message
- end
- if count >= 2 and not minetest.get_player_privs(name)["server"] then
- minetest.chat_send_player(name, "you don't have " ..
- "permission to spawn multiple " ..
- "dummyballs (server)")
- return true -- Handled chat message
- end
- local player = minetest.get_player_by_name(name)
- if player == nil then
- print("Unable to spawn entity, player is nil")
- return true -- Handled chat message
- end
- local entityname = "experimental:dummyball"
- local p = player:getpos()
- p.y = p.y + 1
- for i = 1,count do
- minetest.add_entity(p, entityname)
- end
- minetest.chat_send_player(name, '"'..entityname
- ..'" spawned '..tostring(count)..' time(s).');
- return true -- Handled chat message
- end
-end)
-
---
--- A test entity for testing animated and yaw-modulated sprites
---
-
-minetest.register_entity("experimental:testentity", {
- -- Static definition
- physical = true, -- Collides with things
- -- weight = 5,
- collisionbox = {-0.7,-1.35,-0.7, 0.7,1.0,0.7},
- --collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
- visual = "sprite",
- visual_size = {x=2, y=3},
- textures = {"dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"},
- spritediv = {x=6, y=5},
- initial_sprite_basepos = {x=0, y=0},
-
- on_activate = function(self, staticdata)
- print("testentity.on_activate")
- self.object:setsprite({x=0,y=0}, 1, 0, true)
- --self.object:setsprite({x=0,y=0}, 4, 0.3, true)
-
- -- Set gravity
- self.object:setacceleration({x=0, y=-10, z=0})
- -- Jump a bit upwards
- self.object:setvelocity({x=0, y=10, z=0})
- end,
-
- on_punch = function(self, hitter)
- self.object:remove()
- hitter:add_to_inventory('craft testobject1 1')
- end,
-})
-
---
--- More random stuff
---
-
-minetest.register_on_respawnplayer(function(player)
- print("on_respawnplayer")
- -- player:setpos({x=0, y=30, z=0})
- -- return true
-end)
-
-minetest.register_on_generated(function(minp, maxp)
- --print("on_generated: minp="..dump(minp).." maxp="..dump(maxp))
- --cp = {x=(minp.x+maxp.x)/2, y=(minp.y+maxp.y)/2, z=(minp.z+maxp.z)/2}
- --minetest.add_node(cp, {name="sand"})
-end)
-
--- Example setting get
---print("setting max_users = " .. dump(minetest.setting_get("max_users")))
---print("setting asdf = " .. dump(minetest.setting_get("asdf")))
-
-minetest.register_on_chat_message(function(name, message)
- --[[print("on_chat_message: name="..dump(name).." message="..dump(message))
- local cmd = "/testcommand"
- if message:sub(0, #cmd) == cmd then
- print(cmd.." invoked")
- return true
- end
- local cmd = "/help"
- if message:sub(0, #cmd) == cmd then
- print("script-overridden help command")
- minetest.chat_send_all("script-overridden help command")
- return true
- end]]
-end)
-
--- Grow papyrus on TNT every 10 seconds
---[[minetest.register_abm({
- nodenames = {"TNT"},
- interval = 10.0,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- print("TNT ABM action")
- pos.y = pos.y + 1
- minetest.add_node(pos, {name="papyrus"})
- end,
-})]]
-
--- Replace texts of alls signs with "foo" every 10 seconds
---[[minetest.register_abm({
- nodenames = {"sign_wall"},
- interval = 10.0,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- print("ABM: Sign text changed")
- local meta = minetest.get_meta(pos)
- meta:set_text("foo")
- end,
-})]]
-
---[[local ncpos = nil
-local ncq = 1
-local ncstuff = {
- {2, 1, 0, 3}, {3, 0, 1, 2}, {4, -1, 0, 1}, {5, -1, 0, 1}, {6, 0, -1, 0},
- {7, 0, -1, 0}, {8, 1, 0, 3}, {9, 1, 0, 3}, {10, 1, 0, 3}, {11, 0, 1, 2},
- {12, 0, 1, 2}, {13, 0, 1, 2}, {14, -1, 0, 1}, {15, -1, 0, 1}, {16, -1, 0, 1},
- {17, -1, 0, 1}, {18, 0, -1, 0}, {19, 0, -1, 0}, {20, 0, -1, 0}, {21, 0, -1, 0},
- {22, 1, 0, 3}, {23, 1, 0, 3}, {24, 1, 0, 3}, {25, 1, 0, 3}, {10, 0, 1, 2}
-}
-local ncold = {}
-local nctime = nil
-
-minetest.register_abm({
- nodenames = {"dirt_with_grass"},
- interval = 100000.0,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- if ncpos ~= nil then
- return
- end
-
- if pos.x % 16 ~= 8 or pos.z % 16 ~= 8 then
- return
- end
-
- pos.y = pos.y + 1
- n = minetest.get_node(pos)
- print(dump(n))
- if n.name ~= "air" then
- return
- end
-
- pos.y = pos.y + 2
- ncpos = pos
- nctime = os.clock()
- minetest.add_node(ncpos, {name="nyancat"})
- end
-})
-
-minetest.register_abm({
- nodenames = {"nyancat"},
- interval = 1.0,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- if ncpos == nil then
- return
- end
- if pos.x == ncpos.x and pos.y == ncpos.y and pos.z == ncpos.z then
- clock = os.clock()
- if clock - nctime < 0.1 then
- return
- end
- nctime = clock
-
- s0 = ncstuff[ncq]
- ncq = s0[1]
- s1 = ncstuff[ncq]
- p0 = pos
- p1 = {x = p0.x + s0[2], y = p0.y, z = p0.z + s0[3]}
- p2 = {x = p1.x + s1[2], y = p1.y, z = p1.z + s1[3]}
- table.insert(ncold, 1, p0)
- while #ncold >= 10 do
- minetest.add_node(ncold[#ncold], {name="air"})
- table.remove(ncold, #ncold)
- end
- minetest.add_node(p0, {name="nyancat_rainbow"})
- minetest.add_node(p1, {name="nyancat", param1=s0[4]})
- minetest.add_node(p2, {name="air"})
- ncpos = p1
- end
- end,
-})--]]
-
-minetest.register_node("experimental:tester_node_1", {
- description = "Tester Node 1 (construct/destruct/timer)",
- tile_images = {"wieldhand.png"},
- groups = {oddly_breakable_by_hand=2},
- sounds = default.node_sound_wood_defaults(),
- -- This was known to cause a bug in minetest.item_place_node() when used
- -- via minetest.place_node(), causing a placer with no position
- paramtype2 = "facedir",
-
- on_construct = function(pos)
- experimental.print_to_everything("experimental:tester_node_1:on_construct("..minetest.pos_to_string(pos)..")")
- local meta = minetest.get_meta(pos)
- meta:set_string("mine", "test")
- local timer = minetest.get_node_timer(pos)
- timer:start(4, 3)
- end,
-
- after_place_node = function(pos, placer)
- experimental.print_to_everything("experimental:tester_node_1:after_place_node("..minetest.pos_to_string(pos)..")")
- local meta = minetest.get_meta(pos)
- if meta:get_string("mine") == "test" then
- experimental.print_to_everything("correct metadata found")
- else
- experimental.print_to_everything("incorrect metadata found")
- end
- end,
-
- on_destruct = function(pos)
- experimental.print_to_everything("experimental:tester_node_1:on_destruct("..minetest.pos_to_string(pos)..")")
- end,
-
- after_destruct = function(pos)
- experimental.print_to_everything("experimental:tester_node_1:after_destruct("..minetest.pos_to_string(pos)..")")
- end,
-
- after_dig_node = function(pos, oldnode, oldmetadata, digger)
- experimental.print_to_everything("experimental:tester_node_1:after_dig_node("..minetest.pos_to_string(pos)..")")
- end,
-
- on_timer = function(pos, elapsed)
- experimental.print_to_everything("on_timer(): elapsed="..dump(elapsed))
- return true
- end,
-})
-
-minetest.register_craftitem("experimental:tester_tool_1", {
- description = "Tester Tool 1",
- inventory_image = "experimental_tester_tool_1.png",
- on_use = function(itemstack, user, pointed_thing)
- --print(dump(pointed_thing))
- if pointed_thing.type == "node" then
- if minetest.get_node(pointed_thing.under).name == "experimental:tester_node_1" then
- local p = pointed_thing.under
- minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p))
- minetest.dig_node(p)
- else
- local p = pointed_thing.above
- minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p))
- minetest.place_node(p, {name="experimental:tester_node_1"})
- end
- end
- end,
-})
-
-minetest.register_craft({
- output = 'experimental:tester_tool_1',
- recipe = {
- {'group:crumbly'},
- {'group:crumbly'},
- }
-})
-
---[[minetest.register_on_joinplayer(function(player)
- minetest.after(3, function()
- player:set_inventory_formspec("size[8,7.5]"..
- "image[1,0.6;1,2;player.png]"..
- "list[current_player;main;0,3.5;8,4;]"..
- "list[current_player;craft;3,0;3,3;]"..
- "list[current_player;craftpreview;7,1;1,1;]")
- end)
-end)]]
-
--- Create a detached inventory
-local inv = minetest.create_detached_inventory("test_inventory", {
- allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
- experimental.print_to_everything("allow move asked")
- return count -- Allow all
- end,
- allow_put = function(inv, listname, index, stack, player)
- experimental.print_to_everything("allow put asked")
- return 1 -- Allow only 1
- end,
- allow_take = function(inv, listname, index, stack, player)
- experimental.print_to_everything("allow take asked")
- return 4 -- Allow 4 at max
- end,
- on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
- experimental.print_to_everything(player:get_player_name().." moved items")
- end,
- on_put = function(inv, listname, index, stack, player)
- experimental.print_to_everything(player:get_player_name().." put items")
- end,
- on_take = function(inv, listname, index, stack, player)
- experimental.print_to_everything(player:get_player_name().." took items")
- end,
-})
-inv:set_size("main", 4*6)
-inv:add_item("main", "experimental:tester_tool_1")
-inv:add_item("main", "experimental:tnt 5")
-
-minetest.register_chatcommand("test1", {
- params = "",
- description = "Test 1: Modify player's inventory view",
- func = function(name, param)
- local player = minetest.get_player_by_name(name)
- if not player then
- return
- end
- player:set_inventory_formspec(
- "size[13,7.5]"..
- "image[6,0.6;1,2;player.png]"..
- "list[current_player;main;5,3.5;8,4;]"..
- "list[current_player;craft;8,0;3,3;]"..
- "list[current_player;craftpreview;12,1;1,1;]"..
- "list[detached:test_inventory;main;0,0;4,6;0]"..
- "button[0.5,7;2,1;button1;Button 1]"..
- "button_exit[2.5,7;2,1;button2;Exit Button]"
- )
- minetest.chat_send_player(name, "Done.");
- end,
-})
-
-minetest.register_on_player_receive_fields(function(player, formname, fields)
- experimental.print_to_everything("Inventory fields 1: player="..player:get_player_name()..", fields="..dump(fields))
-end)
-minetest.register_on_player_receive_fields(function(player, formname, fields)
- experimental.print_to_everything("Inventory fields 2: player="..player:get_player_name()..", fields="..dump(fields))
- return true -- Disable the first callback
-end)
-minetest.register_on_player_receive_fields(function(player, formname, fields)
- experimental.print_to_everything("Inventory fields 3: player="..player:get_player_name()..", fields="..dump(fields))
-end)
-
-minetest.log("experimental modname="..dump(minetest.get_current_modname()))
-minetest.log("experimental modpath="..dump(minetest.get_modpath("experimental")))
-minetest.log("experimental worldpath="..dump(minetest.get_worldpath()))
-
--- END
diff --git a/games/minimal/mods/experimental/textures/experimental_dummyball.png b/games/minimal/mods/experimental/textures/experimental_dummyball.png
deleted file mode 100644
index 256414f46..000000000
--- a/games/minimal/mods/experimental/textures/experimental_dummyball.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/experimental/textures/experimental_tester_tool_1.png b/games/minimal/mods/experimental/textures/experimental_tester_tool_1.png
deleted file mode 100644
index 587923c86..000000000
--- a/games/minimal/mods/experimental/textures/experimental_tester_tool_1.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/give_initial_stuff/depends.txt b/games/minimal/mods/give_initial_stuff/depends.txt
deleted file mode 100644
index 3a7daa1d7..000000000
--- a/games/minimal/mods/give_initial_stuff/depends.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-default
-
diff --git a/games/minimal/mods/give_initial_stuff/init.lua b/games/minimal/mods/give_initial_stuff/init.lua
deleted file mode 100644
index 29b835c7d..000000000
--- a/games/minimal/mods/give_initial_stuff/init.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-minetest.register_on_newplayer(function(player)
- print("[minimal] giving initial stuff to player")
- player:get_inventory():add_item('main', 'default:pick_stone')
- player:get_inventory():add_item('main', 'default:torch 99')
- player:get_inventory():add_item('main', 'default:cobble 99')
- player:get_inventory():add_item('main', 'default:wood 99')
- player:get_inventory():add_item('main', 'default:axe_steel')
- player:get_inventory():add_item('main', 'default:shovel_steel')
- player:get_inventory():add_item('main', 'default:pick_wood')
- player:get_inventory():add_item('main', 'default:pick_steel')
- player:get_inventory():add_item('main', 'default:pick_mese')
- player:get_inventory():add_item('main', 'default:mese 99')
- player:get_inventory():add_item('main', 'default:water_source 99')
- player:get_inventory():add_item('main', 'experimental:tester_tool_1')
-end)
-
diff --git a/games/minimal/mods/legacy/depends.txt b/games/minimal/mods/legacy/depends.txt
deleted file mode 100644
index 3a7daa1d7..000000000
--- a/games/minimal/mods/legacy/depends.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-default
-
diff --git a/games/minimal/mods/legacy/init.lua b/games/minimal/mods/legacy/init.lua
deleted file mode 100644
index 98ad69be0..000000000
--- a/games/minimal/mods/legacy/init.lua
+++ /dev/null
@@ -1,128 +0,0 @@
--- legacy (Minetest 0.4 mod)
--- Provides as much backwards-compatibility as feasible
-
---
--- Aliases to support loading 0.3 and old 0.4 worlds and inventories
---
-
-minetest.register_alias("stone", "default:stone")
-minetest.register_alias("stone_with_coal", "default:stone_with_coal")
-minetest.register_alias("stone_with_iron", "default:stone_with_iron")
-minetest.register_alias("dirt_with_grass", "default:dirt_with_grass")
-minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps")
-minetest.register_alias("dirt", "default:dirt")
-minetest.register_alias("sand", "default:sand")
-minetest.register_alias("gravel", "default:gravel")
-minetest.register_alias("sandstone", "default:sandstone")
-minetest.register_alias("clay", "default:clay")
-minetest.register_alias("brick", "default:brick")
-minetest.register_alias("tree", "default:tree")
-minetest.register_alias("jungletree", "default:jungletree")
-minetest.register_alias("junglegrass", "default:junglegrass")
-minetest.register_alias("leaves", "default:leaves")
-minetest.register_alias("cactus", "default:cactus")
-minetest.register_alias("papyrus", "default:papyrus")
-minetest.register_alias("bookshelf", "default:bookshelf")
-minetest.register_alias("glass", "default:glass")
-minetest.register_alias("wooden_fence", "default:fence_wood")
-minetest.register_alias("rail", "default:rail")
-minetest.register_alias("ladder", "default:ladder")
-minetest.register_alias("wood", "default:wood")
-minetest.register_alias("mese", "default:mese")
-minetest.register_alias("cloud", "default:cloud")
-minetest.register_alias("water_flowing", "default:water_flowing")
-minetest.register_alias("water_source", "default:water_source")
-minetest.register_alias("lava_flowing", "default:lava_flowing")
-minetest.register_alias("lava_source", "default:lava_source")
-minetest.register_alias("torch", "default:torch")
-minetest.register_alias("sign_wall", "default:sign_wall")
-minetest.register_alias("furnace", "default:furnace")
-minetest.register_alias("chest", "default:chest")
-minetest.register_alias("locked_chest", "default:chest_locked")
-minetest.register_alias("cobble", "default:cobble")
-minetest.register_alias("mossycobble", "default:mossycobble")
-minetest.register_alias("steelblock", "default:steelblock")
-minetest.register_alias("nyancat", "default:nyancat")
-minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow")
-minetest.register_alias("sapling", "default:sapling")
-minetest.register_alias("apple", "default:apple")
-
-minetest.register_alias("WPick", "default:pick_wood")
-minetest.register_alias("STPick", "default:pick_stone")
-minetest.register_alias("SteelPick", "default:pick_steel")
-minetest.register_alias("MesePick", "default:pick_mese")
-minetest.register_alias("WShovel", "default:shovel_wood")
-minetest.register_alias("STShovel", "default:shovel_stone")
-minetest.register_alias("SteelShovel", "default:shovel_steel")
-minetest.register_alias("WAxe", "default:axe_wood")
-minetest.register_alias("STAxe", "default:axe_stone")
-minetest.register_alias("SteelAxe", "default:axe_steel")
-minetest.register_alias("WSword", "default:sword_wood")
-minetest.register_alias("STSword", "default:sword_stone")
-minetest.register_alias("SteelSword", "default:sword_steel")
-
-minetest.register_alias("Stick", "default:stick")
-minetest.register_alias("paper", "default:paper")
-minetest.register_alias("book", "default:book")
-minetest.register_alias("lump_of_coal", "default:coal_lump")
-minetest.register_alias("lump_of_iron", "default:iron_lump")
-minetest.register_alias("lump_of_clay", "default:clay_lump")
-minetest.register_alias("steel_ingot", "default:steel_ingot")
-minetest.register_alias("clay_brick", "default:clay_brick")
-minetest.register_alias("scorched_stuff", "default:scorched_stuff")
-
---
--- Old items
---
-
-minetest.register_craftitem(":rat", {
- description = "Rat",
- inventory_image = "rat.png",
- on_drop = function(item, dropper, pos)
- item:take_item()
- return item
- end,
- on_place = function(item, dropped, pointed)
- pos = minetest.get_pointed_thing_position(pointed, true)
- if pos ~= nil then
- item:take_item()
- return item
- end
- end
-})
-
-minetest.register_craftitem(":cooked_rat", {
- description = "Cooked rat",
- inventory_image = "cooked_rat.png",
- on_use = minetest.item_eat(6),
-})
-
-minetest.register_craftitem(":firefly", {
- description = "Firefly",
- inventory_image = "firefly.png",
- on_drop = function(item, dropper, pos)
- item:take_item()
- return item
- end,
- on_place = function(item, dropped, pointed)
- pos = minetest.get_pointed_thing_position(pointed, true)
- if pos ~= nil then
- item:take_item()
- return item
- end
- end
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "cooked_rat",
- recipe = "rat",
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "scorched_stuff",
- recipe = "cooked_rat",
-})
-
--- END
diff --git a/games/minimal/mods/legacy/textures/apple_iron.png b/games/minimal/mods/legacy/textures/apple_iron.png
deleted file mode 100644
index db5945856..000000000
--- a/games/minimal/mods/legacy/textures/apple_iron.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/cooked_rat.png b/games/minimal/mods/legacy/textures/cooked_rat.png
deleted file mode 100644
index 776dc4ee0..000000000
--- a/games/minimal/mods/legacy/textures/cooked_rat.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/dungeon_master.png b/games/minimal/mods/legacy/textures/dungeon_master.png
deleted file mode 100644
index d52d8ccd7..000000000
--- a/games/minimal/mods/legacy/textures/dungeon_master.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/fireball.png b/games/minimal/mods/legacy/textures/fireball.png
deleted file mode 100644
index 124469ce4..000000000
--- a/games/minimal/mods/legacy/textures/fireball.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/firefly.png b/games/minimal/mods/legacy/textures/firefly.png
deleted file mode 100644
index ea95a6a84..000000000
--- a/games/minimal/mods/legacy/textures/firefly.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/oerkki1.png b/games/minimal/mods/legacy/textures/oerkki1.png
deleted file mode 100644
index 061709c80..000000000
--- a/games/minimal/mods/legacy/textures/oerkki1.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/oerkki1_damaged.png b/games/minimal/mods/legacy/textures/oerkki1_damaged.png
deleted file mode 100644
index b2a30337e..000000000
--- a/games/minimal/mods/legacy/textures/oerkki1_damaged.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/legacy/textures/rat.png b/games/minimal/mods/legacy/textures/rat.png
deleted file mode 100644
index 04cf9b865..000000000
--- a/games/minimal/mods/legacy/textures/rat.png
+++ /dev/null
Binary files differ
diff --git a/games/minimal/mods/stairs/depends.txt b/games/minimal/mods/stairs/depends.txt
deleted file mode 100644
index 4ad96d515..000000000
--- a/games/minimal/mods/stairs/depends.txt
+++ /dev/null
@@ -1 +0,0 @@
-default
diff --git a/games/minimal/mods/test/init.lua b/games/minimal/mods/test/init.lua
deleted file mode 100644
index 051b47906..000000000
--- a/games/minimal/mods/test/init.lua
+++ /dev/null
@@ -1,11 +0,0 @@
---
--- Minimal Development Test
--- Mod: test
---
-
--- Try out PseudoRandom
-pseudo = PseudoRandom(13)
-assert(pseudo:next() == 22290)
-assert(pseudo:next() == 13854)
-
-
diff --git a/lib/bitop/CMakeLists.txt b/lib/bitop/CMakeLists.txt
new file mode 100644
index 000000000..02e8a421d
--- /dev/null
+++ b/lib/bitop/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_library(bitop STATIC bit.c)
+target_link_libraries(bitop)
+
+include_directories(${LUA_INCLUDE_DIR})
diff --git a/lib/bitop/bit.c b/lib/bitop/bit.c
new file mode 100644
index 000000000..f23c31a4c
--- /dev/null
+++ b/lib/bitop/bit.c
@@ -0,0 +1,189 @@
+/*
+** Lua BitOp -- a bit operations library for Lua 5.1/5.2.
+** http://bitop.luajit.org/
+**
+** Copyright (C) 2008-2012 Mike Pall. All rights reserved.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be
+** included in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**
+** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
+*/
+
+#include "bit.h"
+
+#define LUA_BITOP_VERSION "1.0.2"
+
+#define LUA_LIB
+#include "lauxlib.h"
+
+#ifdef _MSC_VER
+/* MSVC is stuck in the last century and doesn't have C99's stdint.h. */
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <stdint.h>
+#endif
+
+typedef int32_t SBits;
+typedef uint32_t UBits;
+
+typedef union {
+ lua_Number n;
+#ifdef LUA_NUMBER_DOUBLE
+ uint64_t b;
+#else
+ UBits b;
+#endif
+} BitNum;
+
+/* Convert argument to bit type. */
+static UBits barg(lua_State *L, int idx)
+{
+ BitNum bn;
+ UBits b;
+#if LUA_VERSION_NUM < 502
+ bn.n = lua_tonumber(L, idx);
+#else
+ bn.n = luaL_checknumber(L, idx);
+#endif
+#if defined(LUA_NUMBER_DOUBLE)
+ bn.n += 6755399441055744.0; /* 2^52+2^51 */
+#ifdef SWAPPED_DOUBLE
+ b = (UBits)(bn.b >> 32);
+#else
+ b = (UBits)bn.b;
+#endif
+#elif defined(LUA_NUMBER_INT) || defined(LUA_NUMBER_LONG) || \
+ defined(LUA_NUMBER_LONGLONG) || defined(LUA_NUMBER_LONG_LONG) || \
+ defined(LUA_NUMBER_LLONG)
+ if (sizeof(UBits) == sizeof(lua_Number))
+ b = bn.b;
+ else
+ b = (UBits)(SBits)bn.n;
+#elif defined(LUA_NUMBER_FLOAT)
+#error "A 'float' lua_Number type is incompatible with this library"
+#else
+#error "Unknown number type, check LUA_NUMBER_* in luaconf.h"
+#endif
+#if LUA_VERSION_NUM < 502
+ if (b == 0 && !lua_isnumber(L, idx)) {
+ luaL_typerror(L, idx, "number");
+ }
+#endif
+ return b;
+}
+
+/* Return bit type. */
+#define BRET(b) lua_pushnumber(L, (lua_Number)(SBits)(b)); return 1;
+
+static int bit_tobit(lua_State *L) { BRET(barg(L, 1)) }
+static int bit_bnot(lua_State *L) { BRET(~barg(L, 1)) }
+
+#define BIT_OP(func, opr) \
+ static int func(lua_State *L) { int i; UBits b = barg(L, 1); \
+ for (i = lua_gettop(L); i > 1; i--) b opr barg(L, i); BRET(b) }
+BIT_OP(bit_band, &=)
+BIT_OP(bit_bor, |=)
+BIT_OP(bit_bxor, ^=)
+
+#define bshl(b, n) (b << n)
+#define bshr(b, n) (b >> n)
+#define bsar(b, n) ((SBits)b >> n)
+#define brol(b, n) ((b << n) | (b >> (32-n)))
+#define bror(b, n) ((b << (32-n)) | (b >> n))
+#define BIT_SH(func, fn) \
+ static int func(lua_State *L) { \
+ UBits b = barg(L, 1); UBits n = barg(L, 2) & 31; BRET(fn(b, n)) }
+BIT_SH(bit_lshift, bshl)
+BIT_SH(bit_rshift, bshr)
+BIT_SH(bit_arshift, bsar)
+BIT_SH(bit_rol, brol)
+BIT_SH(bit_ror, bror)
+
+static int bit_bswap(lua_State *L)
+{
+ UBits b = barg(L, 1);
+ b = (b >> 24) | ((b >> 8) & 0xff00) | ((b & 0xff00) << 8) | (b << 24);
+ BRET(b)
+}
+
+static int bit_tohex(lua_State *L)
+{
+ UBits b = barg(L, 1);
+ SBits n = lua_isnone(L, 2) ? 8 : (SBits)barg(L, 2);
+ const char *hexdigits = "0123456789abcdef";
+ char buf[8];
+ int i;
+ if (n < 0) { n = -n; hexdigits = "0123456789ABCDEF"; }
+ if (n > 8) n = 8;
+ for (i = (int)n; --i >= 0; ) { buf[i] = hexdigits[b & 15]; b >>= 4; }
+ lua_pushlstring(L, buf, (size_t)n);
+ return 1;
+}
+
+static const struct luaL_Reg bit_funcs[] = {
+ { "tobit", bit_tobit },
+ { "bnot", bit_bnot },
+ { "band", bit_band },
+ { "bor", bit_bor },
+ { "bxor", bit_bxor },
+ { "lshift", bit_lshift },
+ { "rshift", bit_rshift },
+ { "arshift", bit_arshift },
+ { "rol", bit_rol },
+ { "ror", bit_ror },
+ { "bswap", bit_bswap },
+ { "tohex", bit_tohex },
+ { NULL, NULL }
+};
+
+/* Signed right-shifts are implementation-defined per C89/C99.
+** But the de facto standard are arithmetic right-shifts on two's
+** complement CPUs. This behaviour is required here, so test for it.
+*/
+#define BAD_SAR (bsar(-8, 2) != (SBits)-2)
+
+LUALIB_API int luaopen_bit(lua_State *L)
+{
+ UBits b;
+ lua_pushnumber(L, (lua_Number)1437217655L);
+ b = barg(L, -1);
+ if (b != (UBits)1437217655L || BAD_SAR) { /* Perform a simple self-test. */
+ const char *msg = "compiled with incompatible luaconf.h";
+#ifdef LUA_NUMBER_DOUBLE
+#ifdef _WIN32
+ if (b == (UBits)1610612736L)
+ msg = "use D3DCREATE_FPU_PRESERVE with DirectX";
+#endif
+ if (b == (UBits)1127743488L)
+ msg = "not compiled with SWAPPED_DOUBLE";
+#endif
+ if (BAD_SAR)
+ msg = "arithmetic right-shift broken";
+ luaL_error(L, "bit library self-test failed (%s)", msg);
+ }
+#if LUA_VERSION_NUM < 502
+ luaL_register(L, "bit", bit_funcs);
+#else
+ luaL_newlib(L, bit_funcs);
+#endif
+ return 1;
+}
diff --git a/lib/bitop/bit.h b/lib/bitop/bit.h
new file mode 100644
index 000000000..3e5845ee5
--- /dev/null
+++ b/lib/bitop/bit.h
@@ -0,0 +1,34 @@
+/*
+** Lua BitOp -- a bit operations library for Lua 5.1/5.2.
+** http://bitop.luajit.org/
+**
+** Copyright (C) 2008-2012 Mike Pall. All rights reserved.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be
+** included in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**
+** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
+*/
+
+#pragma once
+
+#include "lua.h"
+
+#define LUA_BITLIBNAME "bit"
+LUALIB_API int luaopen_bit(lua_State *L);
diff --git a/lib/catch2/CMakeLists.txt b/lib/catch2/CMakeLists.txt
new file mode 100644
index 000000000..3c471d49d
--- /dev/null
+++ b/lib/catch2/CMakeLists.txt
@@ -0,0 +1,16 @@
+# catch2 is distributed as a standalone header.
+#
+# Downloaded from:
+#
+# https://github.com/catchorg/Catch2/releases/download/v2.13.9/catch.hpp
+#
+# The following changes were made to always print in microseconds, fixed format:
+#
+# - explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
+# + explicit Duration(double inNanoseconds, Unit units = Unit::Microseconds)
+#
+# - return os << duration.value() << ' ' << duration.unitsAsString();
+# + return os << std::fixed << duration.value() << ' ' << duration.unitsAsString();
+
+add_library(catch2 INTERFACE)
+target_include_directories(catch2 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/lib/catch2/catch.hpp b/lib/catch2/catch.hpp
new file mode 100644
index 000000000..88f110677
--- /dev/null
+++ b/lib/catch2/catch.hpp
@@ -0,0 +1,17970 @@
+/*
+ * Catch v2.13.9
+ * Generated: 2022-04-12 22:37:23.260201
+ * ----------------------------------------------------------
+ * This file has been merged from multiple headers. Please don't edit it directly
+ * Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
+#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
+// start catch.hpp
+
+
+#define CATCH_VERSION_MAJOR 2
+#define CATCH_VERSION_MINOR 13
+#define CATCH_VERSION_PATCH 9
+
+#ifdef __clang__
+# pragma clang system_header
+#elif defined __GNUC__
+# pragma GCC system_header
+#endif
+
+// start catch_suppress_warnings.h
+
+#ifdef __clang__
+# ifdef __ICC // icpc defines the __clang__ macro
+# pragma warning(push)
+# pragma warning(disable: 161 1682)
+# else // __ICC
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wpadded"
+# pragma clang diagnostic ignored "-Wswitch-enum"
+# pragma clang diagnostic ignored "-Wcovered-switch-default"
+# endif
+#elif defined __GNUC__
+ // Because REQUIREs trigger GCC's -Wparentheses, and because still
+ // supported version of g++ have only buggy support for _Pragmas,
+ // Wparentheses have to be suppressed globally.
+# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details
+
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-variable"
+# pragma GCC diagnostic ignored "-Wpadded"
+#endif
+// end catch_suppress_warnings.h
+#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER)
+# define CATCH_IMPL
+# define CATCH_CONFIG_ALL_PARTS
+#endif
+
+// In the impl file, we want to have access to all parts of the headers
+// Can also be used to sanely support PCHs
+#if defined(CATCH_CONFIG_ALL_PARTS)
+# define CATCH_CONFIG_EXTERNAL_INTERFACES
+# if defined(CATCH_CONFIG_DISABLE_MATCHERS)
+# undef CATCH_CONFIG_DISABLE_MATCHERS
+# endif
+# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER)
+# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
+# endif
+#endif
+
+#if !defined(CATCH_CONFIG_IMPL_ONLY)
+// start catch_platform.h
+
+// See e.g.:
+// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h.auto.html
+#ifdef __APPLE__
+# include <TargetConditionals.h>
+# if (defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1) || \
+ (defined(TARGET_OS_MAC) && TARGET_OS_MAC == 1)
+# define CATCH_PLATFORM_MAC
+# elif (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE == 1)
+# define CATCH_PLATFORM_IPHONE
+# endif
+
+#elif defined(linux) || defined(__linux) || defined(__linux__)
+# define CATCH_PLATFORM_LINUX
+
+#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__)
+# define CATCH_PLATFORM_WINDOWS
+#endif
+
+// end catch_platform.h
+
+#ifdef CATCH_IMPL
+# ifndef CLARA_CONFIG_MAIN
+# define CLARA_CONFIG_MAIN_NOT_DEFINED
+# define CLARA_CONFIG_MAIN
+# endif
+#endif
+
+// start catch_user_interfaces.h
+
+namespace Catch {
+ unsigned int rngSeed();
+}
+
+// end catch_user_interfaces.h
+// start catch_tag_alias_autoregistrar.h
+
+// start catch_common.h
+
+// start catch_compiler_capabilities.h
+
+// Detect a number of compiler features - by compiler
+// The following features are defined:
+//
+// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported?
+// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported?
+// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported?
+// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled?
+// ****************
+// Note to maintainers: if new toggles are added please document them
+// in configuration.md, too
+// ****************
+
+// In general each macro has a _NO_<feature name> form
+// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature.
+// Many features, at point of detection, define an _INTERNAL_ macro, so they
+// can be combined, en-mass, with the _NO_ forms later.
+
+#ifdef __cplusplus
+
+# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
+# define CATCH_CPP14_OR_GREATER
+# endif
+
+# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
+# define CATCH_CPP17_OR_GREATER
+# endif
+
+#endif
+
+// Only GCC compiler should be used in this block, so other compilers trying to
+// mask themselves as GCC should be ignored.
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) && !defined(__LCC__)
+# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" )
+# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" )
+
+# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__)
+
+#endif
+
+#if defined(__clang__)
+
+# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" )
+# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic pop" )
+
+// As of this writing, IBM XL's implementation of __builtin_constant_p has a bug
+// which results in calls to destructors being emitted for each temporary,
+// without a matching initialization. In practice, this can result in something
+// like `std::string::~string` being called on an uninitialized value.
+//
+// For example, this code will likely segfault under IBM XL:
+// ```
+// REQUIRE(std::string("12") + "34" == "1234")
+// ```
+//
+// Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented.
+# if !defined(__ibmxl__) && !defined(__CUDACC__)
+# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */
+# endif
+
+# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \
+ _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"")
+
+# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
+ _Pragma( "clang diagnostic ignored \"-Wparentheses\"" )
+
+# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
+ _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" )
+
+# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+ _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" )
+
+# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ _Pragma( "clang diagnostic ignored \"-Wunused-template\"" )
+
+#endif // __clang__
+
+////////////////////////////////////////////////////////////////////////////////
+// Assume that non-Windows platforms support posix signals by default
+#if !defined(CATCH_PLATFORM_WINDOWS)
+ #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// We know some environments not to support full POSIX signals
+#if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__)
+ #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
+#endif
+
+#ifdef __OS400__
+# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
+# define CATCH_CONFIG_COLOUR_NONE
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// Android somehow still does not support std::to_string
+#if defined(__ANDROID__)
+# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
+# define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// Not all Windows environments support SEH properly
+#if defined(__MINGW32__)
+# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// PS4
+#if defined(__ORBIS__)
+# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// Cygwin
+#ifdef __CYGWIN__
+
+// Required for some versions of Cygwin to declare gettimeofday
+// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
+# define _BSD_SOURCE
+// some versions of cygwin (most) do not support std::to_string. Use the libstd check.
+// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813
+# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
+ && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
+
+# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
+
+# endif
+#endif // __CYGWIN__
+
+////////////////////////////////////////////////////////////////////////////////
+// Visual C++
+#if defined(_MSC_VER)
+
+// Universal Windows platform does not support SEH
+// Or console colours (or console at all...)
+# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
+# define CATCH_CONFIG_COLOUR_NONE
+# else
+# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH
+# endif
+
+# if !defined(__clang__) // Handle Clang masquerading for msvc
+
+// MSVC traditional preprocessor needs some workaround for __VA_ARGS__
+// _MSVC_TRADITIONAL == 0 means new conformant preprocessor
+// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor
+# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL)
+# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+# endif // MSVC_TRADITIONAL
+
+// Only do this if we're not using clang on Windows, which uses `diagnostic push` & `diagnostic pop`
+# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) )
+# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) )
+# endif // __clang__
+
+#endif // _MSC_VER
+
+#if defined(_REENTRANT) || defined(_MSC_VER)
+// Enable async processing, as -pthread is specified or no additional linking is required
+# define CATCH_INTERNAL_CONFIG_USE_ASYNC
+#endif // _MSC_VER
+
+////////////////////////////////////////////////////////////////////////////////
+// Check if we are compiled with -fno-exceptions or equivalent
+#if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND)
+# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// DJGPP
+#ifdef __DJGPP__
+# define CATCH_INTERNAL_CONFIG_NO_WCHAR
+#endif // __DJGPP__
+
+////////////////////////////////////////////////////////////////////////////////
+// Embarcadero C++Build
+#if defined(__BORLANDC__)
+ #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Use of __COUNTER__ is suppressed during code analysis in
+// CLion/AppCode 2017.2.x and former, because __COUNTER__ is not properly
+// handled by it.
+// Otherwise all supported compilers support COUNTER macro,
+// but user still might want to turn it off
+#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L )
+ #define CATCH_INTERNAL_CONFIG_COUNTER
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+// RTX is a special version of Windows that is real time.
+// This means that it is detected as Windows, but does not provide
+// the same set of capabilities as real Windows does.
+#if defined(UNDER_RTSS) || defined(RTX64_BUILD)
+ #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH
+ #define CATCH_INTERNAL_CONFIG_NO_ASYNC
+ #define CATCH_CONFIG_COLOUR_NONE
+#endif
+
+#if !defined(_GLIBCXX_USE_C99_MATH_TR1)
+#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER
+#endif
+
+// Various stdlib support checks that require __has_include
+#if defined(__has_include)
+ // Check if string_view is available and usable
+ #if __has_include(<string_view>) && defined(CATCH_CPP17_OR_GREATER)
+ # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW
+ #endif
+
+ // Check if optional is available and usable
+ # if __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
+ # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL
+ # endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
+
+ // Check if byte is available and usable
+ # if __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
+ # include <cstddef>
+ # if defined(__cpp_lib_byte) && (__cpp_lib_byte > 0)
+ # define CATCH_INTERNAL_CONFIG_CPP17_BYTE
+ # endif
+ # endif // __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
+
+ // Check if variant is available and usable
+ # if __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
+ # if defined(__clang__) && (__clang_major__ < 8)
+ // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852
+ // fix should be in clang 8, workaround in libstdc++ 8.2
+ # include <ciso646>
+ # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
+ # define CATCH_CONFIG_NO_CPP17_VARIANT
+ # else
+ # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
+ # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
+ # else
+ # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
+ # endif // defined(__clang__) && (__clang_major__ < 8)
+ # endif // __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
+#endif // defined(__has_include)
+
+#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER)
+# define CATCH_CONFIG_COUNTER
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH)
+# define CATCH_CONFIG_WINDOWS_SEH
+#endif
+// This is set by default, because we assume that unix compilers are posix-signal-compatible by default.
+#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS)
+# define CATCH_CONFIG_POSIX_SIGNALS
+#endif
+// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions.
+#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR)
+# define CATCH_CONFIG_WCHAR
+#endif
+
+#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING)
+# define CATCH_CONFIG_CPP11_TO_STRING
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL)
+# define CATCH_CONFIG_CPP17_OPTIONAL
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW)
+# define CATCH_CONFIG_CPP17_STRING_VIEW
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT)
+# define CATCH_CONFIG_CPP17_VARIANT
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE)
+# define CATCH_CONFIG_CPP17_BYTE
+#endif
+
+#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
+# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE)
+# define CATCH_CONFIG_NEW_CAPTURE
+#endif
+
+#if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+# define CATCH_CONFIG_DISABLE_EXCEPTIONS
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN)
+# define CATCH_CONFIG_POLYFILL_ISNAN
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC)
+# define CATCH_CONFIG_USE_ASYNC
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE)
+# define CATCH_CONFIG_ANDROID_LOGWRITE
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+# define CATCH_CONFIG_GLOBAL_NEXTAFTER
+#endif
+
+// Even if we do not think the compiler has that warning, we still have
+// to provide a macro that can be used by the code.
+#if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION)
+# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
+#endif
+#if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION)
+# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+#endif
+#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS)
+# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
+#endif
+#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS)
+# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
+#endif
+#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS)
+# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS
+#endif
+#if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS)
+# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS
+#endif
+
+// The goal of this macro is to avoid evaluation of the arguments, but
+// still have the compiler warn on problems inside...
+#if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN)
+# define CATCH_INTERNAL_IGNORE_BUT_WARN(...)
+#endif
+
+#if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10)
+# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
+#elif defined(__clang__) && (__clang_major__ < 5)
+# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
+#endif
+
+#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS)
+# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
+#endif
+
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+#define CATCH_TRY if ((true))
+#define CATCH_CATCH_ALL if ((false))
+#define CATCH_CATCH_ANON(type) if ((false))
+#else
+#define CATCH_TRY try
+#define CATCH_CATCH_ALL catch (...)
+#define CATCH_CATCH_ANON(type) catch (type)
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR)
+#define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#endif
+
+// end catch_compiler_capabilities.h
+#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line
+#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )
+#ifdef CATCH_CONFIG_COUNTER
+# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )
+#else
+# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ )
+#endif
+
+#include <iosfwd>
+#include <string>
+#include <cstdint>
+
+// We need a dummy global operator<< so we can bring it into Catch namespace later
+struct Catch_global_namespace_dummy {};
+std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
+
+namespace Catch {
+
+ struct CaseSensitive { enum Choice {
+ Yes,
+ No
+ }; };
+
+ class NonCopyable {
+ NonCopyable( NonCopyable const& ) = delete;
+ NonCopyable( NonCopyable && ) = delete;
+ NonCopyable& operator = ( NonCopyable const& ) = delete;
+ NonCopyable& operator = ( NonCopyable && ) = delete;
+
+ protected:
+ NonCopyable();
+ virtual ~NonCopyable();
+ };
+
+ struct SourceLineInfo {
+
+ SourceLineInfo() = delete;
+ SourceLineInfo( char const* _file, std::size_t _line ) noexcept
+ : file( _file ),
+ line( _line )
+ {}
+
+ SourceLineInfo( SourceLineInfo const& other ) = default;
+ SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
+ SourceLineInfo( SourceLineInfo&& ) noexcept = default;
+ SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default;
+
+ bool empty() const noexcept { return file[0] == '\0'; }
+ bool operator == ( SourceLineInfo const& other ) const noexcept;
+ bool operator < ( SourceLineInfo const& other ) const noexcept;
+
+ char const* file;
+ std::size_t line;
+ };
+
+ std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info );
+
+ // Bring in operator<< from global namespace into Catch namespace
+ // This is necessary because the overload of operator<< above makes
+ // lookup stop at namespace Catch
+ using ::operator<<;
+
+ // Use this in variadic streaming macros to allow
+ // >> +StreamEndStop
+ // as well as
+ // >> stuff +StreamEndStop
+ struct StreamEndStop {
+ std::string operator+() const;
+ };
+ template<typename T>
+ T const& operator + ( T const& value, StreamEndStop ) {
+ return value;
+ }
+}
+
+#define CATCH_INTERNAL_LINEINFO \
+ ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) )
+
+// end catch_common.h
+namespace Catch {
+
+ struct RegistrarForTagAliases {
+ RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo );
+ };
+
+} // end namespace Catch
+
+#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+// end catch_tag_alias_autoregistrar.h
+// start catch_test_registry.h
+
+// start catch_interfaces_testcase.h
+
+#include <vector>
+
+namespace Catch {
+
+ class TestSpec;
+
+ struct ITestInvoker {
+ virtual void invoke () const = 0;
+ virtual ~ITestInvoker();
+ };
+
+ class TestCase;
+ struct IConfig;
+
+ struct ITestCaseRegistry {
+ virtual ~ITestCaseRegistry();
+ virtual std::vector<TestCase> const& getAllTests() const = 0;
+ virtual std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const = 0;
+ };
+
+ bool isThrowSafe( TestCase const& testCase, IConfig const& config );
+ bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config );
+ std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config );
+ std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config );
+
+}
+
+// end catch_interfaces_testcase.h
+// start catch_stringref.h
+
+#include <cstddef>
+#include <string>
+#include <iosfwd>
+#include <cassert>
+
+namespace Catch {
+
+ /// A non-owning string class (similar to the forthcoming std::string_view)
+ /// Note that, because a StringRef may be a substring of another string,
+ /// it may not be null terminated.
+ class StringRef {
+ public:
+ using size_type = std::size_t;
+ using const_iterator = const char*;
+
+ private:
+ static constexpr char const* const s_empty = "";
+
+ char const* m_start = s_empty;
+ size_type m_size = 0;
+
+ public: // construction
+ constexpr StringRef() noexcept = default;
+
+ StringRef( char const* rawChars ) noexcept;
+
+ constexpr StringRef( char const* rawChars, size_type size ) noexcept
+ : m_start( rawChars ),
+ m_size( size )
+ {}
+
+ StringRef( std::string const& stdString ) noexcept
+ : m_start( stdString.c_str() ),
+ m_size( stdString.size() )
+ {}
+
+ explicit operator std::string() const {
+ return std::string(m_start, m_size);
+ }
+
+ public: // operators
+ auto operator == ( StringRef const& other ) const noexcept -> bool;
+ auto operator != (StringRef const& other) const noexcept -> bool {
+ return !(*this == other);
+ }
+
+ auto operator[] ( size_type index ) const noexcept -> char {
+ assert(index < m_size);
+ return m_start[index];
+ }
+
+ public: // named queries
+ constexpr auto empty() const noexcept -> bool {
+ return m_size == 0;
+ }
+ constexpr auto size() const noexcept -> size_type {
+ return m_size;
+ }
+
+ // Returns the current start pointer. If the StringRef is not
+ // null-terminated, throws std::domain_exception
+ auto c_str() const -> char const*;
+
+ public: // substrings and searches
+ // Returns a substring of [start, start + length).
+ // If start + length > size(), then the substring is [start, size()).
+ // If start > size(), then the substring is empty.
+ auto substr( size_type start, size_type length ) const noexcept -> StringRef;
+
+ // Returns the current start pointer. May not be null-terminated.
+ auto data() const noexcept -> char const*;
+
+ constexpr auto isNullTerminated() const noexcept -> bool {
+ return m_start[m_size] == '\0';
+ }
+
+ public: // iterators
+ constexpr const_iterator begin() const { return m_start; }
+ constexpr const_iterator end() const { return m_start + m_size; }
+ };
+
+ auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&;
+ auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&;
+
+ constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
+ return StringRef( rawChars, size );
+ }
+} // namespace Catch
+
+constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef {
+ return Catch::StringRef( rawChars, size );
+}
+
+// end catch_stringref.h
+// start catch_preprocessor.hpp
+
+
+#define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__
+#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__)))
+#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__)))
+#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__)))
+#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__)))
+#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__)))
+
+#ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__
+// MSVC needs more evaluations
+#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__)))
+#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__))
+#else
+#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__)
+#endif
+
+#define CATCH_REC_END(...)
+#define CATCH_REC_OUT
+
+#define CATCH_EMPTY()
+#define CATCH_DEFER(id) id CATCH_EMPTY()
+
+#define CATCH_REC_GET_END2() 0, CATCH_REC_END
+#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2
+#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1
+#define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT
+#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0)
+#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next)
+
+#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )
+#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ )
+#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )
+
+#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ )
+#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ )
+#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ )
+
+// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results,
+// and passes userdata as the first parameter to each invocation,
+// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c)
+#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0))
+
+#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0))
+
+#define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param)
+#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__
+#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__
+#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF
+#define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__)
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__
+#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param))
+#else
+// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF
+#define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__)
+#define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__
+#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1)
+#endif
+
+#define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__
+#define INTERNAL_CATCH_MAKE_NAMESPACE(name) INTERNAL_CATCH_MAKE_NAMESPACE2(name)
+
+#define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__)
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS_GEN(__VA_ARGS__)>())
+#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))
+#else
+#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS_GEN(__VA_ARGS__)>()))
+#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)))
+#endif
+
+#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\
+ CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__)
+
+#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0)
+#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1)
+#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2)
+#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3)
+#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4)
+#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5)
+#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6)
+#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7)
+#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8)
+#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9)
+#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)
+
+#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
+
+#define INTERNAL_CATCH_TYPE_GEN\
+ template<typename...> struct TypeList {};\
+ template<typename...Ts>\
+ constexpr auto get_wrapper() noexcept -> TypeList<Ts...> { return {}; }\
+ template<template<typename...> class...> struct TemplateTypeList{};\
+ template<template<typename...> class...Cs>\
+ constexpr auto get_wrapper() noexcept -> TemplateTypeList<Cs...> { return {}; }\
+ template<typename...>\
+ struct append;\
+ template<typename...>\
+ struct rewrap;\
+ template<template<typename...> class, typename...>\
+ struct create;\
+ template<template<typename...> class, typename>\
+ struct convert;\
+ \
+ template<typename T> \
+ struct append<T> { using type = T; };\
+ template< template<typename...> class L1, typename...E1, template<typename...> class L2, typename...E2, typename...Rest>\
+ struct append<L1<E1...>, L2<E2...>, Rest...> { using type = typename append<L1<E1...,E2...>, Rest...>::type; };\
+ template< template<typename...> class L1, typename...E1, typename...Rest>\
+ struct append<L1<E1...>, TypeList<mpl_::na>, Rest...> { using type = L1<E1...>; };\
+ \
+ template< template<typename...> class Container, template<typename...> class List, typename...elems>\
+ struct rewrap<TemplateTypeList<Container>, List<elems...>> { using type = TypeList<Container<elems...>>; };\
+ template< template<typename...> class Container, template<typename...> class List, class...Elems, typename...Elements>\
+ struct rewrap<TemplateTypeList<Container>, List<Elems...>, Elements...> { using type = typename append<TypeList<Container<Elems...>>, typename rewrap<TemplateTypeList<Container>, Elements...>::type>::type; };\
+ \
+ template<template <typename...> class Final, template< typename...> class...Containers, typename...Types>\
+ struct create<Final, TemplateTypeList<Containers...>, TypeList<Types...>> { using type = typename append<Final<>, typename rewrap<TemplateTypeList<Containers>, Types...>::type...>::type; };\
+ template<template <typename...> class Final, template <typename...> class List, typename...Ts>\
+ struct convert<Final, List<Ts...>> { using type = typename append<Final<>,TypeList<Ts>...>::type; };
+
+#define INTERNAL_CATCH_NTTP_1(signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)> struct Nttp{};\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ constexpr auto get_wrapper() noexcept -> Nttp<__VA_ARGS__> { return {}; } \
+ template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...> struct NttpTemplateTypeList{};\
+ template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Cs>\
+ constexpr auto get_wrapper() noexcept -> NttpTemplateTypeList<Cs...> { return {}; } \
+ \
+ template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>> { using type = TypeList<Container<__VA_ARGS__>>; };\
+ template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature), typename...Elements>\
+ struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>, Elements...> { using type = typename append<TypeList<Container<__VA_ARGS__>>, typename rewrap<NttpTemplateTypeList<Container>, Elements...>::type>::type; };\
+ template<template <typename...> class Final, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Containers, typename...Types>\
+ struct create<Final, NttpTemplateTypeList<Containers...>, TypeList<Types...>> { using type = typename append<Final<>, typename rewrap<NttpTemplateTypeList<Containers>, Types...>::type...>::type; };
+
+#define INTERNAL_CATCH_DECLARE_SIG_TEST0(TestName)
+#define INTERNAL_CATCH_DECLARE_SIG_TEST1(TestName, signature)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ static void TestName()
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_X(TestName, signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ static void TestName()
+
+#define INTERNAL_CATCH_DEFINE_SIG_TEST0(TestName)
+#define INTERNAL_CATCH_DEFINE_SIG_TEST1(TestName, signature)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ static void TestName()
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_X(TestName, signature,...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ static void TestName()
+
+#define INTERNAL_CATCH_NTTP_REGISTER0(TestFunc, signature)\
+ template<typename Type>\
+ void reg_test(TypeList<Type>, Catch::NameAndTags nameAndTags)\
+ {\
+ Catch::AutoReg( Catch::makeTestInvoker(&TestFunc<Type>), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), nameAndTags);\
+ }
+
+#define INTERNAL_CATCH_NTTP_REGISTER(TestFunc, signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ void reg_test(Nttp<__VA_ARGS__>, Catch::NameAndTags nameAndTags)\
+ {\
+ Catch::AutoReg( Catch::makeTestInvoker(&TestFunc<__VA_ARGS__>), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), nameAndTags);\
+ }
+
+#define INTERNAL_CATCH_NTTP_REGISTER_METHOD0(TestName, signature, ...)\
+ template<typename Type>\
+ void reg_test(TypeList<Type>, Catch::StringRef className, Catch::NameAndTags nameAndTags)\
+ {\
+ Catch::AutoReg( Catch::makeTestInvoker(&TestName<Type>::test), CATCH_INTERNAL_LINEINFO, className, nameAndTags);\
+ }
+
+#define INTERNAL_CATCH_NTTP_REGISTER_METHOD(TestName, signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
+ void reg_test(Nttp<__VA_ARGS__>, Catch::StringRef className, Catch::NameAndTags nameAndTags)\
+ {\
+ Catch::AutoReg( Catch::makeTestInvoker(&TestName<__VA_ARGS__>::test), CATCH_INTERNAL_LINEINFO, className, nameAndTags);\
+ }
+
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0(TestName, ClassName)
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1(TestName, ClassName, signature)\
+ template<typename TestType> \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName)<TestType> { \
+ void test();\
+ }
+
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X(TestName, ClassName, signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)> \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName)<__VA_ARGS__> { \
+ void test();\
+ }
+
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0(TestName)
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1(TestName, signature)\
+ template<typename TestType> \
+ void INTERNAL_CATCH_MAKE_NAMESPACE(TestName)::TestName<TestType>::test()
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X(TestName, signature, ...)\
+ template<INTERNAL_CATCH_REMOVE_PARENS(signature)> \
+ void INTERNAL_CATCH_MAKE_NAMESPACE(TestName)::TestName<__VA_ARGS__>::test()
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define INTERNAL_CATCH_NTTP_0
+#define INTERNAL_CATCH_NTTP_GEN(...) INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__),INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_0)
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0)(TestName, __VA_ARGS__)
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName, ClassName, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0)(TestName, ClassName, __VA_ARGS__)
+#define INTERNAL_CATCH_NTTP_REG_METHOD_GEN(TestName, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD0, INTERNAL_CATCH_NTTP_REGISTER_METHOD0)(TestName, __VA_ARGS__)
+#define INTERNAL_CATCH_NTTP_REG_GEN(TestFunc, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER0, INTERNAL_CATCH_NTTP_REGISTER0)(TestFunc, __VA_ARGS__)
+#define INTERNAL_CATCH_DEFINE_SIG_TEST(TestName, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST1, INTERNAL_CATCH_DEFINE_SIG_TEST0)(TestName, __VA_ARGS__)
+#define INTERNAL_CATCH_DECLARE_SIG_TEST(TestName, ...) INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST1, INTERNAL_CATCH_DECLARE_SIG_TEST0)(TestName, __VA_ARGS__)
+#define INTERNAL_CATCH_REMOVE_PARENS_GEN(...) INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_REMOVE_PARENS_11_ARG,INTERNAL_CATCH_REMOVE_PARENS_10_ARG,INTERNAL_CATCH_REMOVE_PARENS_9_ARG,INTERNAL_CATCH_REMOVE_PARENS_8_ARG,INTERNAL_CATCH_REMOVE_PARENS_7_ARG,INTERNAL_CATCH_REMOVE_PARENS_6_ARG,INTERNAL_CATCH_REMOVE_PARENS_5_ARG,INTERNAL_CATCH_REMOVE_PARENS_4_ARG,INTERNAL_CATCH_REMOVE_PARENS_3_ARG,INTERNAL_CATCH_REMOVE_PARENS_2_ARG,INTERNAL_CATCH_REMOVE_PARENS_1_ARG)(__VA_ARGS__)
+#else
+#define INTERNAL_CATCH_NTTP_0(signature)
+#define INTERNAL_CATCH_NTTP_GEN(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_1,INTERNAL_CATCH_NTTP_1, INTERNAL_CATCH_NTTP_0)( __VA_ARGS__))
+#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0)(TestName, __VA_ARGS__))
+#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName, ClassName, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0)(TestName, ClassName, __VA_ARGS__))
+#define INTERNAL_CATCH_NTTP_REG_METHOD_GEN(TestName, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD0, INTERNAL_CATCH_NTTP_REGISTER_METHOD0)(TestName, __VA_ARGS__))
+#define INTERNAL_CATCH_NTTP_REG_GEN(TestFunc, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER0, INTERNAL_CATCH_NTTP_REGISTER0)(TestFunc, __VA_ARGS__))
+#define INTERNAL_CATCH_DEFINE_SIG_TEST(TestName, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST1, INTERNAL_CATCH_DEFINE_SIG_TEST0)(TestName, __VA_ARGS__))
+#define INTERNAL_CATCH_DECLARE_SIG_TEST(TestName, ...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST1, INTERNAL_CATCH_DECLARE_SIG_TEST0)(TestName, __VA_ARGS__))
+#define INTERNAL_CATCH_REMOVE_PARENS_GEN(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_REMOVE_PARENS_11_ARG,INTERNAL_CATCH_REMOVE_PARENS_10_ARG,INTERNAL_CATCH_REMOVE_PARENS_9_ARG,INTERNAL_CATCH_REMOVE_PARENS_8_ARG,INTERNAL_CATCH_REMOVE_PARENS_7_ARG,INTERNAL_CATCH_REMOVE_PARENS_6_ARG,INTERNAL_CATCH_REMOVE_PARENS_5_ARG,INTERNAL_CATCH_REMOVE_PARENS_4_ARG,INTERNAL_CATCH_REMOVE_PARENS_3_ARG,INTERNAL_CATCH_REMOVE_PARENS_2_ARG,INTERNAL_CATCH_REMOVE_PARENS_1_ARG)(__VA_ARGS__))
+#endif
+
+// end catch_preprocessor.hpp
+// start catch_meta.hpp
+
+
+#include <type_traits>
+
+namespace Catch {
+ template<typename T>
+ struct always_false : std::false_type {};
+
+ template <typename> struct true_given : std::true_type {};
+ struct is_callable_tester {
+ template <typename Fun, typename... Args>
+ true_given<decltype(std::declval<Fun>()(std::declval<Args>()...))> static test(int);
+ template <typename...>
+ std::false_type static test(...);
+ };
+
+ template <typename T>
+ struct is_callable;
+
+ template <typename Fun, typename... Args>
+ struct is_callable<Fun(Args...)> : decltype(is_callable_tester::test<Fun, Args...>(0)) {};
+
+#if defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703
+ // std::result_of is deprecated in C++17 and removed in C++20. Hence, it is
+ // replaced with std::invoke_result here.
+ template <typename Func, typename... U>
+ using FunctionReturnType = std::remove_reference_t<std::remove_cv_t<std::invoke_result_t<Func, U...>>>;
+#else
+ // Keep ::type here because we still support C++11
+ template <typename Func, typename... U>
+ using FunctionReturnType = typename std::remove_reference<typename std::remove_cv<typename std::result_of<Func(U...)>::type>::type>::type;
+#endif
+
+} // namespace Catch
+
+namespace mpl_{
+ struct na;
+}
+
+// end catch_meta.hpp
+namespace Catch {
+
+template<typename C>
+class TestInvokerAsMethod : public ITestInvoker {
+ void (C::*m_testAsMethod)();
+public:
+ TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAsMethod( testAsMethod ) {}
+
+ void invoke() const override {
+ C obj;
+ (obj.*m_testAsMethod)();
+ }
+};
+
+auto makeTestInvoker( void(*testAsFunction)() ) noexcept -> ITestInvoker*;
+
+template<typename C>
+auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInvoker* {
+ return new(std::nothrow) TestInvokerAsMethod<C>( testAsMethod );
+}
+
+struct NameAndTags {
+ NameAndTags( StringRef const& name_ = StringRef(), StringRef const& tags_ = StringRef() ) noexcept;
+ StringRef name;
+ StringRef tags;
+};
+
+struct AutoReg : NonCopyable {
+ AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept;
+ ~AutoReg();
+};
+
+} // end namespace Catch
+
+#if defined(CATCH_CONFIG_DISABLE)
+ #define INTERNAL_CATCH_TESTCASE_NO_REGISTRATION( TestName, ... ) \
+ static void TestName()
+ #define INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION( TestName, ClassName, ... ) \
+ namespace{ \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \
+ void test(); \
+ }; \
+ } \
+ void TestName::test()
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( TestName, TestFunc, Name, Tags, Signature, ... ) \
+ INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc, INTERNAL_CATCH_REMOVE_PARENS(Signature))
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \
+ namespace{ \
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName) { \
+ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName, ClassName, INTERNAL_CATCH_REMOVE_PARENS(Signature));\
+ } \
+ } \
+ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))
+
+ #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(Name, Tags, ...) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ )
+ #else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(Name, Tags, ...) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) )
+ #endif
+
+ #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(Name, Tags, Signature, ...) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ )
+ #else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(Name, Tags, Signature, ...) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) )
+ #endif
+
+ #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION( ClassName, Name, Tags,... ) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ )
+ #else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION( ClassName, Name, Tags,... ) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) )
+ #endif
+
+ #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION( ClassName, Name, Tags, Signature, ... ) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ )
+ #else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION( ClassName, Name, Tags, Signature, ... ) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) )
+ #endif
+#endif
+
+ ///////////////////////////////////////////////////////////////////////////////
+ #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \
+ static void TestName(); \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ static void TestName()
+ #define INTERNAL_CATCH_TESTCASE( ... ) \
+ INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), __VA_ARGS__ )
+
+ ///////////////////////////////////////////////////////////////////////////////
+ #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+ ///////////////////////////////////////////////////////////////////////////////
+ #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \
+ void test(); \
+ }; \
+ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
+ } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ void TestName::test()
+ #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \
+ INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), ClassName, __VA_ARGS__ )
+
+ ///////////////////////////////////////////////////////////////////////////////
+ #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+ ///////////////////////////////////////////////////////////////////////////////
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ... )\
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ INTERNAL_CATCH_DECLARE_SIG_TEST(TestFunc, INTERNAL_CATCH_REMOVE_PARENS(Signature));\
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
+ INTERNAL_CATCH_TYPE_GEN\
+ INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))\
+ INTERNAL_CATCH_NTTP_REG_GEN(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature))\
+ template<typename...Types> \
+ struct TestName{\
+ TestName(){\
+ int index = 0; \
+ constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};\
+ using expander = int[];\
+ (void)expander{(reg_test(Types{}, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */ \
+ }\
+ };\
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
+ TestName<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(__VA_ARGS__)>();\
+ return 0;\
+ }();\
+ }\
+ }\
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature))
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename TestType, __VA_ARGS__ ) )
+#endif
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) )
+#endif
+
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ template<typename TestType> static void TestFuncName(); \
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName) { \
+ INTERNAL_CATCH_TYPE_GEN \
+ INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature)) \
+ template<typename... Types> \
+ struct TestName { \
+ void reg_tests() { \
+ int index = 0; \
+ using expander = int[]; \
+ constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes))};\
+ constexpr char const* types_list[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TypesList))};\
+ constexpr auto num_types = sizeof(types_list) / sizeof(types_list[0]);\
+ (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFuncName<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++)... };/* NOLINT */\
+ } \
+ }; \
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){ \
+ using TestInit = typename create<TestName, decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>()), TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>>::type; \
+ TestInit t; \
+ t.reg_tests(); \
+ return 0; \
+ }(); \
+ } \
+ } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ template<typename TestType> \
+ static void TestFuncName()
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\
+ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename T,__VA_ARGS__)
+#else
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name, Tags, ...)\
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, typename T, __VA_ARGS__ ) )
+#endif
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\
+ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__)
+#else
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name, Tags, Signature, ...)\
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, Signature, __VA_ARGS__ ) )
+#endif
+
+ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)\
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ template<typename TestType> static void TestFunc(); \
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
+ INTERNAL_CATCH_TYPE_GEN\
+ template<typename... Types> \
+ struct TestName { \
+ void reg_tests() { \
+ int index = 0; \
+ using expander = int[]; \
+ (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFunc<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */\
+ } \
+ };\
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){ \
+ using TestInit = typename convert<TestName, TmplList>::type; \
+ TestInit t; \
+ t.reg_tests(); \
+ return 0; \
+ }(); \
+ }}\
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ template<typename TestType> \
+ static void TestFunc()
+
+ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(Name, Tags, TmplList) \
+ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), Name, Tags, TmplList )
+
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){ \
+ INTERNAL_CATCH_TYPE_GEN\
+ INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))\
+ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName, ClassName, INTERNAL_CATCH_REMOVE_PARENS(Signature));\
+ INTERNAL_CATCH_NTTP_REG_METHOD_GEN(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))\
+ template<typename...Types> \
+ struct TestNameClass{\
+ TestNameClass(){\
+ int index = 0; \
+ constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};\
+ using expander = int[];\
+ (void)expander{(reg_test(Types{}, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */ \
+ }\
+ };\
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
+ TestNameClass<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(__VA_ARGS__)>();\
+ return 0;\
+ }();\
+ }\
+ }\
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ ) )
+#endif
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \
+ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... ) \
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_C_L_A_S_S_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ ) )
+#endif
+
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)\
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ template<typename TestType> \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) { \
+ void test();\
+ };\
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestNameClass) {\
+ INTERNAL_CATCH_TYPE_GEN \
+ INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))\
+ template<typename...Types>\
+ struct TestNameClass{\
+ void reg_tests(){\
+ int index = 0;\
+ using expander = int[];\
+ constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes))};\
+ constexpr char const* types_list[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TypesList))};\
+ constexpr auto num_types = sizeof(types_list) / sizeof(types_list[0]);\
+ (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++)... };/* NOLINT */ \
+ }\
+ };\
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
+ using TestInit = typename create<TestNameClass, decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>()), TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>>::type;\
+ TestInit t;\
+ t.reg_tests();\
+ return 0;\
+ }(); \
+ }\
+ }\
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ template<typename TestType> \
+ void TestName<TestType>::test()
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\
+ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, typename T, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( ClassName, Name, Tags, ... )\
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, typename T,__VA_ARGS__ ) )
+#endif
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\
+ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, Signature, __VA_ARGS__ )
+#else
+ #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( ClassName, Name, Tags, Signature, ... )\
+ INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, Signature,__VA_ARGS__ ) )
+#endif
+
+ #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, TmplList) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+ template<typename TestType> \
+ struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) { \
+ void test();\
+ };\
+ namespace {\
+ namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){ \
+ INTERNAL_CATCH_TYPE_GEN\
+ template<typename...Types>\
+ struct TestNameClass{\
+ void reg_tests(){\
+ int index = 0;\
+ using expander = int[];\
+ (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */ \
+ }\
+ };\
+ static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
+ using TestInit = typename convert<TestNameClass, TmplList>::type;\
+ TestInit t;\
+ t.reg_tests();\
+ return 0;\
+ }(); \
+ }}\
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ template<typename TestType> \
+ void TestName<TestType>::test()
+
+#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD(ClassName, Name, Tags, TmplList) \
+ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_ ), INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_M_P_L_A_T_E_T_E_S_T_F_U_N_C_ ), ClassName, Name, Tags, TmplList )
+
+// end catch_test_registry.h
+// start catch_capture.hpp
+
+// start catch_assertionhandler.h
+
+// start catch_assertioninfo.h
+
+// start catch_result_type.h
+
+namespace Catch {
+
+ // ResultWas::OfType enum
+ struct ResultWas { enum OfType {
+ Unknown = -1,
+ Ok = 0,
+ Info = 1,
+ Warning = 2,
+
+ FailureBit = 0x10,
+
+ ExpressionFailed = FailureBit | 1,
+ ExplicitFailure = FailureBit | 2,
+
+ Exception = 0x100 | FailureBit,
+
+ ThrewException = Exception | 1,
+ DidntThrowException = Exception | 2,
+
+ FatalErrorCondition = 0x200 | FailureBit
+
+ }; };
+
+ bool isOk( ResultWas::OfType resultType );
+ bool isJustInfo( int flags );
+
+ // ResultDisposition::Flags enum
+ struct ResultDisposition { enum Flags {
+ Normal = 0x01,
+
+ ContinueOnFailure = 0x02, // Failures fail test, but execution continues
+ FalseTest = 0x04, // Prefix expression with !
+ SuppressFail = 0x08 // Failures are reported but do not fail the test
+ }; };
+
+ ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs );
+
+ bool shouldContinueOnFailure( int flags );
+ inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; }
+ bool shouldSuppressFailure( int flags );
+
+} // end namespace Catch
+
+// end catch_result_type.h
+namespace Catch {
+
+ struct AssertionInfo
+ {
+ StringRef macroName;
+ SourceLineInfo lineInfo;
+ StringRef capturedExpression;
+ ResultDisposition::Flags resultDisposition;
+
+ // We want to delete this constructor but a compiler bug in 4.8 means
+ // the struct is then treated as non-aggregate
+ //AssertionInfo() = delete;
+ };
+
+} // end namespace Catch
+
+// end catch_assertioninfo.h
+// start catch_decomposer.h
+
+// start catch_tostring.h
+
+#include <vector>
+#include <cstddef>
+#include <type_traits>
+#include <string>
+// start catch_stream.h
+
+#include <iosfwd>
+#include <cstddef>
+#include <ostream>
+
+namespace Catch {
+
+ std::ostream& cout();
+ std::ostream& cerr();
+ std::ostream& clog();
+
+ class StringRef;
+
+ struct IStream {
+ virtual ~IStream();
+ virtual std::ostream& stream() const = 0;
+ };
+
+ auto makeStream( StringRef const &filename ) -> IStream const*;
+
+ class ReusableStringStream : NonCopyable {
+ std::size_t m_index;
+ std::ostream* m_oss;
+ public:
+ ReusableStringStream();
+ ~ReusableStringStream();
+
+ auto str() const -> std::string;
+
+ template<typename T>
+ auto operator << ( T const& value ) -> ReusableStringStream& {
+ *m_oss << value;
+ return *this;
+ }
+ auto get() -> std::ostream& { return *m_oss; }
+ };
+}
+
+// end catch_stream.h
+// start catch_interfaces_enum_values_registry.h
+
+#include <vector>
+
+namespace Catch {
+
+ namespace Detail {
+ struct EnumInfo {
+ StringRef m_name;
+ std::vector<std::pair<int, StringRef>> m_values;
+
+ ~EnumInfo();
+
+ StringRef lookup( int value ) const;
+ };
+ } // namespace Detail
+
+ struct IMutableEnumValuesRegistry {
+ virtual ~IMutableEnumValuesRegistry();
+
+ virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector<int> const& values ) = 0;
+
+ template<typename E>
+ Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list<E> values ) {
+ static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int");
+ std::vector<int> intValues;
+ intValues.reserve( values.size() );
+ for( auto enumValue : values )
+ intValues.push_back( static_cast<int>( enumValue ) );
+ return registerEnum( enumName, allEnums, intValues );
+ }
+ };
+
+} // Catch
+
+// end catch_interfaces_enum_values_registry.h
+
+#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
+#include <string_view>
+#endif
+
+#ifdef __OBJC__
+// start catch_objc_arc.hpp
+
+#import <Foundation/Foundation.h>
+
+#ifdef __has_feature
+#define CATCH_ARC_ENABLED __has_feature(objc_arc)
+#else
+#define CATCH_ARC_ENABLED 0
+#endif
+
+void arcSafeRelease( NSObject* obj );
+id performOptionalSelector( id obj, SEL sel );
+
+#if !CATCH_ARC_ENABLED
+inline void arcSafeRelease( NSObject* obj ) {
+ [obj release];
+}
+inline id performOptionalSelector( id obj, SEL sel ) {
+ if( [obj respondsToSelector: sel] )
+ return [obj performSelector: sel];
+ return nil;
+}
+#define CATCH_UNSAFE_UNRETAINED
+#define CATCH_ARC_STRONG
+#else
+inline void arcSafeRelease( NSObject* ){}
+inline id performOptionalSelector( id obj, SEL sel ) {
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+#endif
+ if( [obj respondsToSelector: sel] )
+ return [obj performSelector: sel];
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+ return nil;
+}
+#define CATCH_UNSAFE_UNRETAINED __unsafe_unretained
+#define CATCH_ARC_STRONG __strong
+#endif
+
+// end catch_objc_arc.hpp
+#endif
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4180) // We attempt to stream a function (address) by const&, which MSVC complains about but is harmless
+#endif
+
+namespace Catch {
+ namespace Detail {
+
+ extern const std::string unprintableString;
+
+ std::string rawMemoryToString( const void *object, std::size_t size );
+
+ template<typename T>
+ std::string rawMemoryToString( const T& object ) {
+ return rawMemoryToString( &object, sizeof(object) );
+ }
+
+ template<typename T>
+ class IsStreamInsertable {
+ template<typename Stream, typename U>
+ static auto test(int)
+ -> decltype(std::declval<Stream&>() << std::declval<U>(), std::true_type());
+
+ template<typename, typename>
+ static auto test(...)->std::false_type;
+
+ public:
+ static const bool value = decltype(test<std::ostream, const T&>(0))::value;
+ };
+
+ template<typename E>
+ std::string convertUnknownEnumToString( E e );
+
+ template<typename T>
+ typename std::enable_if<
+ !std::is_enum<T>::value && !std::is_base_of<std::exception, T>::value,
+ std::string>::type convertUnstreamable( T const& ) {
+ return Detail::unprintableString;
+ }
+ template<typename T>
+ typename std::enable_if<
+ !std::is_enum<T>::value && std::is_base_of<std::exception, T>::value,
+ std::string>::type convertUnstreamable(T const& ex) {
+ return ex.what();
+ }
+
+ template<typename T>
+ typename std::enable_if<
+ std::is_enum<T>::value
+ , std::string>::type convertUnstreamable( T const& value ) {
+ return convertUnknownEnumToString( value );
+ }
+
+#if defined(_MANAGED)
+ //! Convert a CLR string to a utf8 std::string
+ template<typename T>
+ std::string clrReferenceToString( T^ ref ) {
+ if (ref == nullptr)
+ return std::string("null");
+ auto bytes = System::Text::Encoding::UTF8->GetBytes(ref->ToString());
+ cli::pin_ptr<System::Byte> p = &bytes[0];
+ return std::string(reinterpret_cast<char const *>(p), bytes->Length);
+ }
+#endif
+
+ } // namespace Detail
+
+ // If we decide for C++14, change these to enable_if_ts
+ template <typename T, typename = void>
+ struct StringMaker {
+ template <typename Fake = T>
+ static
+ typename std::enable_if<::Catch::Detail::IsStreamInsertable<Fake>::value, std::string>::type
+ convert(const Fake& value) {
+ ReusableStringStream rss;
+ // NB: call using the function-like syntax to avoid ambiguity with
+ // user-defined templated operator<< under clang.
+ rss.operator<<(value);
+ return rss.str();
+ }
+
+ template <typename Fake = T>
+ static
+ typename std::enable_if<!::Catch::Detail::IsStreamInsertable<Fake>::value, std::string>::type
+ convert( const Fake& value ) {
+#if !defined(CATCH_CONFIG_FALLBACK_STRINGIFIER)
+ return Detail::convertUnstreamable(value);
+#else
+ return CATCH_CONFIG_FALLBACK_STRINGIFIER(value);
+#endif
+ }
+ };
+
+ namespace Detail {
+
+ // This function dispatches all stringification requests inside of Catch.
+ // Should be preferably called fully qualified, like ::Catch::Detail::stringify
+ template <typename T>
+ std::string stringify(const T& e) {
+ return ::Catch::StringMaker<typename std::remove_cv<typename std::remove_reference<T>::type>::type>::convert(e);
+ }
+
+ template<typename E>
+ std::string convertUnknownEnumToString( E e ) {
+ return ::Catch::Detail::stringify(static_cast<typename std::underlying_type<E>::type>(e));
+ }
+
+#if defined(_MANAGED)
+ template <typename T>
+ std::string stringify( T^ e ) {
+ return ::Catch::StringMaker<T^>::convert(e);
+ }
+#endif
+
+ } // namespace Detail
+
+ // Some predefined specializations
+
+ template<>
+ struct StringMaker<std::string> {
+ static std::string convert(const std::string& str);
+ };
+
+#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
+ template<>
+ struct StringMaker<std::string_view> {
+ static std::string convert(std::string_view str);
+ };
+#endif
+
+ template<>
+ struct StringMaker<char const *> {
+ static std::string convert(char const * str);
+ };
+ template<>
+ struct StringMaker<char *> {
+ static std::string convert(char * str);
+ };
+
+#ifdef CATCH_CONFIG_WCHAR
+ template<>
+ struct StringMaker<std::wstring> {
+ static std::string convert(const std::wstring& wstr);
+ };
+
+# ifdef CATCH_CONFIG_CPP17_STRING_VIEW
+ template<>
+ struct StringMaker<std::wstring_view> {
+ static std::string convert(std::wstring_view str);
+ };
+# endif
+
+ template<>
+ struct StringMaker<wchar_t const *> {
+ static std::string convert(wchar_t const * str);
+ };
+ template<>
+ struct StringMaker<wchar_t *> {
+ static std::string convert(wchar_t * str);
+ };
+#endif
+
+ // TBD: Should we use `strnlen` to ensure that we don't go out of the buffer,
+ // while keeping string semantics?
+ template<int SZ>
+ struct StringMaker<char[SZ]> {
+ static std::string convert(char const* str) {
+ return ::Catch::Detail::stringify(std::string{ str });
+ }
+ };
+ template<int SZ>
+ struct StringMaker<signed char[SZ]> {
+ static std::string convert(signed char const* str) {
+ return ::Catch::Detail::stringify(std::string{ reinterpret_cast<char const *>(str) });
+ }
+ };
+ template<int SZ>
+ struct StringMaker<unsigned char[SZ]> {
+ static std::string convert(unsigned char const* str) {
+ return ::Catch::Detail::stringify(std::string{ reinterpret_cast<char const *>(str) });
+ }
+ };
+
+#if defined(CATCH_CONFIG_CPP17_BYTE)
+ template<>
+ struct StringMaker<std::byte> {
+ static std::string convert(std::byte value);
+ };
+#endif // defined(CATCH_CONFIG_CPP17_BYTE)
+ template<>
+ struct StringMaker<int> {
+ static std::string convert(int value);
+ };
+ template<>
+ struct StringMaker<long> {
+ static std::string convert(long value);
+ };
+ template<>
+ struct StringMaker<long long> {
+ static std::string convert(long long value);
+ };
+ template<>
+ struct StringMaker<unsigned int> {
+ static std::string convert(unsigned int value);
+ };
+ template<>
+ struct StringMaker<unsigned long> {
+ static std::string convert(unsigned long value);
+ };
+ template<>
+ struct StringMaker<unsigned long long> {
+ static std::string convert(unsigned long long value);
+ };
+
+ template<>
+ struct StringMaker<bool> {
+ static std::string convert(bool b);
+ };
+
+ template<>
+ struct StringMaker<char> {
+ static std::string convert(char c);
+ };
+ template<>
+ struct StringMaker<signed char> {
+ static std::string convert(signed char c);
+ };
+ template<>
+ struct StringMaker<unsigned char> {
+ static std::string convert(unsigned char c);
+ };
+
+ template<>
+ struct StringMaker<std::nullptr_t> {
+ static std::string convert(std::nullptr_t);
+ };
+
+ template<>
+ struct StringMaker<float> {
+ static std::string convert(float value);
+ static int precision;
+ };
+
+ template<>
+ struct StringMaker<double> {
+ static std::string convert(double value);
+ static int precision;
+ };
+
+ template <typename T>
+ struct StringMaker<T*> {
+ template <typename U>
+ static std::string convert(U* p) {
+ if (p) {
+ return ::Catch::Detail::rawMemoryToString(p);
+ } else {
+ return "nullptr";
+ }
+ }
+ };
+
+ template <typename R, typename C>
+ struct StringMaker<R C::*> {
+ static std::string convert(R C::* p) {
+ if (p) {
+ return ::Catch::Detail::rawMemoryToString(p);
+ } else {
+ return "nullptr";
+ }
+ }
+ };
+
+#if defined(_MANAGED)
+ template <typename T>
+ struct StringMaker<T^> {
+ static std::string convert( T^ ref ) {
+ return ::Catch::Detail::clrReferenceToString(ref);
+ }
+ };
+#endif
+
+ namespace Detail {
+ template<typename InputIterator, typename Sentinel = InputIterator>
+ std::string rangeToString(InputIterator first, Sentinel last) {
+ ReusableStringStream rss;
+ rss << "{ ";
+ if (first != last) {
+ rss << ::Catch::Detail::stringify(*first);
+ for (++first; first != last; ++first)
+ rss << ", " << ::Catch::Detail::stringify(*first);
+ }
+ rss << " }";
+ return rss.str();
+ }
+ }
+
+#ifdef __OBJC__
+ template<>
+ struct StringMaker<NSString*> {
+ static std::string convert(NSString * nsstring) {
+ if (!nsstring)
+ return "nil";
+ return std::string("@") + [nsstring UTF8String];
+ }
+ };
+ template<>
+ struct StringMaker<NSObject*> {
+ static std::string convert(NSObject* nsObject) {
+ return ::Catch::Detail::stringify([nsObject description]);
+ }
+
+ };
+ namespace Detail {
+ inline std::string stringify( NSString* nsstring ) {
+ return StringMaker<NSString*>::convert( nsstring );
+ }
+
+ } // namespace Detail
+#endif // __OBJC__
+
+} // namespace Catch
+
+//////////////////////////////////////////////////////
+// Separate std-lib types stringification, so it can be selectively enabled
+// This means that we do not bring in
+
+#if defined(CATCH_CONFIG_ENABLE_ALL_STRINGMAKERS)
+# define CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER
+# define CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
+# define CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER
+# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
+# define CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER
+#endif
+
+// Separate std::pair specialization
+#if defined(CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER)
+#include <utility>
+namespace Catch {
+ template<typename T1, typename T2>
+ struct StringMaker<std::pair<T1, T2> > {
+ static std::string convert(const std::pair<T1, T2>& pair) {
+ ReusableStringStream rss;
+ rss << "{ "
+ << ::Catch::Detail::stringify(pair.first)
+ << ", "
+ << ::Catch::Detail::stringify(pair.second)
+ << " }";
+ return rss.str();
+ }
+ };
+}
+#endif // CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER
+
+#if defined(CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_OPTIONAL)
+#include <optional>
+namespace Catch {
+ template<typename T>
+ struct StringMaker<std::optional<T> > {
+ static std::string convert(const std::optional<T>& optional) {
+ ReusableStringStream rss;
+ if (optional.has_value()) {
+ rss << ::Catch::Detail::stringify(*optional);
+ } else {
+ rss << "{ }";
+ }
+ return rss.str();
+ }
+ };
+}
+#endif // CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER
+
+// Separate std::tuple specialization
+#if defined(CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER)
+#include <tuple>
+namespace Catch {
+ namespace Detail {
+ template<
+ typename Tuple,
+ std::size_t N = 0,
+ bool = (N < std::tuple_size<Tuple>::value)
+ >
+ struct TupleElementPrinter {
+ static void print(const Tuple& tuple, std::ostream& os) {
+ os << (N ? ", " : " ")
+ << ::Catch::Detail::stringify(std::get<N>(tuple));
+ TupleElementPrinter<Tuple, N + 1>::print(tuple, os);
+ }
+ };
+
+ template<
+ typename Tuple,
+ std::size_t N
+ >
+ struct TupleElementPrinter<Tuple, N, false> {
+ static void print(const Tuple&, std::ostream&) {}
+ };
+
+ }
+
+ template<typename ...Types>
+ struct StringMaker<std::tuple<Types...>> {
+ static std::string convert(const std::tuple<Types...>& tuple) {
+ ReusableStringStream rss;
+ rss << '{';
+ Detail::TupleElementPrinter<std::tuple<Types...>>::print(tuple, rss.get());
+ rss << " }";
+ return rss.str();
+ }
+ };
+}
+#endif // CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
+
+#if defined(CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_VARIANT)
+#include <variant>
+namespace Catch {
+ template<>
+ struct StringMaker<std::monostate> {
+ static std::string convert(const std::monostate&) {
+ return "{ }";
+ }
+ };
+
+ template<typename... Elements>
+ struct StringMaker<std::variant<Elements...>> {
+ static std::string convert(const std::variant<Elements...>& variant) {
+ if (variant.valueless_by_exception()) {
+ return "{valueless variant}";
+ } else {
+ return std::visit(
+ [](const auto& value) {
+ return ::Catch::Detail::stringify(value);
+ },
+ variant
+ );
+ }
+ }
+ };
+}
+#endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER
+
+namespace Catch {
+ // Import begin/ end from std here
+ using std::begin;
+ using std::end;
+
+ namespace detail {
+ template <typename...>
+ struct void_type {
+ using type = void;
+ };
+
+ template <typename T, typename = void>
+ struct is_range_impl : std::false_type {
+ };
+
+ template <typename T>
+ struct is_range_impl<T, typename void_type<decltype(begin(std::declval<T>()))>::type> : std::true_type {
+ };
+ } // namespace detail
+
+ template <typename T>
+ struct is_range : detail::is_range_impl<T> {
+ };
+
+#if defined(_MANAGED) // Managed types are never ranges
+ template <typename T>
+ struct is_range<T^> {
+ static const bool value = false;
+ };
+#endif
+
+ template<typename Range>
+ std::string rangeToString( Range const& range ) {
+ return ::Catch::Detail::rangeToString( begin( range ), end( range ) );
+ }
+
+ // Handle vector<bool> specially
+ template<typename Allocator>
+ std::string rangeToString( std::vector<bool, Allocator> const& v ) {
+ ReusableStringStream rss;
+ rss << "{ ";
+ bool first = true;
+ for( bool b : v ) {
+ if( first )
+ first = false;
+ else
+ rss << ", ";
+ rss << ::Catch::Detail::stringify( b );
+ }
+ rss << " }";
+ return rss.str();
+ }
+
+ template<typename R>
+ struct StringMaker<R, typename std::enable_if<is_range<R>::value && !::Catch::Detail::IsStreamInsertable<R>::value>::type> {
+ static std::string convert( R const& range ) {
+ return rangeToString( range );
+ }
+ };
+
+ template <typename T, int SZ>
+ struct StringMaker<T[SZ]> {
+ static std::string convert(T const(&arr)[SZ]) {
+ return rangeToString(arr);
+ }
+ };
+
+} // namespace Catch
+
+// Separate std::chrono::duration specialization
+#if defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER)
+#include <ctime>
+#include <ratio>
+#include <chrono>
+
+namespace Catch {
+
+template <class Ratio>
+struct ratio_string {
+ static std::string symbol();
+};
+
+template <class Ratio>
+std::string ratio_string<Ratio>::symbol() {
+ Catch::ReusableStringStream rss;
+ rss << '[' << Ratio::num << '/'
+ << Ratio::den << ']';
+ return rss.str();
+}
+template <>
+struct ratio_string<std::atto> {
+ static std::string symbol();
+};
+template <>
+struct ratio_string<std::femto> {
+ static std::string symbol();
+};
+template <>
+struct ratio_string<std::pico> {
+ static std::string symbol();
+};
+template <>
+struct ratio_string<std::nano> {
+ static std::string symbol();
+};
+template <>
+struct ratio_string<std::micro> {
+ static std::string symbol();
+};
+template <>
+struct ratio_string<std::milli> {
+ static std::string symbol();
+};
+
+ ////////////
+ // std::chrono::duration specializations
+ template<typename Value, typename Ratio>
+ struct StringMaker<std::chrono::duration<Value, Ratio>> {
+ static std::string convert(std::chrono::duration<Value, Ratio> const& duration) {
+ ReusableStringStream rss;
+ rss << duration.count() << ' ' << ratio_string<Ratio>::symbol() << 's';
+ return rss.str();
+ }
+ };
+ template<typename Value>
+ struct StringMaker<std::chrono::duration<Value, std::ratio<1>>> {
+ static std::string convert(std::chrono::duration<Value, std::ratio<1>> const& duration) {
+ ReusableStringStream rss;
+ rss << duration.count() << " s";
+ return rss.str();
+ }
+ };
+ template<typename Value>
+ struct StringMaker<std::chrono::duration<Value, std::ratio<60>>> {
+ static std::string convert(std::chrono::duration<Value, std::ratio<60>> const& duration) {
+ ReusableStringStream rss;
+ rss << duration.count() << " m";
+ return rss.str();
+ }
+ };
+ template<typename Value>
+ struct StringMaker<std::chrono::duration<Value, std::ratio<3600>>> {
+ static std::string convert(std::chrono::duration<Value, std::ratio<3600>> const& duration) {
+ ReusableStringStream rss;
+ rss << duration.count() << " h";
+ return rss.str();
+ }
+ };
+
+ ////////////
+ // std::chrono::time_point specialization
+ // Generic time_point cannot be specialized, only std::chrono::time_point<system_clock>
+ template<typename Clock, typename Duration>
+ struct StringMaker<std::chrono::time_point<Clock, Duration>> {
+ static std::string convert(std::chrono::time_point<Clock, Duration> const& time_point) {
+ return ::Catch::Detail::stringify(time_point.time_since_epoch()) + " since epoch";
+ }
+ };
+ // std::chrono::time_point<system_clock> specialization
+ template<typename Duration>
+ struct StringMaker<std::chrono::time_point<std::chrono::system_clock, Duration>> {
+ static std::string convert(std::chrono::time_point<std::chrono::system_clock, Duration> const& time_point) {
+ auto converted = std::chrono::system_clock::to_time_t(time_point);
+
+#ifdef _MSC_VER
+ std::tm timeInfo = {};
+ gmtime_s(&timeInfo, &converted);
+#else
+ std::tm* timeInfo = std::gmtime(&converted);
+#endif
+
+ auto const timeStampSize = sizeof("2017-01-16T17:06:45Z");
+ char timeStamp[timeStampSize];
+ const char * const fmt = "%Y-%m-%dT%H:%M:%SZ";
+
+#ifdef _MSC_VER
+ std::strftime(timeStamp, timeStampSize, fmt, &timeInfo);
+#else
+ std::strftime(timeStamp, timeStampSize, fmt, timeInfo);
+#endif
+ return std::string(timeStamp);
+ }
+ };
+}
+#endif // CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
+
+#define INTERNAL_CATCH_REGISTER_ENUM( enumName, ... ) \
+namespace Catch { \
+ template<> struct StringMaker<enumName> { \
+ static std::string convert( enumName value ) { \
+ static const auto& enumInfo = ::Catch::getMutableRegistryHub().getMutableEnumValuesRegistry().registerEnum( #enumName, #__VA_ARGS__, { __VA_ARGS__ } ); \
+ return static_cast<std::string>(enumInfo.lookup( static_cast<int>( value ) )); \
+ } \
+ }; \
+}
+
+#define CATCH_REGISTER_ENUM( enumName, ... ) INTERNAL_CATCH_REGISTER_ENUM( enumName, __VA_ARGS__ )
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
+// end catch_tostring.h
+#include <iosfwd>
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4389) // '==' : signed/unsigned mismatch
+#pragma warning(disable:4018) // more "signed/unsigned mismatch"
+#pragma warning(disable:4312) // Converting int to T* using reinterpret_cast (issue on x64 platform)
+#pragma warning(disable:4180) // qualifier applied to function type has no meaning
+#pragma warning(disable:4800) // Forcing result to true or false
+#endif
+
+namespace Catch {
+
+ struct ITransientExpression {
+ auto isBinaryExpression() const -> bool { return m_isBinaryExpression; }
+ auto getResult() const -> bool { return m_result; }
+ virtual void streamReconstructedExpression( std::ostream &os ) const = 0;
+
+ ITransientExpression( bool isBinaryExpression, bool result )
+ : m_isBinaryExpression( isBinaryExpression ),
+ m_result( result )
+ {}
+
+ // We don't actually need a virtual destructor, but many static analysers
+ // complain if it's not here :-(
+ virtual ~ITransientExpression();
+
+ bool m_isBinaryExpression;
+ bool m_result;
+
+ };
+
+ void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs );
+
+ template<typename LhsT, typename RhsT>
+ class BinaryExpr : public ITransientExpression {
+ LhsT m_lhs;
+ StringRef m_op;
+ RhsT m_rhs;
+
+ void streamReconstructedExpression( std::ostream &os ) const override {
+ formatReconstructedExpression
+ ( os, Catch::Detail::stringify( m_lhs ), m_op, Catch::Detail::stringify( m_rhs ) );
+ }
+
+ public:
+ BinaryExpr( bool comparisonResult, LhsT lhs, StringRef op, RhsT rhs )
+ : ITransientExpression{ true, comparisonResult },
+ m_lhs( lhs ),
+ m_op( op ),
+ m_rhs( rhs )
+ {}
+
+ template<typename T>
+ auto operator && ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator || ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator == ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator != ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator > ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator < ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator >= ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename T>
+ auto operator <= ( T ) const -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<T>::value,
+ "chained comparisons are not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+ };
+
+ template<typename LhsT>
+ class UnaryExpr : public ITransientExpression {
+ LhsT m_lhs;
+
+ void streamReconstructedExpression( std::ostream &os ) const override {
+ os << Catch::Detail::stringify( m_lhs );
+ }
+
+ public:
+ explicit UnaryExpr( LhsT lhs )
+ : ITransientExpression{ false, static_cast<bool>(lhs) },
+ m_lhs( lhs )
+ {}
+ };
+
+ // Specialised comparison functions to handle equality comparisons between ints and pointers (NULL deduces as an int)
+ template<typename LhsT, typename RhsT>
+ auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return static_cast<bool>(lhs == rhs); }
+ template<typename T>
+ auto compareEqual( T* const& lhs, int rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); }
+ template<typename T>
+ auto compareEqual( T* const& lhs, long rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); }
+ template<typename T>
+ auto compareEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; }
+ template<typename T>
+ auto compareEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; }
+
+ template<typename LhsT, typename RhsT>
+ auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return static_cast<bool>(lhs != rhs); }
+ template<typename T>
+ auto compareNotEqual( T* const& lhs, int rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); }
+ template<typename T>
+ auto compareNotEqual( T* const& lhs, long rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); }
+ template<typename T>
+ auto compareNotEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; }
+ template<typename T>
+ auto compareNotEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; }
+
+ template<typename LhsT>
+ class ExprLhs {
+ LhsT m_lhs;
+ public:
+ explicit ExprLhs( LhsT lhs ) : m_lhs( lhs ) {}
+
+ template<typename RhsT>
+ auto operator == ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { compareEqual( m_lhs, rhs ), m_lhs, "==", rhs };
+ }
+ auto operator == ( bool rhs ) -> BinaryExpr<LhsT, bool> const {
+ return { m_lhs == rhs, m_lhs, "==", rhs };
+ }
+
+ template<typename RhsT>
+ auto operator != ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { compareNotEqual( m_lhs, rhs ), m_lhs, "!=", rhs };
+ }
+ auto operator != ( bool rhs ) -> BinaryExpr<LhsT, bool> const {
+ return { m_lhs != rhs, m_lhs, "!=", rhs };
+ }
+
+ template<typename RhsT>
+ auto operator > ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs > rhs), m_lhs, ">", rhs };
+ }
+ template<typename RhsT>
+ auto operator < ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs < rhs), m_lhs, "<", rhs };
+ }
+ template<typename RhsT>
+ auto operator >= ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs >= rhs), m_lhs, ">=", rhs };
+ }
+ template<typename RhsT>
+ auto operator <= ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs <= rhs), m_lhs, "<=", rhs };
+ }
+ template <typename RhsT>
+ auto operator | (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs | rhs), m_lhs, "|", rhs };
+ }
+ template <typename RhsT>
+ auto operator & (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs & rhs), m_lhs, "&", rhs };
+ }
+ template <typename RhsT>
+ auto operator ^ (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+ return { static_cast<bool>(m_lhs ^ rhs), m_lhs, "^", rhs };
+ }
+
+ template<typename RhsT>
+ auto operator && ( RhsT const& ) -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<RhsT>::value,
+ "operator&& is not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ template<typename RhsT>
+ auto operator || ( RhsT const& ) -> BinaryExpr<LhsT, RhsT const&> const {
+ static_assert(always_false<RhsT>::value,
+ "operator|| is not supported inside assertions, "
+ "wrap the expression inside parentheses, or decompose it");
+ }
+
+ auto makeUnaryExpr() const -> UnaryExpr<LhsT> {
+ return UnaryExpr<LhsT>{ m_lhs };
+ }
+ };
+
+ void handleExpression( ITransientExpression const& expr );
+
+ template<typename T>
+ void handleExpression( ExprLhs<T> const& expr ) {
+ handleExpression( expr.makeUnaryExpr() );
+ }
+
+ struct Decomposer {
+ template<typename T>
+ auto operator <= ( T const& lhs ) -> ExprLhs<T const&> {
+ return ExprLhs<T const&>{ lhs };
+ }
+
+ auto operator <=( bool value ) -> ExprLhs<bool> {
+ return ExprLhs<bool>{ value };
+ }
+ };
+
+} // end namespace Catch
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
+// end catch_decomposer.h
+// start catch_interfaces_capture.h
+
+#include <string>
+#include <chrono>
+
+namespace Catch {
+
+ class AssertionResult;
+ struct AssertionInfo;
+ struct SectionInfo;
+ struct SectionEndInfo;
+ struct MessageInfo;
+ struct MessageBuilder;
+ struct Counts;
+ struct AssertionReaction;
+ struct SourceLineInfo;
+
+ struct ITransientExpression;
+ struct IGeneratorTracker;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ struct BenchmarkInfo;
+ template <typename Duration = std::chrono::duration<double, std::nano>>
+ struct BenchmarkStats;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ struct IResultCapture {
+
+ virtual ~IResultCapture();
+
+ virtual bool sectionStarted( SectionInfo const& sectionInfo,
+ Counts& assertions ) = 0;
+ virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0;
+ virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0;
+
+ virtual auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& = 0;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ virtual void benchmarkPreparing( std::string const& name ) = 0;
+ virtual void benchmarkStarting( BenchmarkInfo const& info ) = 0;
+ virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0;
+ virtual void benchmarkFailed( std::string const& error ) = 0;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ virtual void pushScopedMessage( MessageInfo const& message ) = 0;
+ virtual void popScopedMessage( MessageInfo const& message ) = 0;
+
+ virtual void emplaceUnscopedMessage( MessageBuilder const& builder ) = 0;
+
+ virtual void handleFatalErrorCondition( StringRef message ) = 0;
+
+ virtual void handleExpr
+ ( AssertionInfo const& info,
+ ITransientExpression const& expr,
+ AssertionReaction& reaction ) = 0;
+ virtual void handleMessage
+ ( AssertionInfo const& info,
+ ResultWas::OfType resultType,
+ StringRef const& message,
+ AssertionReaction& reaction ) = 0;
+ virtual void handleUnexpectedExceptionNotThrown
+ ( AssertionInfo const& info,
+ AssertionReaction& reaction ) = 0;
+ virtual void handleUnexpectedInflightException
+ ( AssertionInfo const& info,
+ std::string const& message,
+ AssertionReaction& reaction ) = 0;
+ virtual void handleIncomplete
+ ( AssertionInfo const& info ) = 0;
+ virtual void handleNonExpr
+ ( AssertionInfo const &info,
+ ResultWas::OfType resultType,
+ AssertionReaction &reaction ) = 0;
+
+ virtual bool lastAssertionPassed() = 0;
+ virtual void assertionPassed() = 0;
+
+ // Deprecated, do not use:
+ virtual std::string getCurrentTestName() const = 0;
+ virtual const AssertionResult* getLastResult() const = 0;
+ virtual void exceptionEarlyReported() = 0;
+ };
+
+ IResultCapture& getResultCapture();
+}
+
+// end catch_interfaces_capture.h
+namespace Catch {
+
+ struct TestFailureException{};
+ struct AssertionResultData;
+ struct IResultCapture;
+ class RunContext;
+
+ class LazyExpression {
+ friend class AssertionHandler;
+ friend struct AssertionStats;
+ friend class RunContext;
+
+ ITransientExpression const* m_transientExpression = nullptr;
+ bool m_isNegated;
+ public:
+ LazyExpression( bool isNegated );
+ LazyExpression( LazyExpression const& other );
+ LazyExpression& operator = ( LazyExpression const& ) = delete;
+
+ explicit operator bool() const;
+
+ friend auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream&;
+ };
+
+ struct AssertionReaction {
+ bool shouldDebugBreak = false;
+ bool shouldThrow = false;
+ };
+
+ class AssertionHandler {
+ AssertionInfo m_assertionInfo;
+ AssertionReaction m_reaction;
+ bool m_completed = false;
+ IResultCapture& m_resultCapture;
+
+ public:
+ AssertionHandler
+ ( StringRef const& macroName,
+ SourceLineInfo const& lineInfo,
+ StringRef capturedExpression,
+ ResultDisposition::Flags resultDisposition );
+ ~AssertionHandler() {
+ if ( !m_completed ) {
+ m_resultCapture.handleIncomplete( m_assertionInfo );
+ }
+ }
+
+ template<typename T>
+ void handleExpr( ExprLhs<T> const& expr ) {
+ handleExpr( expr.makeUnaryExpr() );
+ }
+ void handleExpr( ITransientExpression const& expr );
+
+ void handleMessage(ResultWas::OfType resultType, StringRef const& message);
+
+ void handleExceptionThrownAsExpected();
+ void handleUnexpectedExceptionNotThrown();
+ void handleExceptionNotThrownAsExpected();
+ void handleThrowingCallSkipped();
+ void handleUnexpectedInflightException();
+
+ void complete();
+ void setCompleted();
+
+ // query
+ auto allowThrows() const -> bool;
+ };
+
+ void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef const& matcherString );
+
+} // namespace Catch
+
+// end catch_assertionhandler.h
+// start catch_message.h
+
+#include <string>
+#include <vector>
+
+namespace Catch {
+
+ struct MessageInfo {
+ MessageInfo( StringRef const& _macroName,
+ SourceLineInfo const& _lineInfo,
+ ResultWas::OfType _type );
+
+ StringRef macroName;
+ std::string message;
+ SourceLineInfo lineInfo;
+ ResultWas::OfType type;
+ unsigned int sequence;
+
+ bool operator == ( MessageInfo const& other ) const;
+ bool operator < ( MessageInfo const& other ) const;
+ private:
+ static unsigned int globalCount;
+ };
+
+ struct MessageStream {
+
+ template<typename T>
+ MessageStream& operator << ( T const& value ) {
+ m_stream << value;
+ return *this;
+ }
+
+ ReusableStringStream m_stream;
+ };
+
+ struct MessageBuilder : MessageStream {
+ MessageBuilder( StringRef const& macroName,
+ SourceLineInfo const& lineInfo,
+ ResultWas::OfType type );
+
+ template<typename T>
+ MessageBuilder& operator << ( T const& value ) {
+ m_stream << value;
+ return *this;
+ }
+
+ MessageInfo m_info;
+ };
+
+ class ScopedMessage {
+ public:
+ explicit ScopedMessage( MessageBuilder const& builder );
+ ScopedMessage( ScopedMessage& duplicate ) = delete;
+ ScopedMessage( ScopedMessage&& old );
+ ~ScopedMessage();
+
+ MessageInfo m_info;
+ bool m_moved;
+ };
+
+ class Capturer {
+ std::vector<MessageInfo> m_messages;
+ IResultCapture& m_resultCapture = getResultCapture();
+ size_t m_captured = 0;
+ public:
+ Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names );
+ ~Capturer();
+
+ void captureValue( size_t index, std::string const& value );
+
+ template<typename T>
+ void captureValues( size_t index, T const& value ) {
+ captureValue( index, Catch::Detail::stringify( value ) );
+ }
+
+ template<typename T, typename... Ts>
+ void captureValues( size_t index, T const& value, Ts const&... values ) {
+ captureValue( index, Catch::Detail::stringify(value) );
+ captureValues( index+1, values... );
+ }
+ };
+
+} // end namespace Catch
+
+// end catch_message.h
+#if !defined(CATCH_CONFIG_DISABLE)
+
+#if !defined(CATCH_CONFIG_DISABLE_STRINGIFICATION)
+ #define CATCH_INTERNAL_STRINGIFY(...) #__VA_ARGS__
+#else
+ #define CATCH_INTERNAL_STRINGIFY(...) "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION"
+#endif
+
+#if defined(CATCH_CONFIG_FAST_COMPILE) || defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+
+///////////////////////////////////////////////////////////////////////////////
+// Another way to speed-up compilation is to omit local try-catch for REQUIRE*
+// macros.
+#define INTERNAL_CATCH_TRY
+#define INTERNAL_CATCH_CATCH( capturer )
+
+#else // CATCH_CONFIG_FAST_COMPILE
+
+#define INTERNAL_CATCH_TRY try
+#define INTERNAL_CATCH_CATCH( handler ) catch(...) { handler.handleUnexpectedInflightException(); }
+
+#endif
+
+#define INTERNAL_CATCH_REACT( handler ) handler.complete();
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_TEST( macroName, resultDisposition, ... ) \
+ do { \
+ CATCH_INTERNAL_IGNORE_BUT_WARN(__VA_ARGS__); \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \
+ INTERNAL_CATCH_TRY { \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
+ catchAssertionHandler.handleExpr( Catch::Decomposer() <= __VA_ARGS__ ); \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_IF( macroName, resultDisposition, ... ) \
+ INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \
+ if( Catch::getResultCapture().lastAssertionPassed() )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_ELSE( macroName, resultDisposition, ... ) \
+ INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \
+ if( !Catch::getResultCapture().lastAssertionPassed() )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_NO_THROW( macroName, resultDisposition, ... ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \
+ try { \
+ static_cast<void>(__VA_ARGS__); \
+ catchAssertionHandler.handleExceptionNotThrownAsExpected(); \
+ } \
+ catch( ... ) { \
+ catchAssertionHandler.handleUnexpectedInflightException(); \
+ } \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_THROWS( macroName, resultDisposition, ... ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition); \
+ if( catchAssertionHandler.allowThrows() ) \
+ try { \
+ static_cast<void>(__VA_ARGS__); \
+ catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
+ } \
+ catch( ... ) { \
+ catchAssertionHandler.handleExceptionThrownAsExpected(); \
+ } \
+ else \
+ catchAssertionHandler.handleThrowingCallSkipped(); \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_THROWS_AS( macroName, exceptionType, resultDisposition, expr ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr) ", " CATCH_INTERNAL_STRINGIFY(exceptionType), resultDisposition ); \
+ if( catchAssertionHandler.allowThrows() ) \
+ try { \
+ static_cast<void>(expr); \
+ catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
+ } \
+ catch( exceptionType const& ) { \
+ catchAssertionHandler.handleExceptionThrownAsExpected(); \
+ } \
+ catch( ... ) { \
+ catchAssertionHandler.handleUnexpectedInflightException(); \
+ } \
+ else \
+ catchAssertionHandler.handleThrowingCallSkipped(); \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, ... ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::StringRef(), resultDisposition ); \
+ catchAssertionHandler.handleMessage( messageType, ( Catch::MessageStream() << __VA_ARGS__ + ::Catch::StreamEndStop() ).m_stream.str() ); \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_CAPTURE( varName, macroName, ... ) \
+ auto varName = Catch::Capturer( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info, #__VA_ARGS__ ); \
+ varName.captureValues( 0, __VA_ARGS__ )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_INFO( macroName, log ) \
+ Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log );
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_UNSCOPED_INFO( macroName, log ) \
+ Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log )
+
+///////////////////////////////////////////////////////////////////////////////
+// Although this is matcher-based, it can be used with just a string
+#define INTERNAL_CATCH_THROWS_STR_MATCHES( macroName, resultDisposition, matcher, ... ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \
+ if( catchAssertionHandler.allowThrows() ) \
+ try { \
+ static_cast<void>(__VA_ARGS__); \
+ catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
+ } \
+ catch( ... ) { \
+ Catch::handleExceptionMatchExpr( catchAssertionHandler, matcher, #matcher##_catch_sr ); \
+ } \
+ else \
+ catchAssertionHandler.handleThrowingCallSkipped(); \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+#endif // CATCH_CONFIG_DISABLE
+
+// end catch_capture.hpp
+// start catch_section.h
+
+// start catch_section_info.h
+
+// start catch_totals.h
+
+#include <cstddef>
+
+namespace Catch {
+
+ struct Counts {
+ Counts operator - ( Counts const& other ) const;
+ Counts& operator += ( Counts const& other );
+
+ std::size_t total() const;
+ bool allPassed() const;
+ bool allOk() const;
+
+ std::size_t passed = 0;
+ std::size_t failed = 0;
+ std::size_t failedButOk = 0;
+ };
+
+ struct Totals {
+
+ Totals operator - ( Totals const& other ) const;
+ Totals& operator += ( Totals const& other );
+
+ Totals delta( Totals const& prevTotals ) const;
+
+ int error = 0;
+ Counts assertions;
+ Counts testCases;
+ };
+}
+
+// end catch_totals.h
+#include <string>
+
+namespace Catch {
+
+ struct SectionInfo {
+ SectionInfo
+ ( SourceLineInfo const& _lineInfo,
+ std::string const& _name );
+
+ // Deprecated
+ SectionInfo
+ ( SourceLineInfo const& _lineInfo,
+ std::string const& _name,
+ std::string const& ) : SectionInfo( _lineInfo, _name ) {}
+
+ std::string name;
+ std::string description; // !Deprecated: this will always be empty
+ SourceLineInfo lineInfo;
+ };
+
+ struct SectionEndInfo {
+ SectionInfo sectionInfo;
+ Counts prevAssertions;
+ double durationInSeconds;
+ };
+
+} // end namespace Catch
+
+// end catch_section_info.h
+// start catch_timer.h
+
+#include <cstdint>
+
+namespace Catch {
+
+ auto getCurrentNanosecondsSinceEpoch() -> uint64_t;
+ auto getEstimatedClockResolution() -> uint64_t;
+
+ class Timer {
+ uint64_t m_nanoseconds = 0;
+ public:
+ void start();
+ auto getElapsedNanoseconds() const -> uint64_t;
+ auto getElapsedMicroseconds() const -> uint64_t;
+ auto getElapsedMilliseconds() const -> unsigned int;
+ auto getElapsedSeconds() const -> double;
+ };
+
+} // namespace Catch
+
+// end catch_timer.h
+#include <string>
+
+namespace Catch {
+
+ class Section : NonCopyable {
+ public:
+ Section( SectionInfo const& info );
+ ~Section();
+
+ // This indicates whether the section should be executed or not
+ explicit operator bool() const;
+
+ private:
+ SectionInfo m_info;
+
+ std::string m_name;
+ Counts m_assertions;
+ bool m_sectionIncluded;
+ Timer m_timer;
+ };
+
+} // end namespace Catch
+
+#define INTERNAL_CATCH_SECTION( ... ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
+ if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+#define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
+ if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, (Catch::ReusableStringStream() << __VA_ARGS__).str() ) ) \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+// end catch_section.h
+// start catch_interfaces_exception.h
+
+// start catch_interfaces_registry_hub.h
+
+#include <string>
+#include <memory>
+
+namespace Catch {
+
+ class TestCase;
+ struct ITestCaseRegistry;
+ struct IExceptionTranslatorRegistry;
+ struct IExceptionTranslator;
+ struct IReporterRegistry;
+ struct IReporterFactory;
+ struct ITagAliasRegistry;
+ struct IMutableEnumValuesRegistry;
+
+ class StartupExceptionRegistry;
+
+ using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>;
+
+ struct IRegistryHub {
+ virtual ~IRegistryHub();
+
+ virtual IReporterRegistry const& getReporterRegistry() const = 0;
+ virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0;
+ virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0;
+ virtual IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const = 0;
+
+ virtual StartupExceptionRegistry const& getStartupExceptionRegistry() const = 0;
+ };
+
+ struct IMutableRegistryHub {
+ virtual ~IMutableRegistryHub();
+ virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) = 0;
+ virtual void registerListener( IReporterFactoryPtr const& factory ) = 0;
+ virtual void registerTest( TestCase const& testInfo ) = 0;
+ virtual void registerTranslator( const IExceptionTranslator* translator ) = 0;
+ virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0;
+ virtual void registerStartupException() noexcept = 0;
+ virtual IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() = 0;
+ };
+
+ IRegistryHub const& getRegistryHub();
+ IMutableRegistryHub& getMutableRegistryHub();
+ void cleanUp();
+ std::string translateActiveException();
+
+}
+
+// end catch_interfaces_registry_hub.h
+#if defined(CATCH_CONFIG_DISABLE)
+ #define INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( translatorName, signature) \
+ static std::string translatorName( signature )
+#endif
+
+#include <exception>
+#include <string>
+#include <vector>
+
+namespace Catch {
+ using exceptionTranslateFunction = std::string(*)();
+
+ struct IExceptionTranslator;
+ using ExceptionTranslators = std::vector<std::unique_ptr<IExceptionTranslator const>>;
+
+ struct IExceptionTranslator {
+ virtual ~IExceptionTranslator();
+ virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0;
+ };
+
+ struct IExceptionTranslatorRegistry {
+ virtual ~IExceptionTranslatorRegistry();
+
+ virtual std::string translateActiveException() const = 0;
+ };
+
+ class ExceptionTranslatorRegistrar {
+ template<typename T>
+ class ExceptionTranslator : public IExceptionTranslator {
+ public:
+
+ ExceptionTranslator( std::string(*translateFunction)( T& ) )
+ : m_translateFunction( translateFunction )
+ {}
+
+ std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override {
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ return "";
+#else
+ try {
+ if( it == itEnd )
+ std::rethrow_exception(std::current_exception());
+ else
+ return (*it)->translate( it+1, itEnd );
+ }
+ catch( T& ex ) {
+ return m_translateFunction( ex );
+ }
+#endif
+ }
+
+ protected:
+ std::string(*m_translateFunction)( T& );
+ };
+
+ public:
+ template<typename T>
+ ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) {
+ getMutableRegistryHub().registerTranslator
+ ( new ExceptionTranslator<T>( translateFunction ) );
+ }
+ };
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \
+ static std::string translatorName( signature ); \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+ static std::string translatorName( signature )
+
+#define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
+
+// end catch_interfaces_exception.h
+// start catch_approx.h
+
+#include <type_traits>
+
+namespace Catch {
+namespace Detail {
+
+ class Approx {
+ private:
+ bool equalityComparisonImpl(double other) const;
+ // Validates the new margin (margin >= 0)
+ // out-of-line to avoid including stdexcept in the header
+ void setMargin(double margin);
+ // Validates the new epsilon (0 < epsilon < 1)
+ // out-of-line to avoid including stdexcept in the header
+ void setEpsilon(double epsilon);
+
+ public:
+ explicit Approx ( double value );
+
+ static Approx custom();
+
+ Approx operator-() const;
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ Approx operator()( T const& value ) const {
+ Approx approx( static_cast<double>(value) );
+ approx.m_epsilon = m_epsilon;
+ approx.m_margin = m_margin;
+ approx.m_scale = m_scale;
+ return approx;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ explicit Approx( T const& value ): Approx(static_cast<double>(value))
+ {}
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator == ( const T& lhs, Approx const& rhs ) {
+ auto lhs_v = static_cast<double>(lhs);
+ return rhs.equalityComparisonImpl(lhs_v);
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator == ( Approx const& lhs, const T& rhs ) {
+ return operator==( rhs, lhs );
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator != ( T const& lhs, Approx const& rhs ) {
+ return !operator==( lhs, rhs );
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator != ( Approx const& lhs, T const& rhs ) {
+ return !operator==( rhs, lhs );
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator <= ( T const& lhs, Approx const& rhs ) {
+ return static_cast<double>(lhs) < rhs.m_value || lhs == rhs;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator <= ( Approx const& lhs, T const& rhs ) {
+ return lhs.m_value < static_cast<double>(rhs) || lhs == rhs;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator >= ( T const& lhs, Approx const& rhs ) {
+ return static_cast<double>(lhs) > rhs.m_value || lhs == rhs;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ friend bool operator >= ( Approx const& lhs, T const& rhs ) {
+ return lhs.m_value > static_cast<double>(rhs) || lhs == rhs;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ Approx& epsilon( T const& newEpsilon ) {
+ double epsilonAsDouble = static_cast<double>(newEpsilon);
+ setEpsilon(epsilonAsDouble);
+ return *this;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ Approx& margin( T const& newMargin ) {
+ double marginAsDouble = static_cast<double>(newMargin);
+ setMargin(marginAsDouble);
+ return *this;
+ }
+
+ template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ Approx& scale( T const& newScale ) {
+ m_scale = static_cast<double>(newScale);
+ return *this;
+ }
+
+ std::string toString() const;
+
+ private:
+ double m_epsilon;
+ double m_margin;
+ double m_scale;
+ double m_value;
+ };
+} // end namespace Detail
+
+namespace literals {
+ Detail::Approx operator "" _a(long double val);
+ Detail::Approx operator "" _a(unsigned long long val);
+} // end namespace literals
+
+template<>
+struct StringMaker<Catch::Detail::Approx> {
+ static std::string convert(Catch::Detail::Approx const& value);
+};
+
+} // end namespace Catch
+
+// end catch_approx.h
+// start catch_string_manip.h
+
+#include <string>
+#include <iosfwd>
+#include <vector>
+
+namespace Catch {
+
+ bool startsWith( std::string const& s, std::string const& prefix );
+ bool startsWith( std::string const& s, char prefix );
+ bool endsWith( std::string const& s, std::string const& suffix );
+ bool endsWith( std::string const& s, char suffix );
+ bool contains( std::string const& s, std::string const& infix );
+ void toLowerInPlace( std::string& s );
+ std::string toLower( std::string const& s );
+ //! Returns a new string without whitespace at the start/end
+ std::string trim( std::string const& str );
+ //! Returns a substring of the original ref without whitespace. Beware lifetimes!
+ StringRef trim(StringRef ref);
+
+ // !!! Be aware, returns refs into original string - make sure original string outlives them
+ std::vector<StringRef> splitStringRef( StringRef str, char delimiter );
+ bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis );
+
+ struct pluralise {
+ pluralise( std::size_t count, std::string const& label );
+
+ friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser );
+
+ std::size_t m_count;
+ std::string m_label;
+ };
+}
+
+// end catch_string_manip.h
+#ifndef CATCH_CONFIG_DISABLE_MATCHERS
+// start catch_capture_matchers.h
+
+// start catch_matchers.h
+
+#include <string>
+#include <vector>
+
+namespace Catch {
+namespace Matchers {
+ namespace Impl {
+
+ template<typename ArgT> struct MatchAllOf;
+ template<typename ArgT> struct MatchAnyOf;
+ template<typename ArgT> struct MatchNotOf;
+
+ class MatcherUntypedBase {
+ public:
+ MatcherUntypedBase() = default;
+ MatcherUntypedBase ( MatcherUntypedBase const& ) = default;
+ MatcherUntypedBase& operator = ( MatcherUntypedBase const& ) = delete;
+ std::string toString() const;
+
+ protected:
+ virtual ~MatcherUntypedBase();
+ virtual std::string describe() const = 0;
+ mutable std::string m_cachedToString;
+ };
+
+#ifdef __clang__
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wnon-virtual-dtor"
+#endif
+
+ template<typename ObjectT>
+ struct MatcherMethod {
+ virtual bool match( ObjectT const& arg ) const = 0;
+ };
+
+#if defined(__OBJC__)
+ // Hack to fix Catch GH issue #1661. Could use id for generic Object support.
+ // use of const for Object pointers is very uncommon and under ARC it causes some kind of signature mismatch that breaks compilation
+ template<>
+ struct MatcherMethod<NSString*> {
+ virtual bool match( NSString* arg ) const = 0;
+ };
+#endif
+
+#ifdef __clang__
+# pragma clang diagnostic pop
+#endif
+
+ template<typename T>
+ struct MatcherBase : MatcherUntypedBase, MatcherMethod<T> {
+
+ MatchAllOf<T> operator && ( MatcherBase const& other ) const;
+ MatchAnyOf<T> operator || ( MatcherBase const& other ) const;
+ MatchNotOf<T> operator ! () const;
+ };
+
+ template<typename ArgT>
+ struct MatchAllOf : MatcherBase<ArgT> {
+ bool match( ArgT const& arg ) const override {
+ for( auto matcher : m_matchers ) {
+ if (!matcher->match(arg))
+ return false;
+ }
+ return true;
+ }
+ std::string describe() const override {
+ std::string description;
+ description.reserve( 4 + m_matchers.size()*32 );
+ description += "( ";
+ bool first = true;
+ for( auto matcher : m_matchers ) {
+ if( first )
+ first = false;
+ else
+ description += " and ";
+ description += matcher->toString();
+ }
+ description += " )";
+ return description;
+ }
+
+ MatchAllOf<ArgT> operator && ( MatcherBase<ArgT> const& other ) {
+ auto copy(*this);
+ copy.m_matchers.push_back( &other );
+ return copy;
+ }
+
+ std::vector<MatcherBase<ArgT> const*> m_matchers;
+ };
+ template<typename ArgT>
+ struct MatchAnyOf : MatcherBase<ArgT> {
+
+ bool match( ArgT const& arg ) const override {
+ for( auto matcher : m_matchers ) {
+ if (matcher->match(arg))
+ return true;
+ }
+ return false;
+ }
+ std::string describe() const override {
+ std::string description;
+ description.reserve( 4 + m_matchers.size()*32 );
+ description += "( ";
+ bool first = true;
+ for( auto matcher : m_matchers ) {
+ if( first )
+ first = false;
+ else
+ description += " or ";
+ description += matcher->toString();
+ }
+ description += " )";
+ return description;
+ }
+
+ MatchAnyOf<ArgT> operator || ( MatcherBase<ArgT> const& other ) {
+ auto copy(*this);
+ copy.m_matchers.push_back( &other );
+ return copy;
+ }
+
+ std::vector<MatcherBase<ArgT> const*> m_matchers;
+ };
+
+ template<typename ArgT>
+ struct MatchNotOf : MatcherBase<ArgT> {
+
+ MatchNotOf( MatcherBase<ArgT> const& underlyingMatcher ) : m_underlyingMatcher( underlyingMatcher ) {}
+
+ bool match( ArgT const& arg ) const override {
+ return !m_underlyingMatcher.match( arg );
+ }
+
+ std::string describe() const override {
+ return "not " + m_underlyingMatcher.toString();
+ }
+ MatcherBase<ArgT> const& m_underlyingMatcher;
+ };
+
+ template<typename T>
+ MatchAllOf<T> MatcherBase<T>::operator && ( MatcherBase const& other ) const {
+ return MatchAllOf<T>() && *this && other;
+ }
+ template<typename T>
+ MatchAnyOf<T> MatcherBase<T>::operator || ( MatcherBase const& other ) const {
+ return MatchAnyOf<T>() || *this || other;
+ }
+ template<typename T>
+ MatchNotOf<T> MatcherBase<T>::operator ! () const {
+ return MatchNotOf<T>( *this );
+ }
+
+ } // namespace Impl
+
+} // namespace Matchers
+
+using namespace Matchers;
+using Matchers::Impl::MatcherBase;
+
+} // namespace Catch
+
+// end catch_matchers.h
+// start catch_matchers_exception.hpp
+
+namespace Catch {
+namespace Matchers {
+namespace Exception {
+
+class ExceptionMessageMatcher : public MatcherBase<std::exception> {
+ std::string m_message;
+public:
+
+ ExceptionMessageMatcher(std::string const& message):
+ m_message(message)
+ {}
+
+ bool match(std::exception const& ex) const override;
+
+ std::string describe() const override;
+};
+
+} // namespace Exception
+
+Exception::ExceptionMessageMatcher Message(std::string const& message);
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_exception.hpp
+// start catch_matchers_floating.h
+
+namespace Catch {
+namespace Matchers {
+
+ namespace Floating {
+
+ enum class FloatingPointKind : uint8_t;
+
+ struct WithinAbsMatcher : MatcherBase<double> {
+ WithinAbsMatcher(double target, double margin);
+ bool match(double const& matchee) const override;
+ std::string describe() const override;
+ private:
+ double m_target;
+ double m_margin;
+ };
+
+ struct WithinUlpsMatcher : MatcherBase<double> {
+ WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType);
+ bool match(double const& matchee) const override;
+ std::string describe() const override;
+ private:
+ double m_target;
+ uint64_t m_ulps;
+ FloatingPointKind m_type;
+ };
+
+ // Given IEEE-754 format for floats and doubles, we can assume
+ // that float -> double promotion is lossless. Given this, we can
+ // assume that if we do the standard relative comparison of
+ // |lhs - rhs| <= epsilon * max(fabs(lhs), fabs(rhs)), then we get
+ // the same result if we do this for floats, as if we do this for
+ // doubles that were promoted from floats.
+ struct WithinRelMatcher : MatcherBase<double> {
+ WithinRelMatcher(double target, double epsilon);
+ bool match(double const& matchee) const override;
+ std::string describe() const override;
+ private:
+ double m_target;
+ double m_epsilon;
+ };
+
+ } // namespace Floating
+
+ // The following functions create the actual matcher objects.
+ // This allows the types to be inferred
+ Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff);
+ Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff);
+ Floating::WithinAbsMatcher WithinAbs(double target, double margin);
+ Floating::WithinRelMatcher WithinRel(double target, double eps);
+ // defaults epsilon to 100*numeric_limits<double>::epsilon()
+ Floating::WithinRelMatcher WithinRel(double target);
+ Floating::WithinRelMatcher WithinRel(float target, float eps);
+ // defaults epsilon to 100*numeric_limits<float>::epsilon()
+ Floating::WithinRelMatcher WithinRel(float target);
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_floating.h
+// start catch_matchers_generic.hpp
+
+#include <functional>
+#include <string>
+
+namespace Catch {
+namespace Matchers {
+namespace Generic {
+
+namespace Detail {
+ std::string finalizeDescription(const std::string& desc);
+}
+
+template <typename T>
+class PredicateMatcher : public MatcherBase<T> {
+ std::function<bool(T const&)> m_predicate;
+ std::string m_description;
+public:
+
+ PredicateMatcher(std::function<bool(T const&)> const& elem, std::string const& descr)
+ :m_predicate(std::move(elem)),
+ m_description(Detail::finalizeDescription(descr))
+ {}
+
+ bool match( T const& item ) const override {
+ return m_predicate(item);
+ }
+
+ std::string describe() const override {
+ return m_description;
+ }
+};
+
+} // namespace Generic
+
+ // The following functions create the actual matcher objects.
+ // The user has to explicitly specify type to the function, because
+ // inferring std::function<bool(T const&)> is hard (but possible) and
+ // requires a lot of TMP.
+ template<typename T>
+ Generic::PredicateMatcher<T> Predicate(std::function<bool(T const&)> const& predicate, std::string const& description = "") {
+ return Generic::PredicateMatcher<T>(predicate, description);
+ }
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_generic.hpp
+// start catch_matchers_string.h
+
+#include <string>
+
+namespace Catch {
+namespace Matchers {
+
+ namespace StdString {
+
+ struct CasedString
+ {
+ CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity );
+ std::string adjustString( std::string const& str ) const;
+ std::string caseSensitivitySuffix() const;
+
+ CaseSensitive::Choice m_caseSensitivity;
+ std::string m_str;
+ };
+
+ struct StringMatcherBase : MatcherBase<std::string> {
+ StringMatcherBase( std::string const& operation, CasedString const& comparator );
+ std::string describe() const override;
+
+ CasedString m_comparator;
+ std::string m_operation;
+ };
+
+ struct EqualsMatcher : StringMatcherBase {
+ EqualsMatcher( CasedString const& comparator );
+ bool match( std::string const& source ) const override;
+ };
+ struct ContainsMatcher : StringMatcherBase {
+ ContainsMatcher( CasedString const& comparator );
+ bool match( std::string const& source ) const override;
+ };
+ struct StartsWithMatcher : StringMatcherBase {
+ StartsWithMatcher( CasedString const& comparator );
+ bool match( std::string const& source ) const override;
+ };
+ struct EndsWithMatcher : StringMatcherBase {
+ EndsWithMatcher( CasedString const& comparator );
+ bool match( std::string const& source ) const override;
+ };
+
+ struct RegexMatcher : MatcherBase<std::string> {
+ RegexMatcher( std::string regex, CaseSensitive::Choice caseSensitivity );
+ bool match( std::string const& matchee ) const override;
+ std::string describe() const override;
+
+ private:
+ std::string m_regex;
+ CaseSensitive::Choice m_caseSensitivity;
+ };
+
+ } // namespace StdString
+
+ // The following functions create the actual matcher objects.
+ // This allows the types to be inferred
+
+ StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
+ StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
+ StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
+ StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
+ StdString::RegexMatcher Matches( std::string const& regex, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_string.h
+// start catch_matchers_vector.h
+
+#include <algorithm>
+
+namespace Catch {
+namespace Matchers {
+
+ namespace Vector {
+ template<typename T, typename Alloc>
+ struct ContainsElementMatcher : MatcherBase<std::vector<T, Alloc>> {
+
+ ContainsElementMatcher(T const &comparator) : m_comparator( comparator) {}
+
+ bool match(std::vector<T, Alloc> const &v) const override {
+ for (auto const& el : v) {
+ if (el == m_comparator) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ std::string describe() const override {
+ return "Contains: " + ::Catch::Detail::stringify( m_comparator );
+ }
+
+ T const& m_comparator;
+ };
+
+ template<typename T, typename AllocComp, typename AllocMatch>
+ struct ContainsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
+
+ ContainsMatcher(std::vector<T, AllocComp> const &comparator) : m_comparator( comparator ) {}
+
+ bool match(std::vector<T, AllocMatch> const &v) const override {
+ // !TBD: see note in EqualsMatcher
+ if (m_comparator.size() > v.size())
+ return false;
+ for (auto const& comparator : m_comparator) {
+ auto present = false;
+ for (const auto& el : v) {
+ if (el == comparator) {
+ present = true;
+ break;
+ }
+ }
+ if (!present) {
+ return false;
+ }
+ }
+ return true;
+ }
+ std::string describe() const override {
+ return "Contains: " + ::Catch::Detail::stringify( m_comparator );
+ }
+
+ std::vector<T, AllocComp> const& m_comparator;
+ };
+
+ template<typename T, typename AllocComp, typename AllocMatch>
+ struct EqualsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
+
+ EqualsMatcher(std::vector<T, AllocComp> const &comparator) : m_comparator( comparator ) {}
+
+ bool match(std::vector<T, AllocMatch> const &v) const override {
+ // !TBD: This currently works if all elements can be compared using !=
+ // - a more general approach would be via a compare template that defaults
+ // to using !=. but could be specialised for, e.g. std::vector<T, Alloc> etc
+ // - then just call that directly
+ if (m_comparator.size() != v.size())
+ return false;
+ for (std::size_t i = 0; i < v.size(); ++i)
+ if (m_comparator[i] != v[i])
+ return false;
+ return true;
+ }
+ std::string describe() const override {
+ return "Equals: " + ::Catch::Detail::stringify( m_comparator );
+ }
+ std::vector<T, AllocComp> const& m_comparator;
+ };
+
+ template<typename T, typename AllocComp, typename AllocMatch>
+ struct ApproxMatcher : MatcherBase<std::vector<T, AllocMatch>> {
+
+ ApproxMatcher(std::vector<T, AllocComp> const& comparator) : m_comparator( comparator ) {}
+
+ bool match(std::vector<T, AllocMatch> const &v) const override {
+ if (m_comparator.size() != v.size())
+ return false;
+ for (std::size_t i = 0; i < v.size(); ++i)
+ if (m_comparator[i] != approx(v[i]))
+ return false;
+ return true;
+ }
+ std::string describe() const override {
+ return "is approx: " + ::Catch::Detail::stringify( m_comparator );
+ }
+ template <typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ ApproxMatcher& epsilon( T const& newEpsilon ) {
+ approx.epsilon(newEpsilon);
+ return *this;
+ }
+ template <typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ ApproxMatcher& margin( T const& newMargin ) {
+ approx.margin(newMargin);
+ return *this;
+ }
+ template <typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
+ ApproxMatcher& scale( T const& newScale ) {
+ approx.scale(newScale);
+ return *this;
+ }
+
+ std::vector<T, AllocComp> const& m_comparator;
+ mutable Catch::Detail::Approx approx = Catch::Detail::Approx::custom();
+ };
+
+ template<typename T, typename AllocComp, typename AllocMatch>
+ struct UnorderedEqualsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
+ UnorderedEqualsMatcher(std::vector<T, AllocComp> const& target) : m_target(target) {}
+ bool match(std::vector<T, AllocMatch> const& vec) const override {
+ if (m_target.size() != vec.size()) {
+ return false;
+ }
+ return std::is_permutation(m_target.begin(), m_target.end(), vec.begin());
+ }
+
+ std::string describe() const override {
+ return "UnorderedEquals: " + ::Catch::Detail::stringify(m_target);
+ }
+ private:
+ std::vector<T, AllocComp> const& m_target;
+ };
+
+ } // namespace Vector
+
+ // The following functions create the actual matcher objects.
+ // This allows the types to be inferred
+
+ template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+ Vector::ContainsMatcher<T, AllocComp, AllocMatch> Contains( std::vector<T, AllocComp> const& comparator ) {
+ return Vector::ContainsMatcher<T, AllocComp, AllocMatch>( comparator );
+ }
+
+ template<typename T, typename Alloc = std::allocator<T>>
+ Vector::ContainsElementMatcher<T, Alloc> VectorContains( T const& comparator ) {
+ return Vector::ContainsElementMatcher<T, Alloc>( comparator );
+ }
+
+ template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+ Vector::EqualsMatcher<T, AllocComp, AllocMatch> Equals( std::vector<T, AllocComp> const& comparator ) {
+ return Vector::EqualsMatcher<T, AllocComp, AllocMatch>( comparator );
+ }
+
+ template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+ Vector::ApproxMatcher<T, AllocComp, AllocMatch> Approx( std::vector<T, AllocComp> const& comparator ) {
+ return Vector::ApproxMatcher<T, AllocComp, AllocMatch>( comparator );
+ }
+
+ template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+ Vector::UnorderedEqualsMatcher<T, AllocComp, AllocMatch> UnorderedEquals(std::vector<T, AllocComp> const& target) {
+ return Vector::UnorderedEqualsMatcher<T, AllocComp, AllocMatch>( target );
+ }
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_vector.h
+namespace Catch {
+
+ template<typename ArgT, typename MatcherT>
+ class MatchExpr : public ITransientExpression {
+ ArgT const& m_arg;
+ MatcherT m_matcher;
+ StringRef m_matcherString;
+ public:
+ MatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString )
+ : ITransientExpression{ true, matcher.match( arg ) },
+ m_arg( arg ),
+ m_matcher( matcher ),
+ m_matcherString( matcherString )
+ {}
+
+ void streamReconstructedExpression( std::ostream &os ) const override {
+ auto matcherAsString = m_matcher.toString();
+ os << Catch::Detail::stringify( m_arg ) << ' ';
+ if( matcherAsString == Detail::unprintableString )
+ os << m_matcherString;
+ else
+ os << matcherAsString;
+ }
+ };
+
+ using StringMatcher = Matchers::Impl::MatcherBase<std::string>;
+
+ void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher, StringRef const& matcherString );
+
+ template<typename ArgT, typename MatcherT>
+ auto makeMatchExpr( ArgT const& arg, MatcherT const& matcher, StringRef const& matcherString ) -> MatchExpr<ArgT, MatcherT> {
+ return MatchExpr<ArgT, MatcherT>( arg, matcher, matcherString );
+ }
+
+} // namespace Catch
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CHECK_THAT( macroName, matcher, resultDisposition, arg ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(arg) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \
+ INTERNAL_CATCH_TRY { \
+ catchAssertionHandler.handleExpr( Catch::makeMatchExpr( arg, matcher, #matcher##_catch_sr ) ); \
+ } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+///////////////////////////////////////////////////////////////////////////////
+#define INTERNAL_CATCH_THROWS_MATCHES( macroName, exceptionType, resultDisposition, matcher, ... ) \
+ do { \
+ Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(exceptionType) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \
+ if( catchAssertionHandler.allowThrows() ) \
+ try { \
+ static_cast<void>(__VA_ARGS__ ); \
+ catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
+ } \
+ catch( exceptionType const& ex ) { \
+ catchAssertionHandler.handleExpr( Catch::makeMatchExpr( ex, matcher, #matcher##_catch_sr ) ); \
+ } \
+ catch( ... ) { \
+ catchAssertionHandler.handleUnexpectedInflightException(); \
+ } \
+ else \
+ catchAssertionHandler.handleThrowingCallSkipped(); \
+ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
+ } while( false )
+
+// end catch_capture_matchers.h
+#endif
+// start catch_generators.hpp
+
+// start catch_interfaces_generatortracker.h
+
+
+#include <memory>
+
+namespace Catch {
+
+ namespace Generators {
+ class GeneratorUntypedBase {
+ public:
+ GeneratorUntypedBase() = default;
+ virtual ~GeneratorUntypedBase();
+ // Attempts to move the generator to the next element
+ //
+ // Returns true iff the move succeeded (and a valid element
+ // can be retrieved).
+ virtual bool next() = 0;
+ };
+ using GeneratorBasePtr = std::unique_ptr<GeneratorUntypedBase>;
+
+ } // namespace Generators
+
+ struct IGeneratorTracker {
+ virtual ~IGeneratorTracker();
+ virtual auto hasGenerator() const -> bool = 0;
+ virtual auto getGenerator() const -> Generators::GeneratorBasePtr const& = 0;
+ virtual void setGenerator( Generators::GeneratorBasePtr&& generator ) = 0;
+ };
+
+} // namespace Catch
+
+// end catch_interfaces_generatortracker.h
+// start catch_enforce.h
+
+#include <exception>
+
+namespace Catch {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ template <typename Ex>
+ [[noreturn]]
+ void throw_exception(Ex const& e) {
+ throw e;
+ }
+#else // ^^ Exceptions are enabled // Exceptions are disabled vv
+ [[noreturn]]
+ void throw_exception(std::exception const& e);
+#endif
+
+ [[noreturn]]
+ void throw_logic_error(std::string const& msg);
+ [[noreturn]]
+ void throw_domain_error(std::string const& msg);
+ [[noreturn]]
+ void throw_runtime_error(std::string const& msg);
+
+} // namespace Catch;
+
+#define CATCH_MAKE_MSG(...) \
+ (Catch::ReusableStringStream() << __VA_ARGS__).str()
+
+#define CATCH_INTERNAL_ERROR(...) \
+ Catch::throw_logic_error(CATCH_MAKE_MSG( CATCH_INTERNAL_LINEINFO << ": Internal Catch2 error: " << __VA_ARGS__))
+
+#define CATCH_ERROR(...) \
+ Catch::throw_domain_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
+
+#define CATCH_RUNTIME_ERROR(...) \
+ Catch::throw_runtime_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
+
+#define CATCH_ENFORCE( condition, ... ) \
+ do{ if( !(condition) ) CATCH_ERROR( __VA_ARGS__ ); } while(false)
+
+// end catch_enforce.h
+#include <memory>
+#include <vector>
+#include <cassert>
+
+#include <utility>
+#include <exception>
+
+namespace Catch {
+
+class GeneratorException : public std::exception {
+ const char* const m_msg = "";
+
+public:
+ GeneratorException(const char* msg):
+ m_msg(msg)
+ {}
+
+ const char* what() const noexcept override final;
+};
+
+namespace Generators {
+
+ // !TBD move this into its own location?
+ namespace pf{
+ template<typename T, typename... Args>
+ std::unique_ptr<T> make_unique( Args&&... args ) {
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+ }
+
+ template<typename T>
+ struct IGenerator : GeneratorUntypedBase {
+ virtual ~IGenerator() = default;
+
+ // Returns the current element of the generator
+ //
+ // \Precondition The generator is either freshly constructed,
+ // or the last call to `next()` returned true
+ virtual T const& get() const = 0;
+ using type = T;
+ };
+
+ template<typename T>
+ class SingleValueGenerator final : public IGenerator<T> {
+ T m_value;
+ public:
+ SingleValueGenerator(T&& value) : m_value(std::move(value)) {}
+
+ T const& get() const override {
+ return m_value;
+ }
+ bool next() override {
+ return false;
+ }
+ };
+
+ template<typename T>
+ class FixedValuesGenerator final : public IGenerator<T> {
+ static_assert(!std::is_same<T, bool>::value,
+ "FixedValuesGenerator does not support bools because of std::vector<bool>"
+ "specialization, use SingleValue Generator instead.");
+ std::vector<T> m_values;
+ size_t m_idx = 0;
+ public:
+ FixedValuesGenerator( std::initializer_list<T> values ) : m_values( values ) {}
+
+ T const& get() const override {
+ return m_values[m_idx];
+ }
+ bool next() override {
+ ++m_idx;
+ return m_idx < m_values.size();
+ }
+ };
+
+ template <typename T>
+ class GeneratorWrapper final {
+ std::unique_ptr<IGenerator<T>> m_generator;
+ public:
+ GeneratorWrapper(std::unique_ptr<IGenerator<T>> generator):
+ m_generator(std::move(generator))
+ {}
+ T const& get() const {
+ return m_generator->get();
+ }
+ bool next() {
+ return m_generator->next();
+ }
+ };
+
+ template <typename T>
+ GeneratorWrapper<T> value(T&& value) {
+ return GeneratorWrapper<T>(pf::make_unique<SingleValueGenerator<T>>(std::forward<T>(value)));
+ }
+ template <typename T>
+ GeneratorWrapper<T> values(std::initializer_list<T> values) {
+ return GeneratorWrapper<T>(pf::make_unique<FixedValuesGenerator<T>>(values));
+ }
+
+ template<typename T>
+ class Generators : public IGenerator<T> {
+ std::vector<GeneratorWrapper<T>> m_generators;
+ size_t m_current = 0;
+
+ void populate(GeneratorWrapper<T>&& generator) {
+ m_generators.emplace_back(std::move(generator));
+ }
+ void populate(T&& val) {
+ m_generators.emplace_back(value(std::forward<T>(val)));
+ }
+ template<typename U>
+ void populate(U&& val) {
+ populate(T(std::forward<U>(val)));
+ }
+ template<typename U, typename... Gs>
+ void populate(U&& valueOrGenerator, Gs &&... moreGenerators) {
+ populate(std::forward<U>(valueOrGenerator));
+ populate(std::forward<Gs>(moreGenerators)...);
+ }
+
+ public:
+ template <typename... Gs>
+ Generators(Gs &&... moreGenerators) {
+ m_generators.reserve(sizeof...(Gs));
+ populate(std::forward<Gs>(moreGenerators)...);
+ }
+
+ T const& get() const override {
+ return m_generators[m_current].get();
+ }
+
+ bool next() override {
+ if (m_current >= m_generators.size()) {
+ return false;
+ }
+ const bool current_status = m_generators[m_current].next();
+ if (!current_status) {
+ ++m_current;
+ }
+ return m_current < m_generators.size();
+ }
+ };
+
+ template<typename... Ts>
+ GeneratorWrapper<std::tuple<Ts...>> table( std::initializer_list<std::tuple<typename std::decay<Ts>::type...>> tuples ) {
+ return values<std::tuple<Ts...>>( tuples );
+ }
+
+ // Tag type to signal that a generator sequence should convert arguments to a specific type
+ template <typename T>
+ struct as {};
+
+ template<typename T, typename... Gs>
+ auto makeGenerators( GeneratorWrapper<T>&& generator, Gs &&... moreGenerators ) -> Generators<T> {
+ return Generators<T>(std::move(generator), std::forward<Gs>(moreGenerators)...);
+ }
+ template<typename T>
+ auto makeGenerators( GeneratorWrapper<T>&& generator ) -> Generators<T> {
+ return Generators<T>(std::move(generator));
+ }
+ template<typename T, typename... Gs>
+ auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generators<T> {
+ return makeGenerators( value( std::forward<T>( val ) ), std::forward<Gs>( moreGenerators )... );
+ }
+ template<typename T, typename U, typename... Gs>
+ auto makeGenerators( as<T>, U&& val, Gs &&... moreGenerators ) -> Generators<T> {
+ return makeGenerators( value( T( std::forward<U>( val ) ) ), std::forward<Gs>( moreGenerators )... );
+ }
+
+ auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker&;
+
+ template<typename L>
+ // Note: The type after -> is weird, because VS2015 cannot parse
+ // the expression used in the typedef inside, when it is in
+ // return type. Yeah.
+ auto generate( StringRef generatorName, SourceLineInfo const& lineInfo, L const& generatorExpression ) -> decltype(std::declval<decltype(generatorExpression())>().get()) {
+ using UnderlyingType = typename decltype(generatorExpression())::type;
+
+ IGeneratorTracker& tracker = acquireGeneratorTracker( generatorName, lineInfo );
+ if (!tracker.hasGenerator()) {
+ tracker.setGenerator(pf::make_unique<Generators<UnderlyingType>>(generatorExpression()));
+ }
+
+ auto const& generator = static_cast<IGenerator<UnderlyingType> const&>( *tracker.getGenerator() );
+ return generator.get();
+ }
+
+} // namespace Generators
+} // namespace Catch
+
+#define GENERATE( ... ) \
+ Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+ CATCH_INTERNAL_LINEINFO, \
+ [ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
+#define GENERATE_COPY( ... ) \
+ Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+ CATCH_INTERNAL_LINEINFO, \
+ [=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
+#define GENERATE_REF( ... ) \
+ Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+ CATCH_INTERNAL_LINEINFO, \
+ [&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
+
+// end catch_generators.hpp
+// start catch_generators_generic.hpp
+
+namespace Catch {
+namespace Generators {
+
+ template <typename T>
+ class TakeGenerator : public IGenerator<T> {
+ GeneratorWrapper<T> m_generator;
+ size_t m_returned = 0;
+ size_t m_target;
+ public:
+ TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
+ m_generator(std::move(generator)),
+ m_target(target)
+ {
+ assert(target != 0 && "Empty generators are not allowed");
+ }
+ T const& get() const override {
+ return m_generator.get();
+ }
+ bool next() override {
+ ++m_returned;
+ if (m_returned >= m_target) {
+ return false;
+ }
+
+ const auto success = m_generator.next();
+ // If the underlying generator does not contain enough values
+ // then we cut short as well
+ if (!success) {
+ m_returned = m_target;
+ }
+ return success;
+ }
+ };
+
+ template <typename T>
+ GeneratorWrapper<T> take(size_t target, GeneratorWrapper<T>&& generator) {
+ return GeneratorWrapper<T>(pf::make_unique<TakeGenerator<T>>(target, std::move(generator)));
+ }
+
+ template <typename T, typename Predicate>
+ class FilterGenerator : public IGenerator<T> {
+ GeneratorWrapper<T> m_generator;
+ Predicate m_predicate;
+ public:
+ template <typename P = Predicate>
+ FilterGenerator(P&& pred, GeneratorWrapper<T>&& generator):
+ m_generator(std::move(generator)),
+ m_predicate(std::forward<P>(pred))
+ {
+ if (!m_predicate(m_generator.get())) {
+ // It might happen that there are no values that pass the
+ // filter. In that case we throw an exception.
+ auto has_initial_value = nextImpl();
+ if (!has_initial_value) {
+ Catch::throw_exception(GeneratorException("No valid value found in filtered generator"));
+ }
+ }
+ }
+
+ T const& get() const override {
+ return m_generator.get();
+ }
+
+ bool next() override {
+ return nextImpl();
+ }
+
+ private:
+ bool nextImpl() {
+ bool success = m_generator.next();
+ if (!success) {
+ return false;
+ }
+ while (!m_predicate(m_generator.get()) && (success = m_generator.next()) == true);
+ return success;
+ }
+ };
+
+ template <typename T, typename Predicate>
+ GeneratorWrapper<T> filter(Predicate&& pred, GeneratorWrapper<T>&& generator) {
+ return GeneratorWrapper<T>(std::unique_ptr<IGenerator<T>>(pf::make_unique<FilterGenerator<T, Predicate>>(std::forward<Predicate>(pred), std::move(generator))));
+ }
+
+ template <typename T>
+ class RepeatGenerator : public IGenerator<T> {
+ static_assert(!std::is_same<T, bool>::value,
+ "RepeatGenerator currently does not support bools"
+ "because of std::vector<bool> specialization");
+ GeneratorWrapper<T> m_generator;
+ mutable std::vector<T> m_returned;
+ size_t m_target_repeats;
+ size_t m_current_repeat = 0;
+ size_t m_repeat_index = 0;
+ public:
+ RepeatGenerator(size_t repeats, GeneratorWrapper<T>&& generator):
+ m_generator(std::move(generator)),
+ m_target_repeats(repeats)
+ {
+ assert(m_target_repeats > 0 && "Repeat generator must repeat at least once");
+ }
+
+ T const& get() const override {
+ if (m_current_repeat == 0) {
+ m_returned.push_back(m_generator.get());
+ return m_returned.back();
+ }
+ return m_returned[m_repeat_index];
+ }
+
+ bool next() override {
+ // There are 2 basic cases:
+ // 1) We are still reading the generator
+ // 2) We are reading our own cache
+
+ // In the first case, we need to poke the underlying generator.
+ // If it happily moves, we are left in that state, otherwise it is time to start reading from our cache
+ if (m_current_repeat == 0) {
+ const auto success = m_generator.next();
+ if (!success) {
+ ++m_current_repeat;
+ }
+ return m_current_repeat < m_target_repeats;
+ }
+
+ // In the second case, we need to move indices forward and check that we haven't run up against the end
+ ++m_repeat_index;
+ if (m_repeat_index == m_returned.size()) {
+ m_repeat_index = 0;
+ ++m_current_repeat;
+ }
+ return m_current_repeat < m_target_repeats;
+ }
+ };
+
+ template <typename T>
+ GeneratorWrapper<T> repeat(size_t repeats, GeneratorWrapper<T>&& generator) {
+ return GeneratorWrapper<T>(pf::make_unique<RepeatGenerator<T>>(repeats, std::move(generator)));
+ }
+
+ template <typename T, typename U, typename Func>
+ class MapGenerator : public IGenerator<T> {
+ // TBD: provide static assert for mapping function, for friendly error message
+ GeneratorWrapper<U> m_generator;
+ Func m_function;
+ // To avoid returning dangling reference, we have to save the values
+ T m_cache;
+ public:
+ template <typename F2 = Func>
+ MapGenerator(F2&& function, GeneratorWrapper<U>&& generator) :
+ m_generator(std::move(generator)),
+ m_function(std::forward<F2>(function)),
+ m_cache(m_function(m_generator.get()))
+ {}
+
+ T const& get() const override {
+ return m_cache;
+ }
+ bool next() override {
+ const auto success = m_generator.next();
+ if (success) {
+ m_cache = m_function(m_generator.get());
+ }
+ return success;
+ }
+ };
+
+ template <typename Func, typename U, typename T = FunctionReturnType<Func, U>>
+ GeneratorWrapper<T> map(Func&& function, GeneratorWrapper<U>&& generator) {
+ return GeneratorWrapper<T>(
+ pf::make_unique<MapGenerator<T, U, Func>>(std::forward<Func>(function), std::move(generator))
+ );
+ }
+
+ template <typename T, typename U, typename Func>
+ GeneratorWrapper<T> map(Func&& function, GeneratorWrapper<U>&& generator) {
+ return GeneratorWrapper<T>(
+ pf::make_unique<MapGenerator<T, U, Func>>(std::forward<Func>(function), std::move(generator))
+ );
+ }
+
+ template <typename T>
+ class ChunkGenerator final : public IGenerator<std::vector<T>> {
+ std::vector<T> m_chunk;
+ size_t m_chunk_size;
+ GeneratorWrapper<T> m_generator;
+ bool m_used_up = false;
+ public:
+ ChunkGenerator(size_t size, GeneratorWrapper<T> generator) :
+ m_chunk_size(size), m_generator(std::move(generator))
+ {
+ m_chunk.reserve(m_chunk_size);
+ if (m_chunk_size != 0) {
+ m_chunk.push_back(m_generator.get());
+ for (size_t i = 1; i < m_chunk_size; ++i) {
+ if (!m_generator.next()) {
+ Catch::throw_exception(GeneratorException("Not enough values to initialize the first chunk"));
+ }
+ m_chunk.push_back(m_generator.get());
+ }
+ }
+ }
+ std::vector<T> const& get() const override {
+ return m_chunk;
+ }
+ bool next() override {
+ m_chunk.clear();
+ for (size_t idx = 0; idx < m_chunk_size; ++idx) {
+ if (!m_generator.next()) {
+ return false;
+ }
+ m_chunk.push_back(m_generator.get());
+ }
+ return true;
+ }
+ };
+
+ template <typename T>
+ GeneratorWrapper<std::vector<T>> chunk(size_t size, GeneratorWrapper<T>&& generator) {
+ return GeneratorWrapper<std::vector<T>>(
+ pf::make_unique<ChunkGenerator<T>>(size, std::move(generator))
+ );
+ }
+
+} // namespace Generators
+} // namespace Catch
+
+// end catch_generators_generic.hpp
+// start catch_generators_specific.hpp
+
+// start catch_context.h
+
+#include <memory>
+
+namespace Catch {
+
+ struct IResultCapture;
+ struct IRunner;
+ struct IConfig;
+ struct IMutableContext;
+
+ using IConfigPtr = std::shared_ptr<IConfig const>;
+
+ struct IContext
+ {
+ virtual ~IContext();
+
+ virtual IResultCapture* getResultCapture() = 0;
+ virtual IRunner* getRunner() = 0;
+ virtual IConfigPtr const& getConfig() const = 0;
+ };
+
+ struct IMutableContext : IContext
+ {
+ virtual ~IMutableContext();
+ virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
+ virtual void setRunner( IRunner* runner ) = 0;
+ virtual void setConfig( IConfigPtr const& config ) = 0;
+
+ private:
+ static IMutableContext *currentContext;
+ friend IMutableContext& getCurrentMutableContext();
+ friend void cleanUpContext();
+ static void createContext();
+ };
+
+ inline IMutableContext& getCurrentMutableContext()
+ {
+ if( !IMutableContext::currentContext )
+ IMutableContext::createContext();
+ // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
+ return *IMutableContext::currentContext;
+ }
+
+ inline IContext& getCurrentContext()
+ {
+ return getCurrentMutableContext();
+ }
+
+ void cleanUpContext();
+
+ class SimplePcg32;
+ SimplePcg32& rng();
+}
+
+// end catch_context.h
+// start catch_interfaces_config.h
+
+// start catch_option.hpp
+
+namespace Catch {
+
+ // An optional type
+ template<typename T>
+ class Option {
+ public:
+ Option() : nullableValue( nullptr ) {}
+ Option( T const& _value )
+ : nullableValue( new( storage ) T( _value ) )
+ {}
+ Option( Option const& _other )
+ : nullableValue( _other ? new( storage ) T( *_other ) : nullptr )
+ {}
+
+ ~Option() {
+ reset();
+ }
+
+ Option& operator= ( Option const& _other ) {
+ if( &_other != this ) {
+ reset();
+ if( _other )
+ nullableValue = new( storage ) T( *_other );
+ }
+ return *this;
+ }
+ Option& operator = ( T const& _value ) {
+ reset();
+ nullableValue = new( storage ) T( _value );
+ return *this;
+ }
+
+ void reset() {
+ if( nullableValue )
+ nullableValue->~T();
+ nullableValue = nullptr;
+ }
+
+ T& operator*() { return *nullableValue; }
+ T const& operator*() const { return *nullableValue; }
+ T* operator->() { return nullableValue; }
+ const T* operator->() const { return nullableValue; }
+
+ T valueOr( T const& defaultValue ) const {
+ return nullableValue ? *nullableValue : defaultValue;
+ }
+
+ bool some() const { return nullableValue != nullptr; }
+ bool none() const { return nullableValue == nullptr; }
+
+ bool operator !() const { return nullableValue == nullptr; }
+ explicit operator bool() const {
+ return some();
+ }
+
+ private:
+ T *nullableValue;
+ alignas(alignof(T)) char storage[sizeof(T)];
+ };
+
+} // end namespace Catch
+
+// end catch_option.hpp
+#include <chrono>
+#include <iosfwd>
+#include <string>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+ enum class Verbosity {
+ Quiet = 0,
+ Normal,
+ High
+ };
+
+ struct WarnAbout { enum What {
+ Nothing = 0x00,
+ NoAssertions = 0x01,
+ NoTests = 0x02
+ }; };
+
+ struct ShowDurations { enum OrNot {
+ DefaultForReporter,
+ Always,
+ Never
+ }; };
+ struct RunTests { enum InWhatOrder {
+ InDeclarationOrder,
+ InLexicographicalOrder,
+ InRandomOrder
+ }; };
+ struct UseColour { enum YesOrNo {
+ Auto,
+ Yes,
+ No
+ }; };
+ struct WaitForKeypress { enum When {
+ Never,
+ BeforeStart = 1,
+ BeforeExit = 2,
+ BeforeStartAndExit = BeforeStart | BeforeExit
+ }; };
+
+ class TestSpec;
+
+ struct IConfig : NonCopyable {
+
+ virtual ~IConfig();
+
+ virtual bool allowThrows() const = 0;
+ virtual std::ostream& stream() const = 0;
+ virtual std::string name() const = 0;
+ virtual bool includeSuccessfulResults() const = 0;
+ virtual bool shouldDebugBreak() const = 0;
+ virtual bool warnAboutMissingAssertions() const = 0;
+ virtual bool warnAboutNoTests() const = 0;
+ virtual int abortAfter() const = 0;
+ virtual bool showInvisibles() const = 0;
+ virtual ShowDurations::OrNot showDurations() const = 0;
+ virtual double minDuration() const = 0;
+ virtual TestSpec const& testSpec() const = 0;
+ virtual bool hasTestFilters() const = 0;
+ virtual std::vector<std::string> const& getTestsOrTags() const = 0;
+ virtual RunTests::InWhatOrder runOrder() const = 0;
+ virtual unsigned int rngSeed() const = 0;
+ virtual UseColour::YesOrNo useColour() const = 0;
+ virtual std::vector<std::string> const& getSectionsToRun() const = 0;
+ virtual Verbosity verbosity() const = 0;
+
+ virtual bool benchmarkNoAnalysis() const = 0;
+ virtual int benchmarkSamples() const = 0;
+ virtual double benchmarkConfidenceInterval() const = 0;
+ virtual unsigned int benchmarkResamples() const = 0;
+ virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0;
+ };
+
+ using IConfigPtr = std::shared_ptr<IConfig const>;
+}
+
+// end catch_interfaces_config.h
+// start catch_random_number_generator.h
+
+#include <cstdint>
+
+namespace Catch {
+
+ // This is a simple implementation of C++11 Uniform Random Number
+ // Generator. It does not provide all operators, because Catch2
+ // does not use it, but it should behave as expected inside stdlib's
+ // distributions.
+ // The implementation is based on the PCG family (http://pcg-random.org)
+ class SimplePcg32 {
+ using state_type = std::uint64_t;
+ public:
+ using result_type = std::uint32_t;
+ static constexpr result_type (min)() {
+ return 0;
+ }
+ static constexpr result_type (max)() {
+ return static_cast<result_type>(-1);
+ }
+
+ // Provide some default initial state for the default constructor
+ SimplePcg32():SimplePcg32(0xed743cc4U) {}
+
+ explicit SimplePcg32(result_type seed_);
+
+ void seed(result_type seed_);
+ void discard(uint64_t skip);
+
+ result_type operator()();
+
+ private:
+ friend bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs);
+ friend bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs);
+
+ // In theory we also need operator<< and operator>>
+ // In practice we do not use them, so we will skip them for now
+
+ std::uint64_t m_state;
+ // This part of the state determines which "stream" of the numbers
+ // is chosen -- we take it as a constant for Catch2, so we only
+ // need to deal with seeding the main state.
+ // Picked by reading 8 bytes from `/dev/random` :-)
+ static const std::uint64_t s_inc = (0x13ed0cc53f939476ULL << 1ULL) | 1ULL;
+ };
+
+} // end namespace Catch
+
+// end catch_random_number_generator.h
+#include <random>
+
+namespace Catch {
+namespace Generators {
+
+template <typename Float>
+class RandomFloatingGenerator final : public IGenerator<Float> {
+ Catch::SimplePcg32& m_rng;
+ std::uniform_real_distribution<Float> m_dist;
+ Float m_current_number;
+public:
+
+ RandomFloatingGenerator(Float a, Float b):
+ m_rng(rng()),
+ m_dist(a, b) {
+ static_cast<void>(next());
+ }
+
+ Float const& get() const override {
+ return m_current_number;
+ }
+ bool next() override {
+ m_current_number = m_dist(m_rng);
+ return true;
+ }
+};
+
+template <typename Integer>
+class RandomIntegerGenerator final : public IGenerator<Integer> {
+ Catch::SimplePcg32& m_rng;
+ std::uniform_int_distribution<Integer> m_dist;
+ Integer m_current_number;
+public:
+
+ RandomIntegerGenerator(Integer a, Integer b):
+ m_rng(rng()),
+ m_dist(a, b) {
+ static_cast<void>(next());
+ }
+
+ Integer const& get() const override {
+ return m_current_number;
+ }
+ bool next() override {
+ m_current_number = m_dist(m_rng);
+ return true;
+ }
+};
+
+// TODO: Ideally this would be also constrained against the various char types,
+// but I don't expect users to run into that in practice.
+template <typename T>
+typename std::enable_if<std::is_integral<T>::value && !std::is_same<T, bool>::value,
+GeneratorWrapper<T>>::type
+random(T a, T b) {
+ return GeneratorWrapper<T>(
+ pf::make_unique<RandomIntegerGenerator<T>>(a, b)
+ );
+}
+
+template <typename T>
+typename std::enable_if<std::is_floating_point<T>::value,
+GeneratorWrapper<T>>::type
+random(T a, T b) {
+ return GeneratorWrapper<T>(
+ pf::make_unique<RandomFloatingGenerator<T>>(a, b)
+ );
+}
+
+template <typename T>
+class RangeGenerator final : public IGenerator<T> {
+ T m_current;
+ T m_end;
+ T m_step;
+ bool m_positive;
+
+public:
+ RangeGenerator(T const& start, T const& end, T const& step):
+ m_current(start),
+ m_end(end),
+ m_step(step),
+ m_positive(m_step > T(0))
+ {
+ assert(m_current != m_end && "Range start and end cannot be equal");
+ assert(m_step != T(0) && "Step size cannot be zero");
+ assert(((m_positive && m_current <= m_end) || (!m_positive && m_current >= m_end)) && "Step moves away from end");
+ }
+
+ RangeGenerator(T const& start, T const& end):
+ RangeGenerator(start, end, (start < end) ? T(1) : T(-1))
+ {}
+
+ T const& get() const override {
+ return m_current;
+ }
+
+ bool next() override {
+ m_current += m_step;
+ return (m_positive) ? (m_current < m_end) : (m_current > m_end);
+ }
+};
+
+template <typename T>
+GeneratorWrapper<T> range(T const& start, T const& end, T const& step) {
+ static_assert(std::is_arithmetic<T>::value && !std::is_same<T, bool>::value, "Type must be numeric");
+ return GeneratorWrapper<T>(pf::make_unique<RangeGenerator<T>>(start, end, step));
+}
+
+template <typename T>
+GeneratorWrapper<T> range(T const& start, T const& end) {
+ static_assert(std::is_integral<T>::value && !std::is_same<T, bool>::value, "Type must be an integer");
+ return GeneratorWrapper<T>(pf::make_unique<RangeGenerator<T>>(start, end));
+}
+
+template <typename T>
+class IteratorGenerator final : public IGenerator<T> {
+ static_assert(!std::is_same<T, bool>::value,
+ "IteratorGenerator currently does not support bools"
+ "because of std::vector<bool> specialization");
+
+ std::vector<T> m_elems;
+ size_t m_current = 0;
+public:
+ template <typename InputIterator, typename InputSentinel>
+ IteratorGenerator(InputIterator first, InputSentinel last):m_elems(first, last) {
+ if (m_elems.empty()) {
+ Catch::throw_exception(GeneratorException("IteratorGenerator received no valid values"));
+ }
+ }
+
+ T const& get() const override {
+ return m_elems[m_current];
+ }
+
+ bool next() override {
+ ++m_current;
+ return m_current != m_elems.size();
+ }
+};
+
+template <typename InputIterator,
+ typename InputSentinel,
+ typename ResultType = typename std::iterator_traits<InputIterator>::value_type>
+GeneratorWrapper<ResultType> from_range(InputIterator from, InputSentinel to) {
+ return GeneratorWrapper<ResultType>(pf::make_unique<IteratorGenerator<ResultType>>(from, to));
+}
+
+template <typename Container,
+ typename ResultType = typename Container::value_type>
+GeneratorWrapper<ResultType> from_range(Container const& cnt) {
+ return GeneratorWrapper<ResultType>(pf::make_unique<IteratorGenerator<ResultType>>(cnt.begin(), cnt.end()));
+}
+
+} // namespace Generators
+} // namespace Catch
+
+// end catch_generators_specific.hpp
+
+// These files are included here so the single_include script doesn't put them
+// in the conditionally compiled sections
+// start catch_test_case_info.h
+
+#include <string>
+#include <vector>
+#include <memory>
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpadded"
+#endif
+
+namespace Catch {
+
+ struct ITestInvoker;
+
+ struct TestCaseInfo {
+ enum SpecialProperties{
+ None = 0,
+ IsHidden = 1 << 1,
+ ShouldFail = 1 << 2,
+ MayFail = 1 << 3,
+ Throws = 1 << 4,
+ NonPortable = 1 << 5,
+ Benchmark = 1 << 6
+ };
+
+ TestCaseInfo( std::string const& _name,
+ std::string const& _className,
+ std::string const& _description,
+ std::vector<std::string> const& _tags,
+ SourceLineInfo const& _lineInfo );
+
+ friend void setTags( TestCaseInfo& testCaseInfo, std::vector<std::string> tags );
+
+ bool isHidden() const;
+ bool throws() const;
+ bool okToFail() const;
+ bool expectedToFail() const;
+
+ std::string tagsAsString() const;
+
+ std::string name;
+ std::string className;
+ std::string description;
+ std::vector<std::string> tags;
+ std::vector<std::string> lcaseTags;
+ SourceLineInfo lineInfo;
+ SpecialProperties properties;
+ };
+
+ class TestCase : public TestCaseInfo {
+ public:
+
+ TestCase( ITestInvoker* testCase, TestCaseInfo&& info );
+
+ TestCase withName( std::string const& _newName ) const;
+
+ void invoke() const;
+
+ TestCaseInfo const& getTestCaseInfo() const;
+
+ bool operator == ( TestCase const& other ) const;
+ bool operator < ( TestCase const& other ) const;
+
+ private:
+ std::shared_ptr<ITestInvoker> test;
+ };
+
+ TestCase makeTestCase( ITestInvoker* testCase,
+ std::string const& className,
+ NameAndTags const& nameAndTags,
+ SourceLineInfo const& lineInfo );
+}
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+// end catch_test_case_info.h
+// start catch_interfaces_runner.h
+
+namespace Catch {
+
+ struct IRunner {
+ virtual ~IRunner();
+ virtual bool aborting() const = 0;
+ };
+}
+
+// end catch_interfaces_runner.h
+
+#ifdef __OBJC__
+// start catch_objc.hpp
+
+#import <objc/runtime.h>
+
+#include <string>
+
+// NB. Any general catch headers included here must be included
+// in catch.hpp first to make sure they are included by the single
+// header for non obj-usage
+
+///////////////////////////////////////////////////////////////////////////////
+// This protocol is really only here for (self) documenting purposes, since
+// all its methods are optional.
+@protocol OcFixture
+
+@optional
+
+-(void) setUp;
+-(void) tearDown;
+
+@end
+
+namespace Catch {
+
+ class OcMethod : public ITestInvoker {
+
+ public:
+ OcMethod( Class cls, SEL sel ) : m_cls( cls ), m_sel( sel ) {}
+
+ virtual void invoke() const {
+ id obj = [[m_cls alloc] init];
+
+ performOptionalSelector( obj, @selector(setUp) );
+ performOptionalSelector( obj, m_sel );
+ performOptionalSelector( obj, @selector(tearDown) );
+
+ arcSafeRelease( obj );
+ }
+ private:
+ virtual ~OcMethod() {}
+
+ Class m_cls;
+ SEL m_sel;
+ };
+
+ namespace Detail{
+
+ inline std::string getAnnotation( Class cls,
+ std::string const& annotationName,
+ std::string const& testCaseName ) {
+ NSString* selStr = [[NSString alloc] initWithFormat:@"Catch_%s_%s", annotationName.c_str(), testCaseName.c_str()];
+ SEL sel = NSSelectorFromString( selStr );
+ arcSafeRelease( selStr );
+ id value = performOptionalSelector( cls, sel );
+ if( value )
+ return [(NSString*)value UTF8String];
+ return "";
+ }
+ }
+
+ inline std::size_t registerTestMethods() {
+ std::size_t noTestMethods = 0;
+ int noClasses = objc_getClassList( nullptr, 0 );
+
+ Class* classes = (CATCH_UNSAFE_UNRETAINED Class *)malloc( sizeof(Class) * noClasses);
+ objc_getClassList( classes, noClasses );
+
+ for( int c = 0; c < noClasses; c++ ) {
+ Class cls = classes[c];
+ {
+ u_int count;
+ Method* methods = class_copyMethodList( cls, &count );
+ for( u_int m = 0; m < count ; m++ ) {
+ SEL selector = method_getName(methods[m]);
+ std::string methodName = sel_getName(selector);
+ if( startsWith( methodName, "Catch_TestCase_" ) ) {
+ std::string testCaseName = methodName.substr( 15 );
+ std::string name = Detail::getAnnotation( cls, "Name", testCaseName );
+ std::string desc = Detail::getAnnotation( cls, "Description", testCaseName );
+ const char* className = class_getName( cls );
+
+ getMutableRegistryHub().registerTest( makeTestCase( new OcMethod( cls, selector ), className, NameAndTags( name.c_str(), desc.c_str() ), SourceLineInfo("",0) ) );
+ noTestMethods++;
+ }
+ }
+ free(methods);
+ }
+ }
+ return noTestMethods;
+ }
+
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+
+ namespace Matchers {
+ namespace Impl {
+ namespace NSStringMatchers {
+
+ struct StringHolder : MatcherBase<NSString*>{
+ StringHolder( NSString* substr ) : m_substr( [substr copy] ){}
+ StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){}
+ StringHolder() {
+ arcSafeRelease( m_substr );
+ }
+
+ bool match( NSString* str ) const override {
+ return false;
+ }
+
+ NSString* CATCH_ARC_STRONG m_substr;
+ };
+
+ struct Equals : StringHolder {
+ Equals( NSString* substr ) : StringHolder( substr ){}
+
+ bool match( NSString* str ) const override {
+ return (str != nil || m_substr == nil ) &&
+ [str isEqualToString:m_substr];
+ }
+
+ std::string describe() const override {
+ return "equals string: " + Catch::Detail::stringify( m_substr );
+ }
+ };
+
+ struct Contains : StringHolder {
+ Contains( NSString* substr ) : StringHolder( substr ){}
+
+ bool match( NSString* str ) const override {
+ return (str != nil || m_substr == nil ) &&
+ [str rangeOfString:m_substr].location != NSNotFound;
+ }
+
+ std::string describe() const override {
+ return "contains string: " + Catch::Detail::stringify( m_substr );
+ }
+ };
+
+ struct StartsWith : StringHolder {
+ StartsWith( NSString* substr ) : StringHolder( substr ){}
+
+ bool match( NSString* str ) const override {
+ return (str != nil || m_substr == nil ) &&
+ [str rangeOfString:m_substr].location == 0;
+ }
+
+ std::string describe() const override {
+ return "starts with: " + Catch::Detail::stringify( m_substr );
+ }
+ };
+ struct EndsWith : StringHolder {
+ EndsWith( NSString* substr ) : StringHolder( substr ){}
+
+ bool match( NSString* str ) const override {
+ return (str != nil || m_substr == nil ) &&
+ [str rangeOfString:m_substr].location == [str length] - [m_substr length];
+ }
+
+ std::string describe() const override {
+ return "ends with: " + Catch::Detail::stringify( m_substr );
+ }
+ };
+
+ } // namespace NSStringMatchers
+ } // namespace Impl
+
+ inline Impl::NSStringMatchers::Equals
+ Equals( NSString* substr ){ return Impl::NSStringMatchers::Equals( substr ); }
+
+ inline Impl::NSStringMatchers::Contains
+ Contains( NSString* substr ){ return Impl::NSStringMatchers::Contains( substr ); }
+
+ inline Impl::NSStringMatchers::StartsWith
+ StartsWith( NSString* substr ){ return Impl::NSStringMatchers::StartsWith( substr ); }
+
+ inline Impl::NSStringMatchers::EndsWith
+ EndsWith( NSString* substr ){ return Impl::NSStringMatchers::EndsWith( substr ); }
+
+ } // namespace Matchers
+
+ using namespace Matchers;
+
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+
+} // namespace Catch
+
+///////////////////////////////////////////////////////////////////////////////
+#define OC_MAKE_UNIQUE_NAME( root, uniqueSuffix ) root##uniqueSuffix
+#define OC_TEST_CASE2( name, desc, uniqueSuffix ) \
++(NSString*) OC_MAKE_UNIQUE_NAME( Catch_Name_test_, uniqueSuffix ) \
+{ \
+return @ name; \
+} \
++(NSString*) OC_MAKE_UNIQUE_NAME( Catch_Description_test_, uniqueSuffix ) \
+{ \
+return @ desc; \
+} \
+-(void) OC_MAKE_UNIQUE_NAME( Catch_TestCase_test_, uniqueSuffix )
+
+#define OC_TEST_CASE( name, desc ) OC_TEST_CASE2( name, desc, __LINE__ )
+
+// end catch_objc.hpp
+#endif
+
+// Benchmarking needs the externally-facing parts of reporters to work
+#if defined(CATCH_CONFIG_EXTERNAL_INTERFACES) || defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+// start catch_external_interfaces.h
+
+// start catch_reporter_bases.hpp
+
+// start catch_interfaces_reporter.h
+
+// start catch_config.hpp
+
+// start catch_test_spec_parser.h
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpadded"
+#endif
+
+// start catch_test_spec.h
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpadded"
+#endif
+
+// start catch_wildcard_pattern.h
+
+namespace Catch
+{
+ class WildcardPattern {
+ enum WildcardPosition {
+ NoWildcard = 0,
+ WildcardAtStart = 1,
+ WildcardAtEnd = 2,
+ WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd
+ };
+
+ public:
+
+ WildcardPattern( std::string const& pattern, CaseSensitive::Choice caseSensitivity );
+ virtual ~WildcardPattern() = default;
+ virtual bool matches( std::string const& str ) const;
+
+ private:
+ std::string normaliseString( std::string const& str ) const;
+ CaseSensitive::Choice m_caseSensitivity;
+ WildcardPosition m_wildcard = NoWildcard;
+ std::string m_pattern;
+ };
+}
+
+// end catch_wildcard_pattern.h
+#include <string>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+ struct IConfig;
+
+ class TestSpec {
+ class Pattern {
+ public:
+ explicit Pattern( std::string const& name );
+ virtual ~Pattern();
+ virtual bool matches( TestCaseInfo const& testCase ) const = 0;
+ std::string const& name() const;
+ private:
+ std::string const m_name;
+ };
+ using PatternPtr = std::shared_ptr<Pattern>;
+
+ class NamePattern : public Pattern {
+ public:
+ explicit NamePattern( std::string const& name, std::string const& filterString );
+ bool matches( TestCaseInfo const& testCase ) const override;
+ private:
+ WildcardPattern m_wildcardPattern;
+ };
+
+ class TagPattern : public Pattern {
+ public:
+ explicit TagPattern( std::string const& tag, std::string const& filterString );
+ bool matches( TestCaseInfo const& testCase ) const override;
+ private:
+ std::string m_tag;
+ };
+
+ class ExcludedPattern : public Pattern {
+ public:
+ explicit ExcludedPattern( PatternPtr const& underlyingPattern );
+ bool matches( TestCaseInfo const& testCase ) const override;
+ private:
+ PatternPtr m_underlyingPattern;
+ };
+
+ struct Filter {
+ std::vector<PatternPtr> m_patterns;
+
+ bool matches( TestCaseInfo const& testCase ) const;
+ std::string name() const;
+ };
+
+ public:
+ struct FilterMatch {
+ std::string name;
+ std::vector<TestCase const*> tests;
+ };
+ using Matches = std::vector<FilterMatch>;
+ using vectorStrings = std::vector<std::string>;
+
+ bool hasFilters() const;
+ bool matches( TestCaseInfo const& testCase ) const;
+ Matches matchesByFilter( std::vector<TestCase> const& testCases, IConfig const& config ) const;
+ const vectorStrings & getInvalidArgs() const;
+
+ private:
+ std::vector<Filter> m_filters;
+ std::vector<std::string> m_invalidArgs;
+ friend class TestSpecParser;
+ };
+}
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+// end catch_test_spec.h
+// start catch_interfaces_tag_alias_registry.h
+
+#include <string>
+
+namespace Catch {
+
+ struct TagAlias;
+
+ struct ITagAliasRegistry {
+ virtual ~ITagAliasRegistry();
+ // Nullptr if not present
+ virtual TagAlias const* find( std::string const& alias ) const = 0;
+ virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const = 0;
+
+ static ITagAliasRegistry const& get();
+ };
+
+} // end namespace Catch
+
+// end catch_interfaces_tag_alias_registry.h
+namespace Catch {
+
+ class TestSpecParser {
+ enum Mode{ None, Name, QuotedName, Tag, EscapedName };
+ Mode m_mode = None;
+ Mode lastMode = None;
+ bool m_exclusion = false;
+ std::size_t m_pos = 0;
+ std::size_t m_realPatternPos = 0;
+ std::string m_arg;
+ std::string m_substring;
+ std::string m_patternName;
+ std::vector<std::size_t> m_escapeChars;
+ TestSpec::Filter m_currentFilter;
+ TestSpec m_testSpec;
+ ITagAliasRegistry const* m_tagAliases = nullptr;
+
+ public:
+ TestSpecParser( ITagAliasRegistry const& tagAliases );
+
+ TestSpecParser& parse( std::string const& arg );
+ TestSpec testSpec();
+
+ private:
+ bool visitChar( char c );
+ void startNewMode( Mode mode );
+ bool processNoneChar( char c );
+ void processNameChar( char c );
+ bool processOtherChar( char c );
+ void endMode();
+ void escape();
+ bool isControlChar( char c ) const;
+ void saveLastMode();
+ void revertBackToLastMode();
+ void addFilter();
+ bool separate();
+
+ // Handles common preprocessing of the pattern for name/tag patterns
+ std::string preprocessPattern();
+ // Adds the current pattern as a test name
+ void addNamePattern();
+ // Adds the current pattern as a tag
+ void addTagPattern();
+
+ inline void addCharToPattern(char c) {
+ m_substring += c;
+ m_patternName += c;
+ m_realPatternPos++;
+ }
+
+ };
+ TestSpec parseTestSpec( std::string const& arg );
+
+} // namespace Catch
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+// end catch_test_spec_parser.h
+// Libstdc++ doesn't like incomplete classes for unique_ptr
+
+#include <memory>
+#include <vector>
+#include <string>
+
+#ifndef CATCH_CONFIG_CONSOLE_WIDTH
+#define CATCH_CONFIG_CONSOLE_WIDTH 80
+#endif
+
+namespace Catch {
+
+ struct IStream;
+
+ struct ConfigData {
+ bool listTests = false;
+ bool listTags = false;
+ bool listReporters = false;
+ bool listTestNamesOnly = false;
+
+ bool showSuccessfulTests = false;
+ bool shouldDebugBreak = false;
+ bool noThrow = false;
+ bool showHelp = false;
+ bool showInvisibles = false;
+ bool filenamesAsTags = false;
+ bool libIdentify = false;
+
+ int abortAfter = -1;
+ unsigned int rngSeed = 0;
+
+ bool benchmarkNoAnalysis = false;
+ unsigned int benchmarkSamples = 100;
+ double benchmarkConfidenceInterval = 0.95;
+ unsigned int benchmarkResamples = 100000;
+ std::chrono::milliseconds::rep benchmarkWarmupTime = 100;
+
+ Verbosity verbosity = Verbosity::Normal;
+ WarnAbout::What warnings = WarnAbout::Nothing;
+ ShowDurations::OrNot showDurations = ShowDurations::DefaultForReporter;
+ double minDuration = -1;
+ RunTests::InWhatOrder runOrder = RunTests::InDeclarationOrder;
+ UseColour::YesOrNo useColour = UseColour::Auto;
+ WaitForKeypress::When waitForKeypress = WaitForKeypress::Never;
+
+ std::string outputFilename;
+ std::string name;
+ std::string processName;
+#ifndef CATCH_CONFIG_DEFAULT_REPORTER
+#define CATCH_CONFIG_DEFAULT_REPORTER "console"
+#endif
+ std::string reporterName = CATCH_CONFIG_DEFAULT_REPORTER;
+#undef CATCH_CONFIG_DEFAULT_REPORTER
+
+ std::vector<std::string> testsOrTags;
+ std::vector<std::string> sectionsToRun;
+ };
+
+ class Config : public IConfig {
+ public:
+
+ Config() = default;
+ Config( ConfigData const& data );
+ virtual ~Config() = default;
+
+ std::string const& getFilename() const;
+
+ bool listTests() const;
+ bool listTestNamesOnly() const;
+ bool listTags() const;
+ bool listReporters() const;
+
+ std::string getProcessName() const;
+ std::string const& getReporterName() const;
+
+ std::vector<std::string> const& getTestsOrTags() const override;
+ std::vector<std::string> const& getSectionsToRun() const override;
+
+ TestSpec const& testSpec() const override;
+ bool hasTestFilters() const override;
+
+ bool showHelp() const;
+
+ // IConfig interface
+ bool allowThrows() const override;
+ std::ostream& stream() const override;
+ std::string name() const override;
+ bool includeSuccessfulResults() const override;
+ bool warnAboutMissingAssertions() const override;
+ bool warnAboutNoTests() const override;
+ ShowDurations::OrNot showDurations() const override;
+ double minDuration() const override;
+ RunTests::InWhatOrder runOrder() const override;
+ unsigned int rngSeed() const override;
+ UseColour::YesOrNo useColour() const override;
+ bool shouldDebugBreak() const override;
+ int abortAfter() const override;
+ bool showInvisibles() const override;
+ Verbosity verbosity() const override;
+ bool benchmarkNoAnalysis() const override;
+ int benchmarkSamples() const override;
+ double benchmarkConfidenceInterval() const override;
+ unsigned int benchmarkResamples() const override;
+ std::chrono::milliseconds benchmarkWarmupTime() const override;
+
+ private:
+
+ IStream const* openStream();
+ ConfigData m_data;
+
+ std::unique_ptr<IStream const> m_stream;
+ TestSpec m_testSpec;
+ bool m_hasTestFilters = false;
+ };
+
+} // end namespace Catch
+
+// end catch_config.hpp
+// start catch_assertionresult.h
+
+#include <string>
+
+namespace Catch {
+
+ struct AssertionResultData
+ {
+ AssertionResultData() = delete;
+
+ AssertionResultData( ResultWas::OfType _resultType, LazyExpression const& _lazyExpression );
+
+ std::string message;
+ mutable std::string reconstructedExpression;
+ LazyExpression lazyExpression;
+ ResultWas::OfType resultType;
+
+ std::string reconstructExpression() const;
+ };
+
+ class AssertionResult {
+ public:
+ AssertionResult() = delete;
+ AssertionResult( AssertionInfo const& info, AssertionResultData const& data );
+
+ bool isOk() const;
+ bool succeeded() const;
+ ResultWas::OfType getResultType() const;
+ bool hasExpression() const;
+ bool hasMessage() const;
+ std::string getExpression() const;
+ std::string getExpressionInMacro() const;
+ bool hasExpandedExpression() const;
+ std::string getExpandedExpression() const;
+ std::string getMessage() const;
+ SourceLineInfo getSourceInfo() const;
+ StringRef getTestMacroName() const;
+
+ //protected:
+ AssertionInfo m_info;
+ AssertionResultData m_resultData;
+ };
+
+} // end namespace Catch
+
+// end catch_assertionresult.h
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+// start catch_estimate.hpp
+
+ // Statistics estimates
+
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Duration>
+ struct Estimate {
+ Duration point;
+ Duration lower_bound;
+ Duration upper_bound;
+ double confidence_interval;
+
+ template <typename Duration2>
+ operator Estimate<Duration2>() const {
+ return { point, lower_bound, upper_bound, confidence_interval };
+ }
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_estimate.hpp
+// start catch_outlier_classification.hpp
+
+// Outlier information
+
+namespace Catch {
+ namespace Benchmark {
+ struct OutlierClassification {
+ int samples_seen = 0;
+ int low_severe = 0; // more than 3 times IQR below Q1
+ int low_mild = 0; // 1.5 to 3 times IQR below Q1
+ int high_mild = 0; // 1.5 to 3 times IQR above Q3
+ int high_severe = 0; // more than 3 times IQR above Q3
+
+ int total() const {
+ return low_severe + low_mild + high_mild + high_severe;
+ }
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_outlier_classification.hpp
+
+#include <iterator>
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+#include <string>
+#include <iosfwd>
+#include <map>
+#include <set>
+#include <memory>
+#include <algorithm>
+
+namespace Catch {
+
+ struct ReporterConfig {
+ explicit ReporterConfig( IConfigPtr const& _fullConfig );
+
+ ReporterConfig( IConfigPtr const& _fullConfig, std::ostream& _stream );
+
+ std::ostream& stream() const;
+ IConfigPtr fullConfig() const;
+
+ private:
+ std::ostream* m_stream;
+ IConfigPtr m_fullConfig;
+ };
+
+ struct ReporterPreferences {
+ bool shouldRedirectStdOut = false;
+ bool shouldReportAllAssertions = false;
+ };
+
+ template<typename T>
+ struct LazyStat : Option<T> {
+ LazyStat& operator=( T const& _value ) {
+ Option<T>::operator=( _value );
+ used = false;
+ return *this;
+ }
+ void reset() {
+ Option<T>::reset();
+ used = false;
+ }
+ bool used = false;
+ };
+
+ struct TestRunInfo {
+ TestRunInfo( std::string const& _name );
+ std::string name;
+ };
+ struct GroupInfo {
+ GroupInfo( std::string const& _name,
+ std::size_t _groupIndex,
+ std::size_t _groupsCount );
+
+ std::string name;
+ std::size_t groupIndex;
+ std::size_t groupsCounts;
+ };
+
+ struct AssertionStats {
+ AssertionStats( AssertionResult const& _assertionResult,
+ std::vector<MessageInfo> const& _infoMessages,
+ Totals const& _totals );
+
+ AssertionStats( AssertionStats const& ) = default;
+ AssertionStats( AssertionStats && ) = default;
+ AssertionStats& operator = ( AssertionStats const& ) = delete;
+ AssertionStats& operator = ( AssertionStats && ) = delete;
+ virtual ~AssertionStats();
+
+ AssertionResult assertionResult;
+ std::vector<MessageInfo> infoMessages;
+ Totals totals;
+ };
+
+ struct SectionStats {
+ SectionStats( SectionInfo const& _sectionInfo,
+ Counts const& _assertions,
+ double _durationInSeconds,
+ bool _missingAssertions );
+ SectionStats( SectionStats const& ) = default;
+ SectionStats( SectionStats && ) = default;
+ SectionStats& operator = ( SectionStats const& ) = default;
+ SectionStats& operator = ( SectionStats && ) = default;
+ virtual ~SectionStats();
+
+ SectionInfo sectionInfo;
+ Counts assertions;
+ double durationInSeconds;
+ bool missingAssertions;
+ };
+
+ struct TestCaseStats {
+ TestCaseStats( TestCaseInfo const& _testInfo,
+ Totals const& _totals,
+ std::string const& _stdOut,
+ std::string const& _stdErr,
+ bool _aborting );
+
+ TestCaseStats( TestCaseStats const& ) = default;
+ TestCaseStats( TestCaseStats && ) = default;
+ TestCaseStats& operator = ( TestCaseStats const& ) = default;
+ TestCaseStats& operator = ( TestCaseStats && ) = default;
+ virtual ~TestCaseStats();
+
+ TestCaseInfo testInfo;
+ Totals totals;
+ std::string stdOut;
+ std::string stdErr;
+ bool aborting;
+ };
+
+ struct TestGroupStats {
+ TestGroupStats( GroupInfo const& _groupInfo,
+ Totals const& _totals,
+ bool _aborting );
+ TestGroupStats( GroupInfo const& _groupInfo );
+
+ TestGroupStats( TestGroupStats const& ) = default;
+ TestGroupStats( TestGroupStats && ) = default;
+ TestGroupStats& operator = ( TestGroupStats const& ) = default;
+ TestGroupStats& operator = ( TestGroupStats && ) = default;
+ virtual ~TestGroupStats();
+
+ GroupInfo groupInfo;
+ Totals totals;
+ bool aborting;
+ };
+
+ struct TestRunStats {
+ TestRunStats( TestRunInfo const& _runInfo,
+ Totals const& _totals,
+ bool _aborting );
+
+ TestRunStats( TestRunStats const& ) = default;
+ TestRunStats( TestRunStats && ) = default;
+ TestRunStats& operator = ( TestRunStats const& ) = default;
+ TestRunStats& operator = ( TestRunStats && ) = default;
+ virtual ~TestRunStats();
+
+ TestRunInfo runInfo;
+ Totals totals;
+ bool aborting;
+ };
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ struct BenchmarkInfo {
+ std::string name;
+ double estimatedDuration;
+ int iterations;
+ int samples;
+ unsigned int resamples;
+ double clockResolution;
+ double clockCost;
+ };
+
+ template <class Duration>
+ struct BenchmarkStats {
+ BenchmarkInfo info;
+
+ std::vector<Duration> samples;
+ Benchmark::Estimate<Duration> mean;
+ Benchmark::Estimate<Duration> standardDeviation;
+ Benchmark::OutlierClassification outliers;
+ double outlierVariance;
+
+ template <typename Duration2>
+ operator BenchmarkStats<Duration2>() const {
+ std::vector<Duration2> samples2;
+ samples2.reserve(samples.size());
+ std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); });
+ return {
+ info,
+ std::move(samples2),
+ mean,
+ standardDeviation,
+ outliers,
+ outlierVariance,
+ };
+ }
+ };
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ struct IStreamingReporter {
+ virtual ~IStreamingReporter() = default;
+
+ // Implementing class must also provide the following static methods:
+ // static std::string getDescription();
+ // static std::set<Verbosity> getSupportedVerbosities()
+
+ virtual ReporterPreferences getPreferences() const = 0;
+
+ virtual void noMatchingTestCases( std::string const& spec ) = 0;
+
+ virtual void reportInvalidArguments(std::string const&) {}
+
+ virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0;
+ virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0;
+
+ virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0;
+ virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ virtual void benchmarkPreparing( std::string const& ) {}
+ virtual void benchmarkStarting( BenchmarkInfo const& ) {}
+ virtual void benchmarkEnded( BenchmarkStats<> const& ) {}
+ virtual void benchmarkFailed( std::string const& ) {}
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0;
+
+ // The return value indicates if the messages buffer should be cleared:
+ virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0;
+
+ virtual void sectionEnded( SectionStats const& sectionStats ) = 0;
+ virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0;
+ virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0;
+ virtual void testRunEnded( TestRunStats const& testRunStats ) = 0;
+
+ virtual void skipTest( TestCaseInfo const& testInfo ) = 0;
+
+ // Default empty implementation provided
+ virtual void fatalErrorEncountered( StringRef name );
+
+ virtual bool isMulti() const;
+ };
+ using IStreamingReporterPtr = std::unique_ptr<IStreamingReporter>;
+
+ struct IReporterFactory {
+ virtual ~IReporterFactory();
+ virtual IStreamingReporterPtr create( ReporterConfig const& config ) const = 0;
+ virtual std::string getDescription() const = 0;
+ };
+ using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>;
+
+ struct IReporterRegistry {
+ using FactoryMap = std::map<std::string, IReporterFactoryPtr>;
+ using Listeners = std::vector<IReporterFactoryPtr>;
+
+ virtual ~IReporterRegistry();
+ virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const = 0;
+ virtual FactoryMap const& getFactories() const = 0;
+ virtual Listeners const& getListeners() const = 0;
+ };
+
+} // end namespace Catch
+
+// end catch_interfaces_reporter.h
+#include <algorithm>
+#include <cstring>
+#include <cfloat>
+#include <cstdio>
+#include <cassert>
+#include <memory>
+#include <ostream>
+
+namespace Catch {
+ void prepareExpandedExpression(AssertionResult& result);
+
+ // Returns double formatted as %.3f (format expected on output)
+ std::string getFormattedDuration( double duration );
+
+ //! Should the reporter show
+ bool shouldShowDuration( IConfig const& config, double duration );
+
+ std::string serializeFilters( std::vector<std::string> const& container );
+
+ template<typename DerivedT>
+ struct StreamingReporterBase : IStreamingReporter {
+
+ StreamingReporterBase( ReporterConfig const& _config )
+ : m_config( _config.fullConfig() ),
+ stream( _config.stream() )
+ {
+ m_reporterPrefs.shouldRedirectStdOut = false;
+ if( !DerivedT::getSupportedVerbosities().count( m_config->verbosity() ) )
+ CATCH_ERROR( "Verbosity level not supported by this reporter" );
+ }
+
+ ReporterPreferences getPreferences() const override {
+ return m_reporterPrefs;
+ }
+
+ static std::set<Verbosity> getSupportedVerbosities() {
+ return { Verbosity::Normal };
+ }
+
+ ~StreamingReporterBase() override = default;
+
+ void noMatchingTestCases(std::string const&) override {}
+
+ void reportInvalidArguments(std::string const&) override {}
+
+ void testRunStarting(TestRunInfo const& _testRunInfo) override {
+ currentTestRunInfo = _testRunInfo;
+ }
+
+ void testGroupStarting(GroupInfo const& _groupInfo) override {
+ currentGroupInfo = _groupInfo;
+ }
+
+ void testCaseStarting(TestCaseInfo const& _testInfo) override {
+ currentTestCaseInfo = _testInfo;
+ }
+ void sectionStarting(SectionInfo const& _sectionInfo) override {
+ m_sectionStack.push_back(_sectionInfo);
+ }
+
+ void sectionEnded(SectionStats const& /* _sectionStats */) override {
+ m_sectionStack.pop_back();
+ }
+ void testCaseEnded(TestCaseStats const& /* _testCaseStats */) override {
+ currentTestCaseInfo.reset();
+ }
+ void testGroupEnded(TestGroupStats const& /* _testGroupStats */) override {
+ currentGroupInfo.reset();
+ }
+ void testRunEnded(TestRunStats const& /* _testRunStats */) override {
+ currentTestCaseInfo.reset();
+ currentGroupInfo.reset();
+ currentTestRunInfo.reset();
+ }
+
+ void skipTest(TestCaseInfo const&) override {
+ // Don't do anything with this by default.
+ // It can optionally be overridden in the derived class.
+ }
+
+ IConfigPtr m_config;
+ std::ostream& stream;
+
+ LazyStat<TestRunInfo> currentTestRunInfo;
+ LazyStat<GroupInfo> currentGroupInfo;
+ LazyStat<TestCaseInfo> currentTestCaseInfo;
+
+ std::vector<SectionInfo> m_sectionStack;
+ ReporterPreferences m_reporterPrefs;
+ };
+
+ template<typename DerivedT>
+ struct CumulativeReporterBase : IStreamingReporter {
+ template<typename T, typename ChildNodeT>
+ struct Node {
+ explicit Node( T const& _value ) : value( _value ) {}
+ virtual ~Node() {}
+
+ using ChildNodes = std::vector<std::shared_ptr<ChildNodeT>>;
+ T value;
+ ChildNodes children;
+ };
+ struct SectionNode {
+ explicit SectionNode(SectionStats const& _stats) : stats(_stats) {}
+ virtual ~SectionNode() = default;
+
+ bool operator == (SectionNode const& other) const {
+ return stats.sectionInfo.lineInfo == other.stats.sectionInfo.lineInfo;
+ }
+ bool operator == (std::shared_ptr<SectionNode> const& other) const {
+ return operator==(*other);
+ }
+
+ SectionStats stats;
+ using ChildSections = std::vector<std::shared_ptr<SectionNode>>;
+ using Assertions = std::vector<AssertionStats>;
+ ChildSections childSections;
+ Assertions assertions;
+ std::string stdOut;
+ std::string stdErr;
+ };
+
+ struct BySectionInfo {
+ BySectionInfo( SectionInfo const& other ) : m_other( other ) {}
+ BySectionInfo( BySectionInfo const& other ) : m_other( other.m_other ) {}
+ bool operator() (std::shared_ptr<SectionNode> const& node) const {
+ return ((node->stats.sectionInfo.name == m_other.name) &&
+ (node->stats.sectionInfo.lineInfo == m_other.lineInfo));
+ }
+ void operator=(BySectionInfo const&) = delete;
+
+ private:
+ SectionInfo const& m_other;
+ };
+
+ using TestCaseNode = Node<TestCaseStats, SectionNode>;
+ using TestGroupNode = Node<TestGroupStats, TestCaseNode>;
+ using TestRunNode = Node<TestRunStats, TestGroupNode>;
+
+ CumulativeReporterBase( ReporterConfig const& _config )
+ : m_config( _config.fullConfig() ),
+ stream( _config.stream() )
+ {
+ m_reporterPrefs.shouldRedirectStdOut = false;
+ if( !DerivedT::getSupportedVerbosities().count( m_config->verbosity() ) )
+ CATCH_ERROR( "Verbosity level not supported by this reporter" );
+ }
+ ~CumulativeReporterBase() override = default;
+
+ ReporterPreferences getPreferences() const override {
+ return m_reporterPrefs;
+ }
+
+ static std::set<Verbosity> getSupportedVerbosities() {
+ return { Verbosity::Normal };
+ }
+
+ void testRunStarting( TestRunInfo const& ) override {}
+ void testGroupStarting( GroupInfo const& ) override {}
+
+ void testCaseStarting( TestCaseInfo const& ) override {}
+
+ void sectionStarting( SectionInfo const& sectionInfo ) override {
+ SectionStats incompleteStats( sectionInfo, Counts(), 0, false );
+ std::shared_ptr<SectionNode> node;
+ if( m_sectionStack.empty() ) {
+ if( !m_rootSection )
+ m_rootSection = std::make_shared<SectionNode>( incompleteStats );
+ node = m_rootSection;
+ }
+ else {
+ SectionNode& parentNode = *m_sectionStack.back();
+ auto it =
+ std::find_if( parentNode.childSections.begin(),
+ parentNode.childSections.end(),
+ BySectionInfo( sectionInfo ) );
+ if( it == parentNode.childSections.end() ) {
+ node = std::make_shared<SectionNode>( incompleteStats );
+ parentNode.childSections.push_back( node );
+ }
+ else
+ node = *it;
+ }
+ m_sectionStack.push_back( node );
+ m_deepestSection = std::move(node);
+ }
+
+ void assertionStarting(AssertionInfo const&) override {}
+
+ bool assertionEnded(AssertionStats const& assertionStats) override {
+ assert(!m_sectionStack.empty());
+ // AssertionResult holds a pointer to a temporary DecomposedExpression,
+ // which getExpandedExpression() calls to build the expression string.
+ // Our section stack copy of the assertionResult will likely outlive the
+ // temporary, so it must be expanded or discarded now to avoid calling
+ // a destroyed object later.
+ prepareExpandedExpression(const_cast<AssertionResult&>( assertionStats.assertionResult ) );
+ SectionNode& sectionNode = *m_sectionStack.back();
+ sectionNode.assertions.push_back(assertionStats);
+ return true;
+ }
+ void sectionEnded(SectionStats const& sectionStats) override {
+ assert(!m_sectionStack.empty());
+ SectionNode& node = *m_sectionStack.back();
+ node.stats = sectionStats;
+ m_sectionStack.pop_back();
+ }
+ void testCaseEnded(TestCaseStats const& testCaseStats) override {
+ auto node = std::make_shared<TestCaseNode>(testCaseStats);
+ assert(m_sectionStack.size() == 0);
+ node->children.push_back(m_rootSection);
+ m_testCases.push_back(node);
+ m_rootSection.reset();
+
+ assert(m_deepestSection);
+ m_deepestSection->stdOut = testCaseStats.stdOut;
+ m_deepestSection->stdErr = testCaseStats.stdErr;
+ }
+ void testGroupEnded(TestGroupStats const& testGroupStats) override {
+ auto node = std::make_shared<TestGroupNode>(testGroupStats);
+ node->children.swap(m_testCases);
+ m_testGroups.push_back(node);
+ }
+ void testRunEnded(TestRunStats const& testRunStats) override {
+ auto node = std::make_shared<TestRunNode>(testRunStats);
+ node->children.swap(m_testGroups);
+ m_testRuns.push_back(node);
+ testRunEndedCumulative();
+ }
+ virtual void testRunEndedCumulative() = 0;
+
+ void skipTest(TestCaseInfo const&) override {}
+
+ IConfigPtr m_config;
+ std::ostream& stream;
+ std::vector<AssertionStats> m_assertions;
+ std::vector<std::vector<std::shared_ptr<SectionNode>>> m_sections;
+ std::vector<std::shared_ptr<TestCaseNode>> m_testCases;
+ std::vector<std::shared_ptr<TestGroupNode>> m_testGroups;
+
+ std::vector<std::shared_ptr<TestRunNode>> m_testRuns;
+
+ std::shared_ptr<SectionNode> m_rootSection;
+ std::shared_ptr<SectionNode> m_deepestSection;
+ std::vector<std::shared_ptr<SectionNode>> m_sectionStack;
+ ReporterPreferences m_reporterPrefs;
+ };
+
+ template<char C>
+ char const* getLineOfChars() {
+ static char line[CATCH_CONFIG_CONSOLE_WIDTH] = {0};
+ if( !*line ) {
+ std::memset( line, C, CATCH_CONFIG_CONSOLE_WIDTH-1 );
+ line[CATCH_CONFIG_CONSOLE_WIDTH-1] = 0;
+ }
+ return line;
+ }
+
+ struct TestEventListenerBase : StreamingReporterBase<TestEventListenerBase> {
+ TestEventListenerBase( ReporterConfig const& _config );
+
+ static std::set<Verbosity> getSupportedVerbosities();
+
+ void assertionStarting(AssertionInfo const&) override;
+ bool assertionEnded(AssertionStats const&) override;
+ };
+
+} // end namespace Catch
+
+// end catch_reporter_bases.hpp
+// start catch_console_colour.h
+
+namespace Catch {
+
+ struct Colour {
+ enum Code {
+ None = 0,
+
+ White,
+ Red,
+ Green,
+ Blue,
+ Cyan,
+ Yellow,
+ Grey,
+
+ Bright = 0x10,
+
+ BrightRed = Bright | Red,
+ BrightGreen = Bright | Green,
+ LightGrey = Bright | Grey,
+ BrightWhite = Bright | White,
+ BrightYellow = Bright | Yellow,
+
+ // By intention
+ FileName = LightGrey,
+ Warning = BrightYellow,
+ ResultError = BrightRed,
+ ResultSuccess = BrightGreen,
+ ResultExpectedFailure = Warning,
+
+ Error = BrightRed,
+ Success = Green,
+
+ OriginalExpression = Cyan,
+ ReconstructedExpression = BrightYellow,
+
+ SecondaryText = LightGrey,
+ Headers = White
+ };
+
+ // Use constructed object for RAII guard
+ Colour( Code _colourCode );
+ Colour( Colour&& other ) noexcept;
+ Colour& operator=( Colour&& other ) noexcept;
+ ~Colour();
+
+ // Use static method for one-shot changes
+ static void use( Code _colourCode );
+
+ private:
+ bool m_moved = false;
+ };
+
+ std::ostream& operator << ( std::ostream& os, Colour const& );
+
+} // end namespace Catch
+
+// end catch_console_colour.h
+// start catch_reporter_registrars.hpp
+
+
+namespace Catch {
+
+ template<typename T>
+ class ReporterRegistrar {
+
+ class ReporterFactory : public IReporterFactory {
+
+ IStreamingReporterPtr create( ReporterConfig const& config ) const override {
+ return std::unique_ptr<T>( new T( config ) );
+ }
+
+ std::string getDescription() const override {
+ return T::getDescription();
+ }
+ };
+
+ public:
+
+ explicit ReporterRegistrar( std::string const& name ) {
+ getMutableRegistryHub().registerReporter( name, std::make_shared<ReporterFactory>() );
+ }
+ };
+
+ template<typename T>
+ class ListenerRegistrar {
+
+ class ListenerFactory : public IReporterFactory {
+
+ IStreamingReporterPtr create( ReporterConfig const& config ) const override {
+ return std::unique_ptr<T>( new T( config ) );
+ }
+ std::string getDescription() const override {
+ return std::string();
+ }
+ };
+
+ public:
+
+ ListenerRegistrar() {
+ getMutableRegistryHub().registerListener( std::make_shared<ListenerFactory>() );
+ }
+ };
+}
+
+#if !defined(CATCH_CONFIG_DISABLE)
+
+#define CATCH_REGISTER_REPORTER( name, reporterType ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+#define CATCH_REGISTER_LISTENER( listenerType ) \
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+ namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+#else // CATCH_CONFIG_DISABLE
+
+#define CATCH_REGISTER_REPORTER(name, reporterType)
+#define CATCH_REGISTER_LISTENER(listenerType)
+
+#endif // CATCH_CONFIG_DISABLE
+
+// end catch_reporter_registrars.hpp
+// Allow users to base their work off existing reporters
+// start catch_reporter_compact.h
+
+namespace Catch {
+
+ struct CompactReporter : StreamingReporterBase<CompactReporter> {
+
+ using StreamingReporterBase::StreamingReporterBase;
+
+ ~CompactReporter() override;
+
+ static std::string getDescription();
+
+ void noMatchingTestCases(std::string const& spec) override;
+
+ void assertionStarting(AssertionInfo const&) override;
+
+ bool assertionEnded(AssertionStats const& _assertionStats) override;
+
+ void sectionEnded(SectionStats const& _sectionStats) override;
+
+ void testRunEnded(TestRunStats const& _testRunStats) override;
+
+ };
+
+} // end namespace Catch
+
+// end catch_reporter_compact.h
+// start catch_reporter_console.h
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch
+ // Note that 4062 (not all labels are handled
+ // and default is missing) is enabled
+#endif
+
+namespace Catch {
+ // Fwd decls
+ struct SummaryColumn;
+ class TablePrinter;
+
+ struct ConsoleReporter : StreamingReporterBase<ConsoleReporter> {
+ std::unique_ptr<TablePrinter> m_tablePrinter;
+
+ ConsoleReporter(ReporterConfig const& config);
+ ~ConsoleReporter() override;
+ static std::string getDescription();
+
+ void noMatchingTestCases(std::string const& spec) override;
+
+ void reportInvalidArguments(std::string const&arg) override;
+
+ void assertionStarting(AssertionInfo const&) override;
+
+ bool assertionEnded(AssertionStats const& _assertionStats) override;
+
+ void sectionStarting(SectionInfo const& _sectionInfo) override;
+ void sectionEnded(SectionStats const& _sectionStats) override;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void benchmarkPreparing(std::string const& name) override;
+ void benchmarkStarting(BenchmarkInfo const& info) override;
+ void benchmarkEnded(BenchmarkStats<> const& stats) override;
+ void benchmarkFailed(std::string const& error) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ void testCaseEnded(TestCaseStats const& _testCaseStats) override;
+ void testGroupEnded(TestGroupStats const& _testGroupStats) override;
+ void testRunEnded(TestRunStats const& _testRunStats) override;
+ void testRunStarting(TestRunInfo const& _testRunInfo) override;
+ private:
+
+ void lazyPrint();
+
+ void lazyPrintWithoutClosingBenchmarkTable();
+ void lazyPrintRunInfo();
+ void lazyPrintGroupInfo();
+ void printTestCaseAndSectionHeader();
+
+ void printClosedHeader(std::string const& _name);
+ void printOpenHeader(std::string const& _name);
+
+ // if string has a : in first line will set indent to follow it on
+ // subsequent lines
+ void printHeaderString(std::string const& _string, std::size_t indent = 0);
+
+ void printTotals(Totals const& totals);
+ void printSummaryRow(std::string const& label, std::vector<SummaryColumn> const& cols, std::size_t row);
+
+ void printTotalsDivider(Totals const& totals);
+ void printSummaryDivider();
+ void printTestFilters();
+
+ private:
+ bool m_headerPrinted = false;
+ };
+
+} // end namespace Catch
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+// end catch_reporter_console.h
+// start catch_reporter_junit.h
+
+// start catch_xmlwriter.h
+
+#include <vector>
+
+namespace Catch {
+ enum class XmlFormatting {
+ None = 0x00,
+ Indent = 0x01,
+ Newline = 0x02,
+ };
+
+ XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs);
+ XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs);
+
+ class XmlEncode {
+ public:
+ enum ForWhat { ForTextNodes, ForAttributes };
+
+ XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes );
+
+ void encodeTo( std::ostream& os ) const;
+
+ friend std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode );
+
+ private:
+ std::string m_str;
+ ForWhat m_forWhat;
+ };
+
+ class XmlWriter {
+ public:
+
+ class ScopedElement {
+ public:
+ ScopedElement( XmlWriter* writer, XmlFormatting fmt );
+
+ ScopedElement( ScopedElement&& other ) noexcept;
+ ScopedElement& operator=( ScopedElement&& other ) noexcept;
+
+ ~ScopedElement();
+
+ ScopedElement& writeText( std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent );
+
+ template<typename T>
+ ScopedElement& writeAttribute( std::string const& name, T const& attribute ) {
+ m_writer->writeAttribute( name, attribute );
+ return *this;
+ }
+
+ private:
+ mutable XmlWriter* m_writer = nullptr;
+ XmlFormatting m_fmt;
+ };
+
+ XmlWriter( std::ostream& os = Catch::cout() );
+ ~XmlWriter();
+
+ XmlWriter( XmlWriter const& ) = delete;
+ XmlWriter& operator=( XmlWriter const& ) = delete;
+
+ XmlWriter& startElement( std::string const& name, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+ ScopedElement scopedElement( std::string const& name, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+ XmlWriter& endElement(XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+ XmlWriter& writeAttribute( std::string const& name, std::string const& attribute );
+
+ XmlWriter& writeAttribute( std::string const& name, bool attribute );
+
+ template<typename T>
+ XmlWriter& writeAttribute( std::string const& name, T const& attribute ) {
+ ReusableStringStream rss;
+ rss << attribute;
+ return writeAttribute( name, rss.str() );
+ }
+
+ XmlWriter& writeText( std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+ XmlWriter& writeComment(std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+ void writeStylesheetRef( std::string const& url );
+
+ XmlWriter& writeBlankLine();
+
+ void ensureTagClosed();
+
+ private:
+
+ void applyFormatting(XmlFormatting fmt);
+
+ void writeDeclaration();
+
+ void newlineIfNecessary();
+
+ bool m_tagIsOpen = false;
+ bool m_needsNewline = false;
+ std::vector<std::string> m_tags;
+ std::string m_indent;
+ std::ostream& m_os;
+ };
+
+}
+
+// end catch_xmlwriter.h
+namespace Catch {
+
+ class JunitReporter : public CumulativeReporterBase<JunitReporter> {
+ public:
+ JunitReporter(ReporterConfig const& _config);
+
+ ~JunitReporter() override;
+
+ static std::string getDescription();
+
+ void noMatchingTestCases(std::string const& /*spec*/) override;
+
+ void testRunStarting(TestRunInfo const& runInfo) override;
+
+ void testGroupStarting(GroupInfo const& groupInfo) override;
+
+ void testCaseStarting(TestCaseInfo const& testCaseInfo) override;
+ bool assertionEnded(AssertionStats const& assertionStats) override;
+
+ void testCaseEnded(TestCaseStats const& testCaseStats) override;
+
+ void testGroupEnded(TestGroupStats const& testGroupStats) override;
+
+ void testRunEndedCumulative() override;
+
+ void writeGroup(TestGroupNode const& groupNode, double suiteTime);
+
+ void writeTestCase(TestCaseNode const& testCaseNode);
+
+ void writeSection( std::string const& className,
+ std::string const& rootName,
+ SectionNode const& sectionNode,
+ bool testOkToFail );
+
+ void writeAssertions(SectionNode const& sectionNode);
+ void writeAssertion(AssertionStats const& stats);
+
+ XmlWriter xml;
+ Timer suiteTimer;
+ std::string stdOutForSuite;
+ std::string stdErrForSuite;
+ unsigned int unexpectedExceptions = 0;
+ bool m_okToFail = false;
+ };
+
+} // end namespace Catch
+
+// end catch_reporter_junit.h
+// start catch_reporter_xml.h
+
+namespace Catch {
+ class XmlReporter : public StreamingReporterBase<XmlReporter> {
+ public:
+ XmlReporter(ReporterConfig const& _config);
+
+ ~XmlReporter() override;
+
+ static std::string getDescription();
+
+ virtual std::string getStylesheetRef() const;
+
+ void writeSourceInfo(SourceLineInfo const& sourceInfo);
+
+ public: // StreamingReporterBase
+
+ void noMatchingTestCases(std::string const& s) override;
+
+ void testRunStarting(TestRunInfo const& testInfo) override;
+
+ void testGroupStarting(GroupInfo const& groupInfo) override;
+
+ void testCaseStarting(TestCaseInfo const& testInfo) override;
+
+ void sectionStarting(SectionInfo const& sectionInfo) override;
+
+ void assertionStarting(AssertionInfo const&) override;
+
+ bool assertionEnded(AssertionStats const& assertionStats) override;
+
+ void sectionEnded(SectionStats const& sectionStats) override;
+
+ void testCaseEnded(TestCaseStats const& testCaseStats) override;
+
+ void testGroupEnded(TestGroupStats const& testGroupStats) override;
+
+ void testRunEnded(TestRunStats const& testRunStats) override;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void benchmarkPreparing(std::string const& name) override;
+ void benchmarkStarting(BenchmarkInfo const&) override;
+ void benchmarkEnded(BenchmarkStats<> const&) override;
+ void benchmarkFailed(std::string const&) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ private:
+ Timer m_testCaseTimer;
+ XmlWriter m_xml;
+ int m_sectionDepth = 0;
+ };
+
+} // end namespace Catch
+
+// end catch_reporter_xml.h
+
+// end catch_external_interfaces.h
+#endif
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+// start catch_benchmarking_all.hpp
+
+// A proxy header that includes all of the benchmarking headers to allow
+// concise include of the benchmarking features. You should prefer the
+// individual includes in standard use.
+
+// start catch_benchmark.hpp
+
+ // Benchmark
+
+// start catch_chronometer.hpp
+
+// User-facing chronometer
+
+
+// start catch_clock.hpp
+
+// Clocks
+
+
+#include <chrono>
+#include <ratio>
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Clock>
+ using ClockDuration = typename Clock::duration;
+ template <typename Clock>
+ using FloatDuration = std::chrono::duration<double, typename Clock::period>;
+
+ template <typename Clock>
+ using TimePoint = typename Clock::time_point;
+
+ using default_clock = std::chrono::steady_clock;
+
+ template <typename Clock>
+ struct now {
+ TimePoint<Clock> operator()() const {
+ return Clock::now();
+ }
+ };
+
+ using fp_seconds = std::chrono::duration<double, std::ratio<1>>;
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_clock.hpp
+// start catch_optimizer.hpp
+
+ // Hinting the optimizer
+
+
+#if defined(_MSC_VER)
+# include <atomic> // atomic_thread_fence
+#endif
+
+namespace Catch {
+ namespace Benchmark {
+#if defined(__GNUC__) || defined(__clang__)
+ template <typename T>
+ inline void keep_memory(T* p) {
+ asm volatile("" : : "g"(p) : "memory");
+ }
+ inline void keep_memory() {
+ asm volatile("" : : : "memory");
+ }
+
+ namespace Detail {
+ inline void optimizer_barrier() { keep_memory(); }
+ } // namespace Detail
+#elif defined(_MSC_VER)
+
+#pragma optimize("", off)
+ template <typename T>
+ inline void keep_memory(T* p) {
+ // thanks @milleniumbug
+ *reinterpret_cast<char volatile*>(p) = *reinterpret_cast<char const volatile*>(p);
+ }
+ // TODO equivalent keep_memory()
+#pragma optimize("", on)
+
+ namespace Detail {
+ inline void optimizer_barrier() {
+ std::atomic_thread_fence(std::memory_order_seq_cst);
+ }
+ } // namespace Detail
+
+#endif
+
+ template <typename T>
+ inline void deoptimize_value(T&& x) {
+ keep_memory(&x);
+ }
+
+ template <typename Fn, typename... Args>
+ inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename std::enable_if<!std::is_same<void, decltype(fn(args...))>::value>::type {
+ deoptimize_value(std::forward<Fn>(fn) (std::forward<Args...>(args...)));
+ }
+
+ template <typename Fn, typename... Args>
+ inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename std::enable_if<std::is_same<void, decltype(fn(args...))>::value>::type {
+ std::forward<Fn>(fn) (std::forward<Args...>(args...));
+ }
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_optimizer.hpp
+// start catch_complete_invoke.hpp
+
+// Invoke with a special case for void
+
+
+#include <type_traits>
+#include <utility>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename T>
+ struct CompleteType { using type = T; };
+ template <>
+ struct CompleteType<void> { struct type {}; };
+
+ template <typename T>
+ using CompleteType_t = typename CompleteType<T>::type;
+
+ template <typename Result>
+ struct CompleteInvoker {
+ template <typename Fun, typename... Args>
+ static Result invoke(Fun&& fun, Args&&... args) {
+ return std::forward<Fun>(fun)(std::forward<Args>(args)...);
+ }
+ };
+ template <>
+ struct CompleteInvoker<void> {
+ template <typename Fun, typename... Args>
+ static CompleteType_t<void> invoke(Fun&& fun, Args&&... args) {
+ std::forward<Fun>(fun)(std::forward<Args>(args)...);
+ return {};
+ }
+ };
+
+ // invoke and not return void :(
+ template <typename Fun, typename... Args>
+ CompleteType_t<FunctionReturnType<Fun, Args...>> complete_invoke(Fun&& fun, Args&&... args) {
+ return CompleteInvoker<FunctionReturnType<Fun, Args...>>::invoke(std::forward<Fun>(fun), std::forward<Args>(args)...);
+ }
+
+ const std::string benchmarkErrorMsg = "a benchmark failed to run successfully";
+ } // namespace Detail
+
+ template <typename Fun>
+ Detail::CompleteType_t<FunctionReturnType<Fun>> user_code(Fun&& fun) {
+ CATCH_TRY{
+ return Detail::complete_invoke(std::forward<Fun>(fun));
+ } CATCH_CATCH_ALL{
+ getResultCapture().benchmarkFailed(translateActiveException());
+ CATCH_RUNTIME_ERROR(Detail::benchmarkErrorMsg);
+ }
+ }
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_complete_invoke.hpp
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ struct ChronometerConcept {
+ virtual void start() = 0;
+ virtual void finish() = 0;
+ virtual ~ChronometerConcept() = default;
+ };
+ template <typename Clock>
+ struct ChronometerModel final : public ChronometerConcept {
+ void start() override { started = Clock::now(); }
+ void finish() override { finished = Clock::now(); }
+
+ ClockDuration<Clock> elapsed() const { return finished - started; }
+
+ TimePoint<Clock> started;
+ TimePoint<Clock> finished;
+ };
+ } // namespace Detail
+
+ struct Chronometer {
+ public:
+ template <typename Fun>
+ void measure(Fun&& fun) { measure(std::forward<Fun>(fun), is_callable<Fun(int)>()); }
+
+ int runs() const { return k; }
+
+ Chronometer(Detail::ChronometerConcept& meter, int k)
+ : impl(&meter)
+ , k(k) {}
+
+ private:
+ template <typename Fun>
+ void measure(Fun&& fun, std::false_type) {
+ measure([&fun](int) { return fun(); }, std::true_type());
+ }
+
+ template <typename Fun>
+ void measure(Fun&& fun, std::true_type) {
+ Detail::optimizer_barrier();
+ impl->start();
+ for (int i = 0; i < k; ++i) invoke_deoptimized(fun, i);
+ impl->finish();
+ Detail::optimizer_barrier();
+ }
+
+ Detail::ChronometerConcept* impl;
+ int k;
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_chronometer.hpp
+// start catch_environment.hpp
+
+// Environment information
+
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Duration>
+ struct EnvironmentEstimate {
+ Duration mean;
+ OutlierClassification outliers;
+
+ template <typename Duration2>
+ operator EnvironmentEstimate<Duration2>() const {
+ return { mean, outliers };
+ }
+ };
+ template <typename Clock>
+ struct Environment {
+ using clock_type = Clock;
+ EnvironmentEstimate<FloatDuration<Clock>> clock_resolution;
+ EnvironmentEstimate<FloatDuration<Clock>> clock_cost;
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_environment.hpp
+// start catch_execution_plan.hpp
+
+ // Execution plan
+
+
+// start catch_benchmark_function.hpp
+
+ // Dumb std::function implementation for consistent call overhead
+
+
+#include <cassert>
+#include <type_traits>
+#include <utility>
+#include <memory>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename T>
+ using Decay = typename std::decay<T>::type;
+ template <typename T, typename U>
+ struct is_related
+ : std::is_same<Decay<T>, Decay<U>> {};
+
+ /// We need to reinvent std::function because every piece of code that might add overhead
+ /// in a measurement context needs to have consistent performance characteristics so that we
+ /// can account for it in the measurement.
+ /// Implementations of std::function with optimizations that aren't always applicable, like
+ /// small buffer optimizations, are not uncommon.
+ /// This is effectively an implementation of std::function without any such optimizations;
+ /// it may be slow, but it is consistently slow.
+ struct BenchmarkFunction {
+ private:
+ struct callable {
+ virtual void call(Chronometer meter) const = 0;
+ virtual callable* clone() const = 0;
+ virtual ~callable() = default;
+ };
+ template <typename Fun>
+ struct model : public callable {
+ model(Fun&& fun) : fun(std::move(fun)) {}
+ model(Fun const& fun) : fun(fun) {}
+
+ model<Fun>* clone() const override { return new model<Fun>(*this); }
+
+ void call(Chronometer meter) const override {
+ call(meter, is_callable<Fun(Chronometer)>());
+ }
+ void call(Chronometer meter, std::true_type) const {
+ fun(meter);
+ }
+ void call(Chronometer meter, std::false_type) const {
+ meter.measure(fun);
+ }
+
+ Fun fun;
+ };
+
+ struct do_nothing { void operator()() const {} };
+
+ template <typename T>
+ BenchmarkFunction(model<T>* c) : f(c) {}
+
+ public:
+ BenchmarkFunction()
+ : f(new model<do_nothing>{ {} }) {}
+
+ template <typename Fun,
+ typename std::enable_if<!is_related<Fun, BenchmarkFunction>::value, int>::type = 0>
+ BenchmarkFunction(Fun&& fun)
+ : f(new model<typename std::decay<Fun>::type>(std::forward<Fun>(fun))) {}
+
+ BenchmarkFunction(BenchmarkFunction&& that)
+ : f(std::move(that.f)) {}
+
+ BenchmarkFunction(BenchmarkFunction const& that)
+ : f(that.f->clone()) {}
+
+ BenchmarkFunction& operator=(BenchmarkFunction&& that) {
+ f = std::move(that.f);
+ return *this;
+ }
+
+ BenchmarkFunction& operator=(BenchmarkFunction const& that) {
+ f.reset(that.f->clone());
+ return *this;
+ }
+
+ void operator()(Chronometer meter) const { f->call(meter); }
+
+ private:
+ std::unique_ptr<callable> f;
+ };
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_benchmark_function.hpp
+// start catch_repeat.hpp
+
+// repeat algorithm
+
+
+#include <type_traits>
+#include <utility>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename Fun>
+ struct repeater {
+ void operator()(int k) const {
+ for (int i = 0; i < k; ++i) {
+ fun();
+ }
+ }
+ Fun fun;
+ };
+ template <typename Fun>
+ repeater<typename std::decay<Fun>::type> repeat(Fun&& fun) {
+ return { std::forward<Fun>(fun) };
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_repeat.hpp
+// start catch_run_for_at_least.hpp
+
+// Run a function for a minimum amount of time
+
+
+// start catch_measure.hpp
+
+// Measure
+
+
+// start catch_timing.hpp
+
+// Timing
+
+
+#include <tuple>
+#include <type_traits>
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Duration, typename Result>
+ struct Timing {
+ Duration elapsed;
+ Result result;
+ int iterations;
+ };
+ template <typename Clock, typename Func, typename... Args>
+ using TimingOf = Timing<ClockDuration<Clock>, Detail::CompleteType_t<FunctionReturnType<Func, Args...>>>;
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_timing.hpp
+#include <utility>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename Clock, typename Fun, typename... Args>
+ TimingOf<Clock, Fun, Args...> measure(Fun&& fun, Args&&... args) {
+ auto start = Clock::now();
+ auto&& r = Detail::complete_invoke(fun, std::forward<Args>(args)...);
+ auto end = Clock::now();
+ auto delta = end - start;
+ return { delta, std::forward<decltype(r)>(r), 1 };
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_measure.hpp
+#include <utility>
+#include <type_traits>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename Clock, typename Fun>
+ TimingOf<Clock, Fun, int> measure_one(Fun&& fun, int iters, std::false_type) {
+ return Detail::measure<Clock>(fun, iters);
+ }
+ template <typename Clock, typename Fun>
+ TimingOf<Clock, Fun, Chronometer> measure_one(Fun&& fun, int iters, std::true_type) {
+ Detail::ChronometerModel<Clock> meter;
+ auto&& result = Detail::complete_invoke(fun, Chronometer(meter, iters));
+
+ return { meter.elapsed(), std::move(result), iters };
+ }
+
+ template <typename Clock, typename Fun>
+ using run_for_at_least_argument_t = typename std::conditional<is_callable<Fun(Chronometer)>::value, Chronometer, int>::type;
+
+ struct optimized_away_error : std::exception {
+ const char* what() const noexcept override {
+ return "could not measure benchmark, maybe it was optimized away";
+ }
+ };
+
+ template <typename Clock, typename Fun>
+ TimingOf<Clock, Fun, run_for_at_least_argument_t<Clock, Fun>> run_for_at_least(ClockDuration<Clock> how_long, int seed, Fun&& fun) {
+ auto iters = seed;
+ while (iters < (1 << 30)) {
+ auto&& Timing = measure_one<Clock>(fun, iters, is_callable<Fun(Chronometer)>());
+
+ if (Timing.elapsed >= how_long) {
+ return { Timing.elapsed, std::move(Timing.result), iters };
+ }
+ iters *= 2;
+ }
+ Catch::throw_exception(optimized_away_error{});
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_run_for_at_least.hpp
+#include <algorithm>
+#include <iterator>
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Duration>
+ struct ExecutionPlan {
+ int iterations_per_sample;
+ Duration estimated_duration;
+ Detail::BenchmarkFunction benchmark;
+ Duration warmup_time;
+ int warmup_iterations;
+
+ template <typename Duration2>
+ operator ExecutionPlan<Duration2>() const {
+ return { iterations_per_sample, estimated_duration, benchmark, warmup_time, warmup_iterations };
+ }
+
+ template <typename Clock>
+ std::vector<FloatDuration<Clock>> run(const IConfig &cfg, Environment<FloatDuration<Clock>> env) const {
+ // warmup a bit
+ Detail::run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(warmup_time), warmup_iterations, Detail::repeat(now<Clock>{}));
+
+ std::vector<FloatDuration<Clock>> times;
+ times.reserve(cfg.benchmarkSamples());
+ std::generate_n(std::back_inserter(times), cfg.benchmarkSamples(), [this, env] {
+ Detail::ChronometerModel<Clock> model;
+ this->benchmark(Chronometer(model, iterations_per_sample));
+ auto sample_time = model.elapsed() - env.clock_cost.mean;
+ if (sample_time < FloatDuration<Clock>::zero()) sample_time = FloatDuration<Clock>::zero();
+ return sample_time / iterations_per_sample;
+ });
+ return times;
+ }
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_execution_plan.hpp
+// start catch_estimate_clock.hpp
+
+ // Environment measurement
+
+
+// start catch_stats.hpp
+
+// Statistical analysis tools
+
+
+#include <algorithm>
+#include <functional>
+#include <vector>
+#include <iterator>
+#include <numeric>
+#include <tuple>
+#include <cmath>
+#include <utility>
+#include <cstddef>
+#include <random>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ using sample = std::vector<double>;
+
+ double weighted_average_quantile(int k, int q, std::vector<double>::iterator first, std::vector<double>::iterator last);
+
+ template <typename Iterator>
+ OutlierClassification classify_outliers(Iterator first, Iterator last) {
+ std::vector<double> copy(first, last);
+
+ auto q1 = weighted_average_quantile(1, 4, copy.begin(), copy.end());
+ auto q3 = weighted_average_quantile(3, 4, copy.begin(), copy.end());
+ auto iqr = q3 - q1;
+ auto los = q1 - (iqr * 3.);
+ auto lom = q1 - (iqr * 1.5);
+ auto him = q3 + (iqr * 1.5);
+ auto his = q3 + (iqr * 3.);
+
+ OutlierClassification o;
+ for (; first != last; ++first) {
+ auto&& t = *first;
+ if (t < los) ++o.low_severe;
+ else if (t < lom) ++o.low_mild;
+ else if (t > his) ++o.high_severe;
+ else if (t > him) ++o.high_mild;
+ ++o.samples_seen;
+ }
+ return o;
+ }
+
+ template <typename Iterator>
+ double mean(Iterator first, Iterator last) {
+ auto count = last - first;
+ double sum = std::accumulate(first, last, 0.);
+ return sum / count;
+ }
+
+ template <typename URng, typename Iterator, typename Estimator>
+ sample resample(URng& rng, int resamples, Iterator first, Iterator last, Estimator& estimator) {
+ auto n = last - first;
+ std::uniform_int_distribution<decltype(n)> dist(0, n - 1);
+
+ sample out;
+ out.reserve(resamples);
+ std::generate_n(std::back_inserter(out), resamples, [n, first, &estimator, &dist, &rng] {
+ std::vector<double> resampled;
+ resampled.reserve(n);
+ std::generate_n(std::back_inserter(resampled), n, [first, &dist, &rng] { return first[dist(rng)]; });
+ return estimator(resampled.begin(), resampled.end());
+ });
+ std::sort(out.begin(), out.end());
+ return out;
+ }
+
+ template <typename Estimator, typename Iterator>
+ sample jackknife(Estimator&& estimator, Iterator first, Iterator last) {
+ auto n = last - first;
+ auto second = std::next(first);
+ sample results;
+ results.reserve(n);
+
+ for (auto it = first; it != last; ++it) {
+ std::iter_swap(it, first);
+ results.push_back(estimator(second, last));
+ }
+
+ return results;
+ }
+
+ inline double normal_cdf(double x) {
+ return std::erfc(-x / std::sqrt(2.0)) / 2.0;
+ }
+
+ double erfc_inv(double x);
+
+ double normal_quantile(double p);
+
+ template <typename Iterator, typename Estimator>
+ Estimate<double> bootstrap(double confidence_level, Iterator first, Iterator last, sample const& resample, Estimator&& estimator) {
+ auto n_samples = last - first;
+
+ double point = estimator(first, last);
+ // Degenerate case with a single sample
+ if (n_samples == 1) return { point, point, point, confidence_level };
+
+ sample jack = jackknife(estimator, first, last);
+ double jack_mean = mean(jack.begin(), jack.end());
+ double sum_squares, sum_cubes;
+ std::tie(sum_squares, sum_cubes) = std::accumulate(jack.begin(), jack.end(), std::make_pair(0., 0.), [jack_mean](std::pair<double, double> sqcb, double x) -> std::pair<double, double> {
+ auto d = jack_mean - x;
+ auto d2 = d * d;
+ auto d3 = d2 * d;
+ return { sqcb.first + d2, sqcb.second + d3 };
+ });
+
+ double accel = sum_cubes / (6 * std::pow(sum_squares, 1.5));
+ int n = static_cast<int>(resample.size());
+ double prob_n = std::count_if(resample.begin(), resample.end(), [point](double x) { return x < point; }) / (double)n;
+ // degenerate case with uniform samples
+ if (prob_n == 0) return { point, point, point, confidence_level };
+
+ double bias = normal_quantile(prob_n);
+ double z1 = normal_quantile((1. - confidence_level) / 2.);
+
+ auto cumn = [n](double x) -> int {
+ return std::lround(normal_cdf(x) * n); };
+ auto a = [bias, accel](double b) { return bias + b / (1. - accel * b); };
+ double b1 = bias + z1;
+ double b2 = bias - z1;
+ double a1 = a(b1);
+ double a2 = a(b2);
+ auto lo = (std::max)(cumn(a1), 0);
+ auto hi = (std::min)(cumn(a2), n - 1);
+
+ return { point, resample[lo], resample[hi], confidence_level };
+ }
+
+ double outlier_variance(Estimate<double> mean, Estimate<double> stddev, int n);
+
+ struct bootstrap_analysis {
+ Estimate<double> mean;
+ Estimate<double> standard_deviation;
+ double outlier_variance;
+ };
+
+ bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector<double>::iterator first, std::vector<double>::iterator last);
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_stats.hpp
+#include <algorithm>
+#include <iterator>
+#include <tuple>
+#include <vector>
+#include <cmath>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename Clock>
+ std::vector<double> resolution(int k) {
+ std::vector<TimePoint<Clock>> times;
+ times.reserve(k + 1);
+ std::generate_n(std::back_inserter(times), k + 1, now<Clock>{});
+
+ std::vector<double> deltas;
+ deltas.reserve(k);
+ std::transform(std::next(times.begin()), times.end(), times.begin(),
+ std::back_inserter(deltas),
+ [](TimePoint<Clock> a, TimePoint<Clock> b) { return static_cast<double>((a - b).count()); });
+
+ return deltas;
+ }
+
+ const auto warmup_iterations = 10000;
+ const auto warmup_time = std::chrono::milliseconds(100);
+ const auto minimum_ticks = 1000;
+ const auto warmup_seed = 10000;
+ const auto clock_resolution_estimation_time = std::chrono::milliseconds(500);
+ const auto clock_cost_estimation_time_limit = std::chrono::seconds(1);
+ const auto clock_cost_estimation_tick_limit = 100000;
+ const auto clock_cost_estimation_time = std::chrono::milliseconds(10);
+ const auto clock_cost_estimation_iterations = 10000;
+
+ template <typename Clock>
+ int warmup() {
+ return run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(warmup_time), warmup_seed, &resolution<Clock>)
+ .iterations;
+ }
+ template <typename Clock>
+ EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_resolution(int iterations) {
+ auto r = run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(clock_resolution_estimation_time), iterations, &resolution<Clock>)
+ .result;
+ return {
+ FloatDuration<Clock>(mean(r.begin(), r.end())),
+ classify_outliers(r.begin(), r.end()),
+ };
+ }
+ template <typename Clock>
+ EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_cost(FloatDuration<Clock> resolution) {
+ auto time_limit = (std::min)(
+ resolution * clock_cost_estimation_tick_limit,
+ FloatDuration<Clock>(clock_cost_estimation_time_limit));
+ auto time_clock = [](int k) {
+ return Detail::measure<Clock>([k] {
+ for (int i = 0; i < k; ++i) {
+ volatile auto ignored = Clock::now();
+ (void)ignored;
+ }
+ }).elapsed;
+ };
+ time_clock(1);
+ int iters = clock_cost_estimation_iterations;
+ auto&& r = run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(clock_cost_estimation_time), iters, time_clock);
+ std::vector<double> times;
+ int nsamples = static_cast<int>(std::ceil(time_limit / r.elapsed));
+ times.reserve(nsamples);
+ std::generate_n(std::back_inserter(times), nsamples, [time_clock, &r] {
+ return static_cast<double>((time_clock(r.iterations) / r.iterations).count());
+ });
+ return {
+ FloatDuration<Clock>(mean(times.begin(), times.end())),
+ classify_outliers(times.begin(), times.end()),
+ };
+ }
+
+ template <typename Clock>
+ Environment<FloatDuration<Clock>> measure_environment() {
+ static Environment<FloatDuration<Clock>>* env = nullptr;
+ if (env) {
+ return *env;
+ }
+
+ auto iters = Detail::warmup<Clock>();
+ auto resolution = Detail::estimate_clock_resolution<Clock>(iters);
+ auto cost = Detail::estimate_clock_cost<Clock>(resolution.mean);
+
+ env = new Environment<FloatDuration<Clock>>{ resolution, cost };
+ return *env;
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_estimate_clock.hpp
+// start catch_analyse.hpp
+
+ // Run and analyse one benchmark
+
+
+// start catch_sample_analysis.hpp
+
+// Benchmark results
+
+
+#include <algorithm>
+#include <vector>
+#include <string>
+#include <iterator>
+
+namespace Catch {
+ namespace Benchmark {
+ template <typename Duration>
+ struct SampleAnalysis {
+ std::vector<Duration> samples;
+ Estimate<Duration> mean;
+ Estimate<Duration> standard_deviation;
+ OutlierClassification outliers;
+ double outlier_variance;
+
+ template <typename Duration2>
+ operator SampleAnalysis<Duration2>() const {
+ std::vector<Duration2> samples2;
+ samples2.reserve(samples.size());
+ std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); });
+ return {
+ std::move(samples2),
+ mean,
+ standard_deviation,
+ outliers,
+ outlier_variance,
+ };
+ }
+ };
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_sample_analysis.hpp
+#include <algorithm>
+#include <iterator>
+#include <vector>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename Duration, typename Iterator>
+ SampleAnalysis<Duration> analyse(const IConfig &cfg, Environment<Duration>, Iterator first, Iterator last) {
+ if (!cfg.benchmarkNoAnalysis()) {
+ std::vector<double> samples;
+ samples.reserve(last - first);
+ std::transform(first, last, std::back_inserter(samples), [](Duration d) { return d.count(); });
+
+ auto analysis = Catch::Benchmark::Detail::analyse_samples(cfg.benchmarkConfidenceInterval(), cfg.benchmarkResamples(), samples.begin(), samples.end());
+ auto outliers = Catch::Benchmark::Detail::classify_outliers(samples.begin(), samples.end());
+
+ auto wrap_estimate = [](Estimate<double> e) {
+ return Estimate<Duration> {
+ Duration(e.point),
+ Duration(e.lower_bound),
+ Duration(e.upper_bound),
+ e.confidence_interval,
+ };
+ };
+ std::vector<Duration> samples2;
+ samples2.reserve(samples.size());
+ std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](double d) { return Duration(d); });
+ return {
+ std::move(samples2),
+ wrap_estimate(analysis.mean),
+ wrap_estimate(analysis.standard_deviation),
+ outliers,
+ analysis.outlier_variance,
+ };
+ } else {
+ std::vector<Duration> samples;
+ samples.reserve(last - first);
+
+ Duration mean = Duration(0);
+ int i = 0;
+ for (auto it = first; it < last; ++it, ++i) {
+ samples.push_back(Duration(*it));
+ mean += Duration(*it);
+ }
+ mean /= i;
+
+ return {
+ std::move(samples),
+ Estimate<Duration>{mean, mean, mean, 0.0},
+ Estimate<Duration>{Duration(0), Duration(0), Duration(0), 0.0},
+ OutlierClassification{},
+ 0.0
+ };
+ }
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+// end catch_analyse.hpp
+#include <algorithm>
+#include <functional>
+#include <string>
+#include <vector>
+#include <cmath>
+
+namespace Catch {
+ namespace Benchmark {
+ struct Benchmark {
+ Benchmark(std::string &&name)
+ : name(std::move(name)) {}
+
+ template <class FUN>
+ Benchmark(std::string &&name, FUN &&func)
+ : fun(std::move(func)), name(std::move(name)) {}
+
+ template <typename Clock>
+ ExecutionPlan<FloatDuration<Clock>> prepare(const IConfig &cfg, Environment<FloatDuration<Clock>> env) const {
+ auto min_time = env.clock_resolution.mean * Detail::minimum_ticks;
+ auto run_time = std::max(min_time, std::chrono::duration_cast<decltype(min_time)>(cfg.benchmarkWarmupTime()));
+ auto&& test = Detail::run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(run_time), 1, fun);
+ int new_iters = static_cast<int>(std::ceil(min_time * test.iterations / test.elapsed));
+ return { new_iters, test.elapsed / test.iterations * new_iters * cfg.benchmarkSamples(), fun, std::chrono::duration_cast<FloatDuration<Clock>>(cfg.benchmarkWarmupTime()), Detail::warmup_iterations };
+ }
+
+ template <typename Clock = default_clock>
+ void run() {
+ IConfigPtr cfg = getCurrentContext().getConfig();
+
+ auto env = Detail::measure_environment<Clock>();
+
+ getResultCapture().benchmarkPreparing(name);
+ CATCH_TRY{
+ auto plan = user_code([&] {
+ return prepare<Clock>(*cfg, env);
+ });
+
+ BenchmarkInfo info {
+ name,
+ plan.estimated_duration.count(),
+ plan.iterations_per_sample,
+ cfg->benchmarkSamples(),
+ cfg->benchmarkResamples(),
+ env.clock_resolution.mean.count(),
+ env.clock_cost.mean.count()
+ };
+
+ getResultCapture().benchmarkStarting(info);
+
+ auto samples = user_code([&] {
+ return plan.template run<Clock>(*cfg, env);
+ });
+
+ auto analysis = Detail::analyse(*cfg, env, samples.begin(), samples.end());
+ BenchmarkStats<FloatDuration<Clock>> stats{ info, analysis.samples, analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance };
+ getResultCapture().benchmarkEnded(stats);
+
+ } CATCH_CATCH_ALL{
+ if (translateActiveException() != Detail::benchmarkErrorMsg) // benchmark errors have been reported, otherwise rethrow.
+ std::rethrow_exception(std::current_exception());
+ }
+ }
+
+ // sets lambda to be used in fun *and* executes benchmark!
+ template <typename Fun,
+ typename std::enable_if<!Detail::is_related<Fun, Benchmark>::value, int>::type = 0>
+ Benchmark & operator=(Fun func) {
+ fun = Detail::BenchmarkFunction(func);
+ run();
+ return *this;
+ }
+
+ explicit operator bool() {
+ return true;
+ }
+
+ private:
+ Detail::BenchmarkFunction fun;
+ std::string name;
+ };
+ }
+} // namespace Catch
+
+#define INTERNAL_CATCH_GET_1_ARG(arg1, arg2, ...) arg1
+#define INTERNAL_CATCH_GET_2_ARG(arg1, arg2, ...) arg2
+
+#define INTERNAL_CATCH_BENCHMARK(BenchmarkName, name, benchmarkIndex)\
+ if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \
+ BenchmarkName = [&](int benchmarkIndex)
+
+#define INTERNAL_CATCH_BENCHMARK_ADVANCED(BenchmarkName, name)\
+ if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \
+ BenchmarkName = [&]
+
+// end catch_benchmark.hpp
+// start catch_constructor.hpp
+
+// Constructor and destructor helpers
+
+
+#include <type_traits>
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+ template <typename T, bool Destruct>
+ struct ObjectStorage
+ {
+ using TStorage = typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type;
+
+ ObjectStorage() : data() {}
+
+ ObjectStorage(const ObjectStorage& other)
+ {
+ new(&data) T(other.stored_object());
+ }
+
+ ObjectStorage(ObjectStorage&& other)
+ {
+ new(&data) T(std::move(other.stored_object()));
+ }
+
+ ~ObjectStorage() { destruct_on_exit<T>(); }
+
+ template <typename... Args>
+ void construct(Args&&... args)
+ {
+ new (&data) T(std::forward<Args>(args)...);
+ }
+
+ template <bool AllowManualDestruction = !Destruct>
+ typename std::enable_if<AllowManualDestruction>::type destruct()
+ {
+ stored_object().~T();
+ }
+
+ private:
+ // If this is a constructor benchmark, destruct the underlying object
+ template <typename U>
+ void destruct_on_exit(typename std::enable_if<Destruct, U>::type* = 0) { destruct<true>(); }
+ // Otherwise, don't
+ template <typename U>
+ void destruct_on_exit(typename std::enable_if<!Destruct, U>::type* = 0) { }
+
+ T& stored_object() {
+ return *static_cast<T*>(static_cast<void*>(&data));
+ }
+
+ T const& stored_object() const {
+ return *static_cast<T*>(static_cast<void*>(&data));
+ }
+
+ TStorage data;
+ };
+ }
+
+ template <typename T>
+ using storage_for = Detail::ObjectStorage<T, true>;
+
+ template <typename T>
+ using destructable_object = Detail::ObjectStorage<T, false>;
+ }
+}
+
+// end catch_constructor.hpp
+// end catch_benchmarking_all.hpp
+#endif
+
+#endif // ! CATCH_CONFIG_IMPL_ONLY
+
+#ifdef CATCH_IMPL
+// start catch_impl.hpp
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wweak-vtables"
+#endif
+
+// Keep these here for external reporters
+// start catch_test_case_tracker.h
+
+#include <string>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+namespace TestCaseTracking {
+
+ struct NameAndLocation {
+ std::string name;
+ SourceLineInfo location;
+
+ NameAndLocation( std::string const& _name, SourceLineInfo const& _location );
+ friend bool operator==(NameAndLocation const& lhs, NameAndLocation const& rhs) {
+ return lhs.name == rhs.name
+ && lhs.location == rhs.location;
+ }
+ };
+
+ class ITracker;
+
+ using ITrackerPtr = std::shared_ptr<ITracker>;
+
+ class ITracker {
+ NameAndLocation m_nameAndLocation;
+
+ public:
+ ITracker(NameAndLocation const& nameAndLoc) :
+ m_nameAndLocation(nameAndLoc)
+ {}
+
+ // static queries
+ NameAndLocation const& nameAndLocation() const {
+ return m_nameAndLocation;
+ }
+
+ virtual ~ITracker();
+
+ // dynamic queries
+ virtual bool isComplete() const = 0; // Successfully completed or failed
+ virtual bool isSuccessfullyCompleted() const = 0;
+ virtual bool isOpen() const = 0; // Started but not complete
+ virtual bool hasChildren() const = 0;
+ virtual bool hasStarted() const = 0;
+
+ virtual ITracker& parent() = 0;
+
+ // actions
+ virtual void close() = 0; // Successfully complete
+ virtual void fail() = 0;
+ virtual void markAsNeedingAnotherRun() = 0;
+
+ virtual void addChild( ITrackerPtr const& child ) = 0;
+ virtual ITrackerPtr findChild( NameAndLocation const& nameAndLocation ) = 0;
+ virtual void openChild() = 0;
+
+ // Debug/ checking
+ virtual bool isSectionTracker() const = 0;
+ virtual bool isGeneratorTracker() const = 0;
+ };
+
+ class TrackerContext {
+
+ enum RunState {
+ NotStarted,
+ Executing,
+ CompletedCycle
+ };
+
+ ITrackerPtr m_rootTracker;
+ ITracker* m_currentTracker = nullptr;
+ RunState m_runState = NotStarted;
+
+ public:
+
+ ITracker& startRun();
+ void endRun();
+
+ void startCycle();
+ void completeCycle();
+
+ bool completedCycle() const;
+ ITracker& currentTracker();
+ void setCurrentTracker( ITracker* tracker );
+ };
+
+ class TrackerBase : public ITracker {
+ protected:
+ enum CycleState {
+ NotStarted,
+ Executing,
+ ExecutingChildren,
+ NeedsAnotherRun,
+ CompletedSuccessfully,
+ Failed
+ };
+
+ using Children = std::vector<ITrackerPtr>;
+ TrackerContext& m_ctx;
+ ITracker* m_parent;
+ Children m_children;
+ CycleState m_runState = NotStarted;
+
+ public:
+ TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent );
+
+ bool isComplete() const override;
+ bool isSuccessfullyCompleted() const override;
+ bool isOpen() const override;
+ bool hasChildren() const override;
+ bool hasStarted() const override {
+ return m_runState != NotStarted;
+ }
+
+ void addChild( ITrackerPtr const& child ) override;
+
+ ITrackerPtr findChild( NameAndLocation const& nameAndLocation ) override;
+ ITracker& parent() override;
+
+ void openChild() override;
+
+ bool isSectionTracker() const override;
+ bool isGeneratorTracker() const override;
+
+ void open();
+
+ void close() override;
+ void fail() override;
+ void markAsNeedingAnotherRun() override;
+
+ private:
+ void moveToParent();
+ void moveToThis();
+ };
+
+ class SectionTracker : public TrackerBase {
+ std::vector<std::string> m_filters;
+ std::string m_trimmed_name;
+ public:
+ SectionTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent );
+
+ bool isSectionTracker() const override;
+
+ bool isComplete() const override;
+
+ static SectionTracker& acquire( TrackerContext& ctx, NameAndLocation const& nameAndLocation );
+
+ void tryOpen();
+
+ void addInitialFilters( std::vector<std::string> const& filters );
+ void addNextFilters( std::vector<std::string> const& filters );
+ //! Returns filters active in this tracker
+ std::vector<std::string> const& getFilters() const;
+ //! Returns whitespace-trimmed name of the tracked section
+ std::string const& trimmedName() const;
+ };
+
+} // namespace TestCaseTracking
+
+using TestCaseTracking::ITracker;
+using TestCaseTracking::TrackerContext;
+using TestCaseTracking::SectionTracker;
+
+} // namespace Catch
+
+// end catch_test_case_tracker.h
+
+// start catch_leak_detector.h
+
+namespace Catch {
+
+ struct LeakDetector {
+ LeakDetector();
+ ~LeakDetector();
+ };
+
+}
+// end catch_leak_detector.h
+// Cpp files will be included in the single-header file here
+// start catch_stats.cpp
+
+// Statistical analysis tools
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+
+#include <cassert>
+#include <random>
+
+#if defined(CATCH_CONFIG_USE_ASYNC)
+#include <future>
+#endif
+
+namespace {
+ double erf_inv(double x) {
+ // Code accompanying the article "Approximating the erfinv function" in GPU Computing Gems, Volume 2
+ double w, p;
+
+ w = -log((1.0 - x) * (1.0 + x));
+
+ if (w < 6.250000) {
+ w = w - 3.125000;
+ p = -3.6444120640178196996e-21;
+ p = -1.685059138182016589e-19 + p * w;
+ p = 1.2858480715256400167e-18 + p * w;
+ p = 1.115787767802518096e-17 + p * w;
+ p = -1.333171662854620906e-16 + p * w;
+ p = 2.0972767875968561637e-17 + p * w;
+ p = 6.6376381343583238325e-15 + p * w;
+ p = -4.0545662729752068639e-14 + p * w;
+ p = -8.1519341976054721522e-14 + p * w;
+ p = 2.6335093153082322977e-12 + p * w;
+ p = -1.2975133253453532498e-11 + p * w;
+ p = -5.4154120542946279317e-11 + p * w;
+ p = 1.051212273321532285e-09 + p * w;
+ p = -4.1126339803469836976e-09 + p * w;
+ p = -2.9070369957882005086e-08 + p * w;
+ p = 4.2347877827932403518e-07 + p * w;
+ p = -1.3654692000834678645e-06 + p * w;
+ p = -1.3882523362786468719e-05 + p * w;
+ p = 0.0001867342080340571352 + p * w;
+ p = -0.00074070253416626697512 + p * w;
+ p = -0.0060336708714301490533 + p * w;
+ p = 0.24015818242558961693 + p * w;
+ p = 1.6536545626831027356 + p * w;
+ } else if (w < 16.000000) {
+ w = sqrt(w) - 3.250000;
+ p = 2.2137376921775787049e-09;
+ p = 9.0756561938885390979e-08 + p * w;
+ p = -2.7517406297064545428e-07 + p * w;
+ p = 1.8239629214389227755e-08 + p * w;
+ p = 1.5027403968909827627e-06 + p * w;
+ p = -4.013867526981545969e-06 + p * w;
+ p = 2.9234449089955446044e-06 + p * w;
+ p = 1.2475304481671778723e-05 + p * w;
+ p = -4.7318229009055733981e-05 + p * w;
+ p = 6.8284851459573175448e-05 + p * w;
+ p = 2.4031110387097893999e-05 + p * w;
+ p = -0.0003550375203628474796 + p * w;
+ p = 0.00095328937973738049703 + p * w;
+ p = -0.0016882755560235047313 + p * w;
+ p = 0.0024914420961078508066 + p * w;
+ p = -0.0037512085075692412107 + p * w;
+ p = 0.005370914553590063617 + p * w;
+ p = 1.0052589676941592334 + p * w;
+ p = 3.0838856104922207635 + p * w;
+ } else {
+ w = sqrt(w) - 5.000000;
+ p = -2.7109920616438573243e-11;
+ p = -2.5556418169965252055e-10 + p * w;
+ p = 1.5076572693500548083e-09 + p * w;
+ p = -3.7894654401267369937e-09 + p * w;
+ p = 7.6157012080783393804e-09 + p * w;
+ p = -1.4960026627149240478e-08 + p * w;
+ p = 2.9147953450901080826e-08 + p * w;
+ p = -6.7711997758452339498e-08 + p * w;
+ p = 2.2900482228026654717e-07 + p * w;
+ p = -9.9298272942317002539e-07 + p * w;
+ p = 4.5260625972231537039e-06 + p * w;
+ p = -1.9681778105531670567e-05 + p * w;
+ p = 7.5995277030017761139e-05 + p * w;
+ p = -0.00021503011930044477347 + p * w;
+ p = -0.00013871931833623122026 + p * w;
+ p = 1.0103004648645343977 + p * w;
+ p = 4.8499064014085844221 + p * w;
+ }
+ return p * x;
+ }
+
+ double standard_deviation(std::vector<double>::iterator first, std::vector<double>::iterator last) {
+ auto m = Catch::Benchmark::Detail::mean(first, last);
+ double variance = std::accumulate(first, last, 0., [m](double a, double b) {
+ double diff = b - m;
+ return a + diff * diff;
+ }) / (last - first);
+ return std::sqrt(variance);
+ }
+
+}
+
+namespace Catch {
+ namespace Benchmark {
+ namespace Detail {
+
+ double weighted_average_quantile(int k, int q, std::vector<double>::iterator first, std::vector<double>::iterator last) {
+ auto count = last - first;
+ double idx = (count - 1) * k / static_cast<double>(q);
+ int j = static_cast<int>(idx);
+ double g = idx - j;
+ std::nth_element(first, first + j, last);
+ auto xj = first[j];
+ if (g == 0) return xj;
+
+ auto xj1 = *std::min_element(first + (j + 1), last);
+ return xj + g * (xj1 - xj);
+ }
+
+ double erfc_inv(double x) {
+ return erf_inv(1.0 - x);
+ }
+
+ double normal_quantile(double p) {
+ static const double ROOT_TWO = std::sqrt(2.0);
+
+ double result = 0.0;
+ assert(p >= 0 && p <= 1);
+ if (p < 0 || p > 1) {
+ return result;
+ }
+
+ result = -erfc_inv(2.0 * p);
+ // result *= normal distribution standard deviation (1.0) * sqrt(2)
+ result *= /*sd * */ ROOT_TWO;
+ // result += normal disttribution mean (0)
+ return result;
+ }
+
+ double outlier_variance(Estimate<double> mean, Estimate<double> stddev, int n) {
+ double sb = stddev.point;
+ double mn = mean.point / n;
+ double mg_min = mn / 2.;
+ double sg = (std::min)(mg_min / 4., sb / std::sqrt(n));
+ double sg2 = sg * sg;
+ double sb2 = sb * sb;
+
+ auto c_max = [n, mn, sb2, sg2](double x) -> double {
+ double k = mn - x;
+ double d = k * k;
+ double nd = n * d;
+ double k0 = -n * nd;
+ double k1 = sb2 - n * sg2 + nd;
+ double det = k1 * k1 - 4 * sg2 * k0;
+ return (int)(-2. * k0 / (k1 + std::sqrt(det)));
+ };
+
+ auto var_out = [n, sb2, sg2](double c) {
+ double nc = n - c;
+ return (nc / n) * (sb2 - nc * sg2);
+ };
+
+ return (std::min)(var_out(1), var_out((std::min)(c_max(0.), c_max(mg_min)))) / sb2;
+ }
+
+ bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector<double>::iterator first, std::vector<double>::iterator last) {
+ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
+ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
+ static std::random_device entropy;
+ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+ auto n = static_cast<int>(last - first); // seriously, one can't use integral types without hell in C++
+
+ auto mean = &Detail::mean<std::vector<double>::iterator>;
+ auto stddev = &standard_deviation;
+
+#if defined(CATCH_CONFIG_USE_ASYNC)
+ auto Estimate = [=](double(*f)(std::vector<double>::iterator, std::vector<double>::iterator)) {
+ auto seed = entropy();
+ return std::async(std::launch::async, [=] {
+ std::mt19937 rng(seed);
+ auto resampled = resample(rng, n_resamples, first, last, f);
+ return bootstrap(confidence_level, first, last, resampled, f);
+ });
+ };
+
+ auto mean_future = Estimate(mean);
+ auto stddev_future = Estimate(stddev);
+
+ auto mean_estimate = mean_future.get();
+ auto stddev_estimate = stddev_future.get();
+#else
+ auto Estimate = [=](double(*f)(std::vector<double>::iterator, std::vector<double>::iterator)) {
+ auto seed = entropy();
+ std::mt19937 rng(seed);
+ auto resampled = resample(rng, n_resamples, first, last, f);
+ return bootstrap(confidence_level, first, last, resampled, f);
+ };
+
+ auto mean_estimate = Estimate(mean);
+ auto stddev_estimate = Estimate(stddev);
+#endif // CATCH_USE_ASYNC
+
+ double outlier_variance = Detail::outlier_variance(mean_estimate, stddev_estimate, n);
+
+ return { mean_estimate, stddev_estimate, outlier_variance };
+ }
+ } // namespace Detail
+ } // namespace Benchmark
+} // namespace Catch
+
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+// end catch_stats.cpp
+// start catch_approx.cpp
+
+#include <cmath>
+#include <limits>
+
+namespace {
+
+// Performs equivalent check of std::fabs(lhs - rhs) <= margin
+// But without the subtraction to allow for INFINITY in comparison
+bool marginComparison(double lhs, double rhs, double margin) {
+ return (lhs + margin >= rhs) && (rhs + margin >= lhs);
+}
+
+}
+
+namespace Catch {
+namespace Detail {
+
+ Approx::Approx ( double value )
+ : m_epsilon( std::numeric_limits<float>::epsilon()*100 ),
+ m_margin( 0.0 ),
+ m_scale( 0.0 ),
+ m_value( value )
+ {}
+
+ Approx Approx::custom() {
+ return Approx( 0 );
+ }
+
+ Approx Approx::operator-() const {
+ auto temp(*this);
+ temp.m_value = -temp.m_value;
+ return temp;
+ }
+
+ std::string Approx::toString() const {
+ ReusableStringStream rss;
+ rss << "Approx( " << ::Catch::Detail::stringify( m_value ) << " )";
+ return rss.str();
+ }
+
+ bool Approx::equalityComparisonImpl(const double other) const {
+ // First try with fixed margin, then compute margin based on epsilon, scale and Approx's value
+ // Thanks to Richard Harris for his help refining the scaled margin value
+ return marginComparison(m_value, other, m_margin)
+ || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(std::isinf(m_value)? 0 : m_value)));
+ }
+
+ void Approx::setMargin(double newMargin) {
+ CATCH_ENFORCE(newMargin >= 0,
+ "Invalid Approx::margin: " << newMargin << '.'
+ << " Approx::Margin has to be non-negative.");
+ m_margin = newMargin;
+ }
+
+ void Approx::setEpsilon(double newEpsilon) {
+ CATCH_ENFORCE(newEpsilon >= 0 && newEpsilon <= 1.0,
+ "Invalid Approx::epsilon: " << newEpsilon << '.'
+ << " Approx::epsilon has to be in [0, 1]");
+ m_epsilon = newEpsilon;
+ }
+
+} // end namespace Detail
+
+namespace literals {
+ Detail::Approx operator "" _a(long double val) {
+ return Detail::Approx(val);
+ }
+ Detail::Approx operator "" _a(unsigned long long val) {
+ return Detail::Approx(val);
+ }
+} // end namespace literals
+
+std::string StringMaker<Catch::Detail::Approx>::convert(Catch::Detail::Approx const& value) {
+ return value.toString();
+}
+
+} // end namespace Catch
+// end catch_approx.cpp
+// start catch_assertionhandler.cpp
+
+// start catch_debugger.h
+
+namespace Catch {
+ bool isDebuggerActive();
+}
+
+#ifdef CATCH_PLATFORM_MAC
+
+ #if defined(__i386__) || defined(__x86_64__)
+ #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */
+ #elif defined(__aarch64__)
+ #define CATCH_TRAP() __asm__(".inst 0xd4200000")
+ #endif
+
+#elif defined(CATCH_PLATFORM_IPHONE)
+
+ // use inline assembler
+ #if defined(__i386__) || defined(__x86_64__)
+ #define CATCH_TRAP() __asm__("int $3")
+ #elif defined(__aarch64__)
+ #define CATCH_TRAP() __asm__(".inst 0xd4200000")
+ #elif defined(__arm__) && !defined(__thumb__)
+ #define CATCH_TRAP() __asm__(".inst 0xe7f001f0")
+ #elif defined(__arm__) && defined(__thumb__)
+ #define CATCH_TRAP() __asm__(".inst 0xde01")
+ #endif
+
+#elif defined(CATCH_PLATFORM_LINUX)
+ // If we can use inline assembler, do it because this allows us to break
+ // directly at the location of the failing check instead of breaking inside
+ // raise() called from it, i.e. one stack frame below.
+ #if defined(__GNUC__) && (defined(__i386) || defined(__x86_64))
+ #define CATCH_TRAP() asm volatile ("int $3") /* NOLINT */
+ #else // Fall back to the generic way.
+ #include <signal.h>
+
+ #define CATCH_TRAP() raise(SIGTRAP)
+ #endif
+#elif defined(_MSC_VER)
+ #define CATCH_TRAP() __debugbreak()
+#elif defined(__MINGW32__)
+ extern "C" __declspec(dllimport) void __stdcall DebugBreak();
+ #define CATCH_TRAP() DebugBreak()
+#endif
+
+#ifndef CATCH_BREAK_INTO_DEBUGGER
+ #ifdef CATCH_TRAP
+ #define CATCH_BREAK_INTO_DEBUGGER() []{ if( Catch::isDebuggerActive() ) { CATCH_TRAP(); } }()
+ #else
+ #define CATCH_BREAK_INTO_DEBUGGER() []{}()
+ #endif
+#endif
+
+// end catch_debugger.h
+// start catch_run_context.h
+
+// start catch_fatal_condition.h
+
+#include <cassert>
+
+namespace Catch {
+
+ // Wrapper for platform-specific fatal error (signals/SEH) handlers
+ //
+ // Tries to be cooperative with other handlers, and not step over
+ // other handlers. This means that unknown structured exceptions
+ // are passed on, previous signal handlers are called, and so on.
+ //
+ // Can only be instantiated once, and assumes that once a signal
+ // is caught, the binary will end up terminating. Thus, there
+ class FatalConditionHandler {
+ bool m_started = false;
+
+ // Install/disengage implementation for specific platform.
+ // Should be if-defed to work on current platform, can assume
+ // engage-disengage 1:1 pairing.
+ void engage_platform();
+ void disengage_platform();
+ public:
+ // Should also have platform-specific implementations as needed
+ FatalConditionHandler();
+ ~FatalConditionHandler();
+
+ void engage() {
+ assert(!m_started && "Handler cannot be installed twice.");
+ m_started = true;
+ engage_platform();
+ }
+
+ void disengage() {
+ assert(m_started && "Handler cannot be uninstalled without being installed first");
+ m_started = false;
+ disengage_platform();
+ }
+ };
+
+ //! Simple RAII guard for (dis)engaging the FatalConditionHandler
+ class FatalConditionHandlerGuard {
+ FatalConditionHandler* m_handler;
+ public:
+ FatalConditionHandlerGuard(FatalConditionHandler* handler):
+ m_handler(handler) {
+ m_handler->engage();
+ }
+ ~FatalConditionHandlerGuard() {
+ m_handler->disengage();
+ }
+ };
+
+} // end namespace Catch
+
+// end catch_fatal_condition.h
+#include <string>
+
+namespace Catch {
+
+ struct IMutableContext;
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ class RunContext : public IResultCapture, public IRunner {
+
+ public:
+ RunContext( RunContext const& ) = delete;
+ RunContext& operator =( RunContext const& ) = delete;
+
+ explicit RunContext( IConfigPtr const& _config, IStreamingReporterPtr&& reporter );
+
+ ~RunContext() override;
+
+ void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount );
+ void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount );
+
+ Totals runTest(TestCase const& testCase);
+
+ IConfigPtr config() const;
+ IStreamingReporter& reporter() const;
+
+ public: // IResultCapture
+
+ // Assertion handlers
+ void handleExpr
+ ( AssertionInfo const& info,
+ ITransientExpression const& expr,
+ AssertionReaction& reaction ) override;
+ void handleMessage
+ ( AssertionInfo const& info,
+ ResultWas::OfType resultType,
+ StringRef const& message,
+ AssertionReaction& reaction ) override;
+ void handleUnexpectedExceptionNotThrown
+ ( AssertionInfo const& info,
+ AssertionReaction& reaction ) override;
+ void handleUnexpectedInflightException
+ ( AssertionInfo const& info,
+ std::string const& message,
+ AssertionReaction& reaction ) override;
+ void handleIncomplete
+ ( AssertionInfo const& info ) override;
+ void handleNonExpr
+ ( AssertionInfo const &info,
+ ResultWas::OfType resultType,
+ AssertionReaction &reaction ) override;
+
+ bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) override;
+
+ void sectionEnded( SectionEndInfo const& endInfo ) override;
+ void sectionEndedEarly( SectionEndInfo const& endInfo ) override;
+
+ auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& override;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void benchmarkPreparing( std::string const& name ) override;
+ void benchmarkStarting( BenchmarkInfo const& info ) override;
+ void benchmarkEnded( BenchmarkStats<> const& stats ) override;
+ void benchmarkFailed( std::string const& error ) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ void pushScopedMessage( MessageInfo const& message ) override;
+ void popScopedMessage( MessageInfo const& message ) override;
+
+ void emplaceUnscopedMessage( MessageBuilder const& builder ) override;
+
+ std::string getCurrentTestName() const override;
+
+ const AssertionResult* getLastResult() const override;
+
+ void exceptionEarlyReported() override;
+
+ void handleFatalErrorCondition( StringRef message ) override;
+
+ bool lastAssertionPassed() override;
+
+ void assertionPassed() override;
+
+ public:
+ // !TBD We need to do this another way!
+ bool aborting() const final;
+
+ private:
+
+ void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr );
+ void invokeActiveTestCase();
+
+ void resetAssertionInfo();
+ bool testForMissingAssertions( Counts& assertions );
+
+ void assertionEnded( AssertionResult const& result );
+ void reportExpr
+ ( AssertionInfo const &info,
+ ResultWas::OfType resultType,
+ ITransientExpression const *expr,
+ bool negated );
+
+ void populateReaction( AssertionReaction& reaction );
+
+ private:
+
+ void handleUnfinishedSections();
+
+ TestRunInfo m_runInfo;
+ IMutableContext& m_context;
+ TestCase const* m_activeTestCase = nullptr;
+ ITracker* m_testCaseTracker = nullptr;
+ Option<AssertionResult> m_lastResult;
+
+ IConfigPtr m_config;
+ Totals m_totals;
+ IStreamingReporterPtr m_reporter;
+ std::vector<MessageInfo> m_messages;
+ std::vector<ScopedMessage> m_messageScopes; /* Keeps owners of so-called unscoped messages. */
+ AssertionInfo m_lastAssertionInfo;
+ std::vector<SectionEndInfo> m_unfinishedSections;
+ std::vector<ITracker*> m_activeSections;
+ TrackerContext m_trackerContext;
+ FatalConditionHandler m_fatalConditionhandler;
+ bool m_lastAssertionPassed = false;
+ bool m_shouldReportUnexpected = true;
+ bool m_includeSuccessfulResults;
+ };
+
+ void seedRng(IConfig const& config);
+ unsigned int rngSeed();
+} // end namespace Catch
+
+// end catch_run_context.h
+namespace Catch {
+
+ namespace {
+ auto operator <<( std::ostream& os, ITransientExpression const& expr ) -> std::ostream& {
+ expr.streamReconstructedExpression( os );
+ return os;
+ }
+ }
+
+ LazyExpression::LazyExpression( bool isNegated )
+ : m_isNegated( isNegated )
+ {}
+
+ LazyExpression::LazyExpression( LazyExpression const& other ) : m_isNegated( other.m_isNegated ) {}
+
+ LazyExpression::operator bool() const {
+ return m_transientExpression != nullptr;
+ }
+
+ auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream& {
+ if( lazyExpr.m_isNegated )
+ os << "!";
+
+ if( lazyExpr ) {
+ if( lazyExpr.m_isNegated && lazyExpr.m_transientExpression->isBinaryExpression() )
+ os << "(" << *lazyExpr.m_transientExpression << ")";
+ else
+ os << *lazyExpr.m_transientExpression;
+ }
+ else {
+ os << "{** error - unchecked empty expression requested **}";
+ }
+ return os;
+ }
+
+ AssertionHandler::AssertionHandler
+ ( StringRef const& macroName,
+ SourceLineInfo const& lineInfo,
+ StringRef capturedExpression,
+ ResultDisposition::Flags resultDisposition )
+ : m_assertionInfo{ macroName, lineInfo, capturedExpression, resultDisposition },
+ m_resultCapture( getResultCapture() )
+ {}
+
+ void AssertionHandler::handleExpr( ITransientExpression const& expr ) {
+ m_resultCapture.handleExpr( m_assertionInfo, expr, m_reaction );
+ }
+ void AssertionHandler::handleMessage(ResultWas::OfType resultType, StringRef const& message) {
+ m_resultCapture.handleMessage( m_assertionInfo, resultType, message, m_reaction );
+ }
+
+ auto AssertionHandler::allowThrows() const -> bool {
+ return getCurrentContext().getConfig()->allowThrows();
+ }
+
+ void AssertionHandler::complete() {
+ setCompleted();
+ if( m_reaction.shouldDebugBreak ) {
+
+ // If you find your debugger stopping you here then go one level up on the
+ // call-stack for the code that caused it (typically a failed assertion)
+
+ // (To go back to the test and change execution, jump over the throw, next)
+ CATCH_BREAK_INTO_DEBUGGER();
+ }
+ if (m_reaction.shouldThrow) {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ throw Catch::TestFailureException();
+#else
+ CATCH_ERROR( "Test failure requires aborting test!" );
+#endif
+ }
+ }
+ void AssertionHandler::setCompleted() {
+ m_completed = true;
+ }
+
+ void AssertionHandler::handleUnexpectedInflightException() {
+ m_resultCapture.handleUnexpectedInflightException( m_assertionInfo, Catch::translateActiveException(), m_reaction );
+ }
+
+ void AssertionHandler::handleExceptionThrownAsExpected() {
+ m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction);
+ }
+ void AssertionHandler::handleExceptionNotThrownAsExpected() {
+ m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction);
+ }
+
+ void AssertionHandler::handleUnexpectedExceptionNotThrown() {
+ m_resultCapture.handleUnexpectedExceptionNotThrown( m_assertionInfo, m_reaction );
+ }
+
+ void AssertionHandler::handleThrowingCallSkipped() {
+ m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction);
+ }
+
+ // This is the overload that takes a string and infers the Equals matcher from it
+ // The more general overload, that takes any string matcher, is in catch_capture_matchers.cpp
+ void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef const& matcherString ) {
+ handleExceptionMatchExpr( handler, Matchers::Equals( str ), matcherString );
+ }
+
+} // namespace Catch
+// end catch_assertionhandler.cpp
+// start catch_assertionresult.cpp
+
+namespace Catch {
+ AssertionResultData::AssertionResultData(ResultWas::OfType _resultType, LazyExpression const & _lazyExpression):
+ lazyExpression(_lazyExpression),
+ resultType(_resultType) {}
+
+ std::string AssertionResultData::reconstructExpression() const {
+
+ if( reconstructedExpression.empty() ) {
+ if( lazyExpression ) {
+ ReusableStringStream rss;
+ rss << lazyExpression;
+ reconstructedExpression = rss.str();
+ }
+ }
+ return reconstructedExpression;
+ }
+
+ AssertionResult::AssertionResult( AssertionInfo const& info, AssertionResultData const& data )
+ : m_info( info ),
+ m_resultData( data )
+ {}
+
+ // Result was a success
+ bool AssertionResult::succeeded() const {
+ return Catch::isOk( m_resultData.resultType );
+ }
+
+ // Result was a success, or failure is suppressed
+ bool AssertionResult::isOk() const {
+ return Catch::isOk( m_resultData.resultType ) || shouldSuppressFailure( m_info.resultDisposition );
+ }
+
+ ResultWas::OfType AssertionResult::getResultType() const {
+ return m_resultData.resultType;
+ }
+
+ bool AssertionResult::hasExpression() const {
+ return !m_info.capturedExpression.empty();
+ }
+
+ bool AssertionResult::hasMessage() const {
+ return !m_resultData.message.empty();
+ }
+
+ std::string AssertionResult::getExpression() const {
+ // Possibly overallocating by 3 characters should be basically free
+ std::string expr; expr.reserve(m_info.capturedExpression.size() + 3);
+ if (isFalseTest(m_info.resultDisposition)) {
+ expr += "!(";
+ }
+ expr += m_info.capturedExpression;
+ if (isFalseTest(m_info.resultDisposition)) {
+ expr += ')';
+ }
+ return expr;
+ }
+
+ std::string AssertionResult::getExpressionInMacro() const {
+ std::string expr;
+ if( m_info.macroName.empty() )
+ expr = static_cast<std::string>(m_info.capturedExpression);
+ else {
+ expr.reserve( m_info.macroName.size() + m_info.capturedExpression.size() + 4 );
+ expr += m_info.macroName;
+ expr += "( ";
+ expr += m_info.capturedExpression;
+ expr += " )";
+ }
+ return expr;
+ }
+
+ bool AssertionResult::hasExpandedExpression() const {
+ return hasExpression() && getExpandedExpression() != getExpression();
+ }
+
+ std::string AssertionResult::getExpandedExpression() const {
+ std::string expr = m_resultData.reconstructExpression();
+ return expr.empty()
+ ? getExpression()
+ : expr;
+ }
+
+ std::string AssertionResult::getMessage() const {
+ return m_resultData.message;
+ }
+ SourceLineInfo AssertionResult::getSourceInfo() const {
+ return m_info.lineInfo;
+ }
+
+ StringRef AssertionResult::getTestMacroName() const {
+ return m_info.macroName;
+ }
+
+} // end namespace Catch
+// end catch_assertionresult.cpp
+// start catch_capture_matchers.cpp
+
+namespace Catch {
+
+ using StringMatcher = Matchers::Impl::MatcherBase<std::string>;
+
+ // This is the general overload that takes a any string matcher
+ // There is another overload, in catch_assertionhandler.h/.cpp, that only takes a string and infers
+ // the Equals matcher (so the header does not mention matchers)
+ void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher, StringRef const& matcherString ) {
+ std::string exceptionMessage = Catch::translateActiveException();
+ MatchExpr<std::string, StringMatcher const&> expr( exceptionMessage, matcher, matcherString );
+ handler.handleExpr( expr );
+ }
+
+} // namespace Catch
+// end catch_capture_matchers.cpp
+// start catch_commandline.cpp
+
+// start catch_commandline.h
+
+// start catch_clara.h
+
+// Use Catch's value for console width (store Clara's off to the side, if present)
+#ifdef CLARA_CONFIG_CONSOLE_WIDTH
+#define CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH
+#undef CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH
+#endif
+#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH-1
+
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wweak-vtables"
+#pragma clang diagnostic ignored "-Wexit-time-destructors"
+#pragma clang diagnostic ignored "-Wshadow"
+#endif
+
+// start clara.hpp
+// Copyright 2017 Two Blue Cubes Ltd. All rights reserved.
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See https://github.com/philsquared/Clara for more details
+
+// Clara v1.1.5
+
+
+#ifndef CATCH_CLARA_CONFIG_CONSOLE_WIDTH
+#define CATCH_CLARA_CONFIG_CONSOLE_WIDTH 80
+#endif
+
+#ifndef CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH
+#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_CLARA_CONFIG_CONSOLE_WIDTH
+#endif
+
+#ifndef CLARA_CONFIG_OPTIONAL_TYPE
+#ifdef __has_include
+#if __has_include(<optional>) && __cplusplus >= 201703L
+#include <optional>
+#define CLARA_CONFIG_OPTIONAL_TYPE std::optional
+#endif
+#endif
+#endif
+
+// ----------- #included from clara_textflow.hpp -----------
+
+// TextFlowCpp
+//
+// A single-header library for wrapping and laying out basic text, by Phil Nash
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// This project is hosted at https://github.com/philsquared/textflowcpp
+
+
+#include <cassert>
+#include <ostream>
+#include <sstream>
+#include <vector>
+
+#ifndef CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH
+#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH 80
+#endif
+
+namespace Catch {
+namespace clara {
+namespace TextFlow {
+
+inline auto isWhitespace(char c) -> bool {
+ static std::string chars = " \t\n\r";
+ return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableBefore(char c) -> bool {
+ static std::string chars = "[({<|";
+ return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableAfter(char c) -> bool {
+ static std::string chars = "])}>.,:;*+-=&/\\";
+ return chars.find(c) != std::string::npos;
+}
+
+class Columns;
+
+class Column {
+ std::vector<std::string> m_strings;
+ size_t m_width = CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH;
+ size_t m_indent = 0;
+ size_t m_initialIndent = std::string::npos;
+
+public:
+ class iterator {
+ friend Column;
+
+ Column const& m_column;
+ size_t m_stringIndex = 0;
+ size_t m_pos = 0;
+
+ size_t m_len = 0;
+ size_t m_end = 0;
+ bool m_suffix = false;
+
+ iterator(Column const& column, size_t stringIndex)
+ : m_column(column),
+ m_stringIndex(stringIndex) {}
+
+ auto line() const -> std::string const& { return m_column.m_strings[m_stringIndex]; }
+
+ auto isBoundary(size_t at) const -> bool {
+ assert(at > 0);
+ assert(at <= line().size());
+
+ return at == line().size() ||
+ (isWhitespace(line()[at]) && !isWhitespace(line()[at - 1])) ||
+ isBreakableBefore(line()[at]) ||
+ isBreakableAfter(line()[at - 1]);
+ }
+
+ void calcLength() {
+ assert(m_stringIndex < m_column.m_strings.size());
+
+ m_suffix = false;
+ auto width = m_column.m_width - indent();
+ m_end = m_pos;
+ if (line()[m_pos] == '\n') {
+ ++m_end;
+ }
+ while (m_end < line().size() && line()[m_end] != '\n')
+ ++m_end;
+
+ if (m_end < m_pos + width) {
+ m_len = m_end - m_pos;
+ } else {
+ size_t len = width;
+ while (len > 0 && !isBoundary(m_pos + len))
+ --len;
+ while (len > 0 && isWhitespace(line()[m_pos + len - 1]))
+ --len;
+
+ if (len > 0) {
+ m_len = len;
+ } else {
+ m_suffix = true;
+ m_len = width - 1;
+ }
+ }
+ }
+
+ auto indent() const -> size_t {
+ auto initial = m_pos == 0 && m_stringIndex == 0 ? m_column.m_initialIndent : std::string::npos;
+ return initial == std::string::npos ? m_column.m_indent : initial;
+ }
+
+ auto addIndentAndSuffix(std::string const &plain) const -> std::string {
+ return std::string(indent(), ' ') + (m_suffix ? plain + "-" : plain);
+ }
+
+ public:
+ using difference_type = std::ptrdiff_t;
+ using value_type = std::string;
+ using pointer = value_type * ;
+ using reference = value_type & ;
+ using iterator_category = std::forward_iterator_tag;
+
+ explicit iterator(Column const& column) : m_column(column) {
+ assert(m_column.m_width > m_column.m_indent);
+ assert(m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent);
+ calcLength();
+ if (m_len == 0)
+ m_stringIndex++; // Empty string
+ }
+
+ auto operator *() const -> std::string {
+ assert(m_stringIndex < m_column.m_strings.size());
+ assert(m_pos <= m_end);
+ return addIndentAndSuffix(line().substr(m_pos, m_len));
+ }
+
+ auto operator ++() -> iterator& {
+ m_pos += m_len;
+ if (m_pos < line().size() && line()[m_pos] == '\n')
+ m_pos += 1;
+ else
+ while (m_pos < line().size() && isWhitespace(line()[m_pos]))
+ ++m_pos;
+
+ if (m_pos == line().size()) {
+ m_pos = 0;
+ ++m_stringIndex;
+ }
+ if (m_stringIndex < m_column.m_strings.size())
+ calcLength();
+ return *this;
+ }
+ auto operator ++(int) -> iterator {
+ iterator prev(*this);
+ operator++();
+ return prev;
+ }
+
+ auto operator ==(iterator const& other) const -> bool {
+ return
+ m_pos == other.m_pos &&
+ m_stringIndex == other.m_stringIndex &&
+ &m_column == &other.m_column;
+ }
+ auto operator !=(iterator const& other) const -> bool {
+ return !operator==(other);
+ }
+ };
+ using const_iterator = iterator;
+
+ explicit Column(std::string const& text) { m_strings.push_back(text); }
+
+ auto width(size_t newWidth) -> Column& {
+ assert(newWidth > 0);
+ m_width = newWidth;
+ return *this;
+ }
+ auto indent(size_t newIndent) -> Column& {
+ m_indent = newIndent;
+ return *this;
+ }
+ auto initialIndent(size_t newIndent) -> Column& {
+ m_initialIndent = newIndent;
+ return *this;
+ }
+
+ auto width() const -> size_t { return m_width; }
+ auto begin() const -> iterator { return iterator(*this); }
+ auto end() const -> iterator { return { *this, m_strings.size() }; }
+
+ inline friend std::ostream& operator << (std::ostream& os, Column const& col) {
+ bool first = true;
+ for (auto line : col) {
+ if (first)
+ first = false;
+ else
+ os << "\n";
+ os << line;
+ }
+ return os;
+ }
+
+ auto operator + (Column const& other)->Columns;
+
+ auto toString() const -> std::string {
+ std::ostringstream oss;
+ oss << *this;
+ return oss.str();
+ }
+};
+
+class Spacer : public Column {
+
+public:
+ explicit Spacer(size_t spaceWidth) : Column("") {
+ width(spaceWidth);
+ }
+};
+
+class Columns {
+ std::vector<Column> m_columns;
+
+public:
+
+ class iterator {
+ friend Columns;
+ struct EndTag {};
+
+ std::vector<Column> const& m_columns;
+ std::vector<Column::iterator> m_iterators;
+ size_t m_activeIterators;
+
+ iterator(Columns const& columns, EndTag)
+ : m_columns(columns.m_columns),
+ m_activeIterators(0) {
+ m_iterators.reserve(m_columns.size());
+
+ for (auto const& col : m_columns)
+ m_iterators.push_back(col.end());
+ }
+
+ public:
+ using difference_type = std::ptrdiff_t;
+ using value_type = std::string;
+ using pointer = value_type * ;
+ using reference = value_type & ;
+ using iterator_category = std::forward_iterator_tag;
+
+ explicit iterator(Columns const& columns)
+ : m_columns(columns.m_columns),
+ m_activeIterators(m_columns.size()) {
+ m_iterators.reserve(m_columns.size());
+
+ for (auto const& col : m_columns)
+ m_iterators.push_back(col.begin());
+ }
+
+ auto operator ==(iterator const& other) const -> bool {
+ return m_iterators == other.m_iterators;
+ }
+ auto operator !=(iterator const& other) const -> bool {
+ return m_iterators != other.m_iterators;
+ }
+ auto operator *() const -> std::string {
+ std::string row, padding;
+
+ for (size_t i = 0; i < m_columns.size(); ++i) {
+ auto width = m_columns[i].width();
+ if (m_iterators[i] != m_columns[i].end()) {
+ std::string col = *m_iterators[i];
+ row += padding + col;
+ if (col.size() < width)
+ padding = std::string(width - col.size(), ' ');
+ else
+ padding = "";
+ } else {
+ padding += std::string(width, ' ');
+ }
+ }
+ return row;
+ }
+ auto operator ++() -> iterator& {
+ for (size_t i = 0; i < m_columns.size(); ++i) {
+ if (m_iterators[i] != m_columns[i].end())
+ ++m_iterators[i];
+ }
+ return *this;
+ }
+ auto operator ++(int) -> iterator {
+ iterator prev(*this);
+ operator++();
+ return prev;
+ }
+ };
+ using const_iterator = iterator;
+
+ auto begin() const -> iterator { return iterator(*this); }
+ auto end() const -> iterator { return { *this, iterator::EndTag() }; }
+
+ auto operator += (Column const& col) -> Columns& {
+ m_columns.push_back(col);
+ return *this;
+ }
+ auto operator + (Column const& col) -> Columns {
+ Columns combined = *this;
+ combined += col;
+ return combined;
+ }
+
+ inline friend std::ostream& operator << (std::ostream& os, Columns const& cols) {
+
+ bool first = true;
+ for (auto line : cols) {
+ if (first)
+ first = false;
+ else
+ os << "\n";
+ os << line;
+ }
+ return os;
+ }
+
+ auto toString() const -> std::string {
+ std::ostringstream oss;
+ oss << *this;
+ return oss.str();
+ }
+};
+
+inline auto Column::operator + (Column const& other) -> Columns {
+ Columns cols;
+ cols += *this;
+ cols += other;
+ return cols;
+}
+}
+
+}
+}
+
+// ----------- end of #include from clara_textflow.hpp -----------
+// ........... back in clara.hpp
+
+#include <cctype>
+#include <string>
+#include <memory>
+#include <set>
+#include <algorithm>
+
+#if !defined(CATCH_PLATFORM_WINDOWS) && ( defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) )
+#define CATCH_PLATFORM_WINDOWS
+#endif
+
+namespace Catch { namespace clara {
+namespace detail {
+
+ // Traits for extracting arg and return type of lambdas (for single argument lambdas)
+ template<typename L>
+ struct UnaryLambdaTraits : UnaryLambdaTraits<decltype( &L::operator() )> {};
+
+ template<typename ClassT, typename ReturnT, typename... Args>
+ struct UnaryLambdaTraits<ReturnT( ClassT::* )( Args... ) const> {
+ static const bool isValid = false;
+ };
+
+ template<typename ClassT, typename ReturnT, typename ArgT>
+ struct UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> {
+ static const bool isValid = true;
+ using ArgType = typename std::remove_const<typename std::remove_reference<ArgT>::type>::type;
+ using ReturnType = ReturnT;
+ };
+
+ class TokenStream;
+
+ // Transport for raw args (copied from main args, or supplied via init list for testing)
+ class Args {
+ friend TokenStream;
+ std::string m_exeName;
+ std::vector<std::string> m_args;
+
+ public:
+ Args( int argc, char const* const* argv )
+ : m_exeName(argv[0]),
+ m_args(argv + 1, argv + argc) {}
+
+ Args( std::initializer_list<std::string> args )
+ : m_exeName( *args.begin() ),
+ m_args( args.begin()+1, args.end() )
+ {}
+
+ auto exeName() const -> std::string {
+ return m_exeName;
+ }
+ };
+
+ // Wraps a token coming from a token stream. These may not directly correspond to strings as a single string
+ // may encode an option + its argument if the : or = form is used
+ enum class TokenType {
+ Option, Argument
+ };
+ struct Token {
+ TokenType type;
+ std::string token;
+ };
+
+ inline auto isOptPrefix( char c ) -> bool {
+ return c == '-'
+#ifdef CATCH_PLATFORM_WINDOWS
+ || c == '/'
+#endif
+ ;
+ }
+
+ // Abstracts iterators into args as a stream of tokens, with option arguments uniformly handled
+ class TokenStream {
+ using Iterator = std::vector<std::string>::const_iterator;
+ Iterator it;
+ Iterator itEnd;
+ std::vector<Token> m_tokenBuffer;
+
+ void loadBuffer() {
+ m_tokenBuffer.resize( 0 );
+
+ // Skip any empty strings
+ while( it != itEnd && it->empty() )
+ ++it;
+
+ if( it != itEnd ) {
+ auto const &next = *it;
+ if( isOptPrefix( next[0] ) ) {
+ auto delimiterPos = next.find_first_of( " :=" );
+ if( delimiterPos != std::string::npos ) {
+ m_tokenBuffer.push_back( { TokenType::Option, next.substr( 0, delimiterPos ) } );
+ m_tokenBuffer.push_back( { TokenType::Argument, next.substr( delimiterPos + 1 ) } );
+ } else {
+ if( next[1] != '-' && next.size() > 2 ) {
+ std::string opt = "- ";
+ for( size_t i = 1; i < next.size(); ++i ) {
+ opt[1] = next[i];
+ m_tokenBuffer.push_back( { TokenType::Option, opt } );
+ }
+ } else {
+ m_tokenBuffer.push_back( { TokenType::Option, next } );
+ }
+ }
+ } else {
+ m_tokenBuffer.push_back( { TokenType::Argument, next } );
+ }
+ }
+ }
+
+ public:
+ explicit TokenStream( Args const &args ) : TokenStream( args.m_args.begin(), args.m_args.end() ) {}
+
+ TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( itEnd ) {
+ loadBuffer();
+ }
+
+ explicit operator bool() const {
+ return !m_tokenBuffer.empty() || it != itEnd;
+ }
+
+ auto count() const -> size_t { return m_tokenBuffer.size() + (itEnd - it); }
+
+ auto operator*() const -> Token {
+ assert( !m_tokenBuffer.empty() );
+ return m_tokenBuffer.front();
+ }
+
+ auto operator->() const -> Token const * {
+ assert( !m_tokenBuffer.empty() );
+ return &m_tokenBuffer.front();
+ }
+
+ auto operator++() -> TokenStream & {
+ if( m_tokenBuffer.size() >= 2 ) {
+ m_tokenBuffer.erase( m_tokenBuffer.begin() );
+ } else {
+ if( it != itEnd )
+ ++it;
+ loadBuffer();
+ }
+ return *this;
+ }
+ };
+
+ class ResultBase {
+ public:
+ enum Type {
+ Ok, LogicError, RuntimeError
+ };
+
+ protected:
+ ResultBase( Type type ) : m_type( type ) {}
+ virtual ~ResultBase() = default;
+
+ virtual void enforceOk() const = 0;
+
+ Type m_type;
+ };
+
+ template<typename T>
+ class ResultValueBase : public ResultBase {
+ public:
+ auto value() const -> T const & {
+ enforceOk();
+ return m_value;
+ }
+
+ protected:
+ ResultValueBase( Type type ) : ResultBase( type ) {}
+
+ ResultValueBase( ResultValueBase const &other ) : ResultBase( other ) {
+ if( m_type == ResultBase::Ok )
+ new( &m_value ) T( other.m_value );
+ }
+
+ ResultValueBase( Type, T const &value ) : ResultBase( Ok ) {
+ new( &m_value ) T( value );
+ }
+
+ auto operator=( ResultValueBase const &other ) -> ResultValueBase & {
+ if( m_type == ResultBase::Ok )
+ m_value.~T();
+ ResultBase::operator=(other);
+ if( m_type == ResultBase::Ok )
+ new( &m_value ) T( other.m_value );
+ return *this;
+ }
+
+ ~ResultValueBase() override {
+ if( m_type == Ok )
+ m_value.~T();
+ }
+
+ union {
+ T m_value;
+ };
+ };
+
+ template<>
+ class ResultValueBase<void> : public ResultBase {
+ protected:
+ using ResultBase::ResultBase;
+ };
+
+ template<typename T = void>
+ class BasicResult : public ResultValueBase<T> {
+ public:
+ template<typename U>
+ explicit BasicResult( BasicResult<U> const &other )
+ : ResultValueBase<T>( other.type() ),
+ m_errorMessage( other.errorMessage() )
+ {
+ assert( type() != ResultBase::Ok );
+ }
+
+ template<typename U>
+ static auto ok( U const &value ) -> BasicResult { return { ResultBase::Ok, value }; }
+ static auto ok() -> BasicResult { return { ResultBase::Ok }; }
+ static auto logicError( std::string const &message ) -> BasicResult { return { ResultBase::LogicError, message }; }
+ static auto runtimeError( std::string const &message ) -> BasicResult { return { ResultBase::RuntimeError, message }; }
+
+ explicit operator bool() const { return m_type == ResultBase::Ok; }
+ auto type() const -> ResultBase::Type { return m_type; }
+ auto errorMessage() const -> std::string { return m_errorMessage; }
+
+ protected:
+ void enforceOk() const override {
+
+ // Errors shouldn't reach this point, but if they do
+ // the actual error message will be in m_errorMessage
+ assert( m_type != ResultBase::LogicError );
+ assert( m_type != ResultBase::RuntimeError );
+ if( m_type != ResultBase::Ok )
+ std::abort();
+ }
+
+ std::string m_errorMessage; // Only populated if resultType is an error
+
+ BasicResult( ResultBase::Type type, std::string const &message )
+ : ResultValueBase<T>(type),
+ m_errorMessage(message)
+ {
+ assert( m_type != ResultBase::Ok );
+ }
+
+ using ResultValueBase<T>::ResultValueBase;
+ using ResultBase::m_type;
+ };
+
+ enum class ParseResultType {
+ Matched, NoMatch, ShortCircuitAll, ShortCircuitSame
+ };
+
+ class ParseState {
+ public:
+
+ ParseState( ParseResultType type, TokenStream const &remainingTokens )
+ : m_type(type),
+ m_remainingTokens( remainingTokens )
+ {}
+
+ auto type() const -> ParseResultType { return m_type; }
+ auto remainingTokens() const -> TokenStream { return m_remainingTokens; }
+
+ private:
+ ParseResultType m_type;
+ TokenStream m_remainingTokens;
+ };
+
+ using Result = BasicResult<void>;
+ using ParserResult = BasicResult<ParseResultType>;
+ using InternalParseResult = BasicResult<ParseState>;
+
+ struct HelpColumns {
+ std::string left;
+ std::string right;
+ };
+
+ template<typename T>
+ inline auto convertInto( std::string const &source, T& target ) -> ParserResult {
+ std::stringstream ss;
+ ss << source;
+ ss >> target;
+ if( ss.fail() )
+ return ParserResult::runtimeError( "Unable to convert '" + source + "' to destination type" );
+ else
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+ inline auto convertInto( std::string const &source, std::string& target ) -> ParserResult {
+ target = source;
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+ inline auto convertInto( std::string const &source, bool &target ) -> ParserResult {
+ std::string srcLC = source;
+ std::transform( srcLC.begin(), srcLC.end(), srcLC.begin(), []( unsigned char c ) { return static_cast<char>( std::tolower(c) ); } );
+ if (srcLC == "y" || srcLC == "1" || srcLC == "true" || srcLC == "yes" || srcLC == "on")
+ target = true;
+ else if (srcLC == "n" || srcLC == "0" || srcLC == "false" || srcLC == "no" || srcLC == "off")
+ target = false;
+ else
+ return ParserResult::runtimeError( "Expected a boolean value but did not recognise: '" + source + "'" );
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+#ifdef CLARA_CONFIG_OPTIONAL_TYPE
+ template<typename T>
+ inline auto convertInto( std::string const &source, CLARA_CONFIG_OPTIONAL_TYPE<T>& target ) -> ParserResult {
+ T temp;
+ auto result = convertInto( source, temp );
+ if( result )
+ target = std::move(temp);
+ return result;
+ }
+#endif // CLARA_CONFIG_OPTIONAL_TYPE
+
+ struct NonCopyable {
+ NonCopyable() = default;
+ NonCopyable( NonCopyable const & ) = delete;
+ NonCopyable( NonCopyable && ) = delete;
+ NonCopyable &operator=( NonCopyable const & ) = delete;
+ NonCopyable &operator=( NonCopyable && ) = delete;
+ };
+
+ struct BoundRef : NonCopyable {
+ virtual ~BoundRef() = default;
+ virtual auto isContainer() const -> bool { return false; }
+ virtual auto isFlag() const -> bool { return false; }
+ };
+ struct BoundValueRefBase : BoundRef {
+ virtual auto setValue( std::string const &arg ) -> ParserResult = 0;
+ };
+ struct BoundFlagRefBase : BoundRef {
+ virtual auto setFlag( bool flag ) -> ParserResult = 0;
+ virtual auto isFlag() const -> bool { return true; }
+ };
+
+ template<typename T>
+ struct BoundValueRef : BoundValueRefBase {
+ T &m_ref;
+
+ explicit BoundValueRef( T &ref ) : m_ref( ref ) {}
+
+ auto setValue( std::string const &arg ) -> ParserResult override {
+ return convertInto( arg, m_ref );
+ }
+ };
+
+ template<typename T>
+ struct BoundValueRef<std::vector<T>> : BoundValueRefBase {
+ std::vector<T> &m_ref;
+
+ explicit BoundValueRef( std::vector<T> &ref ) : m_ref( ref ) {}
+
+ auto isContainer() const -> bool override { return true; }
+
+ auto setValue( std::string const &arg ) -> ParserResult override {
+ T temp;
+ auto result = convertInto( arg, temp );
+ if( result )
+ m_ref.push_back( temp );
+ return result;
+ }
+ };
+
+ struct BoundFlagRef : BoundFlagRefBase {
+ bool &m_ref;
+
+ explicit BoundFlagRef( bool &ref ) : m_ref( ref ) {}
+
+ auto setFlag( bool flag ) -> ParserResult override {
+ m_ref = flag;
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+ };
+
+ template<typename ReturnType>
+ struct LambdaInvoker {
+ static_assert( std::is_same<ReturnType, ParserResult>::value, "Lambda must return void or clara::ParserResult" );
+
+ template<typename L, typename ArgType>
+ static auto invoke( L const &lambda, ArgType const &arg ) -> ParserResult {
+ return lambda( arg );
+ }
+ };
+
+ template<>
+ struct LambdaInvoker<void> {
+ template<typename L, typename ArgType>
+ static auto invoke( L const &lambda, ArgType const &arg ) -> ParserResult {
+ lambda( arg );
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+ };
+
+ template<typename ArgType, typename L>
+ inline auto invokeLambda( L const &lambda, std::string const &arg ) -> ParserResult {
+ ArgType temp{};
+ auto result = convertInto( arg, temp );
+ return !result
+ ? result
+ : LambdaInvoker<typename UnaryLambdaTraits<L>::ReturnType>::invoke( lambda, temp );
+ }
+
+ template<typename L>
+ struct BoundLambda : BoundValueRefBase {
+ L m_lambda;
+
+ static_assert( UnaryLambdaTraits<L>::isValid, "Supplied lambda must take exactly one argument" );
+ explicit BoundLambda( L const &lambda ) : m_lambda( lambda ) {}
+
+ auto setValue( std::string const &arg ) -> ParserResult override {
+ return invokeLambda<typename UnaryLambdaTraits<L>::ArgType>( m_lambda, arg );
+ }
+ };
+
+ template<typename L>
+ struct BoundFlagLambda : BoundFlagRefBase {
+ L m_lambda;
+
+ static_assert( UnaryLambdaTraits<L>::isValid, "Supplied lambda must take exactly one argument" );
+ static_assert( std::is_same<typename UnaryLambdaTraits<L>::ArgType, bool>::value, "flags must be boolean" );
+
+ explicit BoundFlagLambda( L const &lambda ) : m_lambda( lambda ) {}
+
+ auto setFlag( bool flag ) -> ParserResult override {
+ return LambdaInvoker<typename UnaryLambdaTraits<L>::ReturnType>::invoke( m_lambda, flag );
+ }
+ };
+
+ enum class Optionality { Optional, Required };
+
+ struct Parser;
+
+ class ParserBase {
+ public:
+ virtual ~ParserBase() = default;
+ virtual auto validate() const -> Result { return Result::ok(); }
+ virtual auto parse( std::string const& exeName, TokenStream const &tokens) const -> InternalParseResult = 0;
+ virtual auto cardinality() const -> size_t { return 1; }
+
+ auto parse( Args const &args ) const -> InternalParseResult {
+ return parse( args.exeName(), TokenStream( args ) );
+ }
+ };
+
+ template<typename DerivedT>
+ class ComposableParserImpl : public ParserBase {
+ public:
+ template<typename T>
+ auto operator|( T const &other ) const -> Parser;
+
+ template<typename T>
+ auto operator+( T const &other ) const -> Parser;
+ };
+
+ // Common code and state for Args and Opts
+ template<typename DerivedT>
+ class ParserRefImpl : public ComposableParserImpl<DerivedT> {
+ protected:
+ Optionality m_optionality = Optionality::Optional;
+ std::shared_ptr<BoundRef> m_ref;
+ std::string m_hint;
+ std::string m_description;
+
+ explicit ParserRefImpl( std::shared_ptr<BoundRef> const &ref ) : m_ref( ref ) {}
+
+ public:
+ template<typename T>
+ ParserRefImpl( T &ref, std::string const &hint )
+ : m_ref( std::make_shared<BoundValueRef<T>>( ref ) ),
+ m_hint( hint )
+ {}
+
+ template<typename LambdaT>
+ ParserRefImpl( LambdaT const &ref, std::string const &hint )
+ : m_ref( std::make_shared<BoundLambda<LambdaT>>( ref ) ),
+ m_hint(hint)
+ {}
+
+ auto operator()( std::string const &description ) -> DerivedT & {
+ m_description = description;
+ return static_cast<DerivedT &>( *this );
+ }
+
+ auto optional() -> DerivedT & {
+ m_optionality = Optionality::Optional;
+ return static_cast<DerivedT &>( *this );
+ };
+
+ auto required() -> DerivedT & {
+ m_optionality = Optionality::Required;
+ return static_cast<DerivedT &>( *this );
+ };
+
+ auto isOptional() const -> bool {
+ return m_optionality == Optionality::Optional;
+ }
+
+ auto cardinality() const -> size_t override {
+ if( m_ref->isContainer() )
+ return 0;
+ else
+ return 1;
+ }
+
+ auto hint() const -> std::string { return m_hint; }
+ };
+
+ class ExeName : public ComposableParserImpl<ExeName> {
+ std::shared_ptr<std::string> m_name;
+ std::shared_ptr<BoundValueRefBase> m_ref;
+
+ template<typename LambdaT>
+ static auto makeRef(LambdaT const &lambda) -> std::shared_ptr<BoundValueRefBase> {
+ return std::make_shared<BoundLambda<LambdaT>>( lambda) ;
+ }
+
+ public:
+ ExeName() : m_name( std::make_shared<std::string>( "<executable>" ) ) {}
+
+ explicit ExeName( std::string &ref ) : ExeName() {
+ m_ref = std::make_shared<BoundValueRef<std::string>>( ref );
+ }
+
+ template<typename LambdaT>
+ explicit ExeName( LambdaT const& lambda ) : ExeName() {
+ m_ref = std::make_shared<BoundLambda<LambdaT>>( lambda );
+ }
+
+ // The exe name is not parsed out of the normal tokens, but is handled specially
+ auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
+ return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, tokens ) );
+ }
+
+ auto name() const -> std::string { return *m_name; }
+ auto set( std::string const& newName ) -> ParserResult {
+
+ auto lastSlash = newName.find_last_of( "\\/" );
+ auto filename = ( lastSlash == std::string::npos )
+ ? newName
+ : newName.substr( lastSlash+1 );
+
+ *m_name = filename;
+ if( m_ref )
+ return m_ref->setValue( filename );
+ else
+ return ParserResult::ok( ParseResultType::Matched );
+ }
+ };
+
+ class Arg : public ParserRefImpl<Arg> {
+ public:
+ using ParserRefImpl::ParserRefImpl;
+
+ auto parse( std::string const &, TokenStream const &tokens ) const -> InternalParseResult override {
+ auto validationResult = validate();
+ if( !validationResult )
+ return InternalParseResult( validationResult );
+
+ auto remainingTokens = tokens;
+ auto const &token = *remainingTokens;
+ if( token.type != TokenType::Argument )
+ return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
+
+ assert( !m_ref->isFlag() );
+ auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
+
+ auto result = valueRef->setValue( remainingTokens->token );
+ if( !result )
+ return InternalParseResult( result );
+ else
+ return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
+ }
+ };
+
+ inline auto normaliseOpt( std::string const &optName ) -> std::string {
+#ifdef CATCH_PLATFORM_WINDOWS
+ if( optName[0] == '/' )
+ return "-" + optName.substr( 1 );
+ else
+#endif
+ return optName;
+ }
+
+ class Opt : public ParserRefImpl<Opt> {
+ protected:
+ std::vector<std::string> m_optNames;
+
+ public:
+ template<typename LambdaT>
+ explicit Opt( LambdaT const &ref ) : ParserRefImpl( std::make_shared<BoundFlagLambda<LambdaT>>( ref ) ) {}
+
+ explicit Opt( bool &ref ) : ParserRefImpl( std::make_shared<BoundFlagRef>( ref ) ) {}
+
+ template<typename LambdaT>
+ Opt( LambdaT const &ref, std::string const &hint ) : ParserRefImpl( ref, hint ) {}
+
+ template<typename T>
+ Opt( T &ref, std::string const &hint ) : ParserRefImpl( ref, hint ) {}
+
+ auto operator[]( std::string const &optName ) -> Opt & {
+ m_optNames.push_back( optName );
+ return *this;
+ }
+
+ auto getHelpColumns() const -> std::vector<HelpColumns> {
+ std::ostringstream oss;
+ bool first = true;
+ for( auto const &opt : m_optNames ) {
+ if (first)
+ first = false;
+ else
+ oss << ", ";
+ oss << opt;
+ }
+ if( !m_hint.empty() )
+ oss << " <" << m_hint << ">";
+ return { { oss.str(), m_description } };
+ }
+
+ auto isMatch( std::string const &optToken ) const -> bool {
+ auto normalisedToken = normaliseOpt( optToken );
+ for( auto const &name : m_optNames ) {
+ if( normaliseOpt( name ) == normalisedToken )
+ return true;
+ }
+ return false;
+ }
+
+ using ParserBase::parse;
+
+ auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
+ auto validationResult = validate();
+ if( !validationResult )
+ return InternalParseResult( validationResult );
+
+ auto remainingTokens = tokens;
+ if( remainingTokens && remainingTokens->type == TokenType::Option ) {
+ auto const &token = *remainingTokens;
+ if( isMatch(token.token ) ) {
+ if( m_ref->isFlag() ) {
+ auto flagRef = static_cast<detail::BoundFlagRefBase*>( m_ref.get() );
+ auto result = flagRef->setFlag( true );
+ if( !result )
+ return InternalParseResult( result );
+ if( result.value() == ParseResultType::ShortCircuitAll )
+ return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
+ } else {
+ auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
+ ++remainingTokens;
+ if( !remainingTokens )
+ return InternalParseResult::runtimeError( "Expected argument following " + token.token );
+ auto const &argToken = *remainingTokens;
+ if( argToken.type != TokenType::Argument )
+ return InternalParseResult::runtimeError( "Expected argument following " + token.token );
+ auto result = valueRef->setValue( argToken.token );
+ if( !result )
+ return InternalParseResult( result );
+ if( result.value() == ParseResultType::ShortCircuitAll )
+ return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
+ }
+ return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
+ }
+ }
+ return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
+ }
+
+ auto validate() const -> Result override {
+ if( m_optNames.empty() )
+ return Result::logicError( "No options supplied to Opt" );
+ for( auto const &name : m_optNames ) {
+ if( name.empty() )
+ return Result::logicError( "Option name cannot be empty" );
+#ifdef CATCH_PLATFORM_WINDOWS
+ if( name[0] != '-' && name[0] != '/' )
+ return Result::logicError( "Option name must begin with '-' or '/'" );
+#else
+ if( name[0] != '-' )
+ return Result::logicError( "Option name must begin with '-'" );
+#endif
+ }
+ return ParserRefImpl::validate();
+ }
+ };
+
+ struct Help : Opt {
+ Help( bool &showHelpFlag )
+ : Opt([&]( bool flag ) {
+ showHelpFlag = flag;
+ return ParserResult::ok( ParseResultType::ShortCircuitAll );
+ })
+ {
+ static_cast<Opt &>( *this )
+ ("display usage information")
+ ["-?"]["-h"]["--help"]
+ .optional();
+ }
+ };
+
+ struct Parser : ParserBase {
+
+ mutable ExeName m_exeName;
+ std::vector<Opt> m_options;
+ std::vector<Arg> m_args;
+
+ auto operator|=( ExeName const &exeName ) -> Parser & {
+ m_exeName = exeName;
+ return *this;
+ }
+
+ auto operator|=( Arg const &arg ) -> Parser & {
+ m_args.push_back(arg);
+ return *this;
+ }
+
+ auto operator|=( Opt const &opt ) -> Parser & {
+ m_options.push_back(opt);
+ return *this;
+ }
+
+ auto operator|=( Parser const &other ) -> Parser & {
+ m_options.insert(m_options.end(), other.m_options.begin(), other.m_options.end());
+ m_args.insert(m_args.end(), other.m_args.begin(), other.m_args.end());
+ return *this;
+ }
+
+ template<typename T>
+ auto operator|( T const &other ) const -> Parser {
+ return Parser( *this ) |= other;
+ }
+
+ // Forward deprecated interface with '+' instead of '|'
+ template<typename T>
+ auto operator+=( T const &other ) -> Parser & { return operator|=( other ); }
+ template<typename T>
+ auto operator+( T const &other ) const -> Parser { return operator|( other ); }
+
+ auto getHelpColumns() const -> std::vector<HelpColumns> {
+ std::vector<HelpColumns> cols;
+ for (auto const &o : m_options) {
+ auto childCols = o.getHelpColumns();
+ cols.insert( cols.end(), childCols.begin(), childCols.end() );
+ }
+ return cols;
+ }
+
+ void writeToStream( std::ostream &os ) const {
+ if (!m_exeName.name().empty()) {
+ os << "usage:\n" << " " << m_exeName.name() << " ";
+ bool required = true, first = true;
+ for( auto const &arg : m_args ) {
+ if (first)
+ first = false;
+ else
+ os << " ";
+ if( arg.isOptional() && required ) {
+ os << "[";
+ required = false;
+ }
+ os << "<" << arg.hint() << ">";
+ if( arg.cardinality() == 0 )
+ os << " ... ";
+ }
+ if( !required )
+ os << "]";
+ if( !m_options.empty() )
+ os << " options";
+ os << "\n\nwhere options are:" << std::endl;
+ }
+
+ auto rows = getHelpColumns();
+ size_t consoleWidth = CATCH_CLARA_CONFIG_CONSOLE_WIDTH;
+ size_t optWidth = 0;
+ for( auto const &cols : rows )
+ optWidth = (std::max)(optWidth, cols.left.size() + 2);
+
+ optWidth = (std::min)(optWidth, consoleWidth/2);
+
+ for( auto const &cols : rows ) {
+ auto row =
+ TextFlow::Column( cols.left ).width( optWidth ).indent( 2 ) +
+ TextFlow::Spacer(4) +
+ TextFlow::Column( cols.right ).width( consoleWidth - 7 - optWidth );
+ os << row << std::endl;
+ }
+ }
+
+ friend auto operator<<( std::ostream &os, Parser const &parser ) -> std::ostream& {
+ parser.writeToStream( os );
+ return os;
+ }
+
+ auto validate() const -> Result override {
+ for( auto const &opt : m_options ) {
+ auto result = opt.validate();
+ if( !result )
+ return result;
+ }
+ for( auto const &arg : m_args ) {
+ auto result = arg.validate();
+ if( !result )
+ return result;
+ }
+ return Result::ok();
+ }
+
+ using ParserBase::parse;
+
+ auto parse( std::string const& exeName, TokenStream const &tokens ) const -> InternalParseResult override {
+
+ struct ParserInfo {
+ ParserBase const* parser = nullptr;
+ size_t count = 0;
+ };
+ const size_t totalParsers = m_options.size() + m_args.size();
+ assert( totalParsers < 512 );
+ // ParserInfo parseInfos[totalParsers]; // <-- this is what we really want to do
+ ParserInfo parseInfos[512];
+
+ {
+ size_t i = 0;
+ for (auto const &opt : m_options) parseInfos[i++].parser = &opt;
+ for (auto const &arg : m_args) parseInfos[i++].parser = &arg;
+ }
+
+ m_exeName.set( exeName );
+
+ auto result = InternalParseResult::ok( ParseState( ParseResultType::NoMatch, tokens ) );
+ while( result.value().remainingTokens() ) {
+ bool tokenParsed = false;
+
+ for( size_t i = 0; i < totalParsers; ++i ) {
+ auto& parseInfo = parseInfos[i];
+ if( parseInfo.parser->cardinality() == 0 || parseInfo.count < parseInfo.parser->cardinality() ) {
+ result = parseInfo.parser->parse(exeName, result.value().remainingTokens());
+ if (!result)
+ return result;
+ if (result.value().type() != ParseResultType::NoMatch) {
+ tokenParsed = true;
+ ++parseInfo.count;
+ break;
+ }
+ }
+ }
+
+ if( result.value().type() == ParseResultType::ShortCircuitAll )
+ return result;
+ if( !tokenParsed )
+ return InternalParseResult::runtimeError( "Unrecognised token: " + result.value().remainingTokens()->token );
+ }
+ // !TBD Check missing required options
+ return result;
+ }
+ };
+
+ template<typename DerivedT>
+ template<typename T>
+ auto ComposableParserImpl<DerivedT>::operator|( T const &other ) const -> Parser {
+ return Parser() | static_cast<DerivedT const &>( *this ) | other;
+ }
+} // namespace detail
+
+// A Combined parser
+using detail::Parser;
+
+// A parser for options
+using detail::Opt;
+
+// A parser for arguments
+using detail::Arg;
+
+// Wrapper for argc, argv from main()
+using detail::Args;
+
+// Specifies the name of the executable
+using detail::ExeName;
+
+// Convenience wrapper for option parser that specifies the help option
+using detail::Help;
+
+// enum of result types from a parse
+using detail::ParseResultType;
+
+// Result type for parser operation
+using detail::ParserResult;
+
+}} // namespace Catch::clara
+
+// end clara.hpp
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+// Restore Clara's value for console width, if present
+#ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH
+#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH
+#undef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH
+#endif
+
+// end catch_clara.h
+namespace Catch {
+
+ clara::Parser makeCommandLineParser( ConfigData& config );
+
+} // end namespace Catch
+
+// end catch_commandline.h
+#include <fstream>
+#include <ctime>
+
+namespace Catch {
+
+ clara::Parser makeCommandLineParser( ConfigData& config ) {
+
+ using namespace clara;
+
+ auto const setWarning = [&]( std::string const& warning ) {
+ auto warningSet = [&]() {
+ if( warning == "NoAssertions" )
+ return WarnAbout::NoAssertions;
+
+ if ( warning == "NoTests" )
+ return WarnAbout::NoTests;
+
+ return WarnAbout::Nothing;
+ }();
+
+ if (warningSet == WarnAbout::Nothing)
+ return ParserResult::runtimeError( "Unrecognised warning: '" + warning + "'" );
+ config.warnings = static_cast<WarnAbout::What>( config.warnings | warningSet );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const loadTestNamesFromFile = [&]( std::string const& filename ) {
+ std::ifstream f( filename.c_str() );
+ if( !f.is_open() )
+ return ParserResult::runtimeError( "Unable to load input file: '" + filename + "'" );
+
+ std::string line;
+ while( std::getline( f, line ) ) {
+ line = trim(line);
+ if( !line.empty() && !startsWith( line, '#' ) ) {
+ if( !startsWith( line, '"' ) )
+ line = '"' + line + '"';
+ config.testsOrTags.push_back( line );
+ config.testsOrTags.emplace_back( "," );
+ }
+ }
+ //Remove comma in the end
+ if(!config.testsOrTags.empty())
+ config.testsOrTags.erase( config.testsOrTags.end()-1 );
+
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setTestOrder = [&]( std::string const& order ) {
+ if( startsWith( "declared", order ) )
+ config.runOrder = RunTests::InDeclarationOrder;
+ else if( startsWith( "lexical", order ) )
+ config.runOrder = RunTests::InLexicographicalOrder;
+ else if( startsWith( "random", order ) )
+ config.runOrder = RunTests::InRandomOrder;
+ else
+ return clara::ParserResult::runtimeError( "Unrecognised ordering: '" + order + "'" );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setRngSeed = [&]( std::string const& seed ) {
+ if( seed != "time" )
+ return clara::detail::convertInto( seed, config.rngSeed );
+ config.rngSeed = static_cast<unsigned int>( std::time(nullptr) );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setColourUsage = [&]( std::string const& useColour ) {
+ auto mode = toLower( useColour );
+
+ if( mode == "yes" )
+ config.useColour = UseColour::Yes;
+ else if( mode == "no" )
+ config.useColour = UseColour::No;
+ else if( mode == "auto" )
+ config.useColour = UseColour::Auto;
+ else
+ return ParserResult::runtimeError( "colour mode must be one of: auto, yes or no. '" + useColour + "' not recognised" );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setWaitForKeypress = [&]( std::string const& keypress ) {
+ auto keypressLc = toLower( keypress );
+ if (keypressLc == "never")
+ config.waitForKeypress = WaitForKeypress::Never;
+ else if( keypressLc == "start" )
+ config.waitForKeypress = WaitForKeypress::BeforeStart;
+ else if( keypressLc == "exit" )
+ config.waitForKeypress = WaitForKeypress::BeforeExit;
+ else if( keypressLc == "both" )
+ config.waitForKeypress = WaitForKeypress::BeforeStartAndExit;
+ else
+ return ParserResult::runtimeError( "keypress argument must be one of: never, start, exit or both. '" + keypress + "' not recognised" );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setVerbosity = [&]( std::string const& verbosity ) {
+ auto lcVerbosity = toLower( verbosity );
+ if( lcVerbosity == "quiet" )
+ config.verbosity = Verbosity::Quiet;
+ else if( lcVerbosity == "normal" )
+ config.verbosity = Verbosity::Normal;
+ else if( lcVerbosity == "high" )
+ config.verbosity = Verbosity::High;
+ else
+ return ParserResult::runtimeError( "Unrecognised verbosity, '" + verbosity + "'" );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+ auto const setReporter = [&]( std::string const& reporter ) {
+ IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
+
+ auto lcReporter = toLower( reporter );
+ auto result = factories.find( lcReporter );
+
+ if( factories.end() != result )
+ config.reporterName = lcReporter;
+ else
+ return ParserResult::runtimeError( "Unrecognized reporter, '" + reporter + "'. Check available with --list-reporters" );
+ return ParserResult::ok( ParseResultType::Matched );
+ };
+
+ auto cli
+ = ExeName( config.processName )
+ | Help( config.showHelp )
+ | Opt( config.listTests )
+ ["-l"]["--list-tests"]
+ ( "list all/matching test cases" )
+ | Opt( config.listTags )
+ ["-t"]["--list-tags"]
+ ( "list all/matching tags" )
+ | Opt( config.showSuccessfulTests )
+ ["-s"]["--success"]
+ ( "include successful tests in output" )
+ | Opt( config.shouldDebugBreak )
+ ["-b"]["--break"]
+ ( "break into debugger on failure" )
+ | Opt( config.noThrow )
+ ["-e"]["--nothrow"]
+ ( "skip exception tests" )
+ | Opt( config.showInvisibles )
+ ["-i"]["--invisibles"]
+ ( "show invisibles (tabs, newlines)" )
+ | Opt( config.outputFilename, "filename" )
+ ["-o"]["--out"]
+ ( "output filename" )
+ | Opt( setReporter, "name" )
+ ["-r"]["--reporter"]
+ ( "reporter to use (defaults to console)" )
+ | Opt( config.name, "name" )
+ ["-n"]["--name"]
+ ( "suite name" )
+ | Opt( [&]( bool ){ config.abortAfter = 1; } )
+ ["-a"]["--abort"]
+ ( "abort at first failure" )
+ | Opt( [&]( int x ){ config.abortAfter = x; }, "no. failures" )
+ ["-x"]["--abortx"]
+ ( "abort after x failures" )
+ | Opt( setWarning, "warning name" )
+ ["-w"]["--warn"]
+ ( "enable warnings" )
+ | Opt( [&]( bool flag ) { config.showDurations = flag ? ShowDurations::Always : ShowDurations::Never; }, "yes|no" )
+ ["-d"]["--durations"]
+ ( "show test durations" )
+ | Opt( config.minDuration, "seconds" )
+ ["-D"]["--min-duration"]
+ ( "show test durations for tests taking at least the given number of seconds" )
+ | Opt( loadTestNamesFromFile, "filename" )
+ ["-f"]["--input-file"]
+ ( "load test names to run from a file" )
+ | Opt( config.filenamesAsTags )
+ ["-#"]["--filenames-as-tags"]
+ ( "adds a tag for the filename" )
+ | Opt( config.sectionsToRun, "section name" )
+ ["-c"]["--section"]
+ ( "specify section to run" )
+ | Opt( setVerbosity, "quiet|normal|high" )
+ ["-v"]["--verbosity"]
+ ( "set output verbosity" )
+ | Opt( config.listTestNamesOnly )
+ ["--list-test-names-only"]
+ ( "list all/matching test cases names only" )
+ | Opt( config.listReporters )
+ ["--list-reporters"]
+ ( "list all reporters" )
+ | Opt( setTestOrder, "decl|lex|rand" )
+ ["--order"]
+ ( "test case order (defaults to decl)" )
+ | Opt( setRngSeed, "'time'|number" )
+ ["--rng-seed"]
+ ( "set a specific seed for random numbers" )
+ | Opt( setColourUsage, "yes|no" )
+ ["--use-colour"]
+ ( "should output be colourised" )
+ | Opt( config.libIdentify )
+ ["--libidentify"]
+ ( "report name and version according to libidentify standard" )
+ | Opt( setWaitForKeypress, "never|start|exit|both" )
+ ["--wait-for-keypress"]
+ ( "waits for a keypress before exiting" )
+ | Opt( config.benchmarkSamples, "samples" )
+ ["--benchmark-samples"]
+ ( "number of samples to collect (default: 100)" )
+ | Opt( config.benchmarkResamples, "resamples" )
+ ["--benchmark-resamples"]
+ ( "number of resamples for the bootstrap (default: 100000)" )
+ | Opt( config.benchmarkConfidenceInterval, "confidence interval" )
+ ["--benchmark-confidence-interval"]
+ ( "confidence interval for the bootstrap (between 0 and 1, default: 0.95)" )
+ | Opt( config.benchmarkNoAnalysis )
+ ["--benchmark-no-analysis"]
+ ( "perform only measurements; do not perform any analysis" )
+ | Opt( config.benchmarkWarmupTime, "benchmarkWarmupTime" )
+ ["--benchmark-warmup-time"]
+ ( "amount of time in milliseconds spent on warming up each test (default: 100)" )
+ | Arg( config.testsOrTags, "test name|pattern|tags" )
+ ( "which test or tests to use" );
+
+ return cli;
+ }
+
+} // end namespace Catch
+// end catch_commandline.cpp
+// start catch_common.cpp
+
+#include <cstring>
+#include <ostream>
+
+namespace Catch {
+
+ bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const noexcept {
+ return line == other.line && (file == other.file || std::strcmp(file, other.file) == 0);
+ }
+ bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const noexcept {
+ // We can assume that the same file will usually have the same pointer.
+ // Thus, if the pointers are the same, there is no point in calling the strcmp
+ return line < other.line || ( line == other.line && file != other.file && (std::strcmp(file, other.file) < 0));
+ }
+
+ std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ) {
+#ifndef __GNUG__
+ os << info.file << '(' << info.line << ')';
+#else
+ os << info.file << ':' << info.line;
+#endif
+ return os;
+ }
+
+ std::string StreamEndStop::operator+() const {
+ return std::string();
+ }
+
+ NonCopyable::NonCopyable() = default;
+ NonCopyable::~NonCopyable() = default;
+
+}
+// end catch_common.cpp
+// start catch_config.cpp
+
+namespace Catch {
+
+ Config::Config( ConfigData const& data )
+ : m_data( data ),
+ m_stream( openStream() )
+ {
+ // We need to trim filter specs to avoid trouble with superfluous
+ // whitespace (esp. important for bdd macros, as those are manually
+ // aligned with whitespace).
+
+ for (auto& elem : m_data.testsOrTags) {
+ elem = trim(elem);
+ }
+ for (auto& elem : m_data.sectionsToRun) {
+ elem = trim(elem);
+ }
+
+ TestSpecParser parser(ITagAliasRegistry::get());
+ if (!m_data.testsOrTags.empty()) {
+ m_hasTestFilters = true;
+ for (auto const& testOrTags : m_data.testsOrTags) {
+ parser.parse(testOrTags);
+ }
+ }
+ m_testSpec = parser.testSpec();
+ }
+
+ std::string const& Config::getFilename() const {
+ return m_data.outputFilename ;
+ }
+
+ bool Config::listTests() const { return m_data.listTests; }
+ bool Config::listTestNamesOnly() const { return m_data.listTestNamesOnly; }
+ bool Config::listTags() const { return m_data.listTags; }
+ bool Config::listReporters() const { return m_data.listReporters; }
+
+ std::string Config::getProcessName() const { return m_data.processName; }
+ std::string const& Config::getReporterName() const { return m_data.reporterName; }
+
+ std::vector<std::string> const& Config::getTestsOrTags() const { return m_data.testsOrTags; }
+ std::vector<std::string> const& Config::getSectionsToRun() const { return m_data.sectionsToRun; }
+
+ TestSpec const& Config::testSpec() const { return m_testSpec; }
+ bool Config::hasTestFilters() const { return m_hasTestFilters; }
+
+ bool Config::showHelp() const { return m_data.showHelp; }
+
+ // IConfig interface
+ bool Config::allowThrows() const { return !m_data.noThrow; }
+ std::ostream& Config::stream() const { return m_stream->stream(); }
+ std::string Config::name() const { return m_data.name.empty() ? m_data.processName : m_data.name; }
+ bool Config::includeSuccessfulResults() const { return m_data.showSuccessfulTests; }
+ bool Config::warnAboutMissingAssertions() const { return !!(m_data.warnings & WarnAbout::NoAssertions); }
+ bool Config::warnAboutNoTests() const { return !!(m_data.warnings & WarnAbout::NoTests); }
+ ShowDurations::OrNot Config::showDurations() const { return m_data.showDurations; }
+ double Config::minDuration() const { return m_data.minDuration; }
+ RunTests::InWhatOrder Config::runOrder() const { return m_data.runOrder; }
+ unsigned int Config::rngSeed() const { return m_data.rngSeed; }
+ UseColour::YesOrNo Config::useColour() const { return m_data.useColour; }
+ bool Config::shouldDebugBreak() const { return m_data.shouldDebugBreak; }
+ int Config::abortAfter() const { return m_data.abortAfter; }
+ bool Config::showInvisibles() const { return m_data.showInvisibles; }
+ Verbosity Config::verbosity() const { return m_data.verbosity; }
+
+ bool Config::benchmarkNoAnalysis() const { return m_data.benchmarkNoAnalysis; }
+ int Config::benchmarkSamples() const { return m_data.benchmarkSamples; }
+ double Config::benchmarkConfidenceInterval() const { return m_data.benchmarkConfidenceInterval; }
+ unsigned int Config::benchmarkResamples() const { return m_data.benchmarkResamples; }
+ std::chrono::milliseconds Config::benchmarkWarmupTime() const { return std::chrono::milliseconds(m_data.benchmarkWarmupTime); }
+
+ IStream const* Config::openStream() {
+ return Catch::makeStream(m_data.outputFilename);
+ }
+
+} // end namespace Catch
+// end catch_config.cpp
+// start catch_console_colour.cpp
+
+#if defined(__clang__)
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wexit-time-destructors"
+#endif
+
+// start catch_errno_guard.h
+
+namespace Catch {
+
+ class ErrnoGuard {
+ public:
+ ErrnoGuard();
+ ~ErrnoGuard();
+ private:
+ int m_oldErrno;
+ };
+
+}
+
+// end catch_errno_guard.h
+// start catch_windows_h_proxy.h
+
+
+#if defined(CATCH_PLATFORM_WINDOWS)
+
+#if !defined(NOMINMAX) && !defined(CATCH_CONFIG_NO_NOMINMAX)
+# define CATCH_DEFINED_NOMINMAX
+# define NOMINMAX
+#endif
+#if !defined(WIN32_LEAN_AND_MEAN) && !defined(CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN)
+# define CATCH_DEFINED_WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifdef __AFXDLL
+#include <AfxWin.h>
+#else
+#include <windows.h>
+#endif
+
+#ifdef CATCH_DEFINED_NOMINMAX
+# undef NOMINMAX
+#endif
+#ifdef CATCH_DEFINED_WIN32_LEAN_AND_MEAN
+# undef WIN32_LEAN_AND_MEAN
+#endif
+
+#endif // defined(CATCH_PLATFORM_WINDOWS)
+
+// end catch_windows_h_proxy.h
+#include <sstream>
+
+namespace Catch {
+ namespace {
+
+ struct IColourImpl {
+ virtual ~IColourImpl() = default;
+ virtual void use( Colour::Code _colourCode ) = 0;
+ };
+
+ struct NoColourImpl : IColourImpl {
+ void use( Colour::Code ) override {}
+
+ static IColourImpl* instance() {
+ static NoColourImpl s_instance;
+ return &s_instance;
+ }
+ };
+
+ } // anon namespace
+} // namespace Catch
+
+#if !defined( CATCH_CONFIG_COLOUR_NONE ) && !defined( CATCH_CONFIG_COLOUR_WINDOWS ) && !defined( CATCH_CONFIG_COLOUR_ANSI )
+# ifdef CATCH_PLATFORM_WINDOWS
+# define CATCH_CONFIG_COLOUR_WINDOWS
+# else
+# define CATCH_CONFIG_COLOUR_ANSI
+# endif
+#endif
+
+#if defined ( CATCH_CONFIG_COLOUR_WINDOWS ) /////////////////////////////////////////
+
+namespace Catch {
+namespace {
+
+ class Win32ColourImpl : public IColourImpl {
+ public:
+ Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
+ {
+ CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
+ GetConsoleScreenBufferInfo( stdoutHandle, &csbiInfo );
+ originalForegroundAttributes = csbiInfo.wAttributes & ~( BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY );
+ originalBackgroundAttributes = csbiInfo.wAttributes & ~( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY );
+ }
+
+ void use( Colour::Code _colourCode ) override {
+ switch( _colourCode ) {
+ case Colour::None: return setTextAttribute( originalForegroundAttributes );
+ case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE );
+ case Colour::Red: return setTextAttribute( FOREGROUND_RED );
+ case Colour::Green: return setTextAttribute( FOREGROUND_GREEN );
+ case Colour::Blue: return setTextAttribute( FOREGROUND_BLUE );
+ case Colour::Cyan: return setTextAttribute( FOREGROUND_BLUE | FOREGROUND_GREEN );
+ case Colour::Yellow: return setTextAttribute( FOREGROUND_RED | FOREGROUND_GREEN );
+ case Colour::Grey: return setTextAttribute( 0 );
+
+ case Colour::LightGrey: return setTextAttribute( FOREGROUND_INTENSITY );
+ case Colour::BrightRed: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED );
+ case Colour::BrightGreen: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN );
+ case Colour::BrightWhite: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE );
+ case Colour::BrightYellow: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN );
+
+ case Colour::Bright: CATCH_INTERNAL_ERROR( "not a colour" );
+
+ default:
+ CATCH_ERROR( "Unknown colour requested" );
+ }
+ }
+
+ private:
+ void setTextAttribute( WORD _textAttribute ) {
+ SetConsoleTextAttribute( stdoutHandle, _textAttribute | originalBackgroundAttributes );
+ }
+ HANDLE stdoutHandle;
+ WORD originalForegroundAttributes;
+ WORD originalBackgroundAttributes;
+ };
+
+ IColourImpl* platformColourInstance() {
+ static Win32ColourImpl s_instance;
+
+ IConfigPtr config = getCurrentContext().getConfig();
+ UseColour::YesOrNo colourMode = config
+ ? config->useColour()
+ : UseColour::Auto;
+ if( colourMode == UseColour::Auto )
+ colourMode = UseColour::Yes;
+ return colourMode == UseColour::Yes
+ ? &s_instance
+ : NoColourImpl::instance();
+ }
+
+} // end anon namespace
+} // end namespace Catch
+
+#elif defined( CATCH_CONFIG_COLOUR_ANSI ) //////////////////////////////////////
+
+#include <unistd.h>
+
+namespace Catch {
+namespace {
+
+ // use POSIX/ ANSI console terminal codes
+ // Thanks to Adam Strzelecki for original contribution
+ // (http://github.com/nanoant)
+ // https://github.com/philsquared/Catch/pull/131
+ class PosixColourImpl : public IColourImpl {
+ public:
+ void use( Colour::Code _colourCode ) override {
+ switch( _colourCode ) {
+ case Colour::None:
+ case Colour::White: return setColour( "[0m" );
+ case Colour::Red: return setColour( "[0;31m" );
+ case Colour::Green: return setColour( "[0;32m" );
+ case Colour::Blue: return setColour( "[0;34m" );
+ case Colour::Cyan: return setColour( "[0;36m" );
+ case Colour::Yellow: return setColour( "[0;33m" );
+ case Colour::Grey: return setColour( "[1;30m" );
+
+ case Colour::LightGrey: return setColour( "[0;37m" );
+ case Colour::BrightRed: return setColour( "[1;31m" );
+ case Colour::BrightGreen: return setColour( "[1;32m" );
+ case Colour::BrightWhite: return setColour( "[1;37m" );
+ case Colour::BrightYellow: return setColour( "[1;33m" );
+
+ case Colour::Bright: CATCH_INTERNAL_ERROR( "not a colour" );
+ default: CATCH_INTERNAL_ERROR( "Unknown colour requested" );
+ }
+ }
+ static IColourImpl* instance() {
+ static PosixColourImpl s_instance;
+ return &s_instance;
+ }
+
+ private:
+ void setColour( const char* _escapeCode ) {
+ getCurrentContext().getConfig()->stream()
+ << '\033' << _escapeCode;
+ }
+ };
+
+ bool useColourOnPlatform() {
+ return
+#if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)
+ !isDebuggerActive() &&
+#endif
+#if !(defined(__DJGPP__) && defined(__STRICT_ANSI__))
+ isatty(STDOUT_FILENO)
+#else
+ false
+#endif
+ ;
+ }
+ IColourImpl* platformColourInstance() {
+ ErrnoGuard guard;
+ IConfigPtr config = getCurrentContext().getConfig();
+ UseColour::YesOrNo colourMode = config
+ ? config->useColour()
+ : UseColour::Auto;
+ if( colourMode == UseColour::Auto )
+ colourMode = useColourOnPlatform()
+ ? UseColour::Yes
+ : UseColour::No;
+ return colourMode == UseColour::Yes
+ ? PosixColourImpl::instance()
+ : NoColourImpl::instance();
+ }
+
+} // end anon namespace
+} // end namespace Catch
+
+#else // not Windows or ANSI ///////////////////////////////////////////////
+
+namespace Catch {
+
+ static IColourImpl* platformColourInstance() { return NoColourImpl::instance(); }
+
+} // end namespace Catch
+
+#endif // Windows/ ANSI/ None
+
+namespace Catch {
+
+ Colour::Colour( Code _colourCode ) { use( _colourCode ); }
+ Colour::Colour( Colour&& other ) noexcept {
+ m_moved = other.m_moved;
+ other.m_moved = true;
+ }
+ Colour& Colour::operator=( Colour&& other ) noexcept {
+ m_moved = other.m_moved;
+ other.m_moved = true;
+ return *this;
+ }
+
+ Colour::~Colour(){ if( !m_moved ) use( None ); }
+
+ void Colour::use( Code _colourCode ) {
+ static IColourImpl* impl = platformColourInstance();
+ // Strictly speaking, this cannot possibly happen.
+ // However, under some conditions it does happen (see #1626),
+ // and this change is small enough that we can let practicality
+ // triumph over purity in this case.
+ if (impl != nullptr) {
+ impl->use( _colourCode );
+ }
+ }
+
+ std::ostream& operator << ( std::ostream& os, Colour const& ) {
+ return os;
+ }
+
+} // end namespace Catch
+
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
+// end catch_console_colour.cpp
+// start catch_context.cpp
+
+namespace Catch {
+
+ class Context : public IMutableContext, NonCopyable {
+
+ public: // IContext
+ IResultCapture* getResultCapture() override {
+ return m_resultCapture;
+ }
+ IRunner* getRunner() override {
+ return m_runner;
+ }
+
+ IConfigPtr const& getConfig() const override {
+ return m_config;
+ }
+
+ ~Context() override;
+
+ public: // IMutableContext
+ void setResultCapture( IResultCapture* resultCapture ) override {
+ m_resultCapture = resultCapture;
+ }
+ void setRunner( IRunner* runner ) override {
+ m_runner = runner;
+ }
+ void setConfig( IConfigPtr const& config ) override {
+ m_config = config;
+ }
+
+ friend IMutableContext& getCurrentMutableContext();
+
+ private:
+ IConfigPtr m_config;
+ IRunner* m_runner = nullptr;
+ IResultCapture* m_resultCapture = nullptr;
+ };
+
+ IMutableContext *IMutableContext::currentContext = nullptr;
+
+ void IMutableContext::createContext()
+ {
+ currentContext = new Context();
+ }
+
+ void cleanUpContext() {
+ delete IMutableContext::currentContext;
+ IMutableContext::currentContext = nullptr;
+ }
+ IContext::~IContext() = default;
+ IMutableContext::~IMutableContext() = default;
+ Context::~Context() = default;
+
+ SimplePcg32& rng() {
+ static SimplePcg32 s_rng;
+ return s_rng;
+ }
+
+}
+// end catch_context.cpp
+// start catch_debug_console.cpp
+
+// start catch_debug_console.h
+
+#include <string>
+
+namespace Catch {
+ void writeToDebugConsole( std::string const& text );
+}
+
+// end catch_debug_console.h
+#if defined(CATCH_CONFIG_ANDROID_LOGWRITE)
+#include <android/log.h>
+
+ namespace Catch {
+ void writeToDebugConsole( std::string const& text ) {
+ __android_log_write( ANDROID_LOG_DEBUG, "Catch", text.c_str() );
+ }
+ }
+
+#elif defined(CATCH_PLATFORM_WINDOWS)
+
+ namespace Catch {
+ void writeToDebugConsole( std::string const& text ) {
+ ::OutputDebugStringA( text.c_str() );
+ }
+ }
+
+#else
+
+ namespace Catch {
+ void writeToDebugConsole( std::string const& text ) {
+ // !TBD: Need a version for Mac/ XCode and other IDEs
+ Catch::cout() << text;
+ }
+ }
+
+#endif // Platform
+// end catch_debug_console.cpp
+// start catch_debugger.cpp
+
+#if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)
+
+# include <cassert>
+# include <sys/types.h>
+# include <unistd.h>
+# include <cstddef>
+# include <ostream>
+
+#ifdef __apple_build_version__
+ // These headers will only compile with AppleClang (XCode)
+ // For other compilers (Clang, GCC, ... ) we need to exclude them
+# include <sys/sysctl.h>
+#endif
+
+ namespace Catch {
+ #ifdef __apple_build_version__
+ // The following function is taken directly from the following technical note:
+ // https://developer.apple.com/library/archive/qa/qa1361/_index.html
+
+ // Returns true if the current process is being debugged (either
+ // running under the debugger or has a debugger attached post facto).
+ bool isDebuggerActive(){
+ int mib[4];
+ struct kinfo_proc info;
+ std::size_t size;
+
+ // Initialize the flags so that, if sysctl fails for some bizarre
+ // reason, we get a predictable result.
+
+ info.kp_proc.p_flag = 0;
+
+ // Initialize mib, which tells sysctl the info we want, in this case
+ // we're looking for information about a specific process ID.
+
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_PROC;
+ mib[2] = KERN_PROC_PID;
+ mib[3] = getpid();
+
+ // Call sysctl.
+
+ size = sizeof(info);
+ if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, nullptr, 0) != 0 ) {
+ Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl;
+ return false;
+ }
+
+ // We're being debugged if the P_TRACED flag is set.
+
+ return ( (info.kp_proc.p_flag & P_TRACED) != 0 );
+ }
+ #else
+ bool isDebuggerActive() {
+ // We need to find another way to determine this for non-appleclang compilers on macOS
+ return false;
+ }
+ #endif
+ } // namespace Catch
+
+#elif defined(CATCH_PLATFORM_LINUX)
+ #include <fstream>
+ #include <string>
+
+ namespace Catch{
+ // The standard POSIX way of detecting a debugger is to attempt to
+ // ptrace() the process, but this needs to be done from a child and not
+ // this process itself to still allow attaching to this process later
+ // if wanted, so is rather heavy. Under Linux we have the PID of the
+ // "debugger" (which doesn't need to be gdb, of course, it could also
+ // be strace, for example) in /proc/$PID/status, so just get it from
+ // there instead.
+ bool isDebuggerActive(){
+ // Libstdc++ has a bug, where std::ifstream sets errno to 0
+ // This way our users can properly assert over errno values
+ ErrnoGuard guard;
+ std::ifstream in("/proc/self/status");
+ for( std::string line; std::getline(in, line); ) {
+ static const int PREFIX_LEN = 11;
+ if( line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0 ) {
+ // We're traced if the PID is not 0 and no other PID starts
+ // with 0 digit, so it's enough to check for just a single
+ // character.
+ return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0';
+ }
+ }
+
+ return false;
+ }
+ } // namespace Catch
+#elif defined(_MSC_VER)
+ extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent();
+ namespace Catch {
+ bool isDebuggerActive() {
+ return IsDebuggerPresent() != 0;
+ }
+ }
+#elif defined(__MINGW32__)
+ extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent();
+ namespace Catch {
+ bool isDebuggerActive() {
+ return IsDebuggerPresent() != 0;
+ }
+ }
+#else
+ namespace Catch {
+ bool isDebuggerActive() { return false; }
+ }
+#endif // Platform
+// end catch_debugger.cpp
+// start catch_decomposer.cpp
+
+namespace Catch {
+
+ ITransientExpression::~ITransientExpression() = default;
+
+ void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ) {
+ if( lhs.size() + rhs.size() < 40 &&
+ lhs.find('\n') == std::string::npos &&
+ rhs.find('\n') == std::string::npos )
+ os << lhs << " " << op << " " << rhs;
+ else
+ os << lhs << "\n" << op << "\n" << rhs;
+ }
+}
+// end catch_decomposer.cpp
+// start catch_enforce.cpp
+
+#include <stdexcept>
+
+namespace Catch {
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER)
+ [[noreturn]]
+ void throw_exception(std::exception const& e) {
+ Catch::cerr() << "Catch will terminate because it needed to throw an exception.\n"
+ << "The message was: " << e.what() << '\n';
+ std::terminate();
+ }
+#endif
+
+ [[noreturn]]
+ void throw_logic_error(std::string const& msg) {
+ throw_exception(std::logic_error(msg));
+ }
+
+ [[noreturn]]
+ void throw_domain_error(std::string const& msg) {
+ throw_exception(std::domain_error(msg));
+ }
+
+ [[noreturn]]
+ void throw_runtime_error(std::string const& msg) {
+ throw_exception(std::runtime_error(msg));
+ }
+
+} // namespace Catch;
+// end catch_enforce.cpp
+// start catch_enum_values_registry.cpp
+// start catch_enum_values_registry.h
+
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+ namespace Detail {
+
+ std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRef allValueNames, std::vector<int> const& values );
+
+ class EnumValuesRegistry : public IMutableEnumValuesRegistry {
+
+ std::vector<std::unique_ptr<EnumInfo>> m_enumInfos;
+
+ EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector<int> const& values) override;
+ };
+
+ std::vector<StringRef> parseEnums( StringRef enums );
+
+ } // Detail
+
+} // Catch
+
+// end catch_enum_values_registry.h
+
+#include <map>
+#include <cassert>
+
+namespace Catch {
+
+ IMutableEnumValuesRegistry::~IMutableEnumValuesRegistry() {}
+
+ namespace Detail {
+
+ namespace {
+ // Extracts the actual name part of an enum instance
+ // In other words, it returns the Blue part of Bikeshed::Colour::Blue
+ StringRef extractInstanceName(StringRef enumInstance) {
+ // Find last occurrence of ":"
+ size_t name_start = enumInstance.size();
+ while (name_start > 0 && enumInstance[name_start - 1] != ':') {
+ --name_start;
+ }
+ return enumInstance.substr(name_start, enumInstance.size() - name_start);
+ }
+ }
+
+ std::vector<StringRef> parseEnums( StringRef enums ) {
+ auto enumValues = splitStringRef( enums, ',' );
+ std::vector<StringRef> parsed;
+ parsed.reserve( enumValues.size() );
+ for( auto const& enumValue : enumValues ) {
+ parsed.push_back(trim(extractInstanceName(enumValue)));
+ }
+ return parsed;
+ }
+
+ EnumInfo::~EnumInfo() {}
+
+ StringRef EnumInfo::lookup( int value ) const {
+ for( auto const& valueToName : m_values ) {
+ if( valueToName.first == value )
+ return valueToName.second;
+ }
+ return "{** unexpected enum value **}"_sr;
+ }
+
+ std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRef allValueNames, std::vector<int> const& values ) {
+ std::unique_ptr<EnumInfo> enumInfo( new EnumInfo );
+ enumInfo->m_name = enumName;
+ enumInfo->m_values.reserve( values.size() );
+
+ const auto valueNames = Catch::Detail::parseEnums( allValueNames );
+ assert( valueNames.size() == values.size() );
+ std::size_t i = 0;
+ for( auto value : values )
+ enumInfo->m_values.emplace_back(value, valueNames[i++]);
+
+ return enumInfo;
+ }
+
+ EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName, StringRef allValueNames, std::vector<int> const& values ) {
+ m_enumInfos.push_back(makeEnumInfo(enumName, allValueNames, values));
+ return *m_enumInfos.back();
+ }
+
+ } // Detail
+} // Catch
+
+// end catch_enum_values_registry.cpp
+// start catch_errno_guard.cpp
+
+#include <cerrno>
+
+namespace Catch {
+ ErrnoGuard::ErrnoGuard():m_oldErrno(errno){}
+ ErrnoGuard::~ErrnoGuard() { errno = m_oldErrno; }
+}
+// end catch_errno_guard.cpp
+// start catch_exception_translator_registry.cpp
+
+// start catch_exception_translator_registry.h
+
+#include <vector>
+#include <string>
+#include <memory>
+
+namespace Catch {
+
+ class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry {
+ public:
+ ~ExceptionTranslatorRegistry();
+ virtual void registerTranslator( const IExceptionTranslator* translator );
+ std::string translateActiveException() const override;
+ std::string tryTranslators() const;
+
+ private:
+ std::vector<std::unique_ptr<IExceptionTranslator const>> m_translators;
+ };
+}
+
+// end catch_exception_translator_registry.h
+#ifdef __OBJC__
+#import "Foundation/Foundation.h"
+#endif
+
+namespace Catch {
+
+ ExceptionTranslatorRegistry::~ExceptionTranslatorRegistry() {
+ }
+
+ void ExceptionTranslatorRegistry::registerTranslator( const IExceptionTranslator* translator ) {
+ m_translators.push_back( std::unique_ptr<const IExceptionTranslator>( translator ) );
+ }
+
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ std::string ExceptionTranslatorRegistry::translateActiveException() const {
+ try {
+#ifdef __OBJC__
+ // In Objective-C try objective-c exceptions first
+ @try {
+ return tryTranslators();
+ }
+ @catch (NSException *exception) {
+ return Catch::Detail::stringify( [exception description] );
+ }
+#else
+ // Compiling a mixed mode project with MSVC means that CLR
+ // exceptions will be caught in (...) as well. However, these
+ // do not fill-in std::current_exception and thus lead to crash
+ // when attempting rethrow.
+ // /EHa switch also causes structured exceptions to be caught
+ // here, but they fill-in current_exception properly, so
+ // at worst the output should be a little weird, instead of
+ // causing a crash.
+ if (std::current_exception() == nullptr) {
+ return "Non C++ exception. Possibly a CLR exception.";
+ }
+ return tryTranslators();
+#endif
+ }
+ catch( TestFailureException& ) {
+ std::rethrow_exception(std::current_exception());
+ }
+ catch( std::exception& ex ) {
+ return ex.what();
+ }
+ catch( std::string& msg ) {
+ return msg;
+ }
+ catch( const char* msg ) {
+ return msg;
+ }
+ catch(...) {
+ return "Unknown exception";
+ }
+ }
+
+ std::string ExceptionTranslatorRegistry::tryTranslators() const {
+ if (m_translators.empty()) {
+ std::rethrow_exception(std::current_exception());
+ } else {
+ return m_translators[0]->translate(m_translators.begin() + 1, m_translators.end());
+ }
+ }
+
+#else // ^^ Exceptions are enabled // Exceptions are disabled vv
+ std::string ExceptionTranslatorRegistry::translateActiveException() const {
+ CATCH_INTERNAL_ERROR("Attempted to translate active exception under CATCH_CONFIG_DISABLE_EXCEPTIONS!");
+ }
+
+ std::string ExceptionTranslatorRegistry::tryTranslators() const {
+ CATCH_INTERNAL_ERROR("Attempted to use exception translators under CATCH_CONFIG_DISABLE_EXCEPTIONS!");
+ }
+#endif
+
+}
+// end catch_exception_translator_registry.cpp
+// start catch_fatal_condition.cpp
+
+#include <algorithm>
+
+#if !defined( CATCH_CONFIG_WINDOWS_SEH ) && !defined( CATCH_CONFIG_POSIX_SIGNALS )
+
+namespace Catch {
+
+ // If neither SEH nor signal handling is required, the handler impls
+ // do not have to do anything, and can be empty.
+ void FatalConditionHandler::engage_platform() {}
+ void FatalConditionHandler::disengage_platform() {}
+ FatalConditionHandler::FatalConditionHandler() = default;
+ FatalConditionHandler::~FatalConditionHandler() = default;
+
+} // end namespace Catch
+
+#endif // !CATCH_CONFIG_WINDOWS_SEH && !CATCH_CONFIG_POSIX_SIGNALS
+
+#if defined( CATCH_CONFIG_WINDOWS_SEH ) && defined( CATCH_CONFIG_POSIX_SIGNALS )
+#error "Inconsistent configuration: Windows' SEH handling and POSIX signals cannot be enabled at the same time"
+#endif // CATCH_CONFIG_WINDOWS_SEH && CATCH_CONFIG_POSIX_SIGNALS
+
+#if defined( CATCH_CONFIG_WINDOWS_SEH ) || defined( CATCH_CONFIG_POSIX_SIGNALS )
+
+namespace {
+ //! Signals fatal error message to the run context
+ void reportFatal( char const * const message ) {
+ Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( message );
+ }
+
+ //! Minimal size Catch2 needs for its own fatal error handling.
+ //! Picked anecdotally, so it might not be sufficient on all
+ //! platforms, and for all configurations.
+ constexpr std::size_t minStackSizeForErrors = 32 * 1024;
+} // end unnamed namespace
+
+#endif // CATCH_CONFIG_WINDOWS_SEH || CATCH_CONFIG_POSIX_SIGNALS
+
+#if defined( CATCH_CONFIG_WINDOWS_SEH )
+
+namespace Catch {
+
+ struct SignalDefs { DWORD id; const char* name; };
+
+ // There is no 1-1 mapping between signals and windows exceptions.
+ // Windows can easily distinguish between SO and SigSegV,
+ // but SigInt, SigTerm, etc are handled differently.
+ static SignalDefs signalDefs[] = {
+ { static_cast<DWORD>(EXCEPTION_ILLEGAL_INSTRUCTION), "SIGILL - Illegal instruction signal" },
+ { static_cast<DWORD>(EXCEPTION_STACK_OVERFLOW), "SIGSEGV - Stack overflow" },
+ { static_cast<DWORD>(EXCEPTION_ACCESS_VIOLATION), "SIGSEGV - Segmentation violation signal" },
+ { static_cast<DWORD>(EXCEPTION_INT_DIVIDE_BY_ZERO), "Divide by zero error" },
+ };
+
+ static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) {
+ for (auto const& def : signalDefs) {
+ if (ExceptionInfo->ExceptionRecord->ExceptionCode == def.id) {
+ reportFatal(def.name);
+ }
+ }
+ // If its not an exception we care about, pass it along.
+ // This stops us from eating debugger breaks etc.
+ return EXCEPTION_CONTINUE_SEARCH;
+ }
+
+ // Since we do not support multiple instantiations, we put these
+ // into global variables and rely on cleaning them up in outlined
+ // constructors/destructors
+ static PVOID exceptionHandlerHandle = nullptr;
+
+ // For MSVC, we reserve part of the stack memory for handling
+ // memory overflow structured exception.
+ FatalConditionHandler::FatalConditionHandler() {
+ ULONG guaranteeSize = static_cast<ULONG>(minStackSizeForErrors);
+ if (!SetThreadStackGuarantee(&guaranteeSize)) {
+ // We do not want to fully error out, because needing
+ // the stack reserve should be rare enough anyway.
+ Catch::cerr()
+ << "Failed to reserve piece of stack."
+ << " Stack overflows will not be reported successfully.";
+ }
+ }
+
+ // We do not attempt to unset the stack guarantee, because
+ // Windows does not support lowering the stack size guarantee.
+ FatalConditionHandler::~FatalConditionHandler() = default;
+
+ void FatalConditionHandler::engage_platform() {
+ // Register as first handler in current chain
+ exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException);
+ if (!exceptionHandlerHandle) {
+ CATCH_RUNTIME_ERROR("Could not register vectored exception handler");
+ }
+ }
+
+ void FatalConditionHandler::disengage_platform() {
+ if (!RemoveVectoredExceptionHandler(exceptionHandlerHandle)) {
+ CATCH_RUNTIME_ERROR("Could not unregister vectored exception handler");
+ }
+ exceptionHandlerHandle = nullptr;
+ }
+
+} // end namespace Catch
+
+#endif // CATCH_CONFIG_WINDOWS_SEH
+
+#if defined( CATCH_CONFIG_POSIX_SIGNALS )
+
+#include <signal.h>
+
+namespace Catch {
+
+ struct SignalDefs {
+ int id;
+ const char* name;
+ };
+
+ static SignalDefs signalDefs[] = {
+ { SIGINT, "SIGINT - Terminal interrupt signal" },
+ { SIGILL, "SIGILL - Illegal instruction signal" },
+ { SIGFPE, "SIGFPE - Floating point error signal" },
+ { SIGSEGV, "SIGSEGV - Segmentation violation signal" },
+ { SIGTERM, "SIGTERM - Termination request signal" },
+ { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" }
+ };
+
+// Older GCCs trigger -Wmissing-field-initializers for T foo = {}
+// which is zero initialization, but not explicit. We want to avoid
+// that.
+#if defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+ static char* altStackMem = nullptr;
+ static std::size_t altStackSize = 0;
+ static stack_t oldSigStack{};
+ static struct sigaction oldSigActions[sizeof(signalDefs) / sizeof(SignalDefs)]{};
+
+ static void restorePreviousSignalHandlers() {
+ // We set signal handlers back to the previous ones. Hopefully
+ // nobody overwrote them in the meantime, and doesn't expect
+ // their signal handlers to live past ours given that they
+ // installed them after ours..
+ for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) {
+ sigaction(signalDefs[i].id, &oldSigActions[i], nullptr);
+ }
+ // Return the old stack
+ sigaltstack(&oldSigStack, nullptr);
+ }
+
+ static void handleSignal( int sig ) {
+ char const * name = "<unknown signal>";
+ for (auto const& def : signalDefs) {
+ if (sig == def.id) {
+ name = def.name;
+ break;
+ }
+ }
+ // We need to restore previous signal handlers and let them do
+ // their thing, so that the users can have the debugger break
+ // when a signal is raised, and so on.
+ restorePreviousSignalHandlers();
+ reportFatal( name );
+ raise( sig );
+ }
+
+ FatalConditionHandler::FatalConditionHandler() {
+ assert(!altStackMem && "Cannot initialize POSIX signal handler when one already exists");
+ if (altStackSize == 0) {
+ altStackSize = std::max(static_cast<size_t>(SIGSTKSZ), minStackSizeForErrors);
+ }
+ altStackMem = new char[altStackSize]();
+ }
+
+ FatalConditionHandler::~FatalConditionHandler() {
+ delete[] altStackMem;
+ // We signal that another instance can be constructed by zeroing
+ // out the pointer.
+ altStackMem = nullptr;
+ }
+
+ void FatalConditionHandler::engage_platform() {
+ stack_t sigStack;
+ sigStack.ss_sp = altStackMem;
+ sigStack.ss_size = altStackSize;
+ sigStack.ss_flags = 0;
+ sigaltstack(&sigStack, &oldSigStack);
+ struct sigaction sa = { };
+
+ sa.sa_handler = handleSignal;
+ sa.sa_flags = SA_ONSTACK;
+ for (std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i) {
+ sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
+ }
+ }
+
+#if defined(__GNUC__)
+# pragma GCC diagnostic pop
+#endif
+
+ void FatalConditionHandler::disengage_platform() {
+ restorePreviousSignalHandlers();
+ }
+
+} // end namespace Catch
+
+#endif // CATCH_CONFIG_POSIX_SIGNALS
+// end catch_fatal_condition.cpp
+// start catch_generators.cpp
+
+#include <limits>
+#include <set>
+
+namespace Catch {
+
+IGeneratorTracker::~IGeneratorTracker() {}
+
+const char* GeneratorException::what() const noexcept {
+ return m_msg;
+}
+
+namespace Generators {
+
+ GeneratorUntypedBase::~GeneratorUntypedBase() {}
+
+ auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
+ return getResultCapture().acquireGeneratorTracker( generatorName, lineInfo );
+ }
+
+} // namespace Generators
+} // namespace Catch
+// end catch_generators.cpp
+// start catch_interfaces_capture.cpp
+
+namespace Catch {
+ IResultCapture::~IResultCapture() = default;
+}
+// end catch_interfaces_capture.cpp
+// start catch_interfaces_config.cpp
+
+namespace Catch {
+ IConfig::~IConfig() = default;
+}
+// end catch_interfaces_config.cpp
+// start catch_interfaces_exception.cpp
+
+namespace Catch {
+ IExceptionTranslator::~IExceptionTranslator() = default;
+ IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() = default;
+}
+// end catch_interfaces_exception.cpp
+// start catch_interfaces_registry_hub.cpp
+
+namespace Catch {
+ IRegistryHub::~IRegistryHub() = default;
+ IMutableRegistryHub::~IMutableRegistryHub() = default;
+}
+// end catch_interfaces_registry_hub.cpp
+// start catch_interfaces_reporter.cpp
+
+// start catch_reporter_listening.h
+
+namespace Catch {
+
+ class ListeningReporter : public IStreamingReporter {
+ using Reporters = std::vector<IStreamingReporterPtr>;
+ Reporters m_listeners;
+ IStreamingReporterPtr m_reporter = nullptr;
+ ReporterPreferences m_preferences;
+
+ public:
+ ListeningReporter();
+
+ void addListener( IStreamingReporterPtr&& listener );
+ void addReporter( IStreamingReporterPtr&& reporter );
+
+ public: // IStreamingReporter
+
+ ReporterPreferences getPreferences() const override;
+
+ void noMatchingTestCases( std::string const& spec ) override;
+
+ void reportInvalidArguments(std::string const&arg) override;
+
+ static std::set<Verbosity> getSupportedVerbosities();
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void benchmarkPreparing(std::string const& name) override;
+ void benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) override;
+ void benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) override;
+ void benchmarkFailed(std::string const&) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ void testRunStarting( TestRunInfo const& testRunInfo ) override;
+ void testGroupStarting( GroupInfo const& groupInfo ) override;
+ void testCaseStarting( TestCaseInfo const& testInfo ) override;
+ void sectionStarting( SectionInfo const& sectionInfo ) override;
+ void assertionStarting( AssertionInfo const& assertionInfo ) override;
+
+ // The return value indicates if the messages buffer should be cleared:
+ bool assertionEnded( AssertionStats const& assertionStats ) override;
+ void sectionEnded( SectionStats const& sectionStats ) override;
+ void testCaseEnded( TestCaseStats const& testCaseStats ) override;
+ void testGroupEnded( TestGroupStats const& testGroupStats ) override;
+ void testRunEnded( TestRunStats const& testRunStats ) override;
+
+ void skipTest( TestCaseInfo const& testInfo ) override;
+ bool isMulti() const override;
+
+ };
+
+} // end namespace Catch
+
+// end catch_reporter_listening.h
+namespace Catch {
+
+ ReporterConfig::ReporterConfig( IConfigPtr const& _fullConfig )
+ : m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {}
+
+ ReporterConfig::ReporterConfig( IConfigPtr const& _fullConfig, std::ostream& _stream )
+ : m_stream( &_stream ), m_fullConfig( _fullConfig ) {}
+
+ std::ostream& ReporterConfig::stream() const { return *m_stream; }
+ IConfigPtr ReporterConfig::fullConfig() const { return m_fullConfig; }
+
+ TestRunInfo::TestRunInfo( std::string const& _name ) : name( _name ) {}
+
+ GroupInfo::GroupInfo( std::string const& _name,
+ std::size_t _groupIndex,
+ std::size_t _groupsCount )
+ : name( _name ),
+ groupIndex( _groupIndex ),
+ groupsCounts( _groupsCount )
+ {}
+
+ AssertionStats::AssertionStats( AssertionResult const& _assertionResult,
+ std::vector<MessageInfo> const& _infoMessages,
+ Totals const& _totals )
+ : assertionResult( _assertionResult ),
+ infoMessages( _infoMessages ),
+ totals( _totals )
+ {
+ assertionResult.m_resultData.lazyExpression.m_transientExpression = _assertionResult.m_resultData.lazyExpression.m_transientExpression;
+
+ if( assertionResult.hasMessage() ) {
+ // Copy message into messages list.
+ // !TBD This should have been done earlier, somewhere
+ MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() );
+ builder << assertionResult.getMessage();
+ builder.m_info.message = builder.m_stream.str();
+
+ infoMessages.push_back( builder.m_info );
+ }
+ }
+
+ AssertionStats::~AssertionStats() = default;
+
+ SectionStats::SectionStats( SectionInfo const& _sectionInfo,
+ Counts const& _assertions,
+ double _durationInSeconds,
+ bool _missingAssertions )
+ : sectionInfo( _sectionInfo ),
+ assertions( _assertions ),
+ durationInSeconds( _durationInSeconds ),
+ missingAssertions( _missingAssertions )
+ {}
+
+ SectionStats::~SectionStats() = default;
+
+ TestCaseStats::TestCaseStats( TestCaseInfo const& _testInfo,
+ Totals const& _totals,
+ std::string const& _stdOut,
+ std::string const& _stdErr,
+ bool _aborting )
+ : testInfo( _testInfo ),
+ totals( _totals ),
+ stdOut( _stdOut ),
+ stdErr( _stdErr ),
+ aborting( _aborting )
+ {}
+
+ TestCaseStats::~TestCaseStats() = default;
+
+ TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo,
+ Totals const& _totals,
+ bool _aborting )
+ : groupInfo( _groupInfo ),
+ totals( _totals ),
+ aborting( _aborting )
+ {}
+
+ TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo )
+ : groupInfo( _groupInfo ),
+ aborting( false )
+ {}
+
+ TestGroupStats::~TestGroupStats() = default;
+
+ TestRunStats::TestRunStats( TestRunInfo const& _runInfo,
+ Totals const& _totals,
+ bool _aborting )
+ : runInfo( _runInfo ),
+ totals( _totals ),
+ aborting( _aborting )
+ {}
+
+ TestRunStats::~TestRunStats() = default;
+
+ void IStreamingReporter::fatalErrorEncountered( StringRef ) {}
+ bool IStreamingReporter::isMulti() const { return false; }
+
+ IReporterFactory::~IReporterFactory() = default;
+ IReporterRegistry::~IReporterRegistry() = default;
+
+} // end namespace Catch
+// end catch_interfaces_reporter.cpp
+// start catch_interfaces_runner.cpp
+
+namespace Catch {
+ IRunner::~IRunner() = default;
+}
+// end catch_interfaces_runner.cpp
+// start catch_interfaces_testcase.cpp
+
+namespace Catch {
+ ITestInvoker::~ITestInvoker() = default;
+ ITestCaseRegistry::~ITestCaseRegistry() = default;
+}
+// end catch_interfaces_testcase.cpp
+// start catch_leak_detector.cpp
+
+#ifdef CATCH_CONFIG_WINDOWS_CRTDBG
+#include <crtdbg.h>
+
+namespace Catch {
+
+ LeakDetector::LeakDetector() {
+ int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
+ flag |= _CRTDBG_LEAK_CHECK_DF;
+ flag |= _CRTDBG_ALLOC_MEM_DF;
+ _CrtSetDbgFlag(flag);
+ _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
+ _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
+ // Change this to leaking allocation's number to break there
+ _CrtSetBreakAlloc(-1);
+ }
+}
+
+#else
+
+ Catch::LeakDetector::LeakDetector() {}
+
+#endif
+
+Catch::LeakDetector::~LeakDetector() {
+ Catch::cleanUp();
+}
+// end catch_leak_detector.cpp
+// start catch_list.cpp
+
+// start catch_list.h
+
+#include <set>
+
+namespace Catch {
+
+ std::size_t listTests( Config const& config );
+
+ std::size_t listTestsNamesOnly( Config const& config );
+
+ struct TagInfo {
+ void add( std::string const& spelling );
+ std::string all() const;
+
+ std::set<std::string> spellings;
+ std::size_t count = 0;
+ };
+
+ std::size_t listTags( Config const& config );
+
+ std::size_t listReporters();
+
+ Option<std::size_t> list( std::shared_ptr<Config> const& config );
+
+} // end namespace Catch
+
+// end catch_list.h
+// start catch_text.h
+
+namespace Catch {
+ using namespace clara::TextFlow;
+}
+
+// end catch_text.h
+#include <limits>
+#include <algorithm>
+#include <iomanip>
+
+namespace Catch {
+
+ std::size_t listTests( Config const& config ) {
+ TestSpec const& testSpec = config.testSpec();
+ if( config.hasTestFilters() )
+ Catch::cout() << "Matching test cases:\n";
+ else {
+ Catch::cout() << "All available test cases:\n";
+ }
+
+ auto matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
+ for( auto const& testCaseInfo : matchedTestCases ) {
+ Colour::Code colour = testCaseInfo.isHidden()
+ ? Colour::SecondaryText
+ : Colour::None;
+ Colour colourGuard( colour );
+
+ Catch::cout() << Column( testCaseInfo.name ).initialIndent( 2 ).indent( 4 ) << "\n";
+ if( config.verbosity() >= Verbosity::High ) {
+ Catch::cout() << Column( Catch::Detail::stringify( testCaseInfo.lineInfo ) ).indent(4) << std::endl;
+ std::string description = testCaseInfo.description;
+ if( description.empty() )
+ description = "(NO DESCRIPTION)";
+ Catch::cout() << Column( description ).indent(4) << std::endl;
+ }
+ if( !testCaseInfo.tags.empty() )
+ Catch::cout() << Column( testCaseInfo.tagsAsString() ).indent( 6 ) << "\n";
+ }
+
+ if( !config.hasTestFilters() )
+ Catch::cout() << pluralise( matchedTestCases.size(), "test case" ) << '\n' << std::endl;
+ else
+ Catch::cout() << pluralise( matchedTestCases.size(), "matching test case" ) << '\n' << std::endl;
+ return matchedTestCases.size();
+ }
+
+ std::size_t listTestsNamesOnly( Config const& config ) {
+ TestSpec const& testSpec = config.testSpec();
+ std::size_t matchedTests = 0;
+ std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
+ for( auto const& testCaseInfo : matchedTestCases ) {
+ matchedTests++;
+ if( startsWith( testCaseInfo.name, '#' ) )
+ Catch::cout() << '"' << testCaseInfo.name << '"';
+ else
+ Catch::cout() << testCaseInfo.name;
+ if ( config.verbosity() >= Verbosity::High )
+ Catch::cout() << "\t@" << testCaseInfo.lineInfo;
+ Catch::cout() << std::endl;
+ }
+ return matchedTests;
+ }
+
+ void TagInfo::add( std::string const& spelling ) {
+ ++count;
+ spellings.insert( spelling );
+ }
+
+ std::string TagInfo::all() const {
+ size_t size = 0;
+ for (auto const& spelling : spellings) {
+ // Add 2 for the brackes
+ size += spelling.size() + 2;
+ }
+
+ std::string out; out.reserve(size);
+ for (auto const& spelling : spellings) {
+ out += '[';
+ out += spelling;
+ out += ']';
+ }
+ return out;
+ }
+
+ std::size_t listTags( Config const& config ) {
+ TestSpec const& testSpec = config.testSpec();
+ if( config.hasTestFilters() )
+ Catch::cout() << "Tags for matching test cases:\n";
+ else {
+ Catch::cout() << "All available tags:\n";
+ }
+
+ std::map<std::string, TagInfo> tagCounts;
+
+ std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
+ for( auto const& testCase : matchedTestCases ) {
+ for( auto const& tagName : testCase.getTestCaseInfo().tags ) {
+ std::string lcaseTagName = toLower( tagName );
+ auto countIt = tagCounts.find( lcaseTagName );
+ if( countIt == tagCounts.end() )
+ countIt = tagCounts.insert( std::make_pair( lcaseTagName, TagInfo() ) ).first;
+ countIt->second.add( tagName );
+ }
+ }
+
+ for( auto const& tagCount : tagCounts ) {
+ ReusableStringStream rss;
+ rss << " " << std::setw(2) << tagCount.second.count << " ";
+ auto str = rss.str();
+ auto wrapper = Column( tagCount.second.all() )
+ .initialIndent( 0 )
+ .indent( str.size() )
+ .width( CATCH_CONFIG_CONSOLE_WIDTH-10 );
+ Catch::cout() << str << wrapper << '\n';
+ }
+ Catch::cout() << pluralise( tagCounts.size(), "tag" ) << '\n' << std::endl;
+ return tagCounts.size();
+ }
+
+ std::size_t listReporters() {
+ Catch::cout() << "Available reporters:\n";
+ IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
+ std::size_t maxNameLen = 0;
+ for( auto const& factoryKvp : factories )
+ maxNameLen = (std::max)( maxNameLen, factoryKvp.first.size() );
+
+ for( auto const& factoryKvp : factories ) {
+ Catch::cout()
+ << Column( factoryKvp.first + ":" )
+ .indent(2)
+ .width( 5+maxNameLen )
+ + Column( factoryKvp.second->getDescription() )
+ .initialIndent(0)
+ .indent(2)
+ .width( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 )
+ << "\n";
+ }
+ Catch::cout() << std::endl;
+ return factories.size();
+ }
+
+ Option<std::size_t> list( std::shared_ptr<Config> const& config ) {
+ Option<std::size_t> listedCount;
+ getCurrentMutableContext().setConfig( config );
+ if( config->listTests() )
+ listedCount = listedCount.valueOr(0) + listTests( *config );
+ if( config->listTestNamesOnly() )
+ listedCount = listedCount.valueOr(0) + listTestsNamesOnly( *config );
+ if( config->listTags() )
+ listedCount = listedCount.valueOr(0) + listTags( *config );
+ if( config->listReporters() )
+ listedCount = listedCount.valueOr(0) + listReporters();
+ return listedCount;
+ }
+
+} // end namespace Catch
+// end catch_list.cpp
+// start catch_matchers.cpp
+
+namespace Catch {
+namespace Matchers {
+ namespace Impl {
+
+ std::string MatcherUntypedBase::toString() const {
+ if( m_cachedToString.empty() )
+ m_cachedToString = describe();
+ return m_cachedToString;
+ }
+
+ MatcherUntypedBase::~MatcherUntypedBase() = default;
+
+ } // namespace Impl
+} // namespace Matchers
+
+using namespace Matchers;
+using Matchers::Impl::MatcherBase;
+
+} // namespace Catch
+// end catch_matchers.cpp
+// start catch_matchers_exception.cpp
+
+namespace Catch {
+namespace Matchers {
+namespace Exception {
+
+bool ExceptionMessageMatcher::match(std::exception const& ex) const {
+ return ex.what() == m_message;
+}
+
+std::string ExceptionMessageMatcher::describe() const {
+ return "exception message matches \"" + m_message + "\"";
+}
+
+}
+Exception::ExceptionMessageMatcher Message(std::string const& message) {
+ return Exception::ExceptionMessageMatcher(message);
+}
+
+// namespace Exception
+} // namespace Matchers
+} // namespace Catch
+// end catch_matchers_exception.cpp
+// start catch_matchers_floating.cpp
+
+// start catch_polyfills.hpp
+
+namespace Catch {
+ bool isnan(float f);
+ bool isnan(double d);
+}
+
+// end catch_polyfills.hpp
+// start catch_to_string.hpp
+
+#include <string>
+
+namespace Catch {
+ template <typename T>
+ std::string to_string(T const& t) {
+#if defined(CATCH_CONFIG_CPP11_TO_STRING)
+ return std::to_string(t);
+#else
+ ReusableStringStream rss;
+ rss << t;
+ return rss.str();
+#endif
+ }
+} // end namespace Catch
+
+// end catch_to_string.hpp
+#include <algorithm>
+#include <cmath>
+#include <cstdlib>
+#include <cstdint>
+#include <cstring>
+#include <sstream>
+#include <type_traits>
+#include <iomanip>
+#include <limits>
+
+namespace Catch {
+namespace {
+
+ int32_t convert(float f) {
+ static_assert(sizeof(float) == sizeof(int32_t), "Important ULP matcher assumption violated");
+ int32_t i;
+ std::memcpy(&i, &f, sizeof(f));
+ return i;
+ }
+
+ int64_t convert(double d) {
+ static_assert(sizeof(double) == sizeof(int64_t), "Important ULP matcher assumption violated");
+ int64_t i;
+ std::memcpy(&i, &d, sizeof(d));
+ return i;
+ }
+
+ template <typename FP>
+ bool almostEqualUlps(FP lhs, FP rhs, uint64_t maxUlpDiff) {
+ // Comparison with NaN should always be false.
+ // This way we can rule it out before getting into the ugly details
+ if (Catch::isnan(lhs) || Catch::isnan(rhs)) {
+ return false;
+ }
+
+ auto lc = convert(lhs);
+ auto rc = convert(rhs);
+
+ if ((lc < 0) != (rc < 0)) {
+ // Potentially we can have +0 and -0
+ return lhs == rhs;
+ }
+
+ // static cast as a workaround for IBM XLC
+ auto ulpDiff = std::abs(static_cast<FP>(lc - rc));
+ return static_cast<uint64_t>(ulpDiff) <= maxUlpDiff;
+ }
+
+#if defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+
+ float nextafter(float x, float y) {
+ return ::nextafterf(x, y);
+ }
+
+ double nextafter(double x, double y) {
+ return ::nextafter(x, y);
+ }
+
+#endif // ^^^ CATCH_CONFIG_GLOBAL_NEXTAFTER ^^^
+
+template <typename FP>
+FP step(FP start, FP direction, uint64_t steps) {
+ for (uint64_t i = 0; i < steps; ++i) {
+#if defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+ start = Catch::nextafter(start, direction);
+#else
+ start = std::nextafter(start, direction);
+#endif
+ }
+ return start;
+}
+
+// Performs equivalent check of std::fabs(lhs - rhs) <= margin
+// But without the subtraction to allow for INFINITY in comparison
+bool marginComparison(double lhs, double rhs, double margin) {
+ return (lhs + margin >= rhs) && (rhs + margin >= lhs);
+}
+
+template <typename FloatingPoint>
+void write(std::ostream& out, FloatingPoint num) {
+ out << std::scientific
+ << std::setprecision(std::numeric_limits<FloatingPoint>::max_digits10 - 1)
+ << num;
+}
+
+} // end anonymous namespace
+
+namespace Matchers {
+namespace Floating {
+
+ enum class FloatingPointKind : uint8_t {
+ Float,
+ Double
+ };
+
+ WithinAbsMatcher::WithinAbsMatcher(double target, double margin)
+ :m_target{ target }, m_margin{ margin } {
+ CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.'
+ << " Margin has to be non-negative.");
+ }
+
+ // Performs equivalent check of std::fabs(lhs - rhs) <= margin
+ // But without the subtraction to allow for INFINITY in comparison
+ bool WithinAbsMatcher::match(double const& matchee) const {
+ return (matchee + m_margin >= m_target) && (m_target + m_margin >= matchee);
+ }
+
+ std::string WithinAbsMatcher::describe() const {
+ return "is within " + ::Catch::Detail::stringify(m_margin) + " of " + ::Catch::Detail::stringify(m_target);
+ }
+
+ WithinUlpsMatcher::WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType)
+ :m_target{ target }, m_ulps{ ulps }, m_type{ baseType } {
+ CATCH_ENFORCE(m_type == FloatingPointKind::Double
+ || m_ulps < (std::numeric_limits<uint32_t>::max)(),
+ "Provided ULP is impossibly large for a float comparison.");
+ }
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+// Clang <3.5 reports on the default branch in the switch below
+#pragma clang diagnostic ignored "-Wunreachable-code"
+#endif
+
+ bool WithinUlpsMatcher::match(double const& matchee) const {
+ switch (m_type) {
+ case FloatingPointKind::Float:
+ return almostEqualUlps<float>(static_cast<float>(matchee), static_cast<float>(m_target), m_ulps);
+ case FloatingPointKind::Double:
+ return almostEqualUlps<double>(matchee, m_target, m_ulps);
+ default:
+ CATCH_INTERNAL_ERROR( "Unknown FloatingPointKind value" );
+ }
+ }
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+ std::string WithinUlpsMatcher::describe() const {
+ std::stringstream ret;
+
+ ret << "is within " << m_ulps << " ULPs of ";
+
+ if (m_type == FloatingPointKind::Float) {
+ write(ret, static_cast<float>(m_target));
+ ret << 'f';
+ } else {
+ write(ret, m_target);
+ }
+
+ ret << " ([";
+ if (m_type == FloatingPointKind::Double) {
+ write(ret, step(m_target, static_cast<double>(-INFINITY), m_ulps));
+ ret << ", ";
+ write(ret, step(m_target, static_cast<double>( INFINITY), m_ulps));
+ } else {
+ // We have to cast INFINITY to float because of MinGW, see #1782
+ write(ret, step(static_cast<float>(m_target), static_cast<float>(-INFINITY), m_ulps));
+ ret << ", ";
+ write(ret, step(static_cast<float>(m_target), static_cast<float>( INFINITY), m_ulps));
+ }
+ ret << "])";
+
+ return ret.str();
+ }
+
+ WithinRelMatcher::WithinRelMatcher(double target, double epsilon):
+ m_target(target),
+ m_epsilon(epsilon){
+ CATCH_ENFORCE(m_epsilon >= 0., "Relative comparison with epsilon < 0 does not make sense.");
+ CATCH_ENFORCE(m_epsilon < 1., "Relative comparison with epsilon >= 1 does not make sense.");
+ }
+
+ bool WithinRelMatcher::match(double const& matchee) const {
+ const auto relMargin = m_epsilon * (std::max)(std::fabs(matchee), std::fabs(m_target));
+ return marginComparison(matchee, m_target,
+ std::isinf(relMargin)? 0 : relMargin);
+ }
+
+ std::string WithinRelMatcher::describe() const {
+ Catch::ReusableStringStream sstr;
+ sstr << "and " << m_target << " are within " << m_epsilon * 100. << "% of each other";
+ return sstr.str();
+ }
+
+}// namespace Floating
+
+Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff) {
+ return Floating::WithinUlpsMatcher(target, maxUlpDiff, Floating::FloatingPointKind::Double);
+}
+
+Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff) {
+ return Floating::WithinUlpsMatcher(target, maxUlpDiff, Floating::FloatingPointKind::Float);
+}
+
+Floating::WithinAbsMatcher WithinAbs(double target, double margin) {
+ return Floating::WithinAbsMatcher(target, margin);
+}
+
+Floating::WithinRelMatcher WithinRel(double target, double eps) {
+ return Floating::WithinRelMatcher(target, eps);
+}
+
+Floating::WithinRelMatcher WithinRel(double target) {
+ return Floating::WithinRelMatcher(target, std::numeric_limits<double>::epsilon() * 100);
+}
+
+Floating::WithinRelMatcher WithinRel(float target, float eps) {
+ return Floating::WithinRelMatcher(target, eps);
+}
+
+Floating::WithinRelMatcher WithinRel(float target) {
+ return Floating::WithinRelMatcher(target, std::numeric_limits<float>::epsilon() * 100);
+}
+
+} // namespace Matchers
+} // namespace Catch
+// end catch_matchers_floating.cpp
+// start catch_matchers_generic.cpp
+
+std::string Catch::Matchers::Generic::Detail::finalizeDescription(const std::string& desc) {
+ if (desc.empty()) {
+ return "matches undescribed predicate";
+ } else {
+ return "matches predicate: \"" + desc + '"';
+ }
+}
+// end catch_matchers_generic.cpp
+// start catch_matchers_string.cpp
+
+#include <regex>
+
+namespace Catch {
+namespace Matchers {
+
+ namespace StdString {
+
+ CasedString::CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity )
+ : m_caseSensitivity( caseSensitivity ),
+ m_str( adjustString( str ) )
+ {}
+ std::string CasedString::adjustString( std::string const& str ) const {
+ return m_caseSensitivity == CaseSensitive::No
+ ? toLower( str )
+ : str;
+ }
+ std::string CasedString::caseSensitivitySuffix() const {
+ return m_caseSensitivity == CaseSensitive::No
+ ? " (case insensitive)"
+ : std::string();
+ }
+
+ StringMatcherBase::StringMatcherBase( std::string const& operation, CasedString const& comparator )
+ : m_comparator( comparator ),
+ m_operation( operation ) {
+ }
+
+ std::string StringMatcherBase::describe() const {
+ std::string description;
+ description.reserve(5 + m_operation.size() + m_comparator.m_str.size() +
+ m_comparator.caseSensitivitySuffix().size());
+ description += m_operation;
+ description += ": \"";
+ description += m_comparator.m_str;
+ description += "\"";
+ description += m_comparator.caseSensitivitySuffix();
+ return description;
+ }
+
+ EqualsMatcher::EqualsMatcher( CasedString const& comparator ) : StringMatcherBase( "equals", comparator ) {}
+
+ bool EqualsMatcher::match( std::string const& source ) const {
+ return m_comparator.adjustString( source ) == m_comparator.m_str;
+ }
+
+ ContainsMatcher::ContainsMatcher( CasedString const& comparator ) : StringMatcherBase( "contains", comparator ) {}
+
+ bool ContainsMatcher::match( std::string const& source ) const {
+ return contains( m_comparator.adjustString( source ), m_comparator.m_str );
+ }
+
+ StartsWithMatcher::StartsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "starts with", comparator ) {}
+
+ bool StartsWithMatcher::match( std::string const& source ) const {
+ return startsWith( m_comparator.adjustString( source ), m_comparator.m_str );
+ }
+
+ EndsWithMatcher::EndsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "ends with", comparator ) {}
+
+ bool EndsWithMatcher::match( std::string const& source ) const {
+ return endsWith( m_comparator.adjustString( source ), m_comparator.m_str );
+ }
+
+ RegexMatcher::RegexMatcher(std::string regex, CaseSensitive::Choice caseSensitivity): m_regex(std::move(regex)), m_caseSensitivity(caseSensitivity) {}
+
+ bool RegexMatcher::match(std::string const& matchee) const {
+ auto flags = std::regex::ECMAScript; // ECMAScript is the default syntax option anyway
+ if (m_caseSensitivity == CaseSensitive::Choice::No) {
+ flags |= std::regex::icase;
+ }
+ auto reg = std::regex(m_regex, flags);
+ return std::regex_match(matchee, reg);
+ }
+
+ std::string RegexMatcher::describe() const {
+ return "matches " + ::Catch::Detail::stringify(m_regex) + ((m_caseSensitivity == CaseSensitive::Choice::Yes)? " case sensitively" : " case insensitively");
+ }
+
+ } // namespace StdString
+
+ StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity ) {
+ return StdString::EqualsMatcher( StdString::CasedString( str, caseSensitivity) );
+ }
+ StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity ) {
+ return StdString::ContainsMatcher( StdString::CasedString( str, caseSensitivity) );
+ }
+ StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity ) {
+ return StdString::EndsWithMatcher( StdString::CasedString( str, caseSensitivity) );
+ }
+ StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity ) {
+ return StdString::StartsWithMatcher( StdString::CasedString( str, caseSensitivity) );
+ }
+
+ StdString::RegexMatcher Matches(std::string const& regex, CaseSensitive::Choice caseSensitivity) {
+ return StdString::RegexMatcher(regex, caseSensitivity);
+ }
+
+} // namespace Matchers
+} // namespace Catch
+// end catch_matchers_string.cpp
+// start catch_message.cpp
+
+// start catch_uncaught_exceptions.h
+
+namespace Catch {
+ bool uncaught_exceptions();
+} // end namespace Catch
+
+// end catch_uncaught_exceptions.h
+#include <cassert>
+#include <stack>
+
+namespace Catch {
+
+ MessageInfo::MessageInfo( StringRef const& _macroName,
+ SourceLineInfo const& _lineInfo,
+ ResultWas::OfType _type )
+ : macroName( _macroName ),
+ lineInfo( _lineInfo ),
+ type( _type ),
+ sequence( ++globalCount )
+ {}
+
+ bool MessageInfo::operator==( MessageInfo const& other ) const {
+ return sequence == other.sequence;
+ }
+
+ bool MessageInfo::operator<( MessageInfo const& other ) const {
+ return sequence < other.sequence;
+ }
+
+ // This may need protecting if threading support is added
+ unsigned int MessageInfo::globalCount = 0;
+
+ ////////////////////////////////////////////////////////////////////////////
+
+ Catch::MessageBuilder::MessageBuilder( StringRef const& macroName,
+ SourceLineInfo const& lineInfo,
+ ResultWas::OfType type )
+ :m_info(macroName, lineInfo, type) {}
+
+ ////////////////////////////////////////////////////////////////////////////
+
+ ScopedMessage::ScopedMessage( MessageBuilder const& builder )
+ : m_info( builder.m_info ), m_moved()
+ {
+ m_info.message = builder.m_stream.str();
+ getResultCapture().pushScopedMessage( m_info );
+ }
+
+ ScopedMessage::ScopedMessage( ScopedMessage&& old )
+ : m_info( old.m_info ), m_moved()
+ {
+ old.m_moved = true;
+ }
+
+ ScopedMessage::~ScopedMessage() {
+ if ( !uncaught_exceptions() && !m_moved ){
+ getResultCapture().popScopedMessage(m_info);
+ }
+ }
+
+ Capturer::Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ) {
+ auto trimmed = [&] (size_t start, size_t end) {
+ while (names[start] == ',' || isspace(static_cast<unsigned char>(names[start]))) {
+ ++start;
+ }
+ while (names[end] == ',' || isspace(static_cast<unsigned char>(names[end]))) {
+ --end;
+ }
+ return names.substr(start, end - start + 1);
+ };
+ auto skipq = [&] (size_t start, char quote) {
+ for (auto i = start + 1; i < names.size() ; ++i) {
+ if (names[i] == quote)
+ return i;
+ if (names[i] == '\\')
+ ++i;
+ }
+ CATCH_INTERNAL_ERROR("CAPTURE parsing encountered unmatched quote");
+ };
+
+ size_t start = 0;
+ std::stack<char> openings;
+ for (size_t pos = 0; pos < names.size(); ++pos) {
+ char c = names[pos];
+ switch (c) {
+ case '[':
+ case '{':
+ case '(':
+ // It is basically impossible to disambiguate between
+ // comparison and start of template args in this context
+// case '<':
+ openings.push(c);
+ break;
+ case ']':
+ case '}':
+ case ')':
+// case '>':
+ openings.pop();
+ break;
+ case '"':
+ case '\'':
+ pos = skipq(pos, c);
+ break;
+ case ',':
+ if (start != pos && openings.empty()) {
+ m_messages.emplace_back(macroName, lineInfo, resultType);
+ m_messages.back().message = static_cast<std::string>(trimmed(start, pos));
+ m_messages.back().message += " := ";
+ start = pos;
+ }
+ }
+ }
+ assert(openings.empty() && "Mismatched openings");
+ m_messages.emplace_back(macroName, lineInfo, resultType);
+ m_messages.back().message = static_cast<std::string>(trimmed(start, names.size() - 1));
+ m_messages.back().message += " := ";
+ }
+ Capturer::~Capturer() {
+ if ( !uncaught_exceptions() ){
+ assert( m_captured == m_messages.size() );
+ for( size_t i = 0; i < m_captured; ++i )
+ m_resultCapture.popScopedMessage( m_messages[i] );
+ }
+ }
+
+ void Capturer::captureValue( size_t index, std::string const& value ) {
+ assert( index < m_messages.size() );
+ m_messages[index].message += value;
+ m_resultCapture.pushScopedMessage( m_messages[index] );
+ m_captured++;
+ }
+
+} // end namespace Catch
+// end catch_message.cpp
+// start catch_output_redirect.cpp
+
+// start catch_output_redirect.h
+#ifndef TWOBLUECUBES_CATCH_OUTPUT_REDIRECT_H
+#define TWOBLUECUBES_CATCH_OUTPUT_REDIRECT_H
+
+#include <cstdio>
+#include <iosfwd>
+#include <string>
+
+namespace Catch {
+
+ class RedirectedStream {
+ std::ostream& m_originalStream;
+ std::ostream& m_redirectionStream;
+ std::streambuf* m_prevBuf;
+
+ public:
+ RedirectedStream( std::ostream& originalStream, std::ostream& redirectionStream );
+ ~RedirectedStream();
+ };
+
+ class RedirectedStdOut {
+ ReusableStringStream m_rss;
+ RedirectedStream m_cout;
+ public:
+ RedirectedStdOut();
+ auto str() const -> std::string;
+ };
+
+ // StdErr has two constituent streams in C++, std::cerr and std::clog
+ // This means that we need to redirect 2 streams into 1 to keep proper
+ // order of writes
+ class RedirectedStdErr {
+ ReusableStringStream m_rss;
+ RedirectedStream m_cerr;
+ RedirectedStream m_clog;
+ public:
+ RedirectedStdErr();
+ auto str() const -> std::string;
+ };
+
+ class RedirectedStreams {
+ public:
+ RedirectedStreams(RedirectedStreams const&) = delete;
+ RedirectedStreams& operator=(RedirectedStreams const&) = delete;
+ RedirectedStreams(RedirectedStreams&&) = delete;
+ RedirectedStreams& operator=(RedirectedStreams&&) = delete;
+
+ RedirectedStreams(std::string& redirectedCout, std::string& redirectedCerr);
+ ~RedirectedStreams();
+ private:
+ std::string& m_redirectedCout;
+ std::string& m_redirectedCerr;
+ RedirectedStdOut m_redirectedStdOut;
+ RedirectedStdErr m_redirectedStdErr;
+ };
+
+#if defined(CATCH_CONFIG_NEW_CAPTURE)
+
+ // Windows's implementation of std::tmpfile is terrible (it tries
+ // to create a file inside system folder, thus requiring elevated
+ // privileges for the binary), so we have to use tmpnam(_s) and
+ // create the file ourselves there.
+ class TempFile {
+ public:
+ TempFile(TempFile const&) = delete;
+ TempFile& operator=(TempFile const&) = delete;
+ TempFile(TempFile&&) = delete;
+ TempFile& operator=(TempFile&&) = delete;
+
+ TempFile();
+ ~TempFile();
+
+ std::FILE* getFile();
+ std::string getContents();
+
+ private:
+ std::FILE* m_file = nullptr;
+ #if defined(_MSC_VER)
+ char m_buffer[L_tmpnam] = { 0 };
+ #endif
+ };
+
+ class OutputRedirect {
+ public:
+ OutputRedirect(OutputRedirect const&) = delete;
+ OutputRedirect& operator=(OutputRedirect const&) = delete;
+ OutputRedirect(OutputRedirect&&) = delete;
+ OutputRedirect& operator=(OutputRedirect&&) = delete;
+
+ OutputRedirect(std::string& stdout_dest, std::string& stderr_dest);
+ ~OutputRedirect();
+
+ private:
+ int m_originalStdout = -1;
+ int m_originalStderr = -1;
+ TempFile m_stdoutFile;
+ TempFile m_stderrFile;
+ std::string& m_stdoutDest;
+ std::string& m_stderrDest;
+ };
+
+#endif
+
+} // end namespace Catch
+
+#endif // TWOBLUECUBES_CATCH_OUTPUT_REDIRECT_H
+// end catch_output_redirect.h
+#include <cstdio>
+#include <cstring>
+#include <fstream>
+#include <sstream>
+#include <stdexcept>
+
+#if defined(CATCH_CONFIG_NEW_CAPTURE)
+ #if defined(_MSC_VER)
+ #include <io.h> //_dup and _dup2
+ #define dup _dup
+ #define dup2 _dup2
+ #define fileno _fileno
+ #else
+ #include <unistd.h> // dup and dup2
+ #endif
+#endif
+
+namespace Catch {
+
+ RedirectedStream::RedirectedStream( std::ostream& originalStream, std::ostream& redirectionStream )
+ : m_originalStream( originalStream ),
+ m_redirectionStream( redirectionStream ),
+ m_prevBuf( m_originalStream.rdbuf() )
+ {
+ m_originalStream.rdbuf( m_redirectionStream.rdbuf() );
+ }
+
+ RedirectedStream::~RedirectedStream() {
+ m_originalStream.rdbuf( m_prevBuf );
+ }
+
+ RedirectedStdOut::RedirectedStdOut() : m_cout( Catch::cout(), m_rss.get() ) {}
+ auto RedirectedStdOut::str() const -> std::string { return m_rss.str(); }
+
+ RedirectedStdErr::RedirectedStdErr()
+ : m_cerr( Catch::cerr(), m_rss.get() ),
+ m_clog( Catch::clog(), m_rss.get() )
+ {}
+ auto RedirectedStdErr::str() const -> std::string { return m_rss.str(); }
+
+ RedirectedStreams::RedirectedStreams(std::string& redirectedCout, std::string& redirectedCerr)
+ : m_redirectedCout(redirectedCout),
+ m_redirectedCerr(redirectedCerr)
+ {}
+
+ RedirectedStreams::~RedirectedStreams() {
+ m_redirectedCout += m_redirectedStdOut.str();
+ m_redirectedCerr += m_redirectedStdErr.str();
+ }
+
+#if defined(CATCH_CONFIG_NEW_CAPTURE)
+
+#if defined(_MSC_VER)
+ TempFile::TempFile() {
+ if (tmpnam_s(m_buffer)) {
+ CATCH_RUNTIME_ERROR("Could not get a temp filename");
+ }
+ if (fopen_s(&m_file, m_buffer, "w+")) {
+ char buffer[100];
+ if (strerror_s(buffer, errno)) {
+ CATCH_RUNTIME_ERROR("Could not translate errno to a string");
+ }
+ CATCH_RUNTIME_ERROR("Could not open the temp file: '" << m_buffer << "' because: " << buffer);
+ }
+ }
+#else
+ TempFile::TempFile() {
+ m_file = std::tmpfile();
+ if (!m_file) {
+ CATCH_RUNTIME_ERROR("Could not create a temp file.");
+ }
+ }
+
+#endif
+
+ TempFile::~TempFile() {
+ // TBD: What to do about errors here?
+ std::fclose(m_file);
+ // We manually create the file on Windows only, on Linux
+ // it will be autodeleted
+#if defined(_MSC_VER)
+ std::remove(m_buffer);
+#endif
+ }
+
+ FILE* TempFile::getFile() {
+ return m_file;
+ }
+
+ std::string TempFile::getContents() {
+ std::stringstream sstr;
+ char buffer[100] = {};
+ std::rewind(m_file);
+ while (std::fgets(buffer, sizeof(buffer), m_file)) {
+ sstr << buffer;
+ }
+ return sstr.str();
+ }
+
+ OutputRedirect::OutputRedirect(std::string& stdout_dest, std::string& stderr_dest) :
+ m_originalStdout(dup(1)),
+ m_originalStderr(dup(2)),
+ m_stdoutDest(stdout_dest),
+ m_stderrDest(stderr_dest) {
+ dup2(fileno(m_stdoutFile.getFile()), 1);
+ dup2(fileno(m_stderrFile.getFile()), 2);
+ }
+
+ OutputRedirect::~OutputRedirect() {
+ Catch::cout() << std::flush;
+ fflush(stdout);
+ // Since we support overriding these streams, we flush cerr
+ // even though std::cerr is unbuffered
+ Catch::cerr() << std::flush;
+ Catch::clog() << std::flush;
+ fflush(stderr);
+
+ dup2(m_originalStdout, 1);
+ dup2(m_originalStderr, 2);
+
+ m_stdoutDest += m_stdoutFile.getContents();
+ m_stderrDest += m_stderrFile.getContents();
+ }
+
+#endif // CATCH_CONFIG_NEW_CAPTURE
+
+} // namespace Catch
+
+#if defined(CATCH_CONFIG_NEW_CAPTURE)
+ #if defined(_MSC_VER)
+ #undef dup
+ #undef dup2
+ #undef fileno
+ #endif
+#endif
+// end catch_output_redirect.cpp
+// start catch_polyfills.cpp
+
+#include <cmath>
+
+namespace Catch {
+
+#if !defined(CATCH_CONFIG_POLYFILL_ISNAN)
+ bool isnan(float f) {
+ return std::isnan(f);
+ }
+ bool isnan(double d) {
+ return std::isnan(d);
+ }
+#else
+ // For now we only use this for embarcadero
+ bool isnan(float f) {
+ return std::_isnan(f);
+ }
+ bool isnan(double d) {
+ return std::_isnan(d);
+ }
+#endif
+
+} // end namespace Catch
+// end catch_polyfills.cpp
+// start catch_random_number_generator.cpp
+
+namespace Catch {
+
+namespace {
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4146) // we negate uint32 during the rotate
+#endif
+ // Safe rotr implementation thanks to John Regehr
+ uint32_t rotate_right(uint32_t val, uint32_t count) {
+ const uint32_t mask = 31;
+ count &= mask;
+ return (val >> count) | (val << (-count & mask));
+ }
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+}
+
+ SimplePcg32::SimplePcg32(result_type seed_) {
+ seed(seed_);
+ }
+
+ void SimplePcg32::seed(result_type seed_) {
+ m_state = 0;
+ (*this)();
+ m_state += seed_;
+ (*this)();
+ }
+
+ void SimplePcg32::discard(uint64_t skip) {
+ // We could implement this to run in O(log n) steps, but this
+ // should suffice for our use case.
+ for (uint64_t s = 0; s < skip; ++s) {
+ static_cast<void>((*this)());
+ }
+ }
+
+ SimplePcg32::result_type SimplePcg32::operator()() {
+ // prepare the output value
+ const uint32_t xorshifted = static_cast<uint32_t>(((m_state >> 18u) ^ m_state) >> 27u);
+ const auto output = rotate_right(xorshifted, m_state >> 59u);
+
+ // advance state
+ m_state = m_state * 6364136223846793005ULL + s_inc;
+
+ return output;
+ }
+
+ bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs) {
+ return lhs.m_state == rhs.m_state;
+ }
+
+ bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs) {
+ return lhs.m_state != rhs.m_state;
+ }
+}
+// end catch_random_number_generator.cpp
+// start catch_registry_hub.cpp
+
+// start catch_test_case_registry_impl.h
+
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <ios>
+
+namespace Catch {
+
+ class TestCase;
+ struct IConfig;
+
+ std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases );
+
+ bool isThrowSafe( TestCase const& testCase, IConfig const& config );
+ bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config );
+
+ void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions );
+
+ std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config );
+ std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config );
+
+ class TestRegistry : public ITestCaseRegistry {
+ public:
+ virtual ~TestRegistry() = default;
+
+ virtual void registerTest( TestCase const& testCase );
+
+ std::vector<TestCase> const& getAllTests() const override;
+ std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const override;
+
+ private:
+ std::vector<TestCase> m_functions;
+ mutable RunTests::InWhatOrder m_currentSortOrder = RunTests::InDeclarationOrder;
+ mutable std::vector<TestCase> m_sortedFunctions;
+ std::size_t m_unnamedCount = 0;
+ std::ios_base::Init m_ostreamInit; // Forces cout/ cerr to be initialised
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ class TestInvokerAsFunction : public ITestInvoker {
+ void(*m_testAsFunction)();
+ public:
+ TestInvokerAsFunction( void(*testAsFunction)() ) noexcept;
+
+ void invoke() const override;
+ };
+
+ std::string extractClassName( StringRef const& classOrQualifiedMethodName );
+
+ ///////////////////////////////////////////////////////////////////////////
+
+} // end namespace Catch
+
+// end catch_test_case_registry_impl.h
+// start catch_reporter_registry.h
+
+#include <map>
+
+namespace Catch {
+
+ class ReporterRegistry : public IReporterRegistry {
+
+ public:
+
+ ~ReporterRegistry() override;
+
+ IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const override;
+
+ void registerReporter( std::string const& name, IReporterFactoryPtr const& factory );
+ void registerListener( IReporterFactoryPtr const& factory );
+
+ FactoryMap const& getFactories() const override;
+ Listeners const& getListeners() const override;
+
+ private:
+ FactoryMap m_factories;
+ Listeners m_listeners;
+ };
+}
+
+// end catch_reporter_registry.h
+// start catch_tag_alias_registry.h
+
+// start catch_tag_alias.h
+
+#include <string>
+
+namespace Catch {
+
+ struct TagAlias {
+ TagAlias(std::string const& _tag, SourceLineInfo _lineInfo);
+
+ std::string tag;
+ SourceLineInfo lineInfo;
+ };
+
+} // end namespace Catch
+
+// end catch_tag_alias.h
+#include <map>
+
+namespace Catch {
+
+ class TagAliasRegistry : public ITagAliasRegistry {
+ public:
+ ~TagAliasRegistry() override;
+ TagAlias const* find( std::string const& alias ) const override;
+ std::string expandAliases( std::string const& unexpandedTestSpec ) const override;
+ void add( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo );
+
+ private:
+ std::map<std::string, TagAlias> m_registry;
+ };
+
+} // end namespace Catch
+
+// end catch_tag_alias_registry.h
+// start catch_startup_exception_registry.h
+
+#include <vector>
+#include <exception>
+
+namespace Catch {
+
+ class StartupExceptionRegistry {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ public:
+ void add(std::exception_ptr const& exception) noexcept;
+ std::vector<std::exception_ptr> const& getExceptions() const noexcept;
+ private:
+ std::vector<std::exception_ptr> m_exceptions;
+#endif
+ };
+
+} // end namespace Catch
+
+// end catch_startup_exception_registry.h
+// start catch_singletons.hpp
+
+namespace Catch {
+
+ struct ISingleton {
+ virtual ~ISingleton();
+ };
+
+ void addSingleton( ISingleton* singleton );
+ void cleanupSingletons();
+
+ template<typename SingletonImplT, typename InterfaceT = SingletonImplT, typename MutableInterfaceT = InterfaceT>
+ class Singleton : SingletonImplT, public ISingleton {
+
+ static auto getInternal() -> Singleton* {
+ static Singleton* s_instance = nullptr;
+ if( !s_instance ) {
+ s_instance = new Singleton;
+ addSingleton( s_instance );
+ }
+ return s_instance;
+ }
+
+ public:
+ static auto get() -> InterfaceT const& {
+ return *getInternal();
+ }
+ static auto getMutable() -> MutableInterfaceT& {
+ return *getInternal();
+ }
+ };
+
+} // namespace Catch
+
+// end catch_singletons.hpp
+namespace Catch {
+
+ namespace {
+
+ class RegistryHub : public IRegistryHub, public IMutableRegistryHub,
+ private NonCopyable {
+
+ public: // IRegistryHub
+ RegistryHub() = default;
+ IReporterRegistry const& getReporterRegistry() const override {
+ return m_reporterRegistry;
+ }
+ ITestCaseRegistry const& getTestCaseRegistry() const override {
+ return m_testCaseRegistry;
+ }
+ IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const override {
+ return m_exceptionTranslatorRegistry;
+ }
+ ITagAliasRegistry const& getTagAliasRegistry() const override {
+ return m_tagAliasRegistry;
+ }
+ StartupExceptionRegistry const& getStartupExceptionRegistry() const override {
+ return m_exceptionRegistry;
+ }
+
+ public: // IMutableRegistryHub
+ void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) override {
+ m_reporterRegistry.registerReporter( name, factory );
+ }
+ void registerListener( IReporterFactoryPtr const& factory ) override {
+ m_reporterRegistry.registerListener( factory );
+ }
+ void registerTest( TestCase const& testInfo ) override {
+ m_testCaseRegistry.registerTest( testInfo );
+ }
+ void registerTranslator( const IExceptionTranslator* translator ) override {
+ m_exceptionTranslatorRegistry.registerTranslator( translator );
+ }
+ void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) override {
+ m_tagAliasRegistry.add( alias, tag, lineInfo );
+ }
+ void registerStartupException() noexcept override {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ m_exceptionRegistry.add(std::current_exception());
+#else
+ CATCH_INTERNAL_ERROR("Attempted to register active exception under CATCH_CONFIG_DISABLE_EXCEPTIONS!");
+#endif
+ }
+ IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() override {
+ return m_enumValuesRegistry;
+ }
+
+ private:
+ TestRegistry m_testCaseRegistry;
+ ReporterRegistry m_reporterRegistry;
+ ExceptionTranslatorRegistry m_exceptionTranslatorRegistry;
+ TagAliasRegistry m_tagAliasRegistry;
+ StartupExceptionRegistry m_exceptionRegistry;
+ Detail::EnumValuesRegistry m_enumValuesRegistry;
+ };
+ }
+
+ using RegistryHubSingleton = Singleton<RegistryHub, IRegistryHub, IMutableRegistryHub>;
+
+ IRegistryHub const& getRegistryHub() {
+ return RegistryHubSingleton::get();
+ }
+ IMutableRegistryHub& getMutableRegistryHub() {
+ return RegistryHubSingleton::getMutable();
+ }
+ void cleanUp() {
+ cleanupSingletons();
+ cleanUpContext();
+ }
+ std::string translateActiveException() {
+ return getRegistryHub().getExceptionTranslatorRegistry().translateActiveException();
+ }
+
+} // end namespace Catch
+// end catch_registry_hub.cpp
+// start catch_reporter_registry.cpp
+
+namespace Catch {
+
+ ReporterRegistry::~ReporterRegistry() = default;
+
+ IStreamingReporterPtr ReporterRegistry::create( std::string const& name, IConfigPtr const& config ) const {
+ auto it = m_factories.find( name );
+ if( it == m_factories.end() )
+ return nullptr;
+ return it->second->create( ReporterConfig( config ) );
+ }
+
+ void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) {
+ m_factories.emplace(name, factory);
+ }
+ void ReporterRegistry::registerListener( IReporterFactoryPtr const& factory ) {
+ m_listeners.push_back( factory );
+ }
+
+ IReporterRegistry::FactoryMap const& ReporterRegistry::getFactories() const {
+ return m_factories;
+ }
+ IReporterRegistry::Listeners const& ReporterRegistry::getListeners() const {
+ return m_listeners;
+ }
+
+}
+// end catch_reporter_registry.cpp
+// start catch_result_type.cpp
+
+namespace Catch {
+
+ bool isOk( ResultWas::OfType resultType ) {
+ return ( resultType & ResultWas::FailureBit ) == 0;
+ }
+ bool isJustInfo( int flags ) {
+ return flags == ResultWas::Info;
+ }
+
+ ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) {
+ return static_cast<ResultDisposition::Flags>( static_cast<int>( lhs ) | static_cast<int>( rhs ) );
+ }
+
+ bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; }
+ bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; }
+
+} // end namespace Catch
+// end catch_result_type.cpp
+// start catch_run_context.cpp
+
+#include <cassert>
+#include <algorithm>
+#include <sstream>
+
+namespace Catch {
+
+ namespace Generators {
+ struct GeneratorTracker : TestCaseTracking::TrackerBase, IGeneratorTracker {
+ GeneratorBasePtr m_generator;
+
+ GeneratorTracker( TestCaseTracking::NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent )
+ : TrackerBase( nameAndLocation, ctx, parent )
+ {}
+ ~GeneratorTracker();
+
+ static GeneratorTracker& acquire( TrackerContext& ctx, TestCaseTracking::NameAndLocation const& nameAndLocation ) {
+ std::shared_ptr<GeneratorTracker> tracker;
+
+ ITracker& currentTracker = ctx.currentTracker();
+ // Under specific circumstances, the generator we want
+ // to acquire is also the current tracker. If this is
+ // the case, we have to avoid looking through current
+ // tracker's children, and instead return the current
+ // tracker.
+ // A case where this check is important is e.g.
+ // for (int i = 0; i < 5; ++i) {
+ // int n = GENERATE(1, 2);
+ // }
+ //
+ // without it, the code above creates 5 nested generators.
+ if (currentTracker.nameAndLocation() == nameAndLocation) {
+ auto thisTracker = currentTracker.parent().findChild(nameAndLocation);
+ assert(thisTracker);
+ assert(thisTracker->isGeneratorTracker());
+ tracker = std::static_pointer_cast<GeneratorTracker>(thisTracker);
+ } else if ( TestCaseTracking::ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
+ assert( childTracker );
+ assert( childTracker->isGeneratorTracker() );
+ tracker = std::static_pointer_cast<GeneratorTracker>( childTracker );
+ } else {
+ tracker = std::make_shared<GeneratorTracker>( nameAndLocation, ctx, &currentTracker );
+ currentTracker.addChild( tracker );
+ }
+
+ if( !tracker->isComplete() ) {
+ tracker->open();
+ }
+
+ return *tracker;
+ }
+
+ // TrackerBase interface
+ bool isGeneratorTracker() const override { return true; }
+ auto hasGenerator() const -> bool override {
+ return !!m_generator;
+ }
+ void close() override {
+ TrackerBase::close();
+ // If a generator has a child (it is followed by a section)
+ // and none of its children have started, then we must wait
+ // until later to start consuming its values.
+ // This catches cases where `GENERATE` is placed between two
+ // `SECTION`s.
+ // **The check for m_children.empty cannot be removed**.
+ // doing so would break `GENERATE` _not_ followed by `SECTION`s.
+ const bool should_wait_for_child = [&]() {
+ // No children -> nobody to wait for
+ if ( m_children.empty() ) {
+ return false;
+ }
+ // If at least one child started executing, don't wait
+ if ( std::find_if(
+ m_children.begin(),
+ m_children.end(),
+ []( TestCaseTracking::ITrackerPtr tracker ) {
+ return tracker->hasStarted();
+ } ) != m_children.end() ) {
+ return false;
+ }
+
+ // No children have started. We need to check if they _can_
+ // start, and thus we should wait for them, or they cannot
+ // start (due to filters), and we shouldn't wait for them
+ auto* parent = m_parent;
+ // This is safe: there is always at least one section
+ // tracker in a test case tracking tree
+ while ( !parent->isSectionTracker() ) {
+ parent = &( parent->parent() );
+ }
+ assert( parent &&
+ "Missing root (test case) level section" );
+
+ auto const& parentSection =
+ static_cast<SectionTracker&>( *parent );
+ auto const& filters = parentSection.getFilters();
+ // No filters -> no restrictions on running sections
+ if ( filters.empty() ) {
+ return true;
+ }
+
+ for ( auto const& child : m_children ) {
+ if ( child->isSectionTracker() &&
+ std::find( filters.begin(),
+ filters.end(),
+ static_cast<SectionTracker&>( *child )
+ .trimmedName() ) !=
+ filters.end() ) {
+ return true;
+ }
+ }
+ return false;
+ }();
+
+ // This check is a bit tricky, because m_generator->next()
+ // has a side-effect, where it consumes generator's current
+ // value, but we do not want to invoke the side-effect if
+ // this generator is still waiting for any child to start.
+ if ( should_wait_for_child ||
+ ( m_runState == CompletedSuccessfully &&
+ m_generator->next() ) ) {
+ m_children.clear();
+ m_runState = Executing;
+ }
+ }
+
+ // IGeneratorTracker interface
+ auto getGenerator() const -> GeneratorBasePtr const& override {
+ return m_generator;
+ }
+ void setGenerator( GeneratorBasePtr&& generator ) override {
+ m_generator = std::move( generator );
+ }
+ };
+ GeneratorTracker::~GeneratorTracker() {}
+ }
+
+ RunContext::RunContext(IConfigPtr const& _config, IStreamingReporterPtr&& reporter)
+ : m_runInfo(_config->name()),
+ m_context(getCurrentMutableContext()),
+ m_config(_config),
+ m_reporter(std::move(reporter)),
+ m_lastAssertionInfo{ StringRef(), SourceLineInfo("",0), StringRef(), ResultDisposition::Normal },
+ m_includeSuccessfulResults( m_config->includeSuccessfulResults() || m_reporter->getPreferences().shouldReportAllAssertions )
+ {
+ m_context.setRunner(this);
+ m_context.setConfig(m_config);
+ m_context.setResultCapture(this);
+ m_reporter->testRunStarting(m_runInfo);
+ }
+
+ RunContext::~RunContext() {
+ m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, aborting()));
+ }
+
+ void RunContext::testGroupStarting(std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount) {
+ m_reporter->testGroupStarting(GroupInfo(testSpec, groupIndex, groupsCount));
+ }
+
+ void RunContext::testGroupEnded(std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount) {
+ m_reporter->testGroupEnded(TestGroupStats(GroupInfo(testSpec, groupIndex, groupsCount), totals, aborting()));
+ }
+
+ Totals RunContext::runTest(TestCase const& testCase) {
+ Totals prevTotals = m_totals;
+
+ std::string redirectedCout;
+ std::string redirectedCerr;
+
+ auto const& testInfo = testCase.getTestCaseInfo();
+
+ m_reporter->testCaseStarting(testInfo);
+
+ m_activeTestCase = &testCase;
+
+ ITracker& rootTracker = m_trackerContext.startRun();
+ assert(rootTracker.isSectionTracker());
+ static_cast<SectionTracker&>(rootTracker).addInitialFilters(m_config->getSectionsToRun());
+ do {
+ m_trackerContext.startCycle();
+ m_testCaseTracker = &SectionTracker::acquire(m_trackerContext, TestCaseTracking::NameAndLocation(testInfo.name, testInfo.lineInfo));
+ runCurrentTest(redirectedCout, redirectedCerr);
+ } while (!m_testCaseTracker->isSuccessfullyCompleted() && !aborting());
+
+ Totals deltaTotals = m_totals.delta(prevTotals);
+ if (testInfo.expectedToFail() && deltaTotals.testCases.passed > 0) {
+ deltaTotals.assertions.failed++;
+ deltaTotals.testCases.passed--;
+ deltaTotals.testCases.failed++;
+ }
+ m_totals.testCases += deltaTotals.testCases;
+ m_reporter->testCaseEnded(TestCaseStats(testInfo,
+ deltaTotals,
+ redirectedCout,
+ redirectedCerr,
+ aborting()));
+
+ m_activeTestCase = nullptr;
+ m_testCaseTracker = nullptr;
+
+ return deltaTotals;
+ }
+
+ IConfigPtr RunContext::config() const {
+ return m_config;
+ }
+
+ IStreamingReporter& RunContext::reporter() const {
+ return *m_reporter;
+ }
+
+ void RunContext::assertionEnded(AssertionResult const & result) {
+ if (result.getResultType() == ResultWas::Ok) {
+ m_totals.assertions.passed++;
+ m_lastAssertionPassed = true;
+ } else if (!result.isOk()) {
+ m_lastAssertionPassed = false;
+ if( m_activeTestCase->getTestCaseInfo().okToFail() )
+ m_totals.assertions.failedButOk++;
+ else
+ m_totals.assertions.failed++;
+ }
+ else {
+ m_lastAssertionPassed = true;
+ }
+
+ // We have no use for the return value (whether messages should be cleared), because messages were made scoped
+ // and should be let to clear themselves out.
+ static_cast<void>(m_reporter->assertionEnded(AssertionStats(result, m_messages, m_totals)));
+
+ if (result.getResultType() != ResultWas::Warning)
+ m_messageScopes.clear();
+
+ // Reset working state
+ resetAssertionInfo();
+ m_lastResult = result;
+ }
+ void RunContext::resetAssertionInfo() {
+ m_lastAssertionInfo.macroName = StringRef();
+ m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}"_sr;
+ }
+
+ bool RunContext::sectionStarted(SectionInfo const & sectionInfo, Counts & assertions) {
+ ITracker& sectionTracker = SectionTracker::acquire(m_trackerContext, TestCaseTracking::NameAndLocation(sectionInfo.name, sectionInfo.lineInfo));
+ if (!sectionTracker.isOpen())
+ return false;
+ m_activeSections.push_back(&sectionTracker);
+
+ m_lastAssertionInfo.lineInfo = sectionInfo.lineInfo;
+
+ m_reporter->sectionStarting(sectionInfo);
+
+ assertions = m_totals.assertions;
+
+ return true;
+ }
+ auto RunContext::acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
+ using namespace Generators;
+ GeneratorTracker& tracker = GeneratorTracker::acquire(m_trackerContext,
+ TestCaseTracking::NameAndLocation( static_cast<std::string>(generatorName), lineInfo ) );
+ m_lastAssertionInfo.lineInfo = lineInfo;
+ return tracker;
+ }
+
+ bool RunContext::testForMissingAssertions(Counts& assertions) {
+ if (assertions.total() != 0)
+ return false;
+ if (!m_config->warnAboutMissingAssertions())
+ return false;
+ if (m_trackerContext.currentTracker().hasChildren())
+ return false;
+ m_totals.assertions.failed++;
+ assertions.failed++;
+ return true;
+ }
+
+ void RunContext::sectionEnded(SectionEndInfo const & endInfo) {
+ Counts assertions = m_totals.assertions - endInfo.prevAssertions;
+ bool missingAssertions = testForMissingAssertions(assertions);
+
+ if (!m_activeSections.empty()) {
+ m_activeSections.back()->close();
+ m_activeSections.pop_back();
+ }
+
+ m_reporter->sectionEnded(SectionStats(endInfo.sectionInfo, assertions, endInfo.durationInSeconds, missingAssertions));
+ m_messages.clear();
+ m_messageScopes.clear();
+ }
+
+ void RunContext::sectionEndedEarly(SectionEndInfo const & endInfo) {
+ if (m_unfinishedSections.empty())
+ m_activeSections.back()->fail();
+ else
+ m_activeSections.back()->close();
+ m_activeSections.pop_back();
+
+ m_unfinishedSections.push_back(endInfo);
+ }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void RunContext::benchmarkPreparing(std::string const& name) {
+ m_reporter->benchmarkPreparing(name);
+ }
+ void RunContext::benchmarkStarting( BenchmarkInfo const& info ) {
+ m_reporter->benchmarkStarting( info );
+ }
+ void RunContext::benchmarkEnded( BenchmarkStats<> const& stats ) {
+ m_reporter->benchmarkEnded( stats );
+ }
+ void RunContext::benchmarkFailed(std::string const & error) {
+ m_reporter->benchmarkFailed(error);
+ }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ void RunContext::pushScopedMessage(MessageInfo const & message) {
+ m_messages.push_back(message);
+ }
+
+ void RunContext::popScopedMessage(MessageInfo const & message) {
+ m_messages.erase(std::remove(m_messages.begin(), m_messages.end(), message), m_messages.end());
+ }
+
+ void RunContext::emplaceUnscopedMessage( MessageBuilder const& builder ) {
+ m_messageScopes.emplace_back( builder );
+ }
+
+ std::string RunContext::getCurrentTestName() const {
+ return m_activeTestCase
+ ? m_activeTestCase->getTestCaseInfo().name
+ : std::string();
+ }
+
+ const AssertionResult * RunContext::getLastResult() const {
+ return &(*m_lastResult);
+ }
+
+ void RunContext::exceptionEarlyReported() {
+ m_shouldReportUnexpected = false;
+ }
+
+ void RunContext::handleFatalErrorCondition( StringRef message ) {
+ // First notify reporter that bad things happened
+ m_reporter->fatalErrorEncountered(message);
+
+ // Don't rebuild the result -- the stringification itself can cause more fatal errors
+ // Instead, fake a result data.
+ AssertionResultData tempResult( ResultWas::FatalErrorCondition, { false } );
+ tempResult.message = static_cast<std::string>(message);
+ AssertionResult result(m_lastAssertionInfo, tempResult);
+
+ assertionEnded(result);
+
+ handleUnfinishedSections();
+
+ // Recreate section for test case (as we will lose the one that was in scope)
+ auto const& testCaseInfo = m_activeTestCase->getTestCaseInfo();
+ SectionInfo testCaseSection(testCaseInfo.lineInfo, testCaseInfo.name);
+
+ Counts assertions;
+ assertions.failed = 1;
+ SectionStats testCaseSectionStats(testCaseSection, assertions, 0, false);
+ m_reporter->sectionEnded(testCaseSectionStats);
+
+ auto const& testInfo = m_activeTestCase->getTestCaseInfo();
+
+ Totals deltaTotals;
+ deltaTotals.testCases.failed = 1;
+ deltaTotals.assertions.failed = 1;
+ m_reporter->testCaseEnded(TestCaseStats(testInfo,
+ deltaTotals,
+ std::string(),
+ std::string(),
+ false));
+ m_totals.testCases.failed++;
+ testGroupEnded(std::string(), m_totals, 1, 1);
+ m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, false));
+ }
+
+ bool RunContext::lastAssertionPassed() {
+ return m_lastAssertionPassed;
+ }
+
+ void RunContext::assertionPassed() {
+ m_lastAssertionPassed = true;
+ ++m_totals.assertions.passed;
+ resetAssertionInfo();
+ m_messageScopes.clear();
+ }
+
+ bool RunContext::aborting() const {
+ return m_totals.assertions.failed >= static_cast<std::size_t>(m_config->abortAfter());
+ }
+
+ void RunContext::runCurrentTest(std::string & redirectedCout, std::string & redirectedCerr) {
+ auto const& testCaseInfo = m_activeTestCase->getTestCaseInfo();
+ SectionInfo testCaseSection(testCaseInfo.lineInfo, testCaseInfo.name);
+ m_reporter->sectionStarting(testCaseSection);
+ Counts prevAssertions = m_totals.assertions;
+ double duration = 0;
+ m_shouldReportUnexpected = true;
+ m_lastAssertionInfo = { "TEST_CASE"_sr, testCaseInfo.lineInfo, StringRef(), ResultDisposition::Normal };
+
+ seedRng(*m_config);
+
+ Timer timer;
+ CATCH_TRY {
+ if (m_reporter->getPreferences().shouldRedirectStdOut) {
+#if !defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
+ RedirectedStreams redirectedStreams(redirectedCout, redirectedCerr);
+
+ timer.start();
+ invokeActiveTestCase();
+#else
+ OutputRedirect r(redirectedCout, redirectedCerr);
+ timer.start();
+ invokeActiveTestCase();
+#endif
+ } else {
+ timer.start();
+ invokeActiveTestCase();
+ }
+ duration = timer.getElapsedSeconds();
+ } CATCH_CATCH_ANON (TestFailureException&) {
+ // This just means the test was aborted due to failure
+ } CATCH_CATCH_ALL {
+ // Under CATCH_CONFIG_FAST_COMPILE, unexpected exceptions under REQUIRE assertions
+ // are reported without translation at the point of origin.
+ if( m_shouldReportUnexpected ) {
+ AssertionReaction dummyReaction;
+ handleUnexpectedInflightException( m_lastAssertionInfo, translateActiveException(), dummyReaction );
+ }
+ }
+ Counts assertions = m_totals.assertions - prevAssertions;
+ bool missingAssertions = testForMissingAssertions(assertions);
+
+ m_testCaseTracker->close();
+ handleUnfinishedSections();
+ m_messages.clear();
+ m_messageScopes.clear();
+
+ SectionStats testCaseSectionStats(testCaseSection, assertions, duration, missingAssertions);
+ m_reporter->sectionEnded(testCaseSectionStats);
+ }
+
+ void RunContext::invokeActiveTestCase() {
+ FatalConditionHandlerGuard _(&m_fatalConditionhandler);
+ m_activeTestCase->invoke();
+ }
+
+ void RunContext::handleUnfinishedSections() {
+ // If sections ended prematurely due to an exception we stored their
+ // infos here so we can tear them down outside the unwind process.
+ for (auto it = m_unfinishedSections.rbegin(),
+ itEnd = m_unfinishedSections.rend();
+ it != itEnd;
+ ++it)
+ sectionEnded(*it);
+ m_unfinishedSections.clear();
+ }
+
+ void RunContext::handleExpr(
+ AssertionInfo const& info,
+ ITransientExpression const& expr,
+ AssertionReaction& reaction
+ ) {
+ m_reporter->assertionStarting( info );
+
+ bool negated = isFalseTest( info.resultDisposition );
+ bool result = expr.getResult() != negated;
+
+ if( result ) {
+ if (!m_includeSuccessfulResults) {
+ assertionPassed();
+ }
+ else {
+ reportExpr(info, ResultWas::Ok, &expr, negated);
+ }
+ }
+ else {
+ reportExpr(info, ResultWas::ExpressionFailed, &expr, negated );
+ populateReaction( reaction );
+ }
+ }
+ void RunContext::reportExpr(
+ AssertionInfo const &info,
+ ResultWas::OfType resultType,
+ ITransientExpression const *expr,
+ bool negated ) {
+
+ m_lastAssertionInfo = info;
+ AssertionResultData data( resultType, LazyExpression( negated ) );
+
+ AssertionResult assertionResult{ info, data };
+ assertionResult.m_resultData.lazyExpression.m_transientExpression = expr;
+
+ assertionEnded( assertionResult );
+ }
+
+ void RunContext::handleMessage(
+ AssertionInfo const& info,
+ ResultWas::OfType resultType,
+ StringRef const& message,
+ AssertionReaction& reaction
+ ) {
+ m_reporter->assertionStarting( info );
+
+ m_lastAssertionInfo = info;
+
+ AssertionResultData data( resultType, LazyExpression( false ) );
+ data.message = static_cast<std::string>(message);
+ AssertionResult assertionResult{ m_lastAssertionInfo, data };
+ assertionEnded( assertionResult );
+ if( !assertionResult.isOk() )
+ populateReaction( reaction );
+ }
+ void RunContext::handleUnexpectedExceptionNotThrown(
+ AssertionInfo const& info,
+ AssertionReaction& reaction
+ ) {
+ handleNonExpr(info, Catch::ResultWas::DidntThrowException, reaction);
+ }
+
+ void RunContext::handleUnexpectedInflightException(
+ AssertionInfo const& info,
+ std::string const& message,
+ AssertionReaction& reaction
+ ) {
+ m_lastAssertionInfo = info;
+
+ AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) );
+ data.message = message;
+ AssertionResult assertionResult{ info, data };
+ assertionEnded( assertionResult );
+ populateReaction( reaction );
+ }
+
+ void RunContext::populateReaction( AssertionReaction& reaction ) {
+ reaction.shouldDebugBreak = m_config->shouldDebugBreak();
+ reaction.shouldThrow = aborting() || (m_lastAssertionInfo.resultDisposition & ResultDisposition::Normal);
+ }
+
+ void RunContext::handleIncomplete(
+ AssertionInfo const& info
+ ) {
+ m_lastAssertionInfo = info;
+
+ AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) );
+ data.message = "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE";
+ AssertionResult assertionResult{ info, data };
+ assertionEnded( assertionResult );
+ }
+ void RunContext::handleNonExpr(
+ AssertionInfo const &info,
+ ResultWas::OfType resultType,
+ AssertionReaction &reaction
+ ) {
+ m_lastAssertionInfo = info;
+
+ AssertionResultData data( resultType, LazyExpression( false ) );
+ AssertionResult assertionResult{ info, data };
+ assertionEnded( assertionResult );
+
+ if( !assertionResult.isOk() )
+ populateReaction( reaction );
+ }
+
+ IResultCapture& getResultCapture() {
+ if (auto* capture = getCurrentContext().getResultCapture())
+ return *capture;
+ else
+ CATCH_INTERNAL_ERROR("No result capture instance");
+ }
+
+ void seedRng(IConfig const& config) {
+ if (config.rngSeed() != 0) {
+ std::srand(config.rngSeed());
+ rng().seed(config.rngSeed());
+ }
+ }
+
+ unsigned int rngSeed() {
+ return getCurrentContext().getConfig()->rngSeed();
+ }
+
+}
+// end catch_run_context.cpp
+// start catch_section.cpp
+
+namespace Catch {
+
+ Section::Section( SectionInfo const& info )
+ : m_info( info ),
+ m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) )
+ {
+ m_timer.start();
+ }
+
+ Section::~Section() {
+ if( m_sectionIncluded ) {
+ SectionEndInfo endInfo{ m_info, m_assertions, m_timer.getElapsedSeconds() };
+ if( uncaught_exceptions() )
+ getResultCapture().sectionEndedEarly( endInfo );
+ else
+ getResultCapture().sectionEnded( endInfo );
+ }
+ }
+
+ // This indicates whether the section should be executed or not
+ Section::operator bool() const {
+ return m_sectionIncluded;
+ }
+
+} // end namespace Catch
+// end catch_section.cpp
+// start catch_section_info.cpp
+
+namespace Catch {
+
+ SectionInfo::SectionInfo
+ ( SourceLineInfo const& _lineInfo,
+ std::string const& _name )
+ : name( _name ),
+ lineInfo( _lineInfo )
+ {}
+
+} // end namespace Catch
+// end catch_section_info.cpp
+// start catch_session.cpp
+
+// start catch_session.h
+
+#include <memory>
+
+namespace Catch {
+
+ class Session : NonCopyable {
+ public:
+
+ Session();
+ ~Session() override;
+
+ void showHelp() const;
+ void libIdentify();
+
+ int applyCommandLine( int argc, char const * const * argv );
+ #if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE)
+ int applyCommandLine( int argc, wchar_t const * const * argv );
+ #endif
+
+ void useConfigData( ConfigData const& configData );
+
+ template<typename CharT>
+ int run(int argc, CharT const * const argv[]) {
+ if (m_startupExceptions)
+ return 1;
+ int returnCode = applyCommandLine(argc, argv);
+ if (returnCode == 0)
+ returnCode = run();
+ return returnCode;
+ }
+
+ int run();
+
+ clara::Parser const& cli() const;
+ void cli( clara::Parser const& newParser );
+ ConfigData& configData();
+ Config& config();
+ private:
+ int runInternal();
+
+ clara::Parser m_cli;
+ ConfigData m_configData;
+ std::shared_ptr<Config> m_config;
+ bool m_startupExceptions = false;
+ };
+
+} // end namespace Catch
+
+// end catch_session.h
+// start catch_version.h
+
+#include <iosfwd>
+
+namespace Catch {
+
+ // Versioning information
+ struct Version {
+ Version( Version const& ) = delete;
+ Version& operator=( Version const& ) = delete;
+ Version( unsigned int _majorVersion,
+ unsigned int _minorVersion,
+ unsigned int _patchNumber,
+ char const * const _branchName,
+ unsigned int _buildNumber );
+
+ unsigned int const majorVersion;
+ unsigned int const minorVersion;
+ unsigned int const patchNumber;
+
+ // buildNumber is only used if branchName is not null
+ char const * const branchName;
+ unsigned int const buildNumber;
+
+ friend std::ostream& operator << ( std::ostream& os, Version const& version );
+ };
+
+ Version const& libraryVersion();
+}
+
+// end catch_version.h
+#include <cstdlib>
+#include <iomanip>
+#include <set>
+#include <iterator>
+
+namespace Catch {
+
+ namespace {
+ const int MaxExitCode = 255;
+
+ IStreamingReporterPtr createReporter(std::string const& reporterName, IConfigPtr const& config) {
+ auto reporter = Catch::getRegistryHub().getReporterRegistry().create(reporterName, config);
+ CATCH_ENFORCE(reporter, "No reporter registered with name: '" << reporterName << "'");
+
+ return reporter;
+ }
+
+ IStreamingReporterPtr makeReporter(std::shared_ptr<Config> const& config) {
+ if (Catch::getRegistryHub().getReporterRegistry().getListeners().empty()) {
+ return createReporter(config->getReporterName(), config);
+ }
+
+ // On older platforms, returning std::unique_ptr<ListeningReporter>
+ // when the return type is std::unique_ptr<IStreamingReporter>
+ // doesn't compile without a std::move call. However, this causes
+ // a warning on newer platforms. Thus, we have to work around
+ // it a bit and downcast the pointer manually.
+ auto ret = std::unique_ptr<IStreamingReporter>(new ListeningReporter);
+ auto& multi = static_cast<ListeningReporter&>(*ret);
+ auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners();
+ for (auto const& listener : listeners) {
+ multi.addListener(listener->create(Catch::ReporterConfig(config)));
+ }
+ multi.addReporter(createReporter(config->getReporterName(), config));
+ return ret;
+ }
+
+ class TestGroup {
+ public:
+ explicit TestGroup(std::shared_ptr<Config> const& config)
+ : m_config{config}
+ , m_context{config, makeReporter(config)}
+ {
+ auto const& allTestCases = getAllTestCasesSorted(*m_config);
+ m_matches = m_config->testSpec().matchesByFilter(allTestCases, *m_config);
+ auto const& invalidArgs = m_config->testSpec().getInvalidArgs();
+
+ if (m_matches.empty() && invalidArgs.empty()) {
+ for (auto const& test : allTestCases)
+ if (!test.isHidden())
+ m_tests.emplace(&test);
+ } else {
+ for (auto const& match : m_matches)
+ m_tests.insert(match.tests.begin(), match.tests.end());
+ }
+ }
+
+ Totals execute() {
+ auto const& invalidArgs = m_config->testSpec().getInvalidArgs();
+ Totals totals;
+ m_context.testGroupStarting(m_config->name(), 1, 1);
+ for (auto const& testCase : m_tests) {
+ if (!m_context.aborting())
+ totals += m_context.runTest(*testCase);
+ else
+ m_context.reporter().skipTest(*testCase);
+ }
+
+ for (auto const& match : m_matches) {
+ if (match.tests.empty()) {
+ m_context.reporter().noMatchingTestCases(match.name);
+ totals.error = -1;
+ }
+ }
+
+ if (!invalidArgs.empty()) {
+ for (auto const& invalidArg: invalidArgs)
+ m_context.reporter().reportInvalidArguments(invalidArg);
+ }
+
+ m_context.testGroupEnded(m_config->name(), totals, 1, 1);
+ return totals;
+ }
+
+ private:
+ using Tests = std::set<TestCase const*>;
+
+ std::shared_ptr<Config> m_config;
+ RunContext m_context;
+ Tests m_tests;
+ TestSpec::Matches m_matches;
+ };
+
+ void applyFilenamesAsTags(Catch::IConfig const& config) {
+ auto& tests = const_cast<std::vector<TestCase>&>(getAllTestCasesSorted(config));
+ for (auto& testCase : tests) {
+ auto tags = testCase.tags;
+
+ std::string filename = testCase.lineInfo.file;
+ auto lastSlash = filename.find_last_of("\\/");
+ if (lastSlash != std::string::npos) {
+ filename.erase(0, lastSlash);
+ filename[0] = '#';
+ }
+ else
+ {
+ filename.insert(0, "#");
+ }
+
+ auto lastDot = filename.find_last_of('.');
+ if (lastDot != std::string::npos) {
+ filename.erase(lastDot);
+ }
+
+ tags.push_back(std::move(filename));
+ setTags(testCase, tags);
+ }
+ }
+
+ } // anon namespace
+
+ Session::Session() {
+ static bool alreadyInstantiated = false;
+ if( alreadyInstantiated ) {
+ CATCH_TRY { CATCH_INTERNAL_ERROR( "Only one instance of Catch::Session can ever be used" ); }
+ CATCH_CATCH_ALL { getMutableRegistryHub().registerStartupException(); }
+ }
+
+ // There cannot be exceptions at startup in no-exception mode.
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ const auto& exceptions = getRegistryHub().getStartupExceptionRegistry().getExceptions();
+ if ( !exceptions.empty() ) {
+ config();
+ getCurrentMutableContext().setConfig(m_config);
+
+ m_startupExceptions = true;
+ Colour colourGuard( Colour::Red );
+ Catch::cerr() << "Errors occurred during startup!" << '\n';
+ // iterate over all exceptions and notify user
+ for ( const auto& ex_ptr : exceptions ) {
+ try {
+ std::rethrow_exception(ex_ptr);
+ } catch ( std::exception const& ex ) {
+ Catch::cerr() << Column( ex.what() ).indent(2) << '\n';
+ }
+ }
+ }
+#endif
+
+ alreadyInstantiated = true;
+ m_cli = makeCommandLineParser( m_configData );
+ }
+ Session::~Session() {
+ Catch::cleanUp();
+ }
+
+ void Session::showHelp() const {
+ Catch::cout()
+ << "\nCatch v" << libraryVersion() << "\n"
+ << m_cli << std::endl
+ << "For more detailed usage please see the project docs\n" << std::endl;
+ }
+ void Session::libIdentify() {
+ Catch::cout()
+ << std::left << std::setw(16) << "description: " << "A Catch2 test executable\n"
+ << std::left << std::setw(16) << "category: " << "testframework\n"
+ << std::left << std::setw(16) << "framework: " << "Catch Test\n"
+ << std::left << std::setw(16) << "version: " << libraryVersion() << std::endl;
+ }
+
+ int Session::applyCommandLine( int argc, char const * const * argv ) {
+ if( m_startupExceptions )
+ return 1;
+
+ auto result = m_cli.parse( clara::Args( argc, argv ) );
+ if( !result ) {
+ config();
+ getCurrentMutableContext().setConfig(m_config);
+ Catch::cerr()
+ << Colour( Colour::Red )
+ << "\nError(s) in input:\n"
+ << Column( result.errorMessage() ).indent( 2 )
+ << "\n\n";
+ Catch::cerr() << "Run with -? for usage\n" << std::endl;
+ return MaxExitCode;
+ }
+
+ if( m_configData.showHelp )
+ showHelp();
+ if( m_configData.libIdentify )
+ libIdentify();
+ m_config.reset();
+ return 0;
+ }
+
+#if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE)
+ int Session::applyCommandLine( int argc, wchar_t const * const * argv ) {
+
+ char **utf8Argv = new char *[ argc ];
+
+ for ( int i = 0; i < argc; ++i ) {
+ int bufSize = WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, nullptr, 0, nullptr, nullptr );
+
+ utf8Argv[ i ] = new char[ bufSize ];
+
+ WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, nullptr, nullptr );
+ }
+
+ int returnCode = applyCommandLine( argc, utf8Argv );
+
+ for ( int i = 0; i < argc; ++i )
+ delete [] utf8Argv[ i ];
+
+ delete [] utf8Argv;
+
+ return returnCode;
+ }
+#endif
+
+ void Session::useConfigData( ConfigData const& configData ) {
+ m_configData = configData;
+ m_config.reset();
+ }
+
+ int Session::run() {
+ if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) {
+ Catch::cout() << "...waiting for enter/ return before starting" << std::endl;
+ static_cast<void>(std::getchar());
+ }
+ int exitCode = runInternal();
+ if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeExit ) != 0 ) {
+ Catch::cout() << "...waiting for enter/ return before exiting, with code: " << exitCode << std::endl;
+ static_cast<void>(std::getchar());
+ }
+ return exitCode;
+ }
+
+ clara::Parser const& Session::cli() const {
+ return m_cli;
+ }
+ void Session::cli( clara::Parser const& newParser ) {
+ m_cli = newParser;
+ }
+ ConfigData& Session::configData() {
+ return m_configData;
+ }
+ Config& Session::config() {
+ if( !m_config )
+ m_config = std::make_shared<Config>( m_configData );
+ return *m_config;
+ }
+
+ int Session::runInternal() {
+ if( m_startupExceptions )
+ return 1;
+
+ if (m_configData.showHelp || m_configData.libIdentify) {
+ return 0;
+ }
+
+ CATCH_TRY {
+ config(); // Force config to be constructed
+
+ seedRng( *m_config );
+
+ if( m_configData.filenamesAsTags )
+ applyFilenamesAsTags( *m_config );
+
+ // Handle list request
+ if( Option<std::size_t> listed = list( m_config ) )
+ return static_cast<int>( *listed );
+
+ TestGroup tests { m_config };
+ auto const totals = tests.execute();
+
+ if( m_config->warnAboutNoTests() && totals.error == -1 )
+ return 2;
+
+ // Note that on unices only the lower 8 bits are usually used, clamping
+ // the return value to 255 prevents false negative when some multiple
+ // of 256 tests has failed
+ return (std::min) (MaxExitCode, (std::max) (totals.error, static_cast<int>(totals.assertions.failed)));
+ }
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ catch( std::exception& ex ) {
+ Catch::cerr() << ex.what() << std::endl;
+ return MaxExitCode;
+ }
+#endif
+ }
+
+} // end namespace Catch
+// end catch_session.cpp
+// start catch_singletons.cpp
+
+#include <vector>
+
+namespace Catch {
+
+ namespace {
+ static auto getSingletons() -> std::vector<ISingleton*>*& {
+ static std::vector<ISingleton*>* g_singletons = nullptr;
+ if( !g_singletons )
+ g_singletons = new std::vector<ISingleton*>();
+ return g_singletons;
+ }
+ }
+
+ ISingleton::~ISingleton() {}
+
+ void addSingleton(ISingleton* singleton ) {
+ getSingletons()->push_back( singleton );
+ }
+ void cleanupSingletons() {
+ auto& singletons = getSingletons();
+ for( auto singleton : *singletons )
+ delete singleton;
+ delete singletons;
+ singletons = nullptr;
+ }
+
+} // namespace Catch
+// end catch_singletons.cpp
+// start catch_startup_exception_registry.cpp
+
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+namespace Catch {
+void StartupExceptionRegistry::add( std::exception_ptr const& exception ) noexcept {
+ CATCH_TRY {
+ m_exceptions.push_back(exception);
+ } CATCH_CATCH_ALL {
+ // If we run out of memory during start-up there's really not a lot more we can do about it
+ std::terminate();
+ }
+ }
+
+ std::vector<std::exception_ptr> const& StartupExceptionRegistry::getExceptions() const noexcept {
+ return m_exceptions;
+ }
+
+} // end namespace Catch
+#endif
+// end catch_startup_exception_registry.cpp
+// start catch_stream.cpp
+
+#include <cstdio>
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+ Catch::IStream::~IStream() = default;
+
+ namespace Detail { namespace {
+ template<typename WriterF, std::size_t bufferSize=256>
+ class StreamBufImpl : public std::streambuf {
+ char data[bufferSize];
+ WriterF m_writer;
+
+ public:
+ StreamBufImpl() {
+ setp( data, data + sizeof(data) );
+ }
+
+ ~StreamBufImpl() noexcept {
+ StreamBufImpl::sync();
+ }
+
+ private:
+ int overflow( int c ) override {
+ sync();
+
+ if( c != EOF ) {
+ if( pbase() == epptr() )
+ m_writer( std::string( 1, static_cast<char>( c ) ) );
+ else
+ sputc( static_cast<char>( c ) );
+ }
+ return 0;
+ }
+
+ int sync() override {
+ if( pbase() != pptr() ) {
+ m_writer( std::string( pbase(), static_cast<std::string::size_type>( pptr() - pbase() ) ) );
+ setp( pbase(), epptr() );
+ }
+ return 0;
+ }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ struct OutputDebugWriter {
+
+ void operator()( std::string const&str ) {
+ writeToDebugConsole( str );
+ }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ class FileStream : public IStream {
+ mutable std::ofstream m_ofs;
+ public:
+ FileStream( StringRef filename ) {
+ m_ofs.open( filename.c_str() );
+ CATCH_ENFORCE( !m_ofs.fail(), "Unable to open file: '" << filename << "'" );
+ }
+ ~FileStream() override = default;
+ public: // IStream
+ std::ostream& stream() const override {
+ return m_ofs;
+ }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ class CoutStream : public IStream {
+ mutable std::ostream m_os;
+ public:
+ // Store the streambuf from cout up-front because
+ // cout may get redirected when running tests
+ CoutStream() : m_os( Catch::cout().rdbuf() ) {}
+ ~CoutStream() override = default;
+
+ public: // IStream
+ std::ostream& stream() const override { return m_os; }
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ class DebugOutStream : public IStream {
+ std::unique_ptr<StreamBufImpl<OutputDebugWriter>> m_streamBuf;
+ mutable std::ostream m_os;
+ public:
+ DebugOutStream()
+ : m_streamBuf( new StreamBufImpl<OutputDebugWriter>() ),
+ m_os( m_streamBuf.get() )
+ {}
+
+ ~DebugOutStream() override = default;
+
+ public: // IStream
+ std::ostream& stream() const override { return m_os; }
+ };
+
+ }} // namespace anon::detail
+
+ ///////////////////////////////////////////////////////////////////////////
+
+ auto makeStream( StringRef const &filename ) -> IStream const* {
+ if( filename.empty() )
+ return new Detail::CoutStream();
+ else if( filename[0] == '%' ) {
+ if( filename == "%debug" )
+ return new Detail::DebugOutStream();
+ else
+ CATCH_ERROR( "Unrecognised stream: '" << filename << "'" );
+ }
+ else
+ return new Detail::FileStream( filename );
+ }
+
+ // This class encapsulates the idea of a pool of ostringstreams that can be reused.
+ struct StringStreams {
+ std::vector<std::unique_ptr<std::ostringstream>> m_streams;
+ std::vector<std::size_t> m_unused;
+ std::ostringstream m_referenceStream; // Used for copy state/ flags from
+
+ auto add() -> std::size_t {
+ if( m_unused.empty() ) {
+ m_streams.push_back( std::unique_ptr<std::ostringstream>( new std::ostringstream ) );
+ return m_streams.size()-1;
+ }
+ else {
+ auto index = m_unused.back();
+ m_unused.pop_back();
+ return index;
+ }
+ }
+
+ void release( std::size_t index ) {
+ m_streams[index]->copyfmt( m_referenceStream ); // Restore initial flags and other state
+ m_unused.push_back(index);
+ }
+ };
+
+ ReusableStringStream::ReusableStringStream()
+ : m_index( Singleton<StringStreams>::getMutable().add() ),
+ m_oss( Singleton<StringStreams>::getMutable().m_streams[m_index].get() )
+ {}
+
+ ReusableStringStream::~ReusableStringStream() {
+ static_cast<std::ostringstream*>( m_oss )->str("");
+ m_oss->clear();
+ Singleton<StringStreams>::getMutable().release( m_index );
+ }
+
+ auto ReusableStringStream::str() const -> std::string {
+ return static_cast<std::ostringstream*>( m_oss )->str();
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+
+#ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement these functions
+ std::ostream& cout() { return std::cout; }
+ std::ostream& cerr() { return std::cerr; }
+ std::ostream& clog() { return std::clog; }
+#endif
+}
+// end catch_stream.cpp
+// start catch_string_manip.cpp
+
+#include <algorithm>
+#include <ostream>
+#include <cstring>
+#include <cctype>
+#include <vector>
+
+namespace Catch {
+
+ namespace {
+ char toLowerCh(char c) {
+ return static_cast<char>( std::tolower( static_cast<unsigned char>(c) ) );
+ }
+ }
+
+ bool startsWith( std::string const& s, std::string const& prefix ) {
+ return s.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), s.begin());
+ }
+ bool startsWith( std::string const& s, char prefix ) {
+ return !s.empty() && s[0] == prefix;
+ }
+ bool endsWith( std::string const& s, std::string const& suffix ) {
+ return s.size() >= suffix.size() && std::equal(suffix.rbegin(), suffix.rend(), s.rbegin());
+ }
+ bool endsWith( std::string const& s, char suffix ) {
+ return !s.empty() && s[s.size()-1] == suffix;
+ }
+ bool contains( std::string const& s, std::string const& infix ) {
+ return s.find( infix ) != std::string::npos;
+ }
+ void toLowerInPlace( std::string& s ) {
+ std::transform( s.begin(), s.end(), s.begin(), toLowerCh );
+ }
+ std::string toLower( std::string const& s ) {
+ std::string lc = s;
+ toLowerInPlace( lc );
+ return lc;
+ }
+ std::string trim( std::string const& str ) {
+ static char const* whitespaceChars = "\n\r\t ";
+ std::string::size_type start = str.find_first_not_of( whitespaceChars );
+ std::string::size_type end = str.find_last_not_of( whitespaceChars );
+
+ return start != std::string::npos ? str.substr( start, 1+end-start ) : std::string();
+ }
+
+ StringRef trim(StringRef ref) {
+ const auto is_ws = [](char c) {
+ return c == ' ' || c == '\t' || c == '\n' || c == '\r';
+ };
+ size_t real_begin = 0;
+ while (real_begin < ref.size() && is_ws(ref[real_begin])) { ++real_begin; }
+ size_t real_end = ref.size();
+ while (real_end > real_begin && is_ws(ref[real_end - 1])) { --real_end; }
+
+ return ref.substr(real_begin, real_end - real_begin);
+ }
+
+ bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) {
+ bool replaced = false;
+ std::size_t i = str.find( replaceThis );
+ while( i != std::string::npos ) {
+ replaced = true;
+ str = str.substr( 0, i ) + withThis + str.substr( i+replaceThis.size() );
+ if( i < str.size()-withThis.size() )
+ i = str.find( replaceThis, i+withThis.size() );
+ else
+ i = std::string::npos;
+ }
+ return replaced;
+ }
+
+ std::vector<StringRef> splitStringRef( StringRef str, char delimiter ) {
+ std::vector<StringRef> subStrings;
+ std::size_t start = 0;
+ for(std::size_t pos = 0; pos < str.size(); ++pos ) {
+ if( str[pos] == delimiter ) {
+ if( pos - start > 1 )
+ subStrings.push_back( str.substr( start, pos-start ) );
+ start = pos+1;
+ }
+ }
+ if( start < str.size() )
+ subStrings.push_back( str.substr( start, str.size()-start ) );
+ return subStrings;
+ }
+
+ pluralise::pluralise( std::size_t count, std::string const& label )
+ : m_count( count ),
+ m_label( label )
+ {}
+
+ std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ) {
+ os << pluraliser.m_count << ' ' << pluraliser.m_label;
+ if( pluraliser.m_count != 1 )
+ os << 's';
+ return os;
+ }
+
+}
+// end catch_string_manip.cpp
+// start catch_stringref.cpp
+
+#include <algorithm>
+#include <ostream>
+#include <cstring>
+#include <cstdint>
+
+namespace Catch {
+ StringRef::StringRef( char const* rawChars ) noexcept
+ : StringRef( rawChars, static_cast<StringRef::size_type>(std::strlen(rawChars) ) )
+ {}
+
+ auto StringRef::c_str() const -> char const* {
+ CATCH_ENFORCE(isNullTerminated(), "Called StringRef::c_str() on a non-null-terminated instance");
+ return m_start;
+ }
+ auto StringRef::data() const noexcept -> char const* {
+ return m_start;
+ }
+
+ auto StringRef::substr( size_type start, size_type size ) const noexcept -> StringRef {
+ if (start < m_size) {
+ return StringRef(m_start + start, (std::min)(m_size - start, size));
+ } else {
+ return StringRef();
+ }
+ }
+ auto StringRef::operator == ( StringRef const& other ) const noexcept -> bool {
+ return m_size == other.m_size
+ && (std::memcmp( m_start, other.m_start, m_size ) == 0);
+ }
+
+ auto operator << ( std::ostream& os, StringRef const& str ) -> std::ostream& {
+ return os.write(str.data(), str.size());
+ }
+
+ auto operator+=( std::string& lhs, StringRef const& rhs ) -> std::string& {
+ lhs.append(rhs.data(), rhs.size());
+ return lhs;
+ }
+
+} // namespace Catch
+// end catch_stringref.cpp
+// start catch_tag_alias.cpp
+
+namespace Catch {
+ TagAlias::TagAlias(std::string const & _tag, SourceLineInfo _lineInfo): tag(_tag), lineInfo(_lineInfo) {}
+}
+// end catch_tag_alias.cpp
+// start catch_tag_alias_autoregistrar.cpp
+
+namespace Catch {
+
+ RegistrarForTagAliases::RegistrarForTagAliases(char const* alias, char const* tag, SourceLineInfo const& lineInfo) {
+ CATCH_TRY {
+ getMutableRegistryHub().registerTagAlias(alias, tag, lineInfo);
+ } CATCH_CATCH_ALL {
+ // Do not throw when constructing global objects, instead register the exception to be processed later
+ getMutableRegistryHub().registerStartupException();
+ }
+ }
+
+}
+// end catch_tag_alias_autoregistrar.cpp
+// start catch_tag_alias_registry.cpp
+
+#include <sstream>
+
+namespace Catch {
+
+ TagAliasRegistry::~TagAliasRegistry() {}
+
+ TagAlias const* TagAliasRegistry::find( std::string const& alias ) const {
+ auto it = m_registry.find( alias );
+ if( it != m_registry.end() )
+ return &(it->second);
+ else
+ return nullptr;
+ }
+
+ std::string TagAliasRegistry::expandAliases( std::string const& unexpandedTestSpec ) const {
+ std::string expandedTestSpec = unexpandedTestSpec;
+ for( auto const& registryKvp : m_registry ) {
+ std::size_t pos = expandedTestSpec.find( registryKvp.first );
+ if( pos != std::string::npos ) {
+ expandedTestSpec = expandedTestSpec.substr( 0, pos ) +
+ registryKvp.second.tag +
+ expandedTestSpec.substr( pos + registryKvp.first.size() );
+ }
+ }
+ return expandedTestSpec;
+ }
+
+ void TagAliasRegistry::add( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) {
+ CATCH_ENFORCE( startsWith(alias, "[@") && endsWith(alias, ']'),
+ "error: tag alias, '" << alias << "' is not of the form [@alias name].\n" << lineInfo );
+
+ CATCH_ENFORCE( m_registry.insert(std::make_pair(alias, TagAlias(tag, lineInfo))).second,
+ "error: tag alias, '" << alias << "' already registered.\n"
+ << "\tFirst seen at: " << find(alias)->lineInfo << "\n"
+ << "\tRedefined at: " << lineInfo );
+ }
+
+ ITagAliasRegistry::~ITagAliasRegistry() {}
+
+ ITagAliasRegistry const& ITagAliasRegistry::get() {
+ return getRegistryHub().getTagAliasRegistry();
+ }
+
+} // end namespace Catch
+// end catch_tag_alias_registry.cpp
+// start catch_test_case_info.cpp
+
+#include <cctype>
+#include <exception>
+#include <algorithm>
+#include <sstream>
+
+namespace Catch {
+
+ namespace {
+ TestCaseInfo::SpecialProperties parseSpecialTag( std::string const& tag ) {
+ if( startsWith( tag, '.' ) ||
+ tag == "!hide" )
+ return TestCaseInfo::IsHidden;
+ else if( tag == "!throws" )
+ return TestCaseInfo::Throws;
+ else if( tag == "!shouldfail" )
+ return TestCaseInfo::ShouldFail;
+ else if( tag == "!mayfail" )
+ return TestCaseInfo::MayFail;
+ else if( tag == "!nonportable" )
+ return TestCaseInfo::NonPortable;
+ else if( tag == "!benchmark" )
+ return static_cast<TestCaseInfo::SpecialProperties>( TestCaseInfo::Benchmark | TestCaseInfo::IsHidden );
+ else
+ return TestCaseInfo::None;
+ }
+ bool isReservedTag( std::string const& tag ) {
+ return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !std::isalnum( static_cast<unsigned char>(tag[0]) );
+ }
+ void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) {
+ CATCH_ENFORCE( !isReservedTag(tag),
+ "Tag name: [" << tag << "] is not allowed.\n"
+ << "Tag names starting with non alphanumeric characters are reserved\n"
+ << _lineInfo );
+ }
+ }
+
+ TestCase makeTestCase( ITestInvoker* _testCase,
+ std::string const& _className,
+ NameAndTags const& nameAndTags,
+ SourceLineInfo const& _lineInfo )
+ {
+ bool isHidden = false;
+
+ // Parse out tags
+ std::vector<std::string> tags;
+ std::string desc, tag;
+ bool inTag = false;
+ for (char c : nameAndTags.tags) {
+ if( !inTag ) {
+ if( c == '[' )
+ inTag = true;
+ else
+ desc += c;
+ }
+ else {
+ if( c == ']' ) {
+ TestCaseInfo::SpecialProperties prop = parseSpecialTag( tag );
+ if( ( prop & TestCaseInfo::IsHidden ) != 0 )
+ isHidden = true;
+ else if( prop == TestCaseInfo::None )
+ enforceNotReservedTag( tag, _lineInfo );
+
+ // Merged hide tags like `[.approvals]` should be added as
+ // `[.][approvals]`. The `[.]` is added at later point, so
+ // we only strip the prefix
+ if (startsWith(tag, '.') && tag.size() > 1) {
+ tag.erase(0, 1);
+ }
+ tags.push_back( tag );
+ tag.clear();
+ inTag = false;
+ }
+ else
+ tag += c;
+ }
+ }
+ if( isHidden ) {
+ // Add all "hidden" tags to make them behave identically
+ tags.insert( tags.end(), { ".", "!hide" } );
+ }
+
+ TestCaseInfo info( static_cast<std::string>(nameAndTags.name), _className, desc, tags, _lineInfo );
+ return TestCase( _testCase, std::move(info) );
+ }
+
+ void setTags( TestCaseInfo& testCaseInfo, std::vector<std::string> tags ) {
+ std::sort(begin(tags), end(tags));
+ tags.erase(std::unique(begin(tags), end(tags)), end(tags));
+ testCaseInfo.lcaseTags.clear();
+
+ for( auto const& tag : tags ) {
+ std::string lcaseTag = toLower( tag );
+ testCaseInfo.properties = static_cast<TestCaseInfo::SpecialProperties>( testCaseInfo.properties | parseSpecialTag( lcaseTag ) );
+ testCaseInfo.lcaseTags.push_back( lcaseTag );
+ }
+ testCaseInfo.tags = std::move(tags);
+ }
+
+ TestCaseInfo::TestCaseInfo( std::string const& _name,
+ std::string const& _className,
+ std::string const& _description,
+ std::vector<std::string> const& _tags,
+ SourceLineInfo const& _lineInfo )
+ : name( _name ),
+ className( _className ),
+ description( _description ),
+ lineInfo( _lineInfo ),
+ properties( None )
+ {
+ setTags( *this, _tags );
+ }
+
+ bool TestCaseInfo::isHidden() const {
+ return ( properties & IsHidden ) != 0;
+ }
+ bool TestCaseInfo::throws() const {
+ return ( properties & Throws ) != 0;
+ }
+ bool TestCaseInfo::okToFail() const {
+ return ( properties & (ShouldFail | MayFail ) ) != 0;
+ }
+ bool TestCaseInfo::expectedToFail() const {
+ return ( properties & (ShouldFail ) ) != 0;
+ }
+
+ std::string TestCaseInfo::tagsAsString() const {
+ std::string ret;
+ // '[' and ']' per tag
+ std::size_t full_size = 2 * tags.size();
+ for (const auto& tag : tags) {
+ full_size += tag.size();
+ }
+ ret.reserve(full_size);
+ for (const auto& tag : tags) {
+ ret.push_back('[');
+ ret.append(tag);
+ ret.push_back(']');
+ }
+
+ return ret;
+ }
+
+ TestCase::TestCase( ITestInvoker* testCase, TestCaseInfo&& info ) : TestCaseInfo( std::move(info) ), test( testCase ) {}
+
+ TestCase TestCase::withName( std::string const& _newName ) const {
+ TestCase other( *this );
+ other.name = _newName;
+ return other;
+ }
+
+ void TestCase::invoke() const {
+ test->invoke();
+ }
+
+ bool TestCase::operator == ( TestCase const& other ) const {
+ return test.get() == other.test.get() &&
+ name == other.name &&
+ className == other.className;
+ }
+
+ bool TestCase::operator < ( TestCase const& other ) const {
+ return name < other.name;
+ }
+
+ TestCaseInfo const& TestCase::getTestCaseInfo() const
+ {
+ return *this;
+ }
+
+} // end namespace Catch
+// end catch_test_case_info.cpp
+// start catch_test_case_registry_impl.cpp
+
+#include <algorithm>
+#include <sstream>
+
+namespace Catch {
+
+ namespace {
+ struct TestHasher {
+ using hash_t = uint64_t;
+
+ explicit TestHasher( hash_t hashSuffix ):
+ m_hashSuffix{ hashSuffix } {}
+
+ uint32_t operator()( TestCase const& t ) const {
+ // FNV-1a hash with multiplication fold.
+ const hash_t prime = 1099511628211u;
+ hash_t hash = 14695981039346656037u;
+ for ( const char c : t.name ) {
+ hash ^= c;
+ hash *= prime;
+ }
+ hash ^= m_hashSuffix;
+ hash *= prime;
+ const uint32_t low{ static_cast<uint32_t>( hash ) };
+ const uint32_t high{ static_cast<uint32_t>( hash >> 32 ) };
+ return low * high;
+ }
+
+ private:
+ hash_t m_hashSuffix;
+ };
+ } // end unnamed namespace
+
+ std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases ) {
+ switch( config.runOrder() ) {
+ case RunTests::InDeclarationOrder:
+ // already in declaration order
+ break;
+
+ case RunTests::InLexicographicalOrder: {
+ std::vector<TestCase> sorted = unsortedTestCases;
+ std::sort( sorted.begin(), sorted.end() );
+ return sorted;
+ }
+
+ case RunTests::InRandomOrder: {
+ seedRng( config );
+ TestHasher h{ config.rngSeed() };
+
+ using hashedTest = std::pair<TestHasher::hash_t, TestCase const*>;
+ std::vector<hashedTest> indexed_tests;
+ indexed_tests.reserve( unsortedTestCases.size() );
+
+ for (auto const& testCase : unsortedTestCases) {
+ indexed_tests.emplace_back(h(testCase), &testCase);
+ }
+
+ std::sort(indexed_tests.begin(), indexed_tests.end(),
+ [](hashedTest const& lhs, hashedTest const& rhs) {
+ if (lhs.first == rhs.first) {
+ return lhs.second->name < rhs.second->name;
+ }
+ return lhs.first < rhs.first;
+ });
+
+ std::vector<TestCase> sorted;
+ sorted.reserve( indexed_tests.size() );
+
+ for (auto const& hashed : indexed_tests) {
+ sorted.emplace_back(*hashed.second);
+ }
+
+ return sorted;
+ }
+ }
+ return unsortedTestCases;
+ }
+
+ bool isThrowSafe( TestCase const& testCase, IConfig const& config ) {
+ return !testCase.throws() || config.allowThrows();
+ }
+
+ bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) {
+ return testSpec.matches( testCase ) && isThrowSafe( testCase, config );
+ }
+
+ void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) {
+ std::set<TestCase> seenFunctions;
+ for( auto const& function : functions ) {
+ auto prev = seenFunctions.insert( function );
+ CATCH_ENFORCE( prev.second,
+ "error: TEST_CASE( \"" << function.name << "\" ) already defined.\n"
+ << "\tFirst seen at " << prev.first->getTestCaseInfo().lineInfo << "\n"
+ << "\tRedefined at " << function.getTestCaseInfo().lineInfo );
+ }
+ }
+
+ std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) {
+ std::vector<TestCase> filtered;
+ filtered.reserve( testCases.size() );
+ for (auto const& testCase : testCases) {
+ if ((!testSpec.hasFilters() && !testCase.isHidden()) ||
+ (testSpec.hasFilters() && matchTest(testCase, testSpec, config))) {
+ filtered.push_back(testCase);
+ }
+ }
+ return filtered;
+ }
+ std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) {
+ return getRegistryHub().getTestCaseRegistry().getAllTestsSorted( config );
+ }
+
+ void TestRegistry::registerTest( TestCase const& testCase ) {
+ std::string name = testCase.getTestCaseInfo().name;
+ if( name.empty() ) {
+ ReusableStringStream rss;
+ rss << "Anonymous test case " << ++m_unnamedCount;
+ return registerTest( testCase.withName( rss.str() ) );
+ }
+ m_functions.push_back( testCase );
+ }
+
+ std::vector<TestCase> const& TestRegistry::getAllTests() const {
+ return m_functions;
+ }
+ std::vector<TestCase> const& TestRegistry::getAllTestsSorted( IConfig const& config ) const {
+ if( m_sortedFunctions.empty() )
+ enforceNoDuplicateTestCases( m_functions );
+
+ if( m_currentSortOrder != config.runOrder() || m_sortedFunctions.empty() ) {
+ m_sortedFunctions = sortTests( config, m_functions );
+ m_currentSortOrder = config.runOrder();
+ }
+ return m_sortedFunctions;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ TestInvokerAsFunction::TestInvokerAsFunction( void(*testAsFunction)() ) noexcept : m_testAsFunction( testAsFunction ) {}
+
+ void TestInvokerAsFunction::invoke() const {
+ m_testAsFunction();
+ }
+
+ std::string extractClassName( StringRef const& classOrQualifiedMethodName ) {
+ std::string className(classOrQualifiedMethodName);
+ if( startsWith( className, '&' ) )
+ {
+ std::size_t lastColons = className.rfind( "::" );
+ std::size_t penultimateColons = className.rfind( "::", lastColons-1 );
+ if( penultimateColons == std::string::npos )
+ penultimateColons = 1;
+ className = className.substr( penultimateColons, lastColons-penultimateColons );
+ }
+ return className;
+ }
+
+} // end namespace Catch
+// end catch_test_case_registry_impl.cpp
+// start catch_test_case_tracker.cpp
+
+#include <algorithm>
+#include <cassert>
+#include <stdexcept>
+#include <memory>
+#include <sstream>
+
+#if defined(__clang__)
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wexit-time-destructors"
+#endif
+
+namespace Catch {
+namespace TestCaseTracking {
+
+ NameAndLocation::NameAndLocation( std::string const& _name, SourceLineInfo const& _location )
+ : name( _name ),
+ location( _location )
+ {}
+
+ ITracker::~ITracker() = default;
+
+ ITracker& TrackerContext::startRun() {
+ m_rootTracker = std::make_shared<SectionTracker>( NameAndLocation( "{root}", CATCH_INTERNAL_LINEINFO ), *this, nullptr );
+ m_currentTracker = nullptr;
+ m_runState = Executing;
+ return *m_rootTracker;
+ }
+
+ void TrackerContext::endRun() {
+ m_rootTracker.reset();
+ m_currentTracker = nullptr;
+ m_runState = NotStarted;
+ }
+
+ void TrackerContext::startCycle() {
+ m_currentTracker = m_rootTracker.get();
+ m_runState = Executing;
+ }
+ void TrackerContext::completeCycle() {
+ m_runState = CompletedCycle;
+ }
+
+ bool TrackerContext::completedCycle() const {
+ return m_runState == CompletedCycle;
+ }
+ ITracker& TrackerContext::currentTracker() {
+ return *m_currentTracker;
+ }
+ void TrackerContext::setCurrentTracker( ITracker* tracker ) {
+ m_currentTracker = tracker;
+ }
+
+ TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ):
+ ITracker(nameAndLocation),
+ m_ctx( ctx ),
+ m_parent( parent )
+ {}
+
+ bool TrackerBase::isComplete() const {
+ return m_runState == CompletedSuccessfully || m_runState == Failed;
+ }
+ bool TrackerBase::isSuccessfullyCompleted() const {
+ return m_runState == CompletedSuccessfully;
+ }
+ bool TrackerBase::isOpen() const {
+ return m_runState != NotStarted && !isComplete();
+ }
+ bool TrackerBase::hasChildren() const {
+ return !m_children.empty();
+ }
+
+ void TrackerBase::addChild( ITrackerPtr const& child ) {
+ m_children.push_back( child );
+ }
+
+ ITrackerPtr TrackerBase::findChild( NameAndLocation const& nameAndLocation ) {
+ auto it = std::find_if( m_children.begin(), m_children.end(),
+ [&nameAndLocation]( ITrackerPtr const& tracker ){
+ return
+ tracker->nameAndLocation().location == nameAndLocation.location &&
+ tracker->nameAndLocation().name == nameAndLocation.name;
+ } );
+ return( it != m_children.end() )
+ ? *it
+ : nullptr;
+ }
+ ITracker& TrackerBase::parent() {
+ assert( m_parent ); // Should always be non-null except for root
+ return *m_parent;
+ }
+
+ void TrackerBase::openChild() {
+ if( m_runState != ExecutingChildren ) {
+ m_runState = ExecutingChildren;
+ if( m_parent )
+ m_parent->openChild();
+ }
+ }
+
+ bool TrackerBase::isSectionTracker() const { return false; }
+ bool TrackerBase::isGeneratorTracker() const { return false; }
+
+ void TrackerBase::open() {
+ m_runState = Executing;
+ moveToThis();
+ if( m_parent )
+ m_parent->openChild();
+ }
+
+ void TrackerBase::close() {
+
+ // Close any still open children (e.g. generators)
+ while( &m_ctx.currentTracker() != this )
+ m_ctx.currentTracker().close();
+
+ switch( m_runState ) {
+ case NeedsAnotherRun:
+ break;
+
+ case Executing:
+ m_runState = CompletedSuccessfully;
+ break;
+ case ExecutingChildren:
+ if( std::all_of(m_children.begin(), m_children.end(), [](ITrackerPtr const& t){ return t->isComplete(); }) )
+ m_runState = CompletedSuccessfully;
+ break;
+
+ case NotStarted:
+ case CompletedSuccessfully:
+ case Failed:
+ CATCH_INTERNAL_ERROR( "Illogical state: " << m_runState );
+
+ default:
+ CATCH_INTERNAL_ERROR( "Unknown state: " << m_runState );
+ }
+ moveToParent();
+ m_ctx.completeCycle();
+ }
+ void TrackerBase::fail() {
+ m_runState = Failed;
+ if( m_parent )
+ m_parent->markAsNeedingAnotherRun();
+ moveToParent();
+ m_ctx.completeCycle();
+ }
+ void TrackerBase::markAsNeedingAnotherRun() {
+ m_runState = NeedsAnotherRun;
+ }
+
+ void TrackerBase::moveToParent() {
+ assert( m_parent );
+ m_ctx.setCurrentTracker( m_parent );
+ }
+ void TrackerBase::moveToThis() {
+ m_ctx.setCurrentTracker( this );
+ }
+
+ SectionTracker::SectionTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent )
+ : TrackerBase( nameAndLocation, ctx, parent ),
+ m_trimmed_name(trim(nameAndLocation.name))
+ {
+ if( parent ) {
+ while( !parent->isSectionTracker() )
+ parent = &parent->parent();
+
+ SectionTracker& parentSection = static_cast<SectionTracker&>( *parent );
+ addNextFilters( parentSection.m_filters );
+ }
+ }
+
+ bool SectionTracker::isComplete() const {
+ bool complete = true;
+
+ if (m_filters.empty()
+ || m_filters[0] == ""
+ || std::find(m_filters.begin(), m_filters.end(), m_trimmed_name) != m_filters.end()) {
+ complete = TrackerBase::isComplete();
+ }
+ return complete;
+ }
+
+ bool SectionTracker::isSectionTracker() const { return true; }
+
+ SectionTracker& SectionTracker::acquire( TrackerContext& ctx, NameAndLocation const& nameAndLocation ) {
+ std::shared_ptr<SectionTracker> section;
+
+ ITracker& currentTracker = ctx.currentTracker();
+ if( ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
+ assert( childTracker );
+ assert( childTracker->isSectionTracker() );
+ section = std::static_pointer_cast<SectionTracker>( childTracker );
+ }
+ else {
+ section = std::make_shared<SectionTracker>( nameAndLocation, ctx, &currentTracker );
+ currentTracker.addChild( section );
+ }
+ if( !ctx.completedCycle() )
+ section->tryOpen();
+ return *section;
+ }
+
+ void SectionTracker::tryOpen() {
+ if( !isComplete() )
+ open();
+ }
+
+ void SectionTracker::addInitialFilters( std::vector<std::string> const& filters ) {
+ if( !filters.empty() ) {
+ m_filters.reserve( m_filters.size() + filters.size() + 2 );
+ m_filters.emplace_back(""); // Root - should never be consulted
+ m_filters.emplace_back(""); // Test Case - not a section filter
+ m_filters.insert( m_filters.end(), filters.begin(), filters.end() );
+ }
+ }
+ void SectionTracker::addNextFilters( std::vector<std::string> const& filters ) {
+ if( filters.size() > 1 )
+ m_filters.insert( m_filters.end(), filters.begin()+1, filters.end() );
+ }
+
+ std::vector<std::string> const& SectionTracker::getFilters() const {
+ return m_filters;
+ }
+
+ std::string const& SectionTracker::trimmedName() const {
+ return m_trimmed_name;
+ }
+
+} // namespace TestCaseTracking
+
+using TestCaseTracking::ITracker;
+using TestCaseTracking::TrackerContext;
+using TestCaseTracking::SectionTracker;
+
+} // namespace Catch
+
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+// end catch_test_case_tracker.cpp
+// start catch_test_registry.cpp
+
+namespace Catch {
+
+ auto makeTestInvoker( void(*testAsFunction)() ) noexcept -> ITestInvoker* {
+ return new(std::nothrow) TestInvokerAsFunction( testAsFunction );
+ }
+
+ NameAndTags::NameAndTags( StringRef const& name_ , StringRef const& tags_ ) noexcept : name( name_ ), tags( tags_ ) {}
+
+ AutoReg::AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept {
+ CATCH_TRY {
+ getMutableRegistryHub()
+ .registerTest(
+ makeTestCase(
+ invoker,
+ extractClassName( classOrMethod ),
+ nameAndTags,
+ lineInfo));
+ } CATCH_CATCH_ALL {
+ // Do not throw when constructing global objects, instead register the exception to be processed later
+ getMutableRegistryHub().registerStartupException();
+ }
+ }
+
+ AutoReg::~AutoReg() = default;
+}
+// end catch_test_registry.cpp
+// start catch_test_spec.cpp
+
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+ TestSpec::Pattern::Pattern( std::string const& name )
+ : m_name( name )
+ {}
+
+ TestSpec::Pattern::~Pattern() = default;
+
+ std::string const& TestSpec::Pattern::name() const {
+ return m_name;
+ }
+
+ TestSpec::NamePattern::NamePattern( std::string const& name, std::string const& filterString )
+ : Pattern( filterString )
+ , m_wildcardPattern( toLower( name ), CaseSensitive::No )
+ {}
+
+ bool TestSpec::NamePattern::matches( TestCaseInfo const& testCase ) const {
+ return m_wildcardPattern.matches( testCase.name );
+ }
+
+ TestSpec::TagPattern::TagPattern( std::string const& tag, std::string const& filterString )
+ : Pattern( filterString )
+ , m_tag( toLower( tag ) )
+ {}
+
+ bool TestSpec::TagPattern::matches( TestCaseInfo const& testCase ) const {
+ return std::find(begin(testCase.lcaseTags),
+ end(testCase.lcaseTags),
+ m_tag) != end(testCase.lcaseTags);
+ }
+
+ TestSpec::ExcludedPattern::ExcludedPattern( PatternPtr const& underlyingPattern )
+ : Pattern( underlyingPattern->name() )
+ , m_underlyingPattern( underlyingPattern )
+ {}
+
+ bool TestSpec::ExcludedPattern::matches( TestCaseInfo const& testCase ) const {
+ return !m_underlyingPattern->matches( testCase );
+ }
+
+ bool TestSpec::Filter::matches( TestCaseInfo const& testCase ) const {
+ return std::all_of( m_patterns.begin(), m_patterns.end(), [&]( PatternPtr const& p ){ return p->matches( testCase ); } );
+ }
+
+ std::string TestSpec::Filter::name() const {
+ std::string name;
+ for( auto const& p : m_patterns )
+ name += p->name();
+ return name;
+ }
+
+ bool TestSpec::hasFilters() const {
+ return !m_filters.empty();
+ }
+
+ bool TestSpec::matches( TestCaseInfo const& testCase ) const {
+ return std::any_of( m_filters.begin(), m_filters.end(), [&]( Filter const& f ){ return f.matches( testCase ); } );
+ }
+
+ TestSpec::Matches TestSpec::matchesByFilter( std::vector<TestCase> const& testCases, IConfig const& config ) const
+ {
+ Matches matches( m_filters.size() );
+ std::transform( m_filters.begin(), m_filters.end(), matches.begin(), [&]( Filter const& filter ){
+ std::vector<TestCase const*> currentMatches;
+ for( auto const& test : testCases )
+ if( isThrowSafe( test, config ) && filter.matches( test ) )
+ currentMatches.emplace_back( &test );
+ return FilterMatch{ filter.name(), currentMatches };
+ } );
+ return matches;
+ }
+
+ const TestSpec::vectorStrings& TestSpec::getInvalidArgs() const{
+ return (m_invalidArgs);
+ }
+
+}
+// end catch_test_spec.cpp
+// start catch_test_spec_parser.cpp
+
+namespace Catch {
+
+ TestSpecParser::TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases( &tagAliases ) {}
+
+ TestSpecParser& TestSpecParser::parse( std::string const& arg ) {
+ m_mode = None;
+ m_exclusion = false;
+ m_arg = m_tagAliases->expandAliases( arg );
+ m_escapeChars.clear();
+ m_substring.reserve(m_arg.size());
+ m_patternName.reserve(m_arg.size());
+ m_realPatternPos = 0;
+
+ for( m_pos = 0; m_pos < m_arg.size(); ++m_pos )
+ //if visitChar fails
+ if( !visitChar( m_arg[m_pos] ) ){
+ m_testSpec.m_invalidArgs.push_back(arg);
+ break;
+ }
+ endMode();
+ return *this;
+ }
+ TestSpec TestSpecParser::testSpec() {
+ addFilter();
+ return m_testSpec;
+ }
+ bool TestSpecParser::visitChar( char c ) {
+ if( (m_mode != EscapedName) && (c == '\\') ) {
+ escape();
+ addCharToPattern(c);
+ return true;
+ }else if((m_mode != EscapedName) && (c == ',') ) {
+ return separate();
+ }
+
+ switch( m_mode ) {
+ case None:
+ if( processNoneChar( c ) )
+ return true;
+ break;
+ case Name:
+ processNameChar( c );
+ break;
+ case EscapedName:
+ endMode();
+ addCharToPattern(c);
+ return true;
+ default:
+ case Tag:
+ case QuotedName:
+ if( processOtherChar( c ) )
+ return true;
+ break;
+ }
+
+ m_substring += c;
+ if( !isControlChar( c ) ) {
+ m_patternName += c;
+ m_realPatternPos++;
+ }
+ return true;
+ }
+ // Two of the processing methods return true to signal the caller to return
+ // without adding the given character to the current pattern strings
+ bool TestSpecParser::processNoneChar( char c ) {
+ switch( c ) {
+ case ' ':
+ return true;
+ case '~':
+ m_exclusion = true;
+ return false;
+ case '[':
+ startNewMode( Tag );
+ return false;
+ case '"':
+ startNewMode( QuotedName );
+ return false;
+ default:
+ startNewMode( Name );
+ return false;
+ }
+ }
+ void TestSpecParser::processNameChar( char c ) {
+ if( c == '[' ) {
+ if( m_substring == "exclude:" )
+ m_exclusion = true;
+ else
+ endMode();
+ startNewMode( Tag );
+ }
+ }
+ bool TestSpecParser::processOtherChar( char c ) {
+ if( !isControlChar( c ) )
+ return false;
+ m_substring += c;
+ endMode();
+ return true;
+ }
+ void TestSpecParser::startNewMode( Mode mode ) {
+ m_mode = mode;
+ }
+ void TestSpecParser::endMode() {
+ switch( m_mode ) {
+ case Name:
+ case QuotedName:
+ return addNamePattern();
+ case Tag:
+ return addTagPattern();
+ case EscapedName:
+ revertBackToLastMode();
+ return;
+ case None:
+ default:
+ return startNewMode( None );
+ }
+ }
+ void TestSpecParser::escape() {
+ saveLastMode();
+ m_mode = EscapedName;
+ m_escapeChars.push_back(m_realPatternPos);
+ }
+ bool TestSpecParser::isControlChar( char c ) const {
+ switch( m_mode ) {
+ default:
+ return false;
+ case None:
+ return c == '~';
+ case Name:
+ return c == '[';
+ case EscapedName:
+ return true;
+ case QuotedName:
+ return c == '"';
+ case Tag:
+ return c == '[' || c == ']';
+ }
+ }
+
+ void TestSpecParser::addFilter() {
+ if( !m_currentFilter.m_patterns.empty() ) {
+ m_testSpec.m_filters.push_back( m_currentFilter );
+ m_currentFilter = TestSpec::Filter();
+ }
+ }
+
+ void TestSpecParser::saveLastMode() {
+ lastMode = m_mode;
+ }
+
+ void TestSpecParser::revertBackToLastMode() {
+ m_mode = lastMode;
+ }
+
+ bool TestSpecParser::separate() {
+ if( (m_mode==QuotedName) || (m_mode==Tag) ){
+ //invalid argument, signal failure to previous scope.
+ m_mode = None;
+ m_pos = m_arg.size();
+ m_substring.clear();
+ m_patternName.clear();
+ m_realPatternPos = 0;
+ return false;
+ }
+ endMode();
+ addFilter();
+ return true; //success
+ }
+
+ std::string TestSpecParser::preprocessPattern() {
+ std::string token = m_patternName;
+ for (std::size_t i = 0; i < m_escapeChars.size(); ++i)
+ token = token.substr(0, m_escapeChars[i] - i) + token.substr(m_escapeChars[i] - i + 1);
+ m_escapeChars.clear();
+ if (startsWith(token, "exclude:")) {
+ m_exclusion = true;
+ token = token.substr(8);
+ }
+
+ m_patternName.clear();
+ m_realPatternPos = 0;
+
+ return token;
+ }
+
+ void TestSpecParser::addNamePattern() {
+ auto token = preprocessPattern();
+
+ if (!token.empty()) {
+ TestSpec::PatternPtr pattern = std::make_shared<TestSpec::NamePattern>(token, m_substring);
+ if (m_exclusion)
+ pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+ m_currentFilter.m_patterns.push_back(pattern);
+ }
+ m_substring.clear();
+ m_exclusion = false;
+ m_mode = None;
+ }
+
+ void TestSpecParser::addTagPattern() {
+ auto token = preprocessPattern();
+
+ if (!token.empty()) {
+ // If the tag pattern is the "hide and tag" shorthand (e.g. [.foo])
+ // we have to create a separate hide tag and shorten the real one
+ if (token.size() > 1 && token[0] == '.') {
+ token.erase(token.begin());
+ TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(".", m_substring);
+ if (m_exclusion) {
+ pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+ }
+ m_currentFilter.m_patterns.push_back(pattern);
+ }
+
+ TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(token, m_substring);
+
+ if (m_exclusion) {
+ pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+ }
+ m_currentFilter.m_patterns.push_back(pattern);
+ }
+ m_substring.clear();
+ m_exclusion = false;
+ m_mode = None;
+ }
+
+ TestSpec parseTestSpec( std::string const& arg ) {
+ return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec();
+ }
+
+} // namespace Catch
+// end catch_test_spec_parser.cpp
+// start catch_timer.cpp
+
+#include <chrono>
+
+static const uint64_t nanosecondsInSecond = 1000000000;
+
+namespace Catch {
+
+ auto getCurrentNanosecondsSinceEpoch() -> uint64_t {
+ return std::chrono::duration_cast<std::chrono::nanoseconds>( std::chrono::high_resolution_clock::now().time_since_epoch() ).count();
+ }
+
+ namespace {
+ auto estimateClockResolution() -> uint64_t {
+ uint64_t sum = 0;
+ static const uint64_t iterations = 1000000;
+
+ auto startTime = getCurrentNanosecondsSinceEpoch();
+
+ for( std::size_t i = 0; i < iterations; ++i ) {
+
+ uint64_t ticks;
+ uint64_t baseTicks = getCurrentNanosecondsSinceEpoch();
+ do {
+ ticks = getCurrentNanosecondsSinceEpoch();
+ } while( ticks == baseTicks );
+
+ auto delta = ticks - baseTicks;
+ sum += delta;
+
+ // If we have been calibrating for over 3 seconds -- the clock
+ // is terrible and we should move on.
+ // TBD: How to signal that the measured resolution is probably wrong?
+ if (ticks > startTime + 3 * nanosecondsInSecond) {
+ return sum / ( i + 1u );
+ }
+ }
+
+ // We're just taking the mean, here. To do better we could take the std. dev and exclude outliers
+ // - and potentially do more iterations if there's a high variance.
+ return sum/iterations;
+ }
+ }
+ auto getEstimatedClockResolution() -> uint64_t {
+ static auto s_resolution = estimateClockResolution();
+ return s_resolution;
+ }
+
+ void Timer::start() {
+ m_nanoseconds = getCurrentNanosecondsSinceEpoch();
+ }
+ auto Timer::getElapsedNanoseconds() const -> uint64_t {
+ return getCurrentNanosecondsSinceEpoch() - m_nanoseconds;
+ }
+ auto Timer::getElapsedMicroseconds() const -> uint64_t {
+ return getElapsedNanoseconds()/1000;
+ }
+ auto Timer::getElapsedMilliseconds() const -> unsigned int {
+ return static_cast<unsigned int>(getElapsedMicroseconds()/1000);
+ }
+ auto Timer::getElapsedSeconds() const -> double {
+ return getElapsedMicroseconds()/1000000.0;
+ }
+
+} // namespace Catch
+// end catch_timer.cpp
+// start catch_tostring.cpp
+
+#if defined(__clang__)
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wexit-time-destructors"
+# pragma clang diagnostic ignored "-Wglobal-constructors"
+#endif
+
+// Enable specific decls locally
+#if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER)
+#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
+#endif
+
+#include <cmath>
+#include <iomanip>
+
+namespace Catch {
+
+namespace Detail {
+
+ const std::string unprintableString = "{?}";
+
+ namespace {
+ const int hexThreshold = 255;
+
+ struct Endianness {
+ enum Arch { Big, Little };
+
+ static Arch which() {
+ int one = 1;
+ // If the lowest byte we read is non-zero, we can assume
+ // that little endian format is used.
+ auto value = *reinterpret_cast<char*>(&one);
+ return value ? Little : Big;
+ }
+ };
+ }
+
+ std::string rawMemoryToString( const void *object, std::size_t size ) {
+ // Reverse order for little endian architectures
+ int i = 0, end = static_cast<int>( size ), inc = 1;
+ if( Endianness::which() == Endianness::Little ) {
+ i = end-1;
+ end = inc = -1;
+ }
+
+ unsigned char const *bytes = static_cast<unsigned char const *>(object);
+ ReusableStringStream rss;
+ rss << "0x" << std::setfill('0') << std::hex;
+ for( ; i != end; i += inc )
+ rss << std::setw(2) << static_cast<unsigned>(bytes[i]);
+ return rss.str();
+ }
+}
+
+template<typename T>
+std::string fpToString( T value, int precision ) {
+ if (Catch::isnan(value)) {
+ return "nan";
+ }
+
+ ReusableStringStream rss;
+ rss << std::setprecision( precision )
+ << std::fixed
+ << value;
+ std::string d = rss.str();
+ std::size_t i = d.find_last_not_of( '0' );
+ if( i != std::string::npos && i != d.size()-1 ) {
+ if( d[i] == '.' )
+ i++;
+ d = d.substr( 0, i+1 );
+ }
+ return d;
+}
+
+//// ======================================================= ////
+//
+// Out-of-line defs for full specialization of StringMaker
+//
+//// ======================================================= ////
+
+std::string StringMaker<std::string>::convert(const std::string& str) {
+ if (!getCurrentContext().getConfig()->showInvisibles()) {
+ return '"' + str + '"';
+ }
+
+ std::string s("\"");
+ for (char c : str) {
+ switch (c) {
+ case '\n':
+ s.append("\\n");
+ break;
+ case '\t':
+ s.append("\\t");
+ break;
+ default:
+ s.push_back(c);
+ break;
+ }
+ }
+ s.append("\"");
+ return s;
+}
+
+#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
+std::string StringMaker<std::string_view>::convert(std::string_view str) {
+ return ::Catch::Detail::stringify(std::string{ str });
+}
+#endif
+
+std::string StringMaker<char const*>::convert(char const* str) {
+ if (str) {
+ return ::Catch::Detail::stringify(std::string{ str });
+ } else {
+ return{ "{null string}" };
+ }
+}
+std::string StringMaker<char*>::convert(char* str) {
+ if (str) {
+ return ::Catch::Detail::stringify(std::string{ str });
+ } else {
+ return{ "{null string}" };
+ }
+}
+
+#ifdef CATCH_CONFIG_WCHAR
+std::string StringMaker<std::wstring>::convert(const std::wstring& wstr) {
+ std::string s;
+ s.reserve(wstr.size());
+ for (auto c : wstr) {
+ s += (c <= 0xff) ? static_cast<char>(c) : '?';
+ }
+ return ::Catch::Detail::stringify(s);
+}
+
+# ifdef CATCH_CONFIG_CPP17_STRING_VIEW
+std::string StringMaker<std::wstring_view>::convert(std::wstring_view str) {
+ return StringMaker<std::wstring>::convert(std::wstring(str));
+}
+# endif
+
+std::string StringMaker<wchar_t const*>::convert(wchar_t const * str) {
+ if (str) {
+ return ::Catch::Detail::stringify(std::wstring{ str });
+ } else {
+ return{ "{null string}" };
+ }
+}
+std::string StringMaker<wchar_t *>::convert(wchar_t * str) {
+ if (str) {
+ return ::Catch::Detail::stringify(std::wstring{ str });
+ } else {
+ return{ "{null string}" };
+ }
+}
+#endif
+
+#if defined(CATCH_CONFIG_CPP17_BYTE)
+#include <cstddef>
+std::string StringMaker<std::byte>::convert(std::byte value) {
+ return ::Catch::Detail::stringify(std::to_integer<unsigned long long>(value));
+}
+#endif // defined(CATCH_CONFIG_CPP17_BYTE)
+
+std::string StringMaker<int>::convert(int value) {
+ return ::Catch::Detail::stringify(static_cast<long long>(value));
+}
+std::string StringMaker<long>::convert(long value) {
+ return ::Catch::Detail::stringify(static_cast<long long>(value));
+}
+std::string StringMaker<long long>::convert(long long value) {
+ ReusableStringStream rss;
+ rss << value;
+ if (value > Detail::hexThreshold) {
+ rss << " (0x" << std::hex << value << ')';
+ }
+ return rss.str();
+}
+
+std::string StringMaker<unsigned int>::convert(unsigned int value) {
+ return ::Catch::Detail::stringify(static_cast<unsigned long long>(value));
+}
+std::string StringMaker<unsigned long>::convert(unsigned long value) {
+ return ::Catch::Detail::stringify(static_cast<unsigned long long>(value));
+}
+std::string StringMaker<unsigned long long>::convert(unsigned long long value) {
+ ReusableStringStream rss;
+ rss << value;
+ if (value > Detail::hexThreshold) {
+ rss << " (0x" << std::hex << value << ')';
+ }
+ return rss.str();
+}
+
+std::string StringMaker<bool>::convert(bool b) {
+ return b ? "true" : "false";
+}
+
+std::string StringMaker<signed char>::convert(signed char value) {
+ if (value == '\r') {
+ return "'\\r'";
+ } else if (value == '\f') {
+ return "'\\f'";
+ } else if (value == '\n') {
+ return "'\\n'";
+ } else if (value == '\t') {
+ return "'\\t'";
+ } else if ('\0' <= value && value < ' ') {
+ return ::Catch::Detail::stringify(static_cast<unsigned int>(value));
+ } else {
+ char chstr[] = "' '";
+ chstr[1] = value;
+ return chstr;
+ }
+}
+std::string StringMaker<char>::convert(char c) {
+ return ::Catch::Detail::stringify(static_cast<signed char>(c));
+}
+std::string StringMaker<unsigned char>::convert(unsigned char c) {
+ return ::Catch::Detail::stringify(static_cast<char>(c));
+}
+
+std::string StringMaker<std::nullptr_t>::convert(std::nullptr_t) {
+ return "nullptr";
+}
+
+int StringMaker<float>::precision = 5;
+
+std::string StringMaker<float>::convert(float value) {
+ return fpToString(value, precision) + 'f';
+}
+
+int StringMaker<double>::precision = 10;
+
+std::string StringMaker<double>::convert(double value) {
+ return fpToString(value, precision);
+}
+
+std::string ratio_string<std::atto>::symbol() { return "a"; }
+std::string ratio_string<std::femto>::symbol() { return "f"; }
+std::string ratio_string<std::pico>::symbol() { return "p"; }
+std::string ratio_string<std::nano>::symbol() { return "n"; }
+std::string ratio_string<std::micro>::symbol() { return "u"; }
+std::string ratio_string<std::milli>::symbol() { return "m"; }
+
+} // end namespace Catch
+
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+
+// end catch_tostring.cpp
+// start catch_totals.cpp
+
+namespace Catch {
+
+ Counts Counts::operator - ( Counts const& other ) const {
+ Counts diff;
+ diff.passed = passed - other.passed;
+ diff.failed = failed - other.failed;
+ diff.failedButOk = failedButOk - other.failedButOk;
+ return diff;
+ }
+
+ Counts& Counts::operator += ( Counts const& other ) {
+ passed += other.passed;
+ failed += other.failed;
+ failedButOk += other.failedButOk;
+ return *this;
+ }
+
+ std::size_t Counts::total() const {
+ return passed + failed + failedButOk;
+ }
+ bool Counts::allPassed() const {
+ return failed == 0 && failedButOk == 0;
+ }
+ bool Counts::allOk() const {
+ return failed == 0;
+ }
+
+ Totals Totals::operator - ( Totals const& other ) const {
+ Totals diff;
+ diff.assertions = assertions - other.assertions;
+ diff.testCases = testCases - other.testCases;
+ return diff;
+ }
+
+ Totals& Totals::operator += ( Totals const& other ) {
+ assertions += other.assertions;
+ testCases += other.testCases;
+ return *this;
+ }
+
+ Totals Totals::delta( Totals const& prevTotals ) const {
+ Totals diff = *this - prevTotals;
+ if( diff.assertions.failed > 0 )
+ ++diff.testCases.failed;
+ else if( diff.assertions.failedButOk > 0 )
+ ++diff.testCases.failedButOk;
+ else
+ ++diff.testCases.passed;
+ return diff;
+ }
+
+}
+// end catch_totals.cpp
+// start catch_uncaught_exceptions.cpp
+
+// start catch_config_uncaught_exceptions.hpp
+
+// Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+
+#ifndef CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+#define CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+
+#if defined(_MSC_VER)
+# if _MSC_VER >= 1900 // Visual Studio 2015 or newer
+# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+# endif
+#endif
+
+#include <exception>
+
+#if defined(__cpp_lib_uncaught_exceptions) \
+ && !defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+
+# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+#endif // __cpp_lib_uncaught_exceptions
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) \
+ && !defined(CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) \
+ && !defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+
+# define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+#endif
+
+#endif // CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+// end catch_config_uncaught_exceptions.hpp
+#include <exception>
+
+namespace Catch {
+ bool uncaught_exceptions() {
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+ return false;
+#elif defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+ return std::uncaught_exceptions() > 0;
+#else
+ return std::uncaught_exception();
+#endif
+ }
+} // end namespace Catch
+// end catch_uncaught_exceptions.cpp
+// start catch_version.cpp
+
+#include <ostream>
+
+namespace Catch {
+
+ Version::Version
+ ( unsigned int _majorVersion,
+ unsigned int _minorVersion,
+ unsigned int _patchNumber,
+ char const * const _branchName,
+ unsigned int _buildNumber )
+ : majorVersion( _majorVersion ),
+ minorVersion( _minorVersion ),
+ patchNumber( _patchNumber ),
+ branchName( _branchName ),
+ buildNumber( _buildNumber )
+ {}
+
+ std::ostream& operator << ( std::ostream& os, Version const& version ) {
+ os << version.majorVersion << '.'
+ << version.minorVersion << '.'
+ << version.patchNumber;
+ // branchName is never null -> 0th char is \0 if it is empty
+ if (version.branchName[0]) {
+ os << '-' << version.branchName
+ << '.' << version.buildNumber;
+ }
+ return os;
+ }
+
+ Version const& libraryVersion() {
+ static Version version( 2, 13, 9, "", 0 );
+ return version;
+ }
+
+}
+// end catch_version.cpp
+// start catch_wildcard_pattern.cpp
+
+namespace Catch {
+
+ WildcardPattern::WildcardPattern( std::string const& pattern,
+ CaseSensitive::Choice caseSensitivity )
+ : m_caseSensitivity( caseSensitivity ),
+ m_pattern( normaliseString( pattern ) )
+ {
+ if( startsWith( m_pattern, '*' ) ) {
+ m_pattern = m_pattern.substr( 1 );
+ m_wildcard = WildcardAtStart;
+ }
+ if( endsWith( m_pattern, '*' ) ) {
+ m_pattern = m_pattern.substr( 0, m_pattern.size()-1 );
+ m_wildcard = static_cast<WildcardPosition>( m_wildcard | WildcardAtEnd );
+ }
+ }
+
+ bool WildcardPattern::matches( std::string const& str ) const {
+ switch( m_wildcard ) {
+ case NoWildcard:
+ return m_pattern == normaliseString( str );
+ case WildcardAtStart:
+ return endsWith( normaliseString( str ), m_pattern );
+ case WildcardAtEnd:
+ return startsWith( normaliseString( str ), m_pattern );
+ case WildcardAtBothEnds:
+ return contains( normaliseString( str ), m_pattern );
+ default:
+ CATCH_INTERNAL_ERROR( "Unknown enum" );
+ }
+ }
+
+ std::string WildcardPattern::normaliseString( std::string const& str ) const {
+ return trim( m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str );
+ }
+}
+// end catch_wildcard_pattern.cpp
+// start catch_xmlwriter.cpp
+
+#include <iomanip>
+#include <type_traits>
+
+namespace Catch {
+
+namespace {
+
+ size_t trailingBytes(unsigned char c) {
+ if ((c & 0xE0) == 0xC0) {
+ return 2;
+ }
+ if ((c & 0xF0) == 0xE0) {
+ return 3;
+ }
+ if ((c & 0xF8) == 0xF0) {
+ return 4;
+ }
+ CATCH_INTERNAL_ERROR("Invalid multibyte utf-8 start byte encountered");
+ }
+
+ uint32_t headerValue(unsigned char c) {
+ if ((c & 0xE0) == 0xC0) {
+ return c & 0x1F;
+ }
+ if ((c & 0xF0) == 0xE0) {
+ return c & 0x0F;
+ }
+ if ((c & 0xF8) == 0xF0) {
+ return c & 0x07;
+ }
+ CATCH_INTERNAL_ERROR("Invalid multibyte utf-8 start byte encountered");
+ }
+
+ void hexEscapeChar(std::ostream& os, unsigned char c) {
+ std::ios_base::fmtflags f(os.flags());
+ os << "\\x"
+ << std::uppercase << std::hex << std::setfill('0') << std::setw(2)
+ << static_cast<int>(c);
+ os.flags(f);
+ }
+
+ bool shouldNewline(XmlFormatting fmt) {
+ return !!(static_cast<std::underlying_type<XmlFormatting>::type>(fmt & XmlFormatting::Newline));
+ }
+
+ bool shouldIndent(XmlFormatting fmt) {
+ return !!(static_cast<std::underlying_type<XmlFormatting>::type>(fmt & XmlFormatting::Indent));
+ }
+
+} // anonymous namespace
+
+ XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs) {
+ return static_cast<XmlFormatting>(
+ static_cast<std::underlying_type<XmlFormatting>::type>(lhs) |
+ static_cast<std::underlying_type<XmlFormatting>::type>(rhs)
+ );
+ }
+
+ XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs) {
+ return static_cast<XmlFormatting>(
+ static_cast<std::underlying_type<XmlFormatting>::type>(lhs) &
+ static_cast<std::underlying_type<XmlFormatting>::type>(rhs)
+ );
+ }
+
+ XmlEncode::XmlEncode( std::string const& str, ForWhat forWhat )
+ : m_str( str ),
+ m_forWhat( forWhat )
+ {}
+
+ void XmlEncode::encodeTo( std::ostream& os ) const {
+ // Apostrophe escaping not necessary if we always use " to write attributes
+ // (see: http://www.w3.org/TR/xml/#syntax)
+
+ for( std::size_t idx = 0; idx < m_str.size(); ++ idx ) {
+ unsigned char c = m_str[idx];
+ switch (c) {
+ case '<': os << "&lt;"; break;
+ case '&': os << "&amp;"; break;
+
+ case '>':
+ // See: http://www.w3.org/TR/xml/#syntax
+ if (idx > 2 && m_str[idx - 1] == ']' && m_str[idx - 2] == ']')
+ os << "&gt;";
+ else
+ os << c;
+ break;
+
+ case '\"':
+ if (m_forWhat == ForAttributes)
+ os << "&quot;";
+ else
+ os << c;
+ break;
+
+ default:
+ // Check for control characters and invalid utf-8
+
+ // Escape control characters in standard ascii
+ // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0
+ if (c < 0x09 || (c > 0x0D && c < 0x20) || c == 0x7F) {
+ hexEscapeChar(os, c);
+ break;
+ }
+
+ // Plain ASCII: Write it to stream
+ if (c < 0x7F) {
+ os << c;
+ break;
+ }
+
+ // UTF-8 territory
+ // Check if the encoding is valid and if it is not, hex escape bytes.
+ // Important: We do not check the exact decoded values for validity, only the encoding format
+ // First check that this bytes is a valid lead byte:
+ // This means that it is not encoded as 1111 1XXX
+ // Or as 10XX XXXX
+ if (c < 0xC0 ||
+ c >= 0xF8) {
+ hexEscapeChar(os, c);
+ break;
+ }
+
+ auto encBytes = trailingBytes(c);
+ // Are there enough bytes left to avoid accessing out-of-bounds memory?
+ if (idx + encBytes - 1 >= m_str.size()) {
+ hexEscapeChar(os, c);
+ break;
+ }
+ // The header is valid, check data
+ // The next encBytes bytes must together be a valid utf-8
+ // This means: bitpattern 10XX XXXX and the extracted value is sane (ish)
+ bool valid = true;
+ uint32_t value = headerValue(c);
+ for (std::size_t n = 1; n < encBytes; ++n) {
+ unsigned char nc = m_str[idx + n];
+ valid &= ((nc & 0xC0) == 0x80);
+ value = (value << 6) | (nc & 0x3F);
+ }
+
+ if (
+ // Wrong bit pattern of following bytes
+ (!valid) ||
+ // Overlong encodings
+ (value < 0x80) ||
+ (0x80 <= value && value < 0x800 && encBytes > 2) ||
+ (0x800 < value && value < 0x10000 && encBytes > 3) ||
+ // Encoded value out of range
+ (value >= 0x110000)
+ ) {
+ hexEscapeChar(os, c);
+ break;
+ }
+
+ // If we got here, this is in fact a valid(ish) utf-8 sequence
+ for (std::size_t n = 0; n < encBytes; ++n) {
+ os << m_str[idx + n];
+ }
+ idx += encBytes - 1;
+ break;
+ }
+ }
+ }
+
+ std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) {
+ xmlEncode.encodeTo( os );
+ return os;
+ }
+
+ XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer, XmlFormatting fmt )
+ : m_writer( writer ),
+ m_fmt(fmt)
+ {}
+
+ XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept
+ : m_writer( other.m_writer ),
+ m_fmt(other.m_fmt)
+ {
+ other.m_writer = nullptr;
+ other.m_fmt = XmlFormatting::None;
+ }
+ XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept {
+ if ( m_writer ) {
+ m_writer->endElement();
+ }
+ m_writer = other.m_writer;
+ other.m_writer = nullptr;
+ m_fmt = other.m_fmt;
+ other.m_fmt = XmlFormatting::None;
+ return *this;
+ }
+
+ XmlWriter::ScopedElement::~ScopedElement() {
+ if (m_writer) {
+ m_writer->endElement(m_fmt);
+ }
+ }
+
+ XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeText( std::string const& text, XmlFormatting fmt ) {
+ m_writer->writeText( text, fmt );
+ return *this;
+ }
+
+ XmlWriter::XmlWriter( std::ostream& os ) : m_os( os )
+ {
+ writeDeclaration();
+ }
+
+ XmlWriter::~XmlWriter() {
+ while (!m_tags.empty()) {
+ endElement();
+ }
+ newlineIfNecessary();
+ }
+
+ XmlWriter& XmlWriter::startElement( std::string const& name, XmlFormatting fmt ) {
+ ensureTagClosed();
+ newlineIfNecessary();
+ if (shouldIndent(fmt)) {
+ m_os << m_indent;
+ m_indent += " ";
+ }
+ m_os << '<' << name;
+ m_tags.push_back( name );
+ m_tagIsOpen = true;
+ applyFormatting(fmt);
+ return *this;
+ }
+
+ XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name, XmlFormatting fmt ) {
+ ScopedElement scoped( this, fmt );
+ startElement( name, fmt );
+ return scoped;
+ }
+
+ XmlWriter& XmlWriter::endElement(XmlFormatting fmt) {
+ m_indent = m_indent.substr(0, m_indent.size() - 2);
+
+ if( m_tagIsOpen ) {
+ m_os << "/>";
+ m_tagIsOpen = false;
+ } else {
+ newlineIfNecessary();
+ if (shouldIndent(fmt)) {
+ m_os << m_indent;
+ }
+ m_os << "</" << m_tags.back() << ">";
+ }
+ m_os << std::flush;
+ applyFormatting(fmt);
+ m_tags.pop_back();
+ return *this;
+ }
+
+ XmlWriter& XmlWriter::writeAttribute( std::string const& name, std::string const& attribute ) {
+ if( !name.empty() && !attribute.empty() )
+ m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"';
+ return *this;
+ }
+
+ XmlWriter& XmlWriter::writeAttribute( std::string const& name, bool attribute ) {
+ m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"';
+ return *this;
+ }
+
+ XmlWriter& XmlWriter::writeText( std::string const& text, XmlFormatting fmt) {
+ if( !text.empty() ){
+ bool tagWasOpen = m_tagIsOpen;
+ ensureTagClosed();
+ if (tagWasOpen && shouldIndent(fmt)) {
+ m_os << m_indent;
+ }
+ m_os << XmlEncode( text );
+ applyFormatting(fmt);
+ }
+ return *this;
+ }
+
+ XmlWriter& XmlWriter::writeComment( std::string const& text, XmlFormatting fmt) {
+ ensureTagClosed();
+ if (shouldIndent(fmt)) {
+ m_os << m_indent;
+ }
+ m_os << "<!--" << text << "-->";
+ applyFormatting(fmt);
+ return *this;
+ }
+
+ void XmlWriter::writeStylesheetRef( std::string const& url ) {
+ m_os << "<?xml-stylesheet type=\"text/xsl\" href=\"" << url << "\"?>\n";
+ }
+
+ XmlWriter& XmlWriter::writeBlankLine() {
+ ensureTagClosed();
+ m_os << '\n';
+ return *this;
+ }
+
+ void XmlWriter::ensureTagClosed() {
+ if( m_tagIsOpen ) {
+ m_os << '>' << std::flush;
+ newlineIfNecessary();
+ m_tagIsOpen = false;
+ }
+ }
+
+ void XmlWriter::applyFormatting(XmlFormatting fmt) {
+ m_needsNewline = shouldNewline(fmt);
+ }
+
+ void XmlWriter::writeDeclaration() {
+ m_os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ }
+
+ void XmlWriter::newlineIfNecessary() {
+ if( m_needsNewline ) {
+ m_os << std::endl;
+ m_needsNewline = false;
+ }
+ }
+}
+// end catch_xmlwriter.cpp
+// start catch_reporter_bases.cpp
+
+#include <cstring>
+#include <cfloat>
+#include <cstdio>
+#include <cassert>
+#include <memory>
+
+namespace Catch {
+ void prepareExpandedExpression(AssertionResult& result) {
+ result.getExpandedExpression();
+ }
+
+ // Because formatting using c++ streams is stateful, drop down to C is required
+ // Alternatively we could use stringstream, but its performance is... not good.
+ std::string getFormattedDuration( double duration ) {
+ // Max exponent + 1 is required to represent the whole part
+ // + 1 for decimal point
+ // + 3 for the 3 decimal places
+ // + 1 for null terminator
+ const std::size_t maxDoubleSize = DBL_MAX_10_EXP + 1 + 1 + 3 + 1;
+ char buffer[maxDoubleSize];
+
+ // Save previous errno, to prevent sprintf from overwriting it
+ ErrnoGuard guard;
+#ifdef _MSC_VER
+ sprintf_s(buffer, "%.3f", duration);
+#else
+ std::sprintf(buffer, "%.3f", duration);
+#endif
+ return std::string(buffer);
+ }
+
+ bool shouldShowDuration( IConfig const& config, double duration ) {
+ if ( config.showDurations() == ShowDurations::Always ) {
+ return true;
+ }
+ if ( config.showDurations() == ShowDurations::Never ) {
+ return false;
+ }
+ const double min = config.minDuration();
+ return min >= 0 && duration >= min;
+ }
+
+ std::string serializeFilters( std::vector<std::string> const& container ) {
+ ReusableStringStream oss;
+ bool first = true;
+ for (auto&& filter : container)
+ {
+ if (!first)
+ oss << ' ';
+ else
+ first = false;
+
+ oss << filter;
+ }
+ return oss.str();
+ }
+
+ TestEventListenerBase::TestEventListenerBase(ReporterConfig const & _config)
+ :StreamingReporterBase(_config) {}
+
+ std::set<Verbosity> TestEventListenerBase::getSupportedVerbosities() {
+ return { Verbosity::Quiet, Verbosity::Normal, Verbosity::High };
+ }
+
+ void TestEventListenerBase::assertionStarting(AssertionInfo const &) {}
+
+ bool TestEventListenerBase::assertionEnded(AssertionStats const &) {
+ return false;
+ }
+
+} // end namespace Catch
+// end catch_reporter_bases.cpp
+// start catch_reporter_compact.cpp
+
+namespace {
+
+#ifdef CATCH_PLATFORM_MAC
+ const char* failedString() { return "FAILED"; }
+ const char* passedString() { return "PASSED"; }
+#else
+ const char* failedString() { return "failed"; }
+ const char* passedString() { return "passed"; }
+#endif
+
+ // Colour::LightGrey
+ Catch::Colour::Code dimColour() { return Catch::Colour::FileName; }
+
+ std::string bothOrAll( std::size_t count ) {
+ return count == 1 ? std::string() :
+ count == 2 ? "both " : "all " ;
+ }
+
+} // anon namespace
+
+namespace Catch {
+namespace {
+// Colour, message variants:
+// - white: No tests ran.
+// - red: Failed [both/all] N test cases, failed [both/all] M assertions.
+// - white: Passed [both/all] N test cases (no assertions).
+// - red: Failed N tests cases, failed M assertions.
+// - green: Passed [both/all] N tests cases with M assertions.
+void printTotals(std::ostream& out, const Totals& totals) {
+ if (totals.testCases.total() == 0) {
+ out << "No tests ran.";
+ } else if (totals.testCases.failed == totals.testCases.total()) {
+ Colour colour(Colour::ResultError);
+ const std::string qualify_assertions_failed =
+ totals.assertions.failed == totals.assertions.total() ?
+ bothOrAll(totals.assertions.failed) : std::string();
+ out <<
+ "Failed " << bothOrAll(totals.testCases.failed)
+ << pluralise(totals.testCases.failed, "test case") << ", "
+ "failed " << qualify_assertions_failed <<
+ pluralise(totals.assertions.failed, "assertion") << '.';
+ } else if (totals.assertions.total() == 0) {
+ out <<
+ "Passed " << bothOrAll(totals.testCases.total())
+ << pluralise(totals.testCases.total(), "test case")
+ << " (no assertions).";
+ } else if (totals.assertions.failed) {
+ Colour colour(Colour::ResultError);
+ out <<
+ "Failed " << pluralise(totals.testCases.failed, "test case") << ", "
+ "failed " << pluralise(totals.assertions.failed, "assertion") << '.';
+ } else {
+ Colour colour(Colour::ResultSuccess);
+ out <<
+ "Passed " << bothOrAll(totals.testCases.passed)
+ << pluralise(totals.testCases.passed, "test case") <<
+ " with " << pluralise(totals.assertions.passed, "assertion") << '.';
+ }
+}
+
+// Implementation of CompactReporter formatting
+class AssertionPrinter {
+public:
+ AssertionPrinter& operator= (AssertionPrinter const&) = delete;
+ AssertionPrinter(AssertionPrinter const&) = delete;
+ AssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages)
+ : stream(_stream)
+ , result(_stats.assertionResult)
+ , messages(_stats.infoMessages)
+ , itMessage(_stats.infoMessages.begin())
+ , printInfoMessages(_printInfoMessages) {}
+
+ void print() {
+ printSourceInfo();
+
+ itMessage = messages.begin();
+
+ switch (result.getResultType()) {
+ case ResultWas::Ok:
+ printResultType(Colour::ResultSuccess, passedString());
+ printOriginalExpression();
+ printReconstructedExpression();
+ if (!result.hasExpression())
+ printRemainingMessages(Colour::None);
+ else
+ printRemainingMessages();
+ break;
+ case ResultWas::ExpressionFailed:
+ if (result.isOk())
+ printResultType(Colour::ResultSuccess, failedString() + std::string(" - but was ok"));
+ else
+ printResultType(Colour::Error, failedString());
+ printOriginalExpression();
+ printReconstructedExpression();
+ printRemainingMessages();
+ break;
+ case ResultWas::ThrewException:
+ printResultType(Colour::Error, failedString());
+ printIssue("unexpected exception with message:");
+ printMessage();
+ printExpressionWas();
+ printRemainingMessages();
+ break;
+ case ResultWas::FatalErrorCondition:
+ printResultType(Colour::Error, failedString());
+ printIssue("fatal error condition with message:");
+ printMessage();
+ printExpressionWas();
+ printRemainingMessages();
+ break;
+ case ResultWas::DidntThrowException:
+ printResultType(Colour::Error, failedString());
+ printIssue("expected exception, got none");
+ printExpressionWas();
+ printRemainingMessages();
+ break;
+ case ResultWas::Info:
+ printResultType(Colour::None, "info");
+ printMessage();
+ printRemainingMessages();
+ break;
+ case ResultWas::Warning:
+ printResultType(Colour::None, "warning");
+ printMessage();
+ printRemainingMessages();
+ break;
+ case ResultWas::ExplicitFailure:
+ printResultType(Colour::Error, failedString());
+ printIssue("explicitly");
+ printRemainingMessages(Colour::None);
+ break;
+ // These cases are here to prevent compiler warnings
+ case ResultWas::Unknown:
+ case ResultWas::FailureBit:
+ case ResultWas::Exception:
+ printResultType(Colour::Error, "** internal error **");
+ break;
+ }
+ }
+
+private:
+ void printSourceInfo() const {
+ Colour colourGuard(Colour::FileName);
+ stream << result.getSourceInfo() << ':';
+ }
+
+ void printResultType(Colour::Code colour, std::string const& passOrFail) const {
+ if (!passOrFail.empty()) {
+ {
+ Colour colourGuard(colour);
+ stream << ' ' << passOrFail;
+ }
+ stream << ':';
+ }
+ }
+
+ void printIssue(std::string const& issue) const {
+ stream << ' ' << issue;
+ }
+
+ void printExpressionWas() {
+ if (result.hasExpression()) {
+ stream << ';';
+ {
+ Colour colour(dimColour());
+ stream << " expression was:";
+ }
+ printOriginalExpression();
+ }
+ }
+
+ void printOriginalExpression() const {
+ if (result.hasExpression()) {
+ stream << ' ' << result.getExpression();
+ }
+ }
+
+ void printReconstructedExpression() const {
+ if (result.hasExpandedExpression()) {
+ {
+ Colour colour(dimColour());
+ stream << " for: ";
+ }
+ stream << result.getExpandedExpression();
+ }
+ }
+
+ void printMessage() {
+ if (itMessage != messages.end()) {
+ stream << " '" << itMessage->message << '\'';
+ ++itMessage;
+ }
+ }
+
+ void printRemainingMessages(Colour::Code colour = dimColour()) {
+ if (itMessage == messages.end())
+ return;
+
+ const auto itEnd = messages.cend();
+ const auto N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
+
+ {
+ Colour colourGuard(colour);
+ stream << " with " << pluralise(N, "message") << ':';
+ }
+
+ while (itMessage != itEnd) {
+ // If this assertion is a warning ignore any INFO messages
+ if (printInfoMessages || itMessage->type != ResultWas::Info) {
+ printMessage();
+ if (itMessage != itEnd) {
+ Colour colourGuard(dimColour());
+ stream << " and";
+ }
+ continue;
+ }
+ ++itMessage;
+ }
+ }
+
+private:
+ std::ostream& stream;
+ AssertionResult const& result;
+ std::vector<MessageInfo> messages;
+ std::vector<MessageInfo>::const_iterator itMessage;
+ bool printInfoMessages;
+};
+
+} // anon namespace
+
+ std::string CompactReporter::getDescription() {
+ return "Reports test results on a single line, suitable for IDEs";
+ }
+
+ void CompactReporter::noMatchingTestCases( std::string const& spec ) {
+ stream << "No test cases matched '" << spec << '\'' << std::endl;
+ }
+
+ void CompactReporter::assertionStarting( AssertionInfo const& ) {}
+
+ bool CompactReporter::assertionEnded( AssertionStats const& _assertionStats ) {
+ AssertionResult const& result = _assertionStats.assertionResult;
+
+ bool printInfoMessages = true;
+
+ // Drop out if result was successful and we're not printing those
+ if( !m_config->includeSuccessfulResults() && result.isOk() ) {
+ if( result.getResultType() != ResultWas::Warning )
+ return false;
+ printInfoMessages = false;
+ }
+
+ AssertionPrinter printer( stream, _assertionStats, printInfoMessages );
+ printer.print();
+
+ stream << std::endl;
+ return true;
+ }
+
+ void CompactReporter::sectionEnded(SectionStats const& _sectionStats) {
+ double dur = _sectionStats.durationInSeconds;
+ if ( shouldShowDuration( *m_config, dur ) ) {
+ stream << getFormattedDuration( dur ) << " s: " << _sectionStats.sectionInfo.name << std::endl;
+ }
+ }
+
+ void CompactReporter::testRunEnded( TestRunStats const& _testRunStats ) {
+ printTotals( stream, _testRunStats.totals );
+ stream << '\n' << std::endl;
+ StreamingReporterBase::testRunEnded( _testRunStats );
+ }
+
+ CompactReporter::~CompactReporter() {}
+
+ CATCH_REGISTER_REPORTER( "compact", CompactReporter )
+
+} // end namespace Catch
+// end catch_reporter_compact.cpp
+// start catch_reporter_console.cpp
+
+#include <cfloat>
+#include <cstdio>
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch
+ // Note that 4062 (not all labels are handled and default is missing) is enabled
+#endif
+
+#if defined(__clang__)
+# pragma clang diagnostic push
+// For simplicity, benchmarking-only helpers are always enabled
+# pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
+namespace Catch {
+
+namespace {
+
+// Formatter impl for ConsoleReporter
+class ConsoleAssertionPrinter {
+public:
+ ConsoleAssertionPrinter& operator= (ConsoleAssertionPrinter const&) = delete;
+ ConsoleAssertionPrinter(ConsoleAssertionPrinter const&) = delete;
+ ConsoleAssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages)
+ : stream(_stream),
+ stats(_stats),
+ result(_stats.assertionResult),
+ colour(Colour::None),
+ message(result.getMessage()),
+ messages(_stats.infoMessages),
+ printInfoMessages(_printInfoMessages) {
+ switch (result.getResultType()) {
+ case ResultWas::Ok:
+ colour = Colour::Success;
+ passOrFail = "PASSED";
+ //if( result.hasMessage() )
+ if (_stats.infoMessages.size() == 1)
+ messageLabel = "with message";
+ if (_stats.infoMessages.size() > 1)
+ messageLabel = "with messages";
+ break;
+ case ResultWas::ExpressionFailed:
+ if (result.isOk()) {
+ colour = Colour::Success;
+ passOrFail = "FAILED - but was ok";
+ } else {
+ colour = Colour::Error;
+ passOrFail = "FAILED";
+ }
+ if (_stats.infoMessages.size() == 1)
+ messageLabel = "with message";
+ if (_stats.infoMessages.size() > 1)
+ messageLabel = "with messages";
+ break;
+ case ResultWas::ThrewException:
+ colour = Colour::Error;
+ passOrFail = "FAILED";
+ messageLabel = "due to unexpected exception with ";
+ if (_stats.infoMessages.size() == 1)
+ messageLabel += "message";
+ if (_stats.infoMessages.size() > 1)
+ messageLabel += "messages";
+ break;
+ case ResultWas::FatalErrorCondition:
+ colour = Colour::Error;
+ passOrFail = "FAILED";
+ messageLabel = "due to a fatal error condition";
+ break;
+ case ResultWas::DidntThrowException:
+ colour = Colour::Error;
+ passOrFail = "FAILED";
+ messageLabel = "because no exception was thrown where one was expected";
+ break;
+ case ResultWas::Info:
+ messageLabel = "info";
+ break;
+ case ResultWas::Warning:
+ messageLabel = "warning";
+ break;
+ case ResultWas::ExplicitFailure:
+ passOrFail = "FAILED";
+ colour = Colour::Error;
+ if (_stats.infoMessages.size() == 1)
+ messageLabel = "explicitly with message";
+ if (_stats.infoMessages.size() > 1)
+ messageLabel = "explicitly with messages";
+ break;
+ // These cases are here to prevent compiler warnings
+ case ResultWas::Unknown:
+ case ResultWas::FailureBit:
+ case ResultWas::Exception:
+ passOrFail = "** internal error **";
+ colour = Colour::Error;
+ break;
+ }
+ }
+
+ void print() const {
+ printSourceInfo();
+ if (stats.totals.assertions.total() > 0) {
+ printResultType();
+ printOriginalExpression();
+ printReconstructedExpression();
+ } else {
+ stream << '\n';
+ }
+ printMessage();
+ }
+
+private:
+ void printResultType() const {
+ if (!passOrFail.empty()) {
+ Colour colourGuard(colour);
+ stream << passOrFail << ":\n";
+ }
+ }
+ void printOriginalExpression() const {
+ if (result.hasExpression()) {
+ Colour colourGuard(Colour::OriginalExpression);
+ stream << " ";
+ stream << result.getExpressionInMacro();
+ stream << '\n';
+ }
+ }
+ void printReconstructedExpression() const {
+ if (result.hasExpandedExpression()) {
+ stream << "with expansion:\n";
+ Colour colourGuard(Colour::ReconstructedExpression);
+ stream << Column(result.getExpandedExpression()).indent(2) << '\n';
+ }
+ }
+ void printMessage() const {
+ if (!messageLabel.empty())
+ stream << messageLabel << ':' << '\n';
+ for (auto const& msg : messages) {
+ // If this assertion is a warning ignore any INFO messages
+ if (printInfoMessages || msg.type != ResultWas::Info)
+ stream << Column(msg.message).indent(2) << '\n';
+ }
+ }
+ void printSourceInfo() const {
+ Colour colourGuard(Colour::FileName);
+ stream << result.getSourceInfo() << ": ";
+ }
+
+ std::ostream& stream;
+ AssertionStats const& stats;
+ AssertionResult const& result;
+ Colour::Code colour;
+ std::string passOrFail;
+ std::string messageLabel;
+ std::string message;
+ std::vector<MessageInfo> messages;
+ bool printInfoMessages;
+};
+
+std::size_t makeRatio(std::size_t number, std::size_t total) {
+ std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number / total : 0;
+ return (ratio == 0 && number > 0) ? 1 : ratio;
+}
+
+std::size_t& findMax(std::size_t& i, std::size_t& j, std::size_t& k) {
+ if (i > j && i > k)
+ return i;
+ else if (j > k)
+ return j;
+ else
+ return k;
+}
+
+struct ColumnInfo {
+ enum Justification { Left, Right };
+ std::string name;
+ int width;
+ Justification justification;
+};
+struct ColumnBreak {};
+struct RowBreak {};
+
+class Duration {
+ enum class Unit {
+ Auto,
+ Nanoseconds,
+ Microseconds,
+ Milliseconds,
+ Seconds,
+ Minutes
+ };
+ static const uint64_t s_nanosecondsInAMicrosecond = 1000;
+ static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
+ static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
+ static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
+
+ double m_inNanoseconds;
+ Unit m_units;
+
+public:
+ explicit Duration(double inNanoseconds, Unit units = Unit::Microseconds)
+ : m_inNanoseconds(inNanoseconds),
+ m_units(units) {
+ if (m_units == Unit::Auto) {
+ if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
+ m_units = Unit::Nanoseconds;
+ else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
+ m_units = Unit::Microseconds;
+ else if (m_inNanoseconds < s_nanosecondsInASecond)
+ m_units = Unit::Milliseconds;
+ else if (m_inNanoseconds < s_nanosecondsInAMinute)
+ m_units = Unit::Seconds;
+ else
+ m_units = Unit::Minutes;
+ }
+
+ }
+
+ auto value() const -> double {
+ switch (m_units) {
+ case Unit::Microseconds:
+ return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
+ case Unit::Milliseconds:
+ return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
+ case Unit::Seconds:
+ return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
+ case Unit::Minutes:
+ return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
+ default:
+ return m_inNanoseconds;
+ }
+ }
+ auto unitsAsString() const -> std::string {
+ switch (m_units) {
+ case Unit::Nanoseconds:
+ return "ns";
+ case Unit::Microseconds:
+ return "us";
+ case Unit::Milliseconds:
+ return "ms";
+ case Unit::Seconds:
+ return "s";
+ case Unit::Minutes:
+ return "m";
+ default:
+ return "** internal error **";
+ }
+
+ }
+ friend auto operator << (std::ostream& os, Duration const& duration) -> std::ostream& {
+ return os << std::fixed << duration.value() << ' ' << duration.unitsAsString();
+ }
+};
+} // end anon namespace
+
+class TablePrinter {
+ std::ostream& m_os;
+ std::vector<ColumnInfo> m_columnInfos;
+ std::ostringstream m_oss;
+ int m_currentColumn = -1;
+ bool m_isOpen = false;
+
+public:
+ TablePrinter( std::ostream& os, std::vector<ColumnInfo> columnInfos )
+ : m_os( os ),
+ m_columnInfos( std::move( columnInfos ) ) {}
+
+ auto columnInfos() const -> std::vector<ColumnInfo> const& {
+ return m_columnInfos;
+ }
+
+ void open() {
+ if (!m_isOpen) {
+ m_isOpen = true;
+ *this << RowBreak();
+
+ Columns headerCols;
+ Spacer spacer(2);
+ for (auto const& info : m_columnInfos) {
+ headerCols += Column(info.name).width(static_cast<std::size_t>(info.width - 2));
+ headerCols += spacer;
+ }
+ m_os << headerCols << '\n';
+
+ m_os << Catch::getLineOfChars<'-'>() << '\n';
+ }
+ }
+ void close() {
+ if (m_isOpen) {
+ *this << RowBreak();
+ m_os << std::endl;
+ m_isOpen = false;
+ }
+ }
+
+ template<typename T>
+ friend TablePrinter& operator << (TablePrinter& tp, T const& value) {
+ tp.m_oss << value;
+ return tp;
+ }
+
+ friend TablePrinter& operator << (TablePrinter& tp, ColumnBreak) {
+ auto colStr = tp.m_oss.str();
+ const auto strSize = colStr.size();
+ tp.m_oss.str("");
+ tp.open();
+ if (tp.m_currentColumn == static_cast<int>(tp.m_columnInfos.size() - 1)) {
+ tp.m_currentColumn = -1;
+ tp.m_os << '\n';
+ }
+ tp.m_currentColumn++;
+
+ auto colInfo = tp.m_columnInfos[tp.m_currentColumn];
+ auto padding = (strSize + 1 < static_cast<std::size_t>(colInfo.width))
+ ? std::string(colInfo.width - (strSize + 1), ' ')
+ : std::string();
+ if (colInfo.justification == ColumnInfo::Left)
+ tp.m_os << colStr << padding << ' ';
+ else
+ tp.m_os << padding << colStr << ' ';
+ return tp;
+ }
+
+ friend TablePrinter& operator << (TablePrinter& tp, RowBreak) {
+ if (tp.m_currentColumn > 0) {
+ tp.m_os << '\n';
+ tp.m_currentColumn = -1;
+ }
+ return tp;
+ }
+};
+
+ConsoleReporter::ConsoleReporter(ReporterConfig const& config)
+ : StreamingReporterBase(config),
+ m_tablePrinter(new TablePrinter(config.stream(),
+ [&config]() -> std::vector<ColumnInfo> {
+ if (config.fullConfig()->benchmarkNoAnalysis())
+ {
+ return{
+ { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, ColumnInfo::Left },
+ { " samples", 14, ColumnInfo::Right },
+ { " iterations", 14, ColumnInfo::Right },
+ { " mean", 14, ColumnInfo::Right }
+ };
+ }
+ else
+ {
+ return{
+ { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, ColumnInfo::Left },
+ { "samples mean std dev", 14, ColumnInfo::Right },
+ { "iterations low mean low std dev", 14, ColumnInfo::Right },
+ { "estimated high mean high std dev", 14, ColumnInfo::Right }
+ };
+ }
+ }())) {}
+ConsoleReporter::~ConsoleReporter() = default;
+
+std::string ConsoleReporter::getDescription() {
+ return "Reports test results as plain lines of text";
+}
+
+void ConsoleReporter::noMatchingTestCases(std::string const& spec) {
+ stream << "No test cases matched '" << spec << '\'' << std::endl;
+}
+
+void ConsoleReporter::reportInvalidArguments(std::string const&arg){
+ stream << "Invalid Filter: " << arg << std::endl;
+}
+
+void ConsoleReporter::assertionStarting(AssertionInfo const&) {}
+
+bool ConsoleReporter::assertionEnded(AssertionStats const& _assertionStats) {
+ AssertionResult const& result = _assertionStats.assertionResult;
+
+ bool includeResults = m_config->includeSuccessfulResults() || !result.isOk();
+
+ // Drop out if result was successful but we're not printing them.
+ if (!includeResults && result.getResultType() != ResultWas::Warning)
+ return false;
+
+ lazyPrint();
+
+ ConsoleAssertionPrinter printer(stream, _assertionStats, includeResults);
+ printer.print();
+ stream << std::endl;
+ return true;
+}
+
+void ConsoleReporter::sectionStarting(SectionInfo const& _sectionInfo) {
+ m_tablePrinter->close();
+ m_headerPrinted = false;
+ StreamingReporterBase::sectionStarting(_sectionInfo);
+}
+void ConsoleReporter::sectionEnded(SectionStats const& _sectionStats) {
+ m_tablePrinter->close();
+ if (_sectionStats.missingAssertions) {
+ lazyPrint();
+ Colour colour(Colour::ResultError);
+ if (m_sectionStack.size() > 1)
+ stream << "\nNo assertions in section";
+ else
+ stream << "\nNo assertions in test case";
+ stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl;
+ }
+ double dur = _sectionStats.durationInSeconds;
+ if (shouldShowDuration(*m_config, dur)) {
+ stream << getFormattedDuration(dur) << " s: " << _sectionStats.sectionInfo.name << std::endl;
+ }
+ if (m_headerPrinted) {
+ m_headerPrinted = false;
+ }
+ StreamingReporterBase::sectionEnded(_sectionStats);
+}
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+void ConsoleReporter::benchmarkPreparing(std::string const& name) {
+ lazyPrintWithoutClosingBenchmarkTable();
+
+ auto nameCol = Column(name).width(static_cast<std::size_t>(m_tablePrinter->columnInfos()[0].width - 2));
+
+ bool firstLine = true;
+ for (auto line : nameCol) {
+ if (!firstLine)
+ (*m_tablePrinter) << ColumnBreak() << ColumnBreak() << ColumnBreak();
+ else
+ firstLine = false;
+
+ (*m_tablePrinter) << line << ColumnBreak();
+ }
+}
+
+void ConsoleReporter::benchmarkStarting(BenchmarkInfo const& info) {
+ (*m_tablePrinter) << info.samples << ColumnBreak()
+ << info.iterations << ColumnBreak();
+ if (!m_config->benchmarkNoAnalysis())
+ (*m_tablePrinter) << Duration(info.estimatedDuration) << ColumnBreak();
+}
+void ConsoleReporter::benchmarkEnded(BenchmarkStats<> const& stats) {
+ if (m_config->benchmarkNoAnalysis())
+ {
+ (*m_tablePrinter) << Duration(stats.mean.point.count()) << ColumnBreak();
+ }
+ else
+ {
+ (*m_tablePrinter) << ColumnBreak()
+ << Duration(stats.mean.point.count()) << ColumnBreak()
+ << Duration(stats.mean.lower_bound.count()) << ColumnBreak()
+ << Duration(stats.mean.upper_bound.count()) << ColumnBreak() << ColumnBreak()
+ << Duration(stats.standardDeviation.point.count()) << ColumnBreak()
+ << Duration(stats.standardDeviation.lower_bound.count()) << ColumnBreak()
+ << Duration(stats.standardDeviation.upper_bound.count()) << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak();
+ }
+}
+
+void ConsoleReporter::benchmarkFailed(std::string const& error) {
+ Colour colour(Colour::Red);
+ (*m_tablePrinter)
+ << "Benchmark failed (" << error << ')'
+ << ColumnBreak() << RowBreak();
+}
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) {
+ m_tablePrinter->close();
+ StreamingReporterBase::testCaseEnded(_testCaseStats);
+ m_headerPrinted = false;
+}
+void ConsoleReporter::testGroupEnded(TestGroupStats const& _testGroupStats) {
+ if (currentGroupInfo.used) {
+ printSummaryDivider();
+ stream << "Summary for group '" << _testGroupStats.groupInfo.name << "':\n";
+ printTotals(_testGroupStats.totals);
+ stream << '\n' << std::endl;
+ }
+ StreamingReporterBase::testGroupEnded(_testGroupStats);
+}
+void ConsoleReporter::testRunEnded(TestRunStats const& _testRunStats) {
+ printTotalsDivider(_testRunStats.totals);
+ printTotals(_testRunStats.totals);
+ stream << std::endl;
+ StreamingReporterBase::testRunEnded(_testRunStats);
+}
+void ConsoleReporter::testRunStarting(TestRunInfo const& _testInfo) {
+ StreamingReporterBase::testRunStarting(_testInfo);
+ printTestFilters();
+}
+
+void ConsoleReporter::lazyPrint() {
+
+ m_tablePrinter->close();
+ lazyPrintWithoutClosingBenchmarkTable();
+}
+
+void ConsoleReporter::lazyPrintWithoutClosingBenchmarkTable() {
+
+ if (!currentTestRunInfo.used)
+ lazyPrintRunInfo();
+ if (!currentGroupInfo.used)
+ lazyPrintGroupInfo();
+
+ if (!m_headerPrinted) {
+ printTestCaseAndSectionHeader();
+ m_headerPrinted = true;
+ }
+}
+void ConsoleReporter::lazyPrintRunInfo() {
+ stream << '\n' << getLineOfChars<'~'>() << '\n';
+ Colour colour(Colour::SecondaryText);
+ stream << currentTestRunInfo->name
+ << " is a Catch v" << libraryVersion() << " host application.\n"
+ << "Run with -? for options\n\n";
+
+ if (m_config->rngSeed() != 0)
+ stream << "Randomness seeded to: " << m_config->rngSeed() << "\n\n";
+
+ currentTestRunInfo.used = true;
+}
+void ConsoleReporter::lazyPrintGroupInfo() {
+ if (!currentGroupInfo->name.empty() && currentGroupInfo->groupsCounts > 1) {
+ printClosedHeader("Group: " + currentGroupInfo->name);
+ currentGroupInfo.used = true;
+ }
+}
+void ConsoleReporter::printTestCaseAndSectionHeader() {
+ assert(!m_sectionStack.empty());
+ printOpenHeader(currentTestCaseInfo->name);
+
+ if (m_sectionStack.size() > 1) {
+ Colour colourGuard(Colour::Headers);
+
+ auto
+ it = m_sectionStack.begin() + 1, // Skip first section (test case)
+ itEnd = m_sectionStack.end();
+ for (; it != itEnd; ++it)
+ printHeaderString(it->name, 2);
+ }
+
+ SourceLineInfo lineInfo = m_sectionStack.back().lineInfo;
+
+ stream << getLineOfChars<'-'>() << '\n';
+ Colour colourGuard(Colour::FileName);
+ stream << lineInfo << '\n';
+ stream << getLineOfChars<'.'>() << '\n' << std::endl;
+}
+
+void ConsoleReporter::printClosedHeader(std::string const& _name) {
+ printOpenHeader(_name);
+ stream << getLineOfChars<'.'>() << '\n';
+}
+void ConsoleReporter::printOpenHeader(std::string const& _name) {
+ stream << getLineOfChars<'-'>() << '\n';
+ {
+ Colour colourGuard(Colour::Headers);
+ printHeaderString(_name);
+ }
+}
+
+// if string has a : in first line will set indent to follow it on
+// subsequent lines
+void ConsoleReporter::printHeaderString(std::string const& _string, std::size_t indent) {
+ std::size_t i = _string.find(": ");
+ if (i != std::string::npos)
+ i += 2;
+ else
+ i = 0;
+ stream << Column(_string).indent(indent + i).initialIndent(indent) << '\n';
+}
+
+struct SummaryColumn {
+
+ SummaryColumn( std::string _label, Colour::Code _colour )
+ : label( std::move( _label ) ),
+ colour( _colour ) {}
+ SummaryColumn addRow( std::size_t count ) {
+ ReusableStringStream rss;
+ rss << count;
+ std::string row = rss.str();
+ for (auto& oldRow : rows) {
+ while (oldRow.size() < row.size())
+ oldRow = ' ' + oldRow;
+ while (oldRow.size() > row.size())
+ row = ' ' + row;
+ }
+ rows.push_back(row);
+ return *this;
+ }
+
+ std::string label;
+ Colour::Code colour;
+ std::vector<std::string> rows;
+
+};
+
+void ConsoleReporter::printTotals( Totals const& totals ) {
+ if (totals.testCases.total() == 0) {
+ stream << Colour(Colour::Warning) << "No tests ran\n";
+ } else if (totals.assertions.total() > 0 && totals.testCases.allPassed()) {
+ stream << Colour(Colour::ResultSuccess) << "All tests passed";
+ stream << " ("
+ << pluralise(totals.assertions.passed, "assertion") << " in "
+ << pluralise(totals.testCases.passed, "test case") << ')'
+ << '\n';
+ } else {
+
+ std::vector<SummaryColumn> columns;
+ columns.push_back(SummaryColumn("", Colour::None)
+ .addRow(totals.testCases.total())
+ .addRow(totals.assertions.total()));
+ columns.push_back(SummaryColumn("passed", Colour::Success)
+ .addRow(totals.testCases.passed)
+ .addRow(totals.assertions.passed));
+ columns.push_back(SummaryColumn("failed", Colour::ResultError)
+ .addRow(totals.testCases.failed)
+ .addRow(totals.assertions.failed));
+ columns.push_back(SummaryColumn("failed as expected", Colour::ResultExpectedFailure)
+ .addRow(totals.testCases.failedButOk)
+ .addRow(totals.assertions.failedButOk));
+
+ printSummaryRow("test cases", columns, 0);
+ printSummaryRow("assertions", columns, 1);
+ }
+}
+void ConsoleReporter::printSummaryRow(std::string const& label, std::vector<SummaryColumn> const& cols, std::size_t row) {
+ for (auto col : cols) {
+ std::string value = col.rows[row];
+ if (col.label.empty()) {
+ stream << label << ": ";
+ if (value != "0")
+ stream << value;
+ else
+ stream << Colour(Colour::Warning) << "- none -";
+ } else if (value != "0") {
+ stream << Colour(Colour::LightGrey) << " | ";
+ stream << Colour(col.colour)
+ << value << ' ' << col.label;
+ }
+ }
+ stream << '\n';
+}
+
+void ConsoleReporter::printTotalsDivider(Totals const& totals) {
+ if (totals.testCases.total() > 0) {
+ std::size_t failedRatio = makeRatio(totals.testCases.failed, totals.testCases.total());
+ std::size_t failedButOkRatio = makeRatio(totals.testCases.failedButOk, totals.testCases.total());
+ std::size_t passedRatio = makeRatio(totals.testCases.passed, totals.testCases.total());
+ while (failedRatio + failedButOkRatio + passedRatio < CATCH_CONFIG_CONSOLE_WIDTH - 1)
+ findMax(failedRatio, failedButOkRatio, passedRatio)++;
+ while (failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH - 1)
+ findMax(failedRatio, failedButOkRatio, passedRatio)--;
+
+ stream << Colour(Colour::Error) << std::string(failedRatio, '=');
+ stream << Colour(Colour::ResultExpectedFailure) << std::string(failedButOkRatio, '=');
+ if (totals.testCases.allPassed())
+ stream << Colour(Colour::ResultSuccess) << std::string(passedRatio, '=');
+ else
+ stream << Colour(Colour::Success) << std::string(passedRatio, '=');
+ } else {
+ stream << Colour(Colour::Warning) << std::string(CATCH_CONFIG_CONSOLE_WIDTH - 1, '=');
+ }
+ stream << '\n';
+}
+void ConsoleReporter::printSummaryDivider() {
+ stream << getLineOfChars<'-'>() << '\n';
+}
+
+void ConsoleReporter::printTestFilters() {
+ if (m_config->testSpec().hasFilters()) {
+ Colour guard(Colour::BrightYellow);
+ stream << "Filters: " << serializeFilters(m_config->getTestsOrTags()) << '\n';
+ }
+}
+
+CATCH_REGISTER_REPORTER("console", ConsoleReporter)
+
+} // end namespace Catch
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#endif
+// end catch_reporter_console.cpp
+// start catch_reporter_junit.cpp
+
+#include <cassert>
+#include <sstream>
+#include <ctime>
+#include <algorithm>
+#include <iomanip>
+
+namespace Catch {
+
+ namespace {
+ std::string getCurrentTimestamp() {
+ // Beware, this is not reentrant because of backward compatibility issues
+ // Also, UTC only, again because of backward compatibility (%z is C++11)
+ time_t rawtime;
+ std::time(&rawtime);
+ auto const timeStampSize = sizeof("2017-01-16T17:06:45Z");
+
+#ifdef _MSC_VER
+ std::tm timeInfo = {};
+ gmtime_s(&timeInfo, &rawtime);
+#else
+ std::tm* timeInfo;
+ timeInfo = std::gmtime(&rawtime);
+#endif
+
+ char timeStamp[timeStampSize];
+ const char * const fmt = "%Y-%m-%dT%H:%M:%SZ";
+
+#ifdef _MSC_VER
+ std::strftime(timeStamp, timeStampSize, fmt, &timeInfo);
+#else
+ std::strftime(timeStamp, timeStampSize, fmt, timeInfo);
+#endif
+ return std::string(timeStamp, timeStampSize-1);
+ }
+
+ std::string fileNameTag(const std::vector<std::string> &tags) {
+ auto it = std::find_if(begin(tags),
+ end(tags),
+ [] (std::string const& tag) {return tag.front() == '#'; });
+ if (it != tags.end())
+ return it->substr(1);
+ return std::string();
+ }
+
+ // Formats the duration in seconds to 3 decimal places.
+ // This is done because some genius defined Maven Surefire schema
+ // in a way that only accepts 3 decimal places, and tools like
+ // Jenkins use that schema for validation JUnit reporter output.
+ std::string formatDuration( double seconds ) {
+ ReusableStringStream rss;
+ rss << std::fixed << std::setprecision( 3 ) << seconds;
+ return rss.str();
+ }
+
+ } // anonymous namespace
+
+ JunitReporter::JunitReporter( ReporterConfig const& _config )
+ : CumulativeReporterBase( _config ),
+ xml( _config.stream() )
+ {
+ m_reporterPrefs.shouldRedirectStdOut = true;
+ m_reporterPrefs.shouldReportAllAssertions = true;
+ }
+
+ JunitReporter::~JunitReporter() {}
+
+ std::string JunitReporter::getDescription() {
+ return "Reports test results in an XML format that looks like Ant's junitreport target";
+ }
+
+ void JunitReporter::noMatchingTestCases( std::string const& /*spec*/ ) {}
+
+ void JunitReporter::testRunStarting( TestRunInfo const& runInfo ) {
+ CumulativeReporterBase::testRunStarting( runInfo );
+ xml.startElement( "testsuites" );
+ }
+
+ void JunitReporter::testGroupStarting( GroupInfo const& groupInfo ) {
+ suiteTimer.start();
+ stdOutForSuite.clear();
+ stdErrForSuite.clear();
+ unexpectedExceptions = 0;
+ CumulativeReporterBase::testGroupStarting( groupInfo );
+ }
+
+ void JunitReporter::testCaseStarting( TestCaseInfo const& testCaseInfo ) {
+ m_okToFail = testCaseInfo.okToFail();
+ }
+
+ bool JunitReporter::assertionEnded( AssertionStats const& assertionStats ) {
+ if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException && !m_okToFail )
+ unexpectedExceptions++;
+ return CumulativeReporterBase::assertionEnded( assertionStats );
+ }
+
+ void JunitReporter::testCaseEnded( TestCaseStats const& testCaseStats ) {
+ stdOutForSuite += testCaseStats.stdOut;
+ stdErrForSuite += testCaseStats.stdErr;
+ CumulativeReporterBase::testCaseEnded( testCaseStats );
+ }
+
+ void JunitReporter::testGroupEnded( TestGroupStats const& testGroupStats ) {
+ double suiteTime = suiteTimer.getElapsedSeconds();
+ CumulativeReporterBase::testGroupEnded( testGroupStats );
+ writeGroup( *m_testGroups.back(), suiteTime );
+ }
+
+ void JunitReporter::testRunEndedCumulative() {
+ xml.endElement();
+ }
+
+ void JunitReporter::writeGroup( TestGroupNode const& groupNode, double suiteTime ) {
+ XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" );
+
+ TestGroupStats const& stats = groupNode.value;
+ xml.writeAttribute( "name", stats.groupInfo.name );
+ xml.writeAttribute( "errors", unexpectedExceptions );
+ xml.writeAttribute( "failures", stats.totals.assertions.failed-unexpectedExceptions );
+ xml.writeAttribute( "tests", stats.totals.assertions.total() );
+ xml.writeAttribute( "hostname", "tbd" ); // !TBD
+ if( m_config->showDurations() == ShowDurations::Never )
+ xml.writeAttribute( "time", "" );
+ else
+ xml.writeAttribute( "time", formatDuration( suiteTime ) );
+ xml.writeAttribute( "timestamp", getCurrentTimestamp() );
+
+ // Write properties if there are any
+ if (m_config->hasTestFilters() || m_config->rngSeed() != 0) {
+ auto properties = xml.scopedElement("properties");
+ if (m_config->hasTestFilters()) {
+ xml.scopedElement("property")
+ .writeAttribute("name", "filters")
+ .writeAttribute("value", serializeFilters(m_config->getTestsOrTags()));
+ }
+ if (m_config->rngSeed() != 0) {
+ xml.scopedElement("property")
+ .writeAttribute("name", "random-seed")
+ .writeAttribute("value", m_config->rngSeed());
+ }
+ }
+
+ // Write test cases
+ for( auto const& child : groupNode.children )
+ writeTestCase( *child );
+
+ xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite ), XmlFormatting::Newline );
+ xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite ), XmlFormatting::Newline );
+ }
+
+ void JunitReporter::writeTestCase( TestCaseNode const& testCaseNode ) {
+ TestCaseStats const& stats = testCaseNode.value;
+
+ // All test cases have exactly one section - which represents the
+ // test case itself. That section may have 0-n nested sections
+ assert( testCaseNode.children.size() == 1 );
+ SectionNode const& rootSection = *testCaseNode.children.front();
+
+ std::string className = stats.testInfo.className;
+
+ if( className.empty() ) {
+ className = fileNameTag(stats.testInfo.tags);
+ if ( className.empty() )
+ className = "global";
+ }
+
+ if ( !m_config->name().empty() )
+ className = m_config->name() + "." + className;
+
+ writeSection( className, "", rootSection, stats.testInfo.okToFail() );
+ }
+
+ void JunitReporter::writeSection( std::string const& className,
+ std::string const& rootName,
+ SectionNode const& sectionNode,
+ bool testOkToFail) {
+ std::string name = trim( sectionNode.stats.sectionInfo.name );
+ if( !rootName.empty() )
+ name = rootName + '/' + name;
+
+ if( !sectionNode.assertions.empty() ||
+ !sectionNode.stdOut.empty() ||
+ !sectionNode.stdErr.empty() ) {
+ XmlWriter::ScopedElement e = xml.scopedElement( "testcase" );
+ if( className.empty() ) {
+ xml.writeAttribute( "classname", name );
+ xml.writeAttribute( "name", "root" );
+ }
+ else {
+ xml.writeAttribute( "classname", className );
+ xml.writeAttribute( "name", name );
+ }
+ xml.writeAttribute( "time", formatDuration( sectionNode.stats.durationInSeconds ) );
+ // This is not ideal, but it should be enough to mimic gtest's
+ // junit output.
+ // Ideally the JUnit reporter would also handle `skipTest`
+ // events and write those out appropriately.
+ xml.writeAttribute( "status", "run" );
+
+ if (sectionNode.stats.assertions.failedButOk) {
+ xml.scopedElement("skipped")
+ .writeAttribute("message", "TEST_CASE tagged with !mayfail");
+ }
+
+ writeAssertions( sectionNode );
+
+ if( !sectionNode.stdOut.empty() )
+ xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), XmlFormatting::Newline );
+ if( !sectionNode.stdErr.empty() )
+ xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), XmlFormatting::Newline );
+ }
+ for( auto const& childNode : sectionNode.childSections )
+ if( className.empty() )
+ writeSection( name, "", *childNode, testOkToFail );
+ else
+ writeSection( className, name, *childNode, testOkToFail );
+ }
+
+ void JunitReporter::writeAssertions( SectionNode const& sectionNode ) {
+ for( auto const& assertion : sectionNode.assertions )
+ writeAssertion( assertion );
+ }
+
+ void JunitReporter::writeAssertion( AssertionStats const& stats ) {
+ AssertionResult const& result = stats.assertionResult;
+ if( !result.isOk() ) {
+ std::string elementName;
+ switch( result.getResultType() ) {
+ case ResultWas::ThrewException:
+ case ResultWas::FatalErrorCondition:
+ elementName = "error";
+ break;
+ case ResultWas::ExplicitFailure:
+ case ResultWas::ExpressionFailed:
+ case ResultWas::DidntThrowException:
+ elementName = "failure";
+ break;
+
+ // We should never see these here:
+ case ResultWas::Info:
+ case ResultWas::Warning:
+ case ResultWas::Ok:
+ case ResultWas::Unknown:
+ case ResultWas::FailureBit:
+ case ResultWas::Exception:
+ elementName = "internalError";
+ break;
+ }
+
+ XmlWriter::ScopedElement e = xml.scopedElement( elementName );
+
+ xml.writeAttribute( "message", result.getExpression() );
+ xml.writeAttribute( "type", result.getTestMacroName() );
+
+ ReusableStringStream rss;
+ if (stats.totals.assertions.total() > 0) {
+ rss << "FAILED" << ":\n";
+ if (result.hasExpression()) {
+ rss << " ";
+ rss << result.getExpressionInMacro();
+ rss << '\n';
+ }
+ if (result.hasExpandedExpression()) {
+ rss << "with expansion:\n";
+ rss << Column(result.getExpandedExpression()).indent(2) << '\n';
+ }
+ } else {
+ rss << '\n';
+ }
+
+ if( !result.getMessage().empty() )
+ rss << result.getMessage() << '\n';
+ for( auto const& msg : stats.infoMessages )
+ if( msg.type == ResultWas::Info )
+ rss << msg.message << '\n';
+
+ rss << "at " << result.getSourceInfo();
+ xml.writeText( rss.str(), XmlFormatting::Newline );
+ }
+ }
+
+ CATCH_REGISTER_REPORTER( "junit", JunitReporter )
+
+} // end namespace Catch
+// end catch_reporter_junit.cpp
+// start catch_reporter_listening.cpp
+
+#include <cassert>
+
+namespace Catch {
+
+ ListeningReporter::ListeningReporter() {
+ // We will assume that listeners will always want all assertions
+ m_preferences.shouldReportAllAssertions = true;
+ }
+
+ void ListeningReporter::addListener( IStreamingReporterPtr&& listener ) {
+ m_listeners.push_back( std::move( listener ) );
+ }
+
+ void ListeningReporter::addReporter(IStreamingReporterPtr&& reporter) {
+ assert(!m_reporter && "Listening reporter can wrap only 1 real reporter");
+ m_reporter = std::move( reporter );
+ m_preferences.shouldRedirectStdOut = m_reporter->getPreferences().shouldRedirectStdOut;
+ }
+
+ ReporterPreferences ListeningReporter::getPreferences() const {
+ return m_preferences;
+ }
+
+ std::set<Verbosity> ListeningReporter::getSupportedVerbosities() {
+ return std::set<Verbosity>{ };
+ }
+
+ void ListeningReporter::noMatchingTestCases( std::string const& spec ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->noMatchingTestCases( spec );
+ }
+ m_reporter->noMatchingTestCases( spec );
+ }
+
+ void ListeningReporter::reportInvalidArguments(std::string const&arg){
+ for ( auto const& listener : m_listeners ) {
+ listener->reportInvalidArguments( arg );
+ }
+ m_reporter->reportInvalidArguments( arg );
+ }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void ListeningReporter::benchmarkPreparing( std::string const& name ) {
+ for (auto const& listener : m_listeners) {
+ listener->benchmarkPreparing(name);
+ }
+ m_reporter->benchmarkPreparing(name);
+ }
+ void ListeningReporter::benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->benchmarkStarting( benchmarkInfo );
+ }
+ m_reporter->benchmarkStarting( benchmarkInfo );
+ }
+ void ListeningReporter::benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->benchmarkEnded( benchmarkStats );
+ }
+ m_reporter->benchmarkEnded( benchmarkStats );
+ }
+
+ void ListeningReporter::benchmarkFailed( std::string const& error ) {
+ for (auto const& listener : m_listeners) {
+ listener->benchmarkFailed(error);
+ }
+ m_reporter->benchmarkFailed(error);
+ }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ void ListeningReporter::testRunStarting( TestRunInfo const& testRunInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testRunStarting( testRunInfo );
+ }
+ m_reporter->testRunStarting( testRunInfo );
+ }
+
+ void ListeningReporter::testGroupStarting( GroupInfo const& groupInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testGroupStarting( groupInfo );
+ }
+ m_reporter->testGroupStarting( groupInfo );
+ }
+
+ void ListeningReporter::testCaseStarting( TestCaseInfo const& testInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testCaseStarting( testInfo );
+ }
+ m_reporter->testCaseStarting( testInfo );
+ }
+
+ void ListeningReporter::sectionStarting( SectionInfo const& sectionInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->sectionStarting( sectionInfo );
+ }
+ m_reporter->sectionStarting( sectionInfo );
+ }
+
+ void ListeningReporter::assertionStarting( AssertionInfo const& assertionInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->assertionStarting( assertionInfo );
+ }
+ m_reporter->assertionStarting( assertionInfo );
+ }
+
+ // The return value indicates if the messages buffer should be cleared:
+ bool ListeningReporter::assertionEnded( AssertionStats const& assertionStats ) {
+ for( auto const& listener : m_listeners ) {
+ static_cast<void>( listener->assertionEnded( assertionStats ) );
+ }
+ return m_reporter->assertionEnded( assertionStats );
+ }
+
+ void ListeningReporter::sectionEnded( SectionStats const& sectionStats ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->sectionEnded( sectionStats );
+ }
+ m_reporter->sectionEnded( sectionStats );
+ }
+
+ void ListeningReporter::testCaseEnded( TestCaseStats const& testCaseStats ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testCaseEnded( testCaseStats );
+ }
+ m_reporter->testCaseEnded( testCaseStats );
+ }
+
+ void ListeningReporter::testGroupEnded( TestGroupStats const& testGroupStats ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testGroupEnded( testGroupStats );
+ }
+ m_reporter->testGroupEnded( testGroupStats );
+ }
+
+ void ListeningReporter::testRunEnded( TestRunStats const& testRunStats ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->testRunEnded( testRunStats );
+ }
+ m_reporter->testRunEnded( testRunStats );
+ }
+
+ void ListeningReporter::skipTest( TestCaseInfo const& testInfo ) {
+ for ( auto const& listener : m_listeners ) {
+ listener->skipTest( testInfo );
+ }
+ m_reporter->skipTest( testInfo );
+ }
+
+ bool ListeningReporter::isMulti() const {
+ return true;
+ }
+
+} // end namespace Catch
+// end catch_reporter_listening.cpp
+// start catch_reporter_xml.cpp
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch
+ // Note that 4062 (not all labels are handled
+ // and default is missing) is enabled
+#endif
+
+namespace Catch {
+ XmlReporter::XmlReporter( ReporterConfig const& _config )
+ : StreamingReporterBase( _config ),
+ m_xml(_config.stream())
+ {
+ m_reporterPrefs.shouldRedirectStdOut = true;
+ m_reporterPrefs.shouldReportAllAssertions = true;
+ }
+
+ XmlReporter::~XmlReporter() = default;
+
+ std::string XmlReporter::getDescription() {
+ return "Reports test results as an XML document";
+ }
+
+ std::string XmlReporter::getStylesheetRef() const {
+ return std::string();
+ }
+
+ void XmlReporter::writeSourceInfo( SourceLineInfo const& sourceInfo ) {
+ m_xml
+ .writeAttribute( "filename", sourceInfo.file )
+ .writeAttribute( "line", sourceInfo.line );
+ }
+
+ void XmlReporter::noMatchingTestCases( std::string const& s ) {
+ StreamingReporterBase::noMatchingTestCases( s );
+ }
+
+ void XmlReporter::testRunStarting( TestRunInfo const& testInfo ) {
+ StreamingReporterBase::testRunStarting( testInfo );
+ std::string stylesheetRef = getStylesheetRef();
+ if( !stylesheetRef.empty() )
+ m_xml.writeStylesheetRef( stylesheetRef );
+ m_xml.startElement( "Catch" );
+ if( !m_config->name().empty() )
+ m_xml.writeAttribute( "name", m_config->name() );
+ if (m_config->testSpec().hasFilters())
+ m_xml.writeAttribute( "filters", serializeFilters( m_config->getTestsOrTags() ) );
+ if( m_config->rngSeed() != 0 )
+ m_xml.scopedElement( "Randomness" )
+ .writeAttribute( "seed", m_config->rngSeed() );
+ }
+
+ void XmlReporter::testGroupStarting( GroupInfo const& groupInfo ) {
+ StreamingReporterBase::testGroupStarting( groupInfo );
+ m_xml.startElement( "Group" )
+ .writeAttribute( "name", groupInfo.name );
+ }
+
+ void XmlReporter::testCaseStarting( TestCaseInfo const& testInfo ) {
+ StreamingReporterBase::testCaseStarting(testInfo);
+ m_xml.startElement( "TestCase" )
+ .writeAttribute( "name", trim( testInfo.name ) )
+ .writeAttribute( "description", testInfo.description )
+ .writeAttribute( "tags", testInfo.tagsAsString() );
+
+ writeSourceInfo( testInfo.lineInfo );
+
+ if ( m_config->showDurations() == ShowDurations::Always )
+ m_testCaseTimer.start();
+ m_xml.ensureTagClosed();
+ }
+
+ void XmlReporter::sectionStarting( SectionInfo const& sectionInfo ) {
+ StreamingReporterBase::sectionStarting( sectionInfo );
+ if( m_sectionDepth++ > 0 ) {
+ m_xml.startElement( "Section" )
+ .writeAttribute( "name", trim( sectionInfo.name ) );
+ writeSourceInfo( sectionInfo.lineInfo );
+ m_xml.ensureTagClosed();
+ }
+ }
+
+ void XmlReporter::assertionStarting( AssertionInfo const& ) { }
+
+ bool XmlReporter::assertionEnded( AssertionStats const& assertionStats ) {
+
+ AssertionResult const& result = assertionStats.assertionResult;
+
+ bool includeResults = m_config->includeSuccessfulResults() || !result.isOk();
+
+ if( includeResults || result.getResultType() == ResultWas::Warning ) {
+ // Print any info messages in <Info> tags.
+ for( auto const& msg : assertionStats.infoMessages ) {
+ if( msg.type == ResultWas::Info && includeResults ) {
+ m_xml.scopedElement( "Info" )
+ .writeText( msg.message );
+ } else if ( msg.type == ResultWas::Warning ) {
+ m_xml.scopedElement( "Warning" )
+ .writeText( msg.message );
+ }
+ }
+ }
+
+ // Drop out if result was successful but we're not printing them.
+ if( !includeResults && result.getResultType() != ResultWas::Warning )
+ return true;
+
+ // Print the expression if there is one.
+ if( result.hasExpression() ) {
+ m_xml.startElement( "Expression" )
+ .writeAttribute( "success", result.succeeded() )
+ .writeAttribute( "type", result.getTestMacroName() );
+
+ writeSourceInfo( result.getSourceInfo() );
+
+ m_xml.scopedElement( "Original" )
+ .writeText( result.getExpression() );
+ m_xml.scopedElement( "Expanded" )
+ .writeText( result.getExpandedExpression() );
+ }
+
+ // And... Print a result applicable to each result type.
+ switch( result.getResultType() ) {
+ case ResultWas::ThrewException:
+ m_xml.startElement( "Exception" );
+ writeSourceInfo( result.getSourceInfo() );
+ m_xml.writeText( result.getMessage() );
+ m_xml.endElement();
+ break;
+ case ResultWas::FatalErrorCondition:
+ m_xml.startElement( "FatalErrorCondition" );
+ writeSourceInfo( result.getSourceInfo() );
+ m_xml.writeText( result.getMessage() );
+ m_xml.endElement();
+ break;
+ case ResultWas::Info:
+ m_xml.scopedElement( "Info" )
+ .writeText( result.getMessage() );
+ break;
+ case ResultWas::Warning:
+ // Warning will already have been written
+ break;
+ case ResultWas::ExplicitFailure:
+ m_xml.startElement( "Failure" );
+ writeSourceInfo( result.getSourceInfo() );
+ m_xml.writeText( result.getMessage() );
+ m_xml.endElement();
+ break;
+ default:
+ break;
+ }
+
+ if( result.hasExpression() )
+ m_xml.endElement();
+
+ return true;
+ }
+
+ void XmlReporter::sectionEnded( SectionStats const& sectionStats ) {
+ StreamingReporterBase::sectionEnded( sectionStats );
+ if( --m_sectionDepth > 0 ) {
+ XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResults" );
+ e.writeAttribute( "successes", sectionStats.assertions.passed );
+ e.writeAttribute( "failures", sectionStats.assertions.failed );
+ e.writeAttribute( "expectedFailures", sectionStats.assertions.failedButOk );
+
+ if ( m_config->showDurations() == ShowDurations::Always )
+ e.writeAttribute( "durationInSeconds", sectionStats.durationInSeconds );
+
+ m_xml.endElement();
+ }
+ }
+
+ void XmlReporter::testCaseEnded( TestCaseStats const& testCaseStats ) {
+ StreamingReporterBase::testCaseEnded( testCaseStats );
+ XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" );
+ e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() );
+
+ if ( m_config->showDurations() == ShowDurations::Always )
+ e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() );
+
+ if( !testCaseStats.stdOut.empty() )
+ m_xml.scopedElement( "StdOut" ).writeText( trim( testCaseStats.stdOut ), XmlFormatting::Newline );
+ if( !testCaseStats.stdErr.empty() )
+ m_xml.scopedElement( "StdErr" ).writeText( trim( testCaseStats.stdErr ), XmlFormatting::Newline );
+
+ m_xml.endElement();
+ }
+
+ void XmlReporter::testGroupEnded( TestGroupStats const& testGroupStats ) {
+ StreamingReporterBase::testGroupEnded( testGroupStats );
+ // TODO: Check testGroupStats.aborting and act accordingly.
+ m_xml.scopedElement( "OverallResults" )
+ .writeAttribute( "successes", testGroupStats.totals.assertions.passed )
+ .writeAttribute( "failures", testGroupStats.totals.assertions.failed )
+ .writeAttribute( "expectedFailures", testGroupStats.totals.assertions.failedButOk );
+ m_xml.scopedElement( "OverallResultsCases")
+ .writeAttribute( "successes", testGroupStats.totals.testCases.passed )
+ .writeAttribute( "failures", testGroupStats.totals.testCases.failed )
+ .writeAttribute( "expectedFailures", testGroupStats.totals.testCases.failedButOk );
+ m_xml.endElement();
+ }
+
+ void XmlReporter::testRunEnded( TestRunStats const& testRunStats ) {
+ StreamingReporterBase::testRunEnded( testRunStats );
+ m_xml.scopedElement( "OverallResults" )
+ .writeAttribute( "successes", testRunStats.totals.assertions.passed )
+ .writeAttribute( "failures", testRunStats.totals.assertions.failed )
+ .writeAttribute( "expectedFailures", testRunStats.totals.assertions.failedButOk );
+ m_xml.scopedElement( "OverallResultsCases")
+ .writeAttribute( "successes", testRunStats.totals.testCases.passed )
+ .writeAttribute( "failures", testRunStats.totals.testCases.failed )
+ .writeAttribute( "expectedFailures", testRunStats.totals.testCases.failedButOk );
+ m_xml.endElement();
+ }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+ void XmlReporter::benchmarkPreparing(std::string const& name) {
+ m_xml.startElement("BenchmarkResults")
+ .writeAttribute("name", name);
+ }
+
+ void XmlReporter::benchmarkStarting(BenchmarkInfo const &info) {
+ m_xml.writeAttribute("samples", info.samples)
+ .writeAttribute("resamples", info.resamples)
+ .writeAttribute("iterations", info.iterations)
+ .writeAttribute("clockResolution", info.clockResolution)
+ .writeAttribute("estimatedDuration", info.estimatedDuration)
+ .writeComment("All values in nano seconds");
+ }
+
+ void XmlReporter::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) {
+ m_xml.startElement("mean")
+ .writeAttribute("value", benchmarkStats.mean.point.count())
+ .writeAttribute("lowerBound", benchmarkStats.mean.lower_bound.count())
+ .writeAttribute("upperBound", benchmarkStats.mean.upper_bound.count())
+ .writeAttribute("ci", benchmarkStats.mean.confidence_interval);
+ m_xml.endElement();
+ m_xml.startElement("standardDeviation")
+ .writeAttribute("value", benchmarkStats.standardDeviation.point.count())
+ .writeAttribute("lowerBound", benchmarkStats.standardDeviation.lower_bound.count())
+ .writeAttribute("upperBound", benchmarkStats.standardDeviation.upper_bound.count())
+ .writeAttribute("ci", benchmarkStats.standardDeviation.confidence_interval);
+ m_xml.endElement();
+ m_xml.startElement("outliers")
+ .writeAttribute("variance", benchmarkStats.outlierVariance)
+ .writeAttribute("lowMild", benchmarkStats.outliers.low_mild)
+ .writeAttribute("lowSevere", benchmarkStats.outliers.low_severe)
+ .writeAttribute("highMild", benchmarkStats.outliers.high_mild)
+ .writeAttribute("highSevere", benchmarkStats.outliers.high_severe);
+ m_xml.endElement();
+ m_xml.endElement();
+ }
+
+ void XmlReporter::benchmarkFailed(std::string const &error) {
+ m_xml.scopedElement("failed").
+ writeAttribute("message", error);
+ m_xml.endElement();
+ }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+ CATCH_REGISTER_REPORTER( "xml", XmlReporter )
+
+} // end namespace Catch
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+// end catch_reporter_xml.cpp
+
+namespace Catch {
+ LeakDetector leakDetector;
+}
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+// end catch_impl.hpp
+#endif
+
+#ifdef CATCH_CONFIG_MAIN
+// start catch_default_main.hpp
+
+#ifndef __OBJC__
+
+#if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN)
+// Standard C/C++ Win32 Unicode wmain entry point
+extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) {
+#else
+// Standard C/C++ main entry point
+int main (int argc, char * argv[]) {
+#endif
+
+ return Catch::Session().run( argc, argv );
+}
+
+#else // __OBJC__
+
+// Objective-C entry point
+int main (int argc, char * const argv[]) {
+#if !CATCH_ARC_ENABLED
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+#endif
+
+ Catch::registerTestMethods();
+ int result = Catch::Session().run( argc, (char**)argv );
+
+#if !CATCH_ARC_ENABLED
+ [pool drain];
+#endif
+
+ return result;
+}
+
+#endif // __OBJC__
+
+// end catch_default_main.hpp
+#endif
+
+#if !defined(CATCH_CONFIG_IMPL_ONLY)
+
+#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED
+# undef CLARA_CONFIG_MAIN
+#endif
+
+#if !defined(CATCH_CONFIG_DISABLE)
+//////
+// If this config identifier is defined then all CATCH macros are prefixed with CATCH_
+#ifdef CATCH_CONFIG_PREFIX_ALL
+
+#define CATCH_REQUIRE( ... ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define CATCH_REQUIRE_FALSE( ... ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
+
+#define CATCH_REQUIRE_THROWS( ... ) INTERNAL_CATCH_THROWS( "CATCH_REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr )
+#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS_STR_MATCHES( "CATCH_REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr )
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_REQUIRE_THROWS_MATCHES( expr, exceptionType, matcher ) INTERNAL_CATCH_THROWS_MATCHES( "CATCH_REQUIRE_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::Normal, matcher, expr )
+#endif// CATCH_CONFIG_DISABLE_MATCHERS
+#define CATCH_REQUIRE_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+
+#define CATCH_CHECK( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CATCH_CHECK_FALSE( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
+#define CATCH_CHECKED_IF( ... ) INTERNAL_CATCH_IF( "CATCH_CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CATCH_CHECKED_ELSE( ... ) INTERNAL_CATCH_ELSE( "CATCH_CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CATCH_CHECK_NOFAIL( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ )
+
+#define CATCH_CHECK_THROWS( ... ) INTERNAL_CATCH_THROWS( "CATCH_CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr )
+#define CATCH_CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS_STR_MATCHES( "CATCH_CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_CHECK_THROWS_MATCHES( expr, exceptionType, matcher ) INTERNAL_CATCH_THROWS_MATCHES( "CATCH_CHECK_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define CATCH_CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CATCH_CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg )
+
+#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CATCH_REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg )
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+
+#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg )
+#define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg )
+#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
+#define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE",__VA_ARGS__ )
+
+#define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ )
+#define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ )
+#define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ )
+#define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ )
+#define CATCH_DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ )
+#define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define CATCH_FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( "CATCH_SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+
+#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
+#else
+#define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ ) )
+#endif
+
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define CATCH_STATIC_REQUIRE( ... ) static_assert( __VA_ARGS__ , #__VA_ARGS__ ); CATCH_SUCCEED( #__VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ )
+#else
+#define CATCH_STATIC_REQUIRE( ... ) CATCH_REQUIRE( __VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) CATCH_REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
+// "BDD-style" convenience wrappers
+#define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ )
+#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
+#define CATCH_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
+#define CATCH_AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )
+#define CATCH_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
+#define CATCH_AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )
+#define CATCH_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
+#define CATCH_AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+#define CATCH_BENCHMARK(...) \
+ INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
+#define CATCH_BENCHMARK_ADVANCED(name) \
+ INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), name)
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
+#else
+
+#define REQUIRE( ... ) INTERNAL_CATCH_TEST( "REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define REQUIRE_FALSE( ... ) INTERNAL_CATCH_TEST( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
+
+#define REQUIRE_THROWS( ... ) INTERNAL_CATCH_THROWS( "REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr )
+#define REQUIRE_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS_STR_MATCHES( "REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr )
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define REQUIRE_THROWS_MATCHES( expr, exceptionType, matcher ) INTERNAL_CATCH_THROWS_MATCHES( "REQUIRE_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::Normal, matcher, expr )
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define REQUIRE_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ )
+
+#define CHECK( ... ) INTERNAL_CATCH_TEST( "CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CHECK_FALSE( ... ) INTERNAL_CATCH_TEST( "CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
+#define CHECKED_IF( ... ) INTERNAL_CATCH_IF( "CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CHECKED_ELSE( ... ) INTERNAL_CATCH_ELSE( "CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CHECK_NOFAIL( ... ) INTERNAL_CATCH_TEST( "CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ )
+
+#define CHECK_THROWS( ... ) INTERNAL_CATCH_THROWS( "CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr )
+#define CHECK_THROWS_WITH( expr, matcher ) INTERNAL_CATCH_THROWS_STR_MATCHES( "CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CHECK_THROWS_MATCHES( expr, exceptionType, matcher ) INTERNAL_CATCH_THROWS_MATCHES( "CHECK_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg )
+
+#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( "REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg )
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+
+#define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg )
+#define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg )
+#define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
+#define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE",__VA_ARGS__ )
+
+#define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ )
+#define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ )
+#define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ )
+#define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ )
+#define DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ )
+#define FAIL( ... ) INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ )
+#define FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
+#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ )
+#define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
+#define TEMPLATE_LIST_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(__VA_ARGS__)
+#define TEMPLATE_LIST_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#else
+#define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) )
+#define TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ ) )
+#define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
+#define TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ ) )
+#define TEMPLATE_PRODUCT_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ ) )
+#define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ ) )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ ) )
+#define TEMPLATE_LIST_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE( __VA_ARGS__ ) )
+#define TEMPLATE_LIST_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
+#endif
+
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define STATIC_REQUIRE( ... ) static_assert( __VA_ARGS__, #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" )
+#else
+#define STATIC_REQUIRE( ... ) REQUIRE( __VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
+#endif
+
+#define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature )
+
+// "BDD-style" convenience wrappers
+#define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ )
+#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
+
+#define GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
+#define AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )
+#define WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
+#define AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )
+#define THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
+#define AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+#define BENCHMARK(...) \
+ INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
+#define BENCHMARK_ADVANCED(name) \
+ INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(C_A_T_C_H_B_E_N_C_H_), name)
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+using Catch::Detail::Approx;
+
+#else // CATCH_CONFIG_DISABLE
+
+//////
+// If this config identifier is defined then all CATCH macros are prefixed with CATCH_
+#ifdef CATCH_CONFIG_PREFIX_ALL
+
+#define CATCH_REQUIRE( ... ) (void)(0)
+#define CATCH_REQUIRE_FALSE( ... ) (void)(0)
+
+#define CATCH_REQUIRE_THROWS( ... ) (void)(0)
+#define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) (void)(0)
+#define CATCH_REQUIRE_THROWS_WITH( expr, matcher ) (void)(0)
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_REQUIRE_THROWS_MATCHES( expr, exceptionType, matcher ) (void)(0)
+#endif// CATCH_CONFIG_DISABLE_MATCHERS
+#define CATCH_REQUIRE_NOTHROW( ... ) (void)(0)
+
+#define CATCH_CHECK( ... ) (void)(0)
+#define CATCH_CHECK_FALSE( ... ) (void)(0)
+#define CATCH_CHECKED_IF( ... ) if (__VA_ARGS__)
+#define CATCH_CHECKED_ELSE( ... ) if (!(__VA_ARGS__))
+#define CATCH_CHECK_NOFAIL( ... ) (void)(0)
+
+#define CATCH_CHECK_THROWS( ... ) (void)(0)
+#define CATCH_CHECK_THROWS_AS( expr, exceptionType ) (void)(0)
+#define CATCH_CHECK_THROWS_WITH( expr, matcher ) (void)(0)
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_CHECK_THROWS_MATCHES( expr, exceptionType, matcher ) (void)(0)
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define CATCH_CHECK_NOTHROW( ... ) (void)(0)
+
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CATCH_CHECK_THAT( arg, matcher ) (void)(0)
+
+#define CATCH_REQUIRE_THAT( arg, matcher ) (void)(0)
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+
+#define CATCH_INFO( msg ) (void)(0)
+#define CATCH_UNSCOPED_INFO( msg ) (void)(0)
+#define CATCH_WARN( msg ) (void)(0)
+#define CATCH_CAPTURE( msg ) (void)(0)
+
+#define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+#define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+#define CATCH_METHOD_AS_TEST_CASE( method, ... )
+#define CATCH_REGISTER_TEST_CASE( Function, ... ) (void)(0)
+#define CATCH_SECTION( ... )
+#define CATCH_DYNAMIC_SECTION( ... )
+#define CATCH_FAIL( ... ) (void)(0)
+#define CATCH_FAIL_CHECK( ... ) (void)(0)
+#define CATCH_SUCCEED( ... ) (void)(0)
+
+#define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__)
+#define CATCH_TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(__VA_ARGS__)
+#define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(className, __VA_ARGS__)
+#define CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION(className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE( ... ) CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#else
+#define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__) )
+#define CATCH_TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(__VA_ARGS__) )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(className, __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION(className, __VA_ARGS__ ) )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE( ... ) CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#endif
+
+// "BDD-style" convenience wrappers
+#define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), className )
+#define CATCH_GIVEN( desc )
+#define CATCH_AND_GIVEN( desc )
+#define CATCH_WHEN( desc )
+#define CATCH_AND_WHEN( desc )
+#define CATCH_THEN( desc )
+#define CATCH_AND_THEN( desc )
+
+#define CATCH_STATIC_REQUIRE( ... ) (void)(0)
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
+// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
+#else
+
+#define REQUIRE( ... ) (void)(0)
+#define REQUIRE_FALSE( ... ) (void)(0)
+
+#define REQUIRE_THROWS( ... ) (void)(0)
+#define REQUIRE_THROWS_AS( expr, exceptionType ) (void)(0)
+#define REQUIRE_THROWS_WITH( expr, matcher ) (void)(0)
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define REQUIRE_THROWS_MATCHES( expr, exceptionType, matcher ) (void)(0)
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define REQUIRE_NOTHROW( ... ) (void)(0)
+
+#define CHECK( ... ) (void)(0)
+#define CHECK_FALSE( ... ) (void)(0)
+#define CHECKED_IF( ... ) if (__VA_ARGS__)
+#define CHECKED_ELSE( ... ) if (!(__VA_ARGS__))
+#define CHECK_NOFAIL( ... ) (void)(0)
+
+#define CHECK_THROWS( ... ) (void)(0)
+#define CHECK_THROWS_AS( expr, exceptionType ) (void)(0)
+#define CHECK_THROWS_WITH( expr, matcher ) (void)(0)
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CHECK_THROWS_MATCHES( expr, exceptionType, matcher ) (void)(0)
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+#define CHECK_NOTHROW( ... ) (void)(0)
+
+#if !defined(CATCH_CONFIG_DISABLE_MATCHERS)
+#define CHECK_THAT( arg, matcher ) (void)(0)
+
+#define REQUIRE_THAT( arg, matcher ) (void)(0)
+#endif // CATCH_CONFIG_DISABLE_MATCHERS
+
+#define INFO( msg ) (void)(0)
+#define UNSCOPED_INFO( msg ) (void)(0)
+#define WARN( msg ) (void)(0)
+#define CAPTURE( ... ) (void)(0)
+
+#define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+#define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+#define METHOD_AS_TEST_CASE( method, ... )
+#define REGISTER_TEST_CASE( Function, ... ) (void)(0)
+#define SECTION( ... )
+#define DYNAMIC_SECTION( ... )
+#define FAIL( ... ) (void)(0)
+#define FAIL_CHECK( ... ) (void)(0)
+#define SUCCEED( ... ) (void)(0)
+#define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ))
+
+#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__)
+#define TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(__VA_ARGS__)
+#define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(className, __VA_ARGS__)
+#define TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION(className, __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE( ... ) TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#else
+#define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(__VA_ARGS__) )
+#define TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(__VA_ARGS__) )
+#define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(className, __VA_ARGS__ ) )
+#define TEMPLATE_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG_NO_REGISTRATION(className, __VA_ARGS__ ) )
+#define TEMPLATE_PRODUCT_TEST_CASE( ... ) TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) TEMPLATE_TEST_CASE( __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
+#endif
+
+#define STATIC_REQUIRE( ... ) (void)(0)
+#define STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
+#endif
+
+#define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
+
+// "BDD-style" convenience wrappers
+#define SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ) )
+#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), className )
+
+#define GIVEN( desc )
+#define AND_GIVEN( desc )
+#define WHEN( desc )
+#define AND_WHEN( desc )
+#define THEN( desc )
+#define AND_THEN( desc )
+
+using Catch::Detail::Approx;
+
+#endif
+
+#endif // ! CATCH_CONFIG_IMPL_ONLY
+
+// start catch_reenable_warnings.h
+
+
+#ifdef __clang__
+# ifdef __ICC // icpc defines the __clang__ macro
+# pragma warning(pop)
+# else
+# pragma clang diagnostic pop
+# endif
+#elif defined __GNUC__
+# pragma GCC diagnostic pop
+#endif
+
+// end catch_reenable_warnings.h
+// end catch.hpp
+#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
+
diff --git a/lib/gmp/CMakeLists.txt b/lib/gmp/CMakeLists.txt
new file mode 100644
index 000000000..f0604a43d
--- /dev/null
+++ b/lib/gmp/CMakeLists.txt
@@ -0,0 +1,3 @@
+add_library(gmp STATIC mini-gmp.c)
+target_link_libraries(gmp)
+
diff --git a/src/gmp/mini-gmp.c b/lib/gmp/mini-gmp.c
index f3b43fbe8..e2e686123 100644
--- a/src/gmp/mini-gmp.c
+++ b/lib/gmp/mini-gmp.c
@@ -2,9 +2,7 @@
Contributed to the GNU project by Niels Möller
-Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
-Free Software Foundation, Inc.
+Copyright 1991-1997, 1999-2019 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -41,11 +39,15 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#include "mini-gmp.h"
-
+#if !defined(MINI_GMP_DONT_USE_FLOAT_H)
+#include <float.h>
+#endif
+
+
/* Macros */
#define GMP_LIMB_BITS (sizeof(mp_limb_t) * CHAR_BIT)
-#define GMP_LIMB_MAX (~ (mp_limb_t) 0)
+#define GMP_LIMB_MAX ((mp_limb_t) ~ (mp_limb_t) 0)
#define GMP_LIMB_HIGHBIT ((mp_limb_t) 1 << (GMP_LIMB_BITS - 1))
#define GMP_HLIMB_BIT ((mp_limb_t) 1 << (GMP_LIMB_BITS / 2))
@@ -60,18 +62,34 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define GMP_MIN(a, b) ((a) < (b) ? (a) : (b))
#define GMP_MAX(a, b) ((a) > (b) ? (a) : (b))
+#define GMP_CMP(a,b) (((a) > (b)) - ((a) < (b)))
+
+#if defined(DBL_MANT_DIG) && FLT_RADIX == 2
+#define GMP_DBL_MANT_BITS DBL_MANT_DIG
+#else
+#define GMP_DBL_MANT_BITS (53)
+#endif
+
+/* Return non-zero if xp,xsize and yp,ysize overlap.
+ If xp+xsize<=yp there's no overlap, or if yp+ysize<=xp there's no
+ overlap. If both these are false, there's an overlap. */
+#define GMP_MPN_OVERLAP_P(xp, xsize, yp, ysize) \
+ ((xp) + (xsize) > (yp) && (yp) + (ysize) > (xp))
+
#define gmp_assert_nocarry(x) do { \
- mp_limb_t __cy = x; \
+ mp_limb_t __cy = (x); \
assert (__cy == 0); \
} while (0)
#define gmp_clz(count, x) do { \
mp_limb_t __clz_x = (x); \
- unsigned __clz_c; \
- for (__clz_c = 0; \
- (__clz_x & ((mp_limb_t) 0xff << (GMP_LIMB_BITS - 8))) == 0; \
- __clz_c += 8) \
- __clz_x <<= 8; \
+ unsigned __clz_c = 0; \
+ int LOCAL_SHIFT_BITS = 8; \
+ if (GMP_LIMB_BITS > LOCAL_SHIFT_BITS) \
+ for (; \
+ (__clz_x & ((mp_limb_t) 0xff << (GMP_LIMB_BITS - 8))) == 0; \
+ __clz_c += 8) \
+ { __clz_x <<= LOCAL_SHIFT_BITS; } \
for (; (__clz_x & GMP_LIMB_HIGHBIT) == 0; __clz_c++) \
__clz_x <<= 1; \
(count) = __clz_c; \
@@ -102,27 +120,42 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define gmp_umul_ppmm(w1, w0, u, v) \
do { \
- mp_limb_t __x0, __x1, __x2, __x3; \
- unsigned __ul, __vl, __uh, __vh; \
- mp_limb_t __u = (u), __v = (v); \
+ int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS; \
+ if (sizeof(unsigned int) * CHAR_BIT >= 2 * GMP_LIMB_BITS) \
+ { \
+ unsigned int __ww = (unsigned int) (u) * (v); \
+ w0 = (mp_limb_t) __ww; \
+ w1 = (mp_limb_t) (__ww >> LOCAL_GMP_LIMB_BITS); \
+ } \
+ else if (GMP_ULONG_BITS >= 2 * GMP_LIMB_BITS) \
+ { \
+ unsigned long int __ww = (unsigned long int) (u) * (v); \
+ w0 = (mp_limb_t) __ww; \
+ w1 = (mp_limb_t) (__ww >> LOCAL_GMP_LIMB_BITS); \
+ } \
+ else { \
+ mp_limb_t __x0, __x1, __x2, __x3; \
+ unsigned __ul, __vl, __uh, __vh; \
+ mp_limb_t __u = (u), __v = (v); \
\
- __ul = __u & GMP_LLIMB_MASK; \
- __uh = __u >> (GMP_LIMB_BITS / 2); \
- __vl = __v & GMP_LLIMB_MASK; \
- __vh = __v >> (GMP_LIMB_BITS / 2); \
+ __ul = __u & GMP_LLIMB_MASK; \
+ __uh = __u >> (GMP_LIMB_BITS / 2); \
+ __vl = __v & GMP_LLIMB_MASK; \
+ __vh = __v >> (GMP_LIMB_BITS / 2); \
\
- __x0 = (mp_limb_t) __ul * __vl; \
- __x1 = (mp_limb_t) __ul * __vh; \
- __x2 = (mp_limb_t) __uh * __vl; \
- __x3 = (mp_limb_t) __uh * __vh; \
+ __x0 = (mp_limb_t) __ul * __vl; \
+ __x1 = (mp_limb_t) __ul * __vh; \
+ __x2 = (mp_limb_t) __uh * __vl; \
+ __x3 = (mp_limb_t) __uh * __vh; \
\
- __x1 += __x0 >> (GMP_LIMB_BITS / 2);/* this can't give carry */ \
- __x1 += __x2; /* but this indeed can */ \
- if (__x1 < __x2) /* did we get it? */ \
- __x3 += GMP_HLIMB_BIT; /* yes, add it in the proper pos. */ \
+ __x1 += __x0 >> (GMP_LIMB_BITS / 2);/* this can't give carry */ \
+ __x1 += __x2; /* but this indeed can */ \
+ if (__x1 < __x2) /* did we get it? */ \
+ __x3 += GMP_HLIMB_BIT; /* yes, add it in the proper pos. */ \
\
- (w1) = __x3 + (__x1 >> (GMP_LIMB_BITS / 2)); \
- (w0) = (__x1 << (GMP_LIMB_BITS / 2)) + (__x0 & GMP_LLIMB_MASK); \
+ (w1) = __x3 + (__x1 >> (GMP_LIMB_BITS / 2)); \
+ (w0) = (__x1 << (GMP_LIMB_BITS / 2)) + (__x0 & GMP_LLIMB_MASK); \
+ } \
} while (0)
#define gmp_udiv_qrnnd_preinv(q, r, nh, nl, d, di) \
@@ -222,11 +255,13 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
} while (0)
#define MPZ_SRCPTR_SWAP(x, y) \
do { \
- mpz_srcptr __mpz_srcptr_swap__tmp = (x); \
+ mpz_srcptr __mpz_srcptr_swap__tmp = (x); \
(x) = (y); \
(y) = __mpz_srcptr_swap__tmp; \
} while (0)
+const int mp_bits_per_limb = GMP_LIMB_BITS;
+
/* Memory allocation and other helper functions. */
static void
@@ -251,20 +286,20 @@ gmp_default_alloc (size_t size)
}
static void *
-gmp_default_realloc (void *old, size_t old_size, size_t new_size)
+gmp_default_realloc (void *old, size_t unused_old_size, size_t new_size)
{
- mp_ptr p;
+ void * p;
p = realloc (old, new_size);
if (!p)
- gmp_die("gmp_default_realoc: Virtual memory exhausted.");
+ gmp_die("gmp_default_realloc: Virtual memory exhausted.");
return p;
}
static void
-gmp_default_free (void *p, size_t size)
+gmp_default_free (void *p, size_t unused_size)
{
free (p);
}
@@ -311,14 +346,14 @@ mp_set_memory_functions (void *(*alloc_func) (size_t),
static mp_ptr
gmp_xalloc_limbs (mp_size_t size)
{
- return gmp_xalloc (size * sizeof (mp_limb_t));
+ return (mp_ptr) gmp_xalloc (size * sizeof (mp_limb_t));
}
static mp_ptr
gmp_xrealloc_limbs (mp_ptr old, mp_size_t size)
{
assert (size > 0);
- return (*gmp_reallocate_func) (old, 0, size * sizeof (mp_limb_t));
+ return (mp_ptr) (*gmp_reallocate_func) (old, 0, size * sizeof (mp_limb_t));
}
@@ -335,19 +370,17 @@ mpn_copyi (mp_ptr d, mp_srcptr s, mp_size_t n)
void
mpn_copyd (mp_ptr d, mp_srcptr s, mp_size_t n)
{
- while (n-- > 0)
+ while (--n >= 0)
d[n] = s[n];
}
int
mpn_cmp (mp_srcptr ap, mp_srcptr bp, mp_size_t n)
{
- for (; n > 0; n--)
+ while (--n >= 0)
{
- if (ap[n-1] < bp[n-1])
- return -1;
- else if (ap[n-1] > bp[n-1])
- return 1;
+ if (ap[n] != bp[n])
+ return ap[n] > bp[n] ? 1 : -1;
}
return 0;
}
@@ -355,10 +388,8 @@ mpn_cmp (mp_srcptr ap, mp_srcptr bp, mp_size_t n)
static int
mpn_cmp4 (mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn)
{
- if (an > bn)
- return 1;
- else if (an < bn)
- return -1;
+ if (an != bn)
+ return an < bn ? -1 : 1;
else
return mpn_cmp (ap, bp, an);
}
@@ -366,12 +397,23 @@ mpn_cmp4 (mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn)
static mp_size_t
mpn_normalized_size (mp_srcptr xp, mp_size_t n)
{
- for (; n > 0 && xp[n-1] == 0; n--)
- ;
+ while (n > 0 && xp[n-1] == 0)
+ --n;
return n;
}
-#define mpn_zero_p(xp, n) (mpn_normalized_size ((xp), (n)) == 0)
+int
+mpn_zero_p(mp_srcptr rp, mp_size_t n)
+{
+ return mpn_normalized_size (rp, n) == 0;
+}
+
+void
+mpn_zero (mp_ptr rp, mp_size_t n)
+{
+ while (--n >= 0)
+ rp[n] = 0;
+}
mp_limb_t
mpn_add_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b)
@@ -379,14 +421,16 @@ mpn_add_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b)
mp_size_t i;
assert (n > 0);
-
- for (i = 0; i < n; i++)
+ i = 0;
+ do
{
mp_limb_t r = ap[i] + b;
/* Carry out */
b = (r < b);
rp[i] = r;
}
+ while (++i < n);
+
return b;
}
@@ -429,14 +473,17 @@ mpn_sub_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b)
assert (n > 0);
- for (i = 0; i < n; i++)
+ i = 0;
+ do
{
mp_limb_t a = ap[i];
/* Carry out */
- mp_limb_t cy = a < b;;
+ mp_limb_t cy = a < b;
rp[i] = a - b;
b = cy;
}
+ while (++i < n);
+
return b;
}
@@ -551,23 +598,24 @@ mpn_mul (mp_ptr rp, mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn)
{
assert (un >= vn);
assert (vn >= 1);
+ assert (!GMP_MPN_OVERLAP_P(rp, un + vn, up, un));
+ assert (!GMP_MPN_OVERLAP_P(rp, un + vn, vp, vn));
/* We first multiply by the low order limb. This result can be
stored, not added, to rp. We also avoid a loop for zeroing this
way. */
rp[un] = mpn_mul_1 (rp, up, un, vp[0]);
- rp += 1, vp += 1, vn -= 1;
/* Now accumulate the product of up[] and the next higher limb from
vp[]. */
- while (vn >= 1)
+ while (--vn >= 1)
{
+ rp += 1, vp += 1;
rp[un] = mpn_addmul_1 (rp, up, un, vp[0]);
- rp += 1, vp += 1, vn -= 1;
}
- return rp[un - 1];
+ return rp[un];
}
void
@@ -587,7 +635,6 @@ mpn_lshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
{
mp_limb_t high_limb, low_limb;
unsigned int tnc;
- mp_size_t i;
mp_limb_t retval;
assert (n >= 1);
@@ -602,7 +649,7 @@ mpn_lshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
retval = low_limb >> tnc;
high_limb = (low_limb << cnt);
- for (i = n - 1; i != 0; i--)
+ while (--n != 0)
{
low_limb = *--up;
*--rp = high_limb | (low_limb >> tnc);
@@ -618,7 +665,6 @@ mpn_rshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
{
mp_limb_t high_limb, low_limb;
unsigned int tnc;
- mp_size_t i;
mp_limb_t retval;
assert (n >= 1);
@@ -630,7 +676,7 @@ mpn_rshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
retval = (high_limb << tnc);
low_limb = high_limb >> cnt;
- for (i = n - 1; i != 0; i--)
+ while (--n != 0)
{
high_limb = *up++;
*rp++ = low_limb | (high_limb << tnc);
@@ -641,60 +687,156 @@ mpn_rshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt)
return retval;
}
+static mp_bitcnt_t
+mpn_common_scan (mp_limb_t limb, mp_size_t i, mp_srcptr up, mp_size_t un,
+ mp_limb_t ux)
+{
+ unsigned cnt;
+
+ assert (ux == 0 || ux == GMP_LIMB_MAX);
+ assert (0 <= i && i <= un );
+
+ while (limb == 0)
+ {
+ i++;
+ if (i == un)
+ return (ux == 0 ? ~(mp_bitcnt_t) 0 : un * GMP_LIMB_BITS);
+ limb = ux ^ up[i];
+ }
+ gmp_ctz (cnt, limb);
+ return (mp_bitcnt_t) i * GMP_LIMB_BITS + cnt;
+}
+
+mp_bitcnt_t
+mpn_scan1 (mp_srcptr ptr, mp_bitcnt_t bit)
+{
+ mp_size_t i;
+ i = bit / GMP_LIMB_BITS;
+
+ return mpn_common_scan ( ptr[i] & (GMP_LIMB_MAX << (bit % GMP_LIMB_BITS)),
+ i, ptr, i, 0);
+}
+
+mp_bitcnt_t
+mpn_scan0 (mp_srcptr ptr, mp_bitcnt_t bit)
+{
+ mp_size_t i;
+ i = bit / GMP_LIMB_BITS;
+
+ return mpn_common_scan (~ptr[i] & (GMP_LIMB_MAX << (bit % GMP_LIMB_BITS)),
+ i, ptr, i, GMP_LIMB_MAX);
+}
+
+void
+mpn_com (mp_ptr rp, mp_srcptr up, mp_size_t n)
+{
+ while (--n >= 0)
+ *rp++ = ~ *up++;
+}
+
+mp_limb_t
+mpn_neg (mp_ptr rp, mp_srcptr up, mp_size_t n)
+{
+ while (*up == 0)
+ {
+ *rp = 0;
+ if (!--n)
+ return 0;
+ ++up; ++rp;
+ }
+ *rp = - *up;
+ mpn_com (++rp, ++up, --n);
+ return 1;
+}
+
/* MPN division interface. */
+
+/* The 3/2 inverse is defined as
+
+ m = floor( (B^3-1) / (B u1 + u0)) - B
+*/
mp_limb_t
mpn_invert_3by2 (mp_limb_t u1, mp_limb_t u0)
{
- mp_limb_t r, p, m;
- unsigned ul, uh;
- unsigned ql, qh;
+ mp_limb_t r, m;
- /* First, do a 2/1 inverse. */
- /* The inverse m is defined as floor( (B^2 - 1 - u1)/u1 ), so that 0 <
- * B^2 - (B + m) u1 <= u1 */
- assert (u1 >= GMP_LIMB_HIGHBIT);
+ {
+ mp_limb_t p, ql;
+ unsigned ul, uh, qh;
- ul = u1 & GMP_LLIMB_MASK;
- uh = u1 >> (GMP_LIMB_BITS / 2);
+ /* For notation, let b denote the half-limb base, so that B = b^2.
+ Split u1 = b uh + ul. */
+ ul = u1 & GMP_LLIMB_MASK;
+ uh = u1 >> (GMP_LIMB_BITS / 2);
- qh = ~u1 / uh;
- r = ((~u1 - (mp_limb_t) qh * uh) << (GMP_LIMB_BITS / 2)) | GMP_LLIMB_MASK;
+ /* Approximation of the high half of quotient. Differs from the 2/1
+ inverse of the half limb uh, since we have already subtracted
+ u0. */
+ qh = (u1 ^ GMP_LIMB_MAX) / uh;
- p = (mp_limb_t) qh * ul;
- /* Adjustment steps taken from udiv_qrnnd_c */
- if (r < p)
- {
- qh--;
- r += u1;
- if (r >= u1) /* i.e. we didn't get carry when adding to r */
- if (r < p)
- {
- qh--;
- r += u1;
- }
- }
- r -= p;
+ /* Adjust to get a half-limb 3/2 inverse, i.e., we want
- /* Do a 3/2 division (with half limb size) */
- p = (r >> (GMP_LIMB_BITS / 2)) * qh + r;
- ql = (p >> (GMP_LIMB_BITS / 2)) + 1;
+ qh' = floor( (b^3 - 1) / u) - b = floor ((b^3 - b u - 1) / u
+ = floor( (b (~u) + b-1) / u),
- /* By the 3/2 method, we don't need the high half limb. */
- r = (r << (GMP_LIMB_BITS / 2)) + GMP_LLIMB_MASK - ql * u1;
+ and the remainder
- if (r >= (p << (GMP_LIMB_BITS / 2)))
- {
- ql--;
- r += u1;
- }
- m = ((mp_limb_t) qh << (GMP_LIMB_BITS / 2)) + ql;
- if (r >= u1)
- {
- m++;
- r -= u1;
- }
+ r = b (~u) + b-1 - qh (b uh + ul)
+ = b (~u - qh uh) + b-1 - qh ul
+
+ Subtraction of qh ul may underflow, which implies adjustments.
+ But by normalization, 2 u >= B > qh ul, so we need to adjust by
+ at most 2.
+ */
+
+ r = ((~u1 - (mp_limb_t) qh * uh) << (GMP_LIMB_BITS / 2)) | GMP_LLIMB_MASK;
+
+ p = (mp_limb_t) qh * ul;
+ /* Adjustment steps taken from udiv_qrnnd_c */
+ if (r < p)
+ {
+ qh--;
+ r += u1;
+ if (r >= u1) /* i.e. we didn't get carry when adding to r */
+ if (r < p)
+ {
+ qh--;
+ r += u1;
+ }
+ }
+ r -= p;
+
+ /* Low half of the quotient is
+
+ ql = floor ( (b r + b-1) / u1).
+
+ This is a 3/2 division (on half-limbs), for which qh is a
+ suitable inverse. */
+
+ p = (r >> (GMP_LIMB_BITS / 2)) * qh + r;
+ /* Unlike full-limb 3/2, we can add 1 without overflow. For this to
+ work, it is essential that ql is a full mp_limb_t. */
+ ql = (p >> (GMP_LIMB_BITS / 2)) + 1;
+ /* By the 3/2 trick, we don't need the high half limb. */
+ r = (r << (GMP_LIMB_BITS / 2)) + GMP_LLIMB_MASK - ql * u1;
+
+ if (r >= (GMP_LIMB_MAX & (p << (GMP_LIMB_BITS / 2))))
+ {
+ ql--;
+ r += u1;
+ }
+ m = ((mp_limb_t) qh << (GMP_LIMB_BITS / 2)) + ql;
+ if (r >= u1)
+ {
+ m++;
+ r -= u1;
+ }
+ }
+
+ /* Now m is the 2/1 inverse of u1. If u0 > 0, adjust it to become a
+ 3/2 inverse. */
if (u0 > 0)
{
mp_limb_t th, tl;
@@ -715,8 +857,7 @@ mpn_invert_3by2 (mp_limb_t u1, mp_limb_t u0)
if (r < th)
{
m--;
- if (r > u1 || (r == u1 && tl > u0))
- m--;
+ m -= ((r > u1) | ((r == u1) & (tl > u0)));
}
}
@@ -807,7 +948,8 @@ mpn_div_qr_1_preinv (mp_ptr qp, mp_srcptr np, mp_size_t nn,
if (inv->shift > 0)
{
- tp = gmp_xalloc_limbs (nn);
+ /* Shift, reusing qp area if possible. In-place shift if qp == np. */
+ tp = qp ? qp : gmp_xalloc_limbs (nn);
r = mpn_lshift (tp, np, nn, inv->shift);
np = tp;
}
@@ -816,7 +958,7 @@ mpn_div_qr_1_preinv (mp_ptr qp, mp_srcptr np, mp_size_t nn,
d = inv->d1;
di = inv->di;
- while (nn-- > 0)
+ while (--nn >= 0)
{
mp_limb_t q;
@@ -824,44 +966,19 @@ mpn_div_qr_1_preinv (mp_ptr qp, mp_srcptr np, mp_size_t nn,
if (qp)
qp[nn] = q;
}
- if (inv->shift > 0)
+ if ((inv->shift > 0) && (tp != qp))
gmp_free (tp);
return r >> inv->shift;
}
-static mp_limb_t
-mpn_div_qr_1 (mp_ptr qp, mp_srcptr np, mp_size_t nn, mp_limb_t d)
-{
- assert (d > 0);
-
- /* Special case for powers of two. */
- if (d > 1 && (d & (d-1)) == 0)
- {
- unsigned shift;
- mp_limb_t r = np[0] & (d-1);
- gmp_ctz (shift, d);
- if (qp)
- mpn_rshift (qp, np, nn, shift);
-
- return r;
- }
- else
- {
- struct gmp_div_inverse inv;
- mpn_div_qr_1_invert (&inv, d);
- return mpn_div_qr_1_preinv (qp, np, nn, &inv);
- }
-}
-
static void
-mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
+mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr np, mp_size_t nn,
const struct gmp_div_inverse *inv)
{
unsigned shift;
mp_size_t i;
mp_limb_t d1, d0, di, r1, r0;
- mp_ptr tp;
assert (nn >= 2);
shift = inv->shift;
@@ -870,17 +987,14 @@ mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
di = inv->di;
if (shift > 0)
- {
- tp = gmp_xalloc_limbs (nn);
- r1 = mpn_lshift (tp, np, nn, shift);
- np = tp;
- }
+ r1 = mpn_lshift (np, np, nn, shift);
else
r1 = 0;
r0 = np[nn - 1];
- for (i = nn - 2; i >= 0; i--)
+ i = nn - 2;
+ do
{
mp_limb_t n0, q;
n0 = np[i];
@@ -889,32 +1003,18 @@ mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
if (qp)
qp[i] = q;
}
+ while (--i >= 0);
if (shift > 0)
{
- assert ((r0 << (GMP_LIMB_BITS - shift)) == 0);
+ assert ((r0 & (GMP_LIMB_MAX >> (GMP_LIMB_BITS - shift))) == 0);
r0 = (r0 >> shift) | (r1 << (GMP_LIMB_BITS - shift));
r1 >>= shift;
-
- gmp_free (tp);
}
- rp[1] = r1;
- rp[0] = r0;
-}
-
-#if 0
-static void
-mpn_div_qr_2 (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t nn,
- mp_limb_t d1, mp_limb_t d0)
-{
- struct gmp_div_inverse inv;
- assert (nn >= 2);
-
- mpn_div_qr_2_invert (&inv, d1, d0);
- mpn_div_qr_2_preinv (qp, rp, np, nn, &inv);
+ np[1] = r1;
+ np[0] = r0;
}
-#endif
static void
mpn_div_qr_pi1 (mp_ptr qp,
@@ -941,7 +1041,8 @@ mpn_div_qr_pi1 (mp_ptr qp,
* by <d1, d0, dp[dn-3], ..., dp[0] >
*/
- for (i = nn - dn; i >= 0; i--)
+ i = nn - dn;
+ do
{
mp_limb_t n0 = np[dn-1+i];
@@ -973,6 +1074,7 @@ mpn_div_qr_pi1 (mp_ptr qp,
if (qp)
qp[i] = q;
}
+ while (--i >= 0);
np[dn - 1] = n1;
}
@@ -988,7 +1090,7 @@ mpn_div_qr_preinv (mp_ptr qp, mp_ptr np, mp_size_t nn,
if (dn == 1)
np[0] = mpn_div_qr_1_preinv (qp, np, nn, inv);
else if (dn == 2)
- mpn_div_qr_2_preinv (qp, np, np, nn, inv);
+ mpn_div_qr_2_preinv (qp, np, nn, inv);
else
{
mp_limb_t nh;
@@ -1090,7 +1192,7 @@ mpn_get_str_bits (unsigned char *sp, unsigned bits, mp_srcptr up, mp_size_t un)
unsigned char mask;
size_t sn, j;
mp_size_t i;
- int shift;
+ unsigned shift;
sn = ((un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1])
+ bits - 1) / bits;
@@ -1128,7 +1230,7 @@ mpn_limb_get_str (unsigned char *sp, mp_limb_t w,
l = w << binv->shift;
gmp_udiv_qrnnd_preinv (w, r, h, l, binv->d1, binv->di);
- assert ( (r << (GMP_LIMB_BITS - binv->shift)) == 0);
+ assert ((r & (GMP_LIMB_MAX >> (GMP_LIMB_BITS - binv->shift))) == 0);
r >>= binv->shift;
sp[i] = r;
@@ -1231,26 +1333,29 @@ mpn_set_str_bits (mp_ptr rp, const unsigned char *sp, size_t sn,
return rn;
}
+/* Result is usually normalized, except for all-zero input, in which
+ case a single zero limb is written at *RP, and 1 is returned. */
static mp_size_t
mpn_set_str_other (mp_ptr rp, const unsigned char *sp, size_t sn,
mp_limb_t b, const struct mpn_base_info *info)
{
mp_size_t rn;
mp_limb_t w;
- unsigned first;
unsigned k;
size_t j;
- first = 1 + (sn - 1) % info->exp;
+ assert (sn > 0);
+
+ k = 1 + (sn - 1) % info->exp;
j = 0;
w = sp[j++];
- for (k = 1; k < first; k++)
+ while (--k != 0)
w = w * b + sp[j++];
rp[0] = w;
- for (rn = (w > 0); j < sn;)
+ for (rn = 1; j < sn;)
{
mp_limb_t cy;
@@ -1293,13 +1398,15 @@ mpn_set_str (mp_ptr rp, const unsigned char *sp, size_t sn, int base)
void
mpz_init (mpz_t r)
{
- r->_mp_alloc = 1;
+ static const mp_limb_t dummy_limb = GMP_LIMB_MAX & 0xc1a0;
+
+ r->_mp_alloc = 0;
r->_mp_size = 0;
- r->_mp_d = gmp_xalloc_limbs (1);
+ r->_mp_d = (mp_ptr) &dummy_limb;
}
/* The utility of this function is a bit limited, since many functions
- assings the result variable using mpz_swap. */
+ assigns the result variable using mpz_swap. */
void
mpz_init2 (mpz_t r, mp_bitcnt_t bits)
{
@@ -1316,15 +1423,19 @@ mpz_init2 (mpz_t r, mp_bitcnt_t bits)
void
mpz_clear (mpz_t r)
{
- gmp_free (r->_mp_d);
+ if (r->_mp_alloc)
+ gmp_free (r->_mp_d);
}
-static void *
+static mp_ptr
mpz_realloc (mpz_t r, mp_size_t size)
{
size = GMP_MAX (size, 1);
- r->_mp_d = gmp_xrealloc_limbs (r->_mp_d, size);
+ if (r->_mp_alloc)
+ r->_mp_d = gmp_xrealloc_limbs (r->_mp_d, size);
+ else
+ r->_mp_d = gmp_xalloc_limbs (size);
r->_mp_alloc = size;
if (GMP_ABS (r->_mp_size) > size)
@@ -1345,9 +1456,15 @@ mpz_set_si (mpz_t r, signed long int x)
if (x >= 0)
mpz_set_ui (r, x);
else /* (x < 0) */
+ if (GMP_LIMB_BITS < GMP_ULONG_BITS)
+ {
+ mpz_set_ui (r, GMP_NEG_CAST (unsigned long int, x));
+ mpz_neg (r, r);
+ }
+ else
{
r->_mp_size = -1;
- r->_mp_d[0] = GMP_NEG_CAST (unsigned long int, x);
+ MPZ_REALLOC (r, 1)[0] = GMP_NEG_CAST (unsigned long int, x);
}
}
@@ -1357,7 +1474,16 @@ mpz_set_ui (mpz_t r, unsigned long int x)
if (x > 0)
{
r->_mp_size = 1;
- r->_mp_d[0] = x;
+ MPZ_REALLOC (r, 1)[0] = x;
+ if (GMP_LIMB_BITS < GMP_ULONG_BITS)
+ {
+ int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS;
+ while (x >>= LOCAL_GMP_LIMB_BITS)
+ {
+ ++ r->_mp_size;
+ MPZ_REALLOC (r, r->_mp_size)[r->_mp_size - 1] = x;
+ }
+ }
}
else
r->_mp_size = 0;
@@ -1404,16 +1530,20 @@ mpz_init_set (mpz_t r, const mpz_t x)
int
mpz_fits_slong_p (const mpz_t u)
{
- mp_size_t us = u->_mp_size;
+ return (LONG_MAX + LONG_MIN == 0 || mpz_cmp_ui (u, LONG_MAX) <= 0) &&
+ mpz_cmpabs_ui (u, GMP_NEG_CAST (unsigned long int, LONG_MIN)) <= 0;
+}
- if (us == 0)
- return 1;
- else if (us == 1)
- return u->_mp_d[0] < GMP_LIMB_HIGHBIT;
- else if (us == -1)
- return u->_mp_d[0] <= GMP_LIMB_HIGHBIT;
- else
- return 0;
+static int
+mpn_absfits_ulong_p (mp_srcptr up, mp_size_t un)
+{
+ int ulongsize = GMP_ULONG_BITS / GMP_LIMB_BITS;
+ mp_limb_t ulongrem = 0;
+
+ if (GMP_ULONG_BITS % GMP_LIMB_BITS != 0)
+ ulongrem = (mp_limb_t) (ULONG_MAX >> GMP_LIMB_BITS * ulongsize) + 1;
+
+ return un <= ulongsize || (up[ulongsize] < ulongrem && un == ulongsize + 1);
}
int
@@ -1421,25 +1551,36 @@ mpz_fits_ulong_p (const mpz_t u)
{
mp_size_t us = u->_mp_size;
- return us == 0 || us == 1;
+ return us >= 0 && mpn_absfits_ulong_p (u->_mp_d, us);
}
long int
mpz_get_si (const mpz_t u)
{
- mp_size_t us = u->_mp_size;
+ unsigned long r = mpz_get_ui (u);
+ unsigned long c = -LONG_MAX - LONG_MIN;
- if (us > 0)
- return (long) (u->_mp_d[0] & ~GMP_LIMB_HIGHBIT);
- else if (us < 0)
- return (long) (- u->_mp_d[0] | GMP_LIMB_HIGHBIT);
+ if (u->_mp_size < 0)
+ /* This expression is necessary to properly handle -LONG_MIN */
+ return -(long) c - (long) ((r - c) & LONG_MAX);
else
- return 0;
+ return (long) (r & LONG_MAX);
}
unsigned long int
mpz_get_ui (const mpz_t u)
{
+ if (GMP_LIMB_BITS < GMP_ULONG_BITS)
+ {
+ int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS;
+ unsigned long r = 0;
+ mp_size_t n = GMP_ABS (u->_mp_size);
+ n = GMP_MIN (n, 1 + (mp_size_t) (GMP_ULONG_BITS - 1) / GMP_LIMB_BITS);
+ while (--n >= 0)
+ r = (r << LOCAL_GMP_LIMB_BITS) + u->_mp_d[n];
+ return r;
+ }
+
return u->_mp_size == 0 ? 0 : u->_mp_d[0];
}
@@ -1458,6 +1599,56 @@ mpz_getlimbn (const mpz_t u, mp_size_t n)
return 0;
}
+void
+mpz_realloc2 (mpz_t x, mp_bitcnt_t n)
+{
+ mpz_realloc (x, 1 + (n - (n != 0)) / GMP_LIMB_BITS);
+}
+
+mp_srcptr
+mpz_limbs_read (mpz_srcptr x)
+{
+ return x->_mp_d;
+}
+
+mp_ptr
+mpz_limbs_modify (mpz_t x, mp_size_t n)
+{
+ assert (n > 0);
+ return MPZ_REALLOC (x, n);
+}
+
+mp_ptr
+mpz_limbs_write (mpz_t x, mp_size_t n)
+{
+ return mpz_limbs_modify (x, n);
+}
+
+void
+mpz_limbs_finish (mpz_t x, mp_size_t xs)
+{
+ mp_size_t xn;
+ xn = mpn_normalized_size (x->_mp_d, GMP_ABS (xs));
+ x->_mp_size = xs < 0 ? -xn : xn;
+}
+
+static mpz_srcptr
+mpz_roinit_normal_n (mpz_t x, mp_srcptr xp, mp_size_t xs)
+{
+ x->_mp_alloc = 0;
+ x->_mp_d = (mp_ptr) xp;
+ x->_mp_size = xs;
+ return x;
+}
+
+mpz_srcptr
+mpz_roinit_n (mpz_t x, mp_srcptr xp, mp_size_t xs)
+{
+ mpz_roinit_normal_n (x, xp, xs);
+ mpz_limbs_finish (x, xs);
+ return x;
+}
+
/* Conversions and comparison to double. */
void
@@ -1472,26 +1663,22 @@ mpz_set_d (mpz_t r, double x)
/* x != x is true when x is a NaN, and x == x * 0.5 is true when x is
zero or infinity. */
- if (x == 0.0 || x != x || x == x * 0.5)
+ if (x != x || x == x * 0.5)
{
r->_mp_size = 0;
return;
}
- if (x < 0.0)
- {
- x = - x;
- sign = 1;
- }
- else
- sign = 0;
+ sign = x < 0.0 ;
+ if (sign)
+ x = - x;
if (x < 1.0)
{
r->_mp_size = 0;
return;
}
- B = 2.0 * (double) GMP_LIMB_HIGHBIT;
+ B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1);
Bi = 1.0 / B;
for (rn = 1; x >= B; rn++)
x *= Bi;
@@ -1501,8 +1688,9 @@ mpz_set_d (mpz_t r, double x)
f = (mp_limb_t) x;
x -= f;
assert (x < 1.0);
- rp[rn-1] = f;
- for (i = rn-1; i-- > 0; )
+ i = rn-1;
+ rp[i] = f;
+ while (--i >= 0)
{
x = B * x;
f = (mp_limb_t) x;
@@ -1524,18 +1712,34 @@ mpz_init_set_d (mpz_t r, double x)
double
mpz_get_d (const mpz_t u)
{
+ int m;
+ mp_limb_t l;
mp_size_t un;
double x;
- double B = 2.0 * (double) GMP_LIMB_HIGHBIT;
+ double B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1);
un = GMP_ABS (u->_mp_size);
if (un == 0)
return 0.0;
- x = u->_mp_d[--un];
- while (un > 0)
- x = B*x + u->_mp_d[--un];
+ l = u->_mp_d[--un];
+ gmp_clz (m, l);
+ m = m + GMP_DBL_MANT_BITS - GMP_LIMB_BITS;
+ if (m < 0)
+ l &= GMP_LIMB_MAX << -m;
+
+ for (x = l; --un >= 0;)
+ {
+ x = B*x;
+ if (m > 0) {
+ l = u->_mp_d[un];
+ m -= GMP_LIMB_BITS;
+ if (m < 0)
+ l &= GMP_LIMB_MAX << -m;
+ x += l;
+ }
+ }
if (u->_mp_size < 0)
x = -x;
@@ -1557,7 +1761,7 @@ mpz_cmpabs_d (const mpz_t x, double d)
{
xn = GMP_ABS (xn);
- B = 2.0 * (double) GMP_LIMB_HIGHBIT;
+ B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1);
Bi = 1.0 / B;
/* Scale d so it can be compared with the top limb. */
@@ -1608,14 +1812,7 @@ mpz_cmp_d (const mpz_t x, double d)
int
mpz_sgn (const mpz_t u)
{
- mp_size_t usize = u->_mp_size;
-
- if (usize > 0)
- return 1;
- else if (usize < 0)
- return -1;
- else
- return 0;
+ return GMP_CMP (u->_mp_size, 0);
}
int
@@ -1623,21 +1820,12 @@ mpz_cmp_si (const mpz_t u, long v)
{
mp_size_t usize = u->_mp_size;
- if (usize < -1)
- return -1;
- else if (v >= 0)
+ if (v >= 0)
return mpz_cmp_ui (u, v);
else if (usize >= 0)
return 1;
- else /* usize == -1 */
- {
- mp_limb_t ul = u->_mp_d[0];
- if ((mp_limb_t)GMP_NEG_CAST (unsigned long int, v) < ul)
- return -1;
- else if ( (mp_limb_t)GMP_NEG_CAST (unsigned long int, v) > ul)
- return 1;
- }
- return 0;
+ else
+ return - mpz_cmpabs_ui (u, GMP_NEG_CAST (unsigned long int, v));
}
int
@@ -1645,19 +1833,10 @@ mpz_cmp_ui (const mpz_t u, unsigned long v)
{
mp_size_t usize = u->_mp_size;
- if (usize > 1)
- return 1;
- else if (usize < 0)
+ if (usize < 0)
return -1;
else
- {
- mp_limb_t ul = (usize > 0) ? u->_mp_d[0] : 0;
- if (ul > v)
- return 1;
- else if (ul < v)
- return -1;
- }
- return 0;
+ return mpz_cmpabs_ui (u, v);
}
int
@@ -1666,35 +1845,26 @@ mpz_cmp (const mpz_t a, const mpz_t b)
mp_size_t asize = a->_mp_size;
mp_size_t bsize = b->_mp_size;
- if (asize > bsize)
- return 1;
- else if (asize < bsize)
- return -1;
- else if (asize > 0)
+ if (asize != bsize)
+ return (asize < bsize) ? -1 : 1;
+ else if (asize >= 0)
return mpn_cmp (a->_mp_d, b->_mp_d, asize);
- else if (asize < 0)
- return -mpn_cmp (a->_mp_d, b->_mp_d, -asize);
else
- return 0;
+ return mpn_cmp (b->_mp_d, a->_mp_d, -asize);
}
int
mpz_cmpabs_ui (const mpz_t u, unsigned long v)
{
mp_size_t un = GMP_ABS (u->_mp_size);
- mp_limb_t ul;
- if (un > 1)
+ if (! mpn_absfits_ulong_p (u->_mp_d, un))
return 1;
-
- ul = (un == 1) ? u->_mp_d[0] : 0;
-
- if (ul > v)
- return 1;
- else if (ul < v)
- return -1;
else
- return 0;
+ {
+ unsigned long uu = mpz_get_ui (u);
+ return GMP_CMP(uu, v);
+ }
}
int
@@ -1707,18 +1877,14 @@ mpz_cmpabs (const mpz_t u, const mpz_t v)
void
mpz_abs (mpz_t r, const mpz_t u)
{
- if (r != u)
- mpz_set (r, u);
-
+ mpz_set (r, u);
r->_mp_size = GMP_ABS (r->_mp_size);
}
void
mpz_neg (mpz_t r, const mpz_t u)
{
- if (r != u)
- mpz_set (r, u);
-
+ mpz_set (r, u);
r->_mp_size = -r->_mp_size;
}
@@ -1733,80 +1899,28 @@ mpz_swap (mpz_t u, mpz_t v)
/* MPZ addition and subtraction */
-/* Adds to the absolute value. Returns new size, but doesn't store it. */
-static mp_size_t
-mpz_abs_add_ui (mpz_t r, const mpz_t a, unsigned long b)
-{
- mp_size_t an;
- mp_ptr rp;
- mp_limb_t cy;
-
- an = GMP_ABS (a->_mp_size);
- if (an == 0)
- {
- r->_mp_d[0] = b;
- return b > 0;
- }
-
- rp = MPZ_REALLOC (r, an + 1);
-
- cy = mpn_add_1 (rp, a->_mp_d, an, b);
- rp[an] = cy;
- an += (cy > 0);
-
- return an;
-}
-
-/* Subtract from the absolute value. Returns new size, (or -1 on underflow),
- but doesn't store it. */
-static mp_size_t
-mpz_abs_sub_ui (mpz_t r, const mpz_t a, unsigned long b)
-{
- mp_size_t an = GMP_ABS (a->_mp_size);
- mp_ptr rp = MPZ_REALLOC (r, an);
-
- if (an == 0)
- {
- rp[0] = b;
- return -(b > 0);
- }
- else if (an == 1 && a->_mp_d[0] < b)
- {
- rp[0] = b - a->_mp_d[0];
- return -1;
- }
- else
- {
- gmp_assert_nocarry (mpn_sub_1 (rp, a->_mp_d, an, b));
- return mpn_normalized_size (rp, an);
- }
-}
void
mpz_add_ui (mpz_t r, const mpz_t a, unsigned long b)
{
- if (a->_mp_size >= 0)
- r->_mp_size = mpz_abs_add_ui (r, a, b);
- else
- r->_mp_size = -mpz_abs_sub_ui (r, a, b);
+ mpz_t bb;
+ mpz_init_set_ui (bb, b);
+ mpz_add (r, a, bb);
+ mpz_clear (bb);
}
void
mpz_sub_ui (mpz_t r, const mpz_t a, unsigned long b)
{
- if (a->_mp_size < 0)
- r->_mp_size = -mpz_abs_add_ui (r, a, b);
- else
- r->_mp_size = mpz_abs_sub_ui (r, a, b);
+ mpz_ui_sub (r, b, a);
+ mpz_neg (r, r);
}
void
mpz_ui_sub (mpz_t r, unsigned long a, const mpz_t b)
{
- if (b->_mp_size < 0)
- r->_mp_size = mpz_abs_add_ui (r, b, a);
- else
- r->_mp_size = -mpz_abs_sub_ui (r, b, a);
+ mpz_neg (r, b);
+ mpz_add_ui (r, r, a);
}
static mp_size_t
@@ -1814,20 +1928,21 @@ mpz_abs_add (mpz_t r, const mpz_t a, const mpz_t b)
{
mp_size_t an = GMP_ABS (a->_mp_size);
mp_size_t bn = GMP_ABS (b->_mp_size);
- mp_size_t rn;
mp_ptr rp;
mp_limb_t cy;
- rn = GMP_MAX (an, bn);
- rp = MPZ_REALLOC (r, rn + 1);
- if (an >= bn)
- cy = mpn_add (rp, a->_mp_d, an, b->_mp_d, bn);
- else
- cy = mpn_add (rp, b->_mp_d, bn, a->_mp_d, an);
+ if (an < bn)
+ {
+ MPZ_SRCPTR_SWAP (a, b);
+ MP_SIZE_T_SWAP (an, bn);
+ }
- rp[rn] = cy;
+ rp = MPZ_REALLOC (r, an + 1);
+ cy = mpn_add (rp, a->_mp_d, an, b->_mp_d, bn);
- return rn + (cy > 0);
+ rp[an] = cy;
+
+ return an + cy;
}
static mp_size_t
@@ -1892,37 +2007,17 @@ mpz_mul_si (mpz_t r, const mpz_t u, long int v)
mpz_neg (r, r);
}
else
- mpz_mul_ui (r, u, (unsigned long int) v);
+ mpz_mul_ui (r, u, v);
}
void
mpz_mul_ui (mpz_t r, const mpz_t u, unsigned long int v)
{
- mp_size_t un;
- mpz_t t;
- mp_ptr tp;
- mp_limb_t cy;
-
- un = GMP_ABS (u->_mp_size);
-
- if (un == 0 || v == 0)
- {
- r->_mp_size = 0;
- return;
- }
-
- mpz_init2 (t, (un + 1) * GMP_LIMB_BITS);
-
- tp = t->_mp_d;
- cy = mpn_mul_1 (tp, u->_mp_d, un, v);
- tp[un] = cy;
-
- t->_mp_size = un + (cy > 0);
- if (u->_mp_size < 0)
- t->_mp_size = - t->_mp_size;
-
- mpz_swap (r, t);
- mpz_clear (t);
+ mpz_t vv;
+ mpz_init_set_ui (vv, v);
+ mpz_mul (r, u, vv);
+ mpz_clear (vv);
+ return;
}
void
@@ -1933,8 +2028,8 @@ mpz_mul (mpz_t r, const mpz_t u, const mpz_t v)
mpz_t t;
mp_ptr tp;
- un = GMP_ABS (u->_mp_size);
- vn = GMP_ABS (v->_mp_size);
+ un = u->_mp_size;
+ vn = v->_mp_size;
if (un == 0 || vn == 0)
{
@@ -1942,7 +2037,10 @@ mpz_mul (mpz_t r, const mpz_t u, const mpz_t v)
return;
}
- sign = (u->_mp_size ^ v->_mp_size) < 0;
+ sign = (un ^ vn) < 0;
+
+ un = GMP_ABS (un);
+ vn = GMP_ABS (vn);
mpz_init2 (t, (un + vn) * GMP_LIMB_BITS);
@@ -1989,12 +2087,51 @@ mpz_mul_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t bits)
else
mpn_copyd (rp + limbs, u->_mp_d, un);
- while (limbs > 0)
- rp[--limbs] = 0;
+ mpn_zero (rp, limbs);
r->_mp_size = (u->_mp_size < 0) ? - rn : rn;
}
+void
+mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v)
+{
+ mpz_t t;
+ mpz_init_set_ui (t, v);
+ mpz_mul (t, u, t);
+ mpz_add (r, r, t);
+ mpz_clear (t);
+}
+
+void
+mpz_submul_ui (mpz_t r, const mpz_t u, unsigned long int v)
+{
+ mpz_t t;
+ mpz_init_set_ui (t, v);
+ mpz_mul (t, u, t);
+ mpz_sub (r, r, t);
+ mpz_clear (t);
+}
+
+void
+mpz_addmul (mpz_t r, const mpz_t u, const mpz_t v)
+{
+ mpz_t t;
+ mpz_init (t);
+ mpz_mul (t, u, v);
+ mpz_add (r, r, t);
+ mpz_clear (t);
+}
+
+void
+mpz_submul (mpz_t r, const mpz_t u, const mpz_t v)
+{
+ mpz_t t;
+ mpz_init (t);
+ mpz_mul (t, u, v);
+ mpz_sub (r, r, t);
+ mpz_clear (t);
+}
+
/* MPZ division */
enum mpz_div_round_mode { GMP_DIV_FLOOR, GMP_DIV_CEIL, GMP_DIV_TRUNC };
@@ -2059,8 +2196,7 @@ mpz_div_qr (mpz_t q, mpz_t r,
mp_size_t qn, rn;
mpz_t tq, tr;
- mpz_init (tr);
- mpz_set (tr, n);
+ mpz_init_set (tr, n);
np = tr->_mp_d;
qn = nn - dn + 1;
@@ -2170,10 +2306,7 @@ mpz_tdiv_r (mpz_t r, const mpz_t n, const mpz_t d)
void
mpz_mod (mpz_t r, const mpz_t n, const mpz_t d)
{
- if (d->_mp_size >= 0)
- mpz_div_qr (NULL, r, n, d, GMP_DIV_FLOOR);
- else
- mpz_div_qr (NULL, r, n, d, GMP_DIV_CEIL);
+ mpz_div_qr (NULL, r, n, d, d->_mp_size >= 0 ? GMP_DIV_FLOOR : GMP_DIV_CEIL);
}
static void
@@ -2183,7 +2316,7 @@ mpz_div_q_2exp (mpz_t q, const mpz_t u, mp_bitcnt_t bit_index,
mp_size_t un, qn;
mp_size_t limb_cnt;
mp_ptr qp;
- mp_limb_t adjust;
+ int adjust;
un = u->_mp_size;
if (un == 0)
@@ -2207,7 +2340,6 @@ mpz_div_q_2exp (mpz_t q, const mpz_t u, mp_bitcnt_t bit_index,
if (qn <= 0)
qn = 0;
-
else
{
qp = MPZ_REALLOC (q, qn);
@@ -2225,7 +2357,8 @@ mpz_div_q_2exp (mpz_t q, const mpz_t u, mp_bitcnt_t bit_index,
q->_mp_size = qn;
- mpz_add_ui (q, q, adjust);
+ if (adjust)
+ mpz_add_ui (q, q, 1);
if (un < 0)
mpz_neg (q, q);
}
@@ -2260,16 +2393,9 @@ mpz_div_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t bit_index,
{
/* Have to negate and sign extend. */
mp_size_t i;
- mp_limb_t cy;
- for (cy = 1, i = 0; i < un; i++)
- {
- mp_limb_t s = ~u->_mp_d[i] + cy;
- cy = s < cy;
- rp[i] = s;
- }
- assert (cy == 0);
- for (; i < rn - 1; i++)
+ gmp_assert_nocarry (! mpn_neg (rp, u->_mp_d, un));
+ for (i = un; i < rn - 1; i++)
rp[i] = GMP_LIMB_MAX;
rp[rn-1] = mask;
@@ -2294,23 +2420,13 @@ mpz_div_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t bit_index,
if (mode == ((us > 0) ? GMP_DIV_CEIL : GMP_DIV_FLOOR)) /* us != 0 here. */
{
/* If r != 0, compute 2^{bit_count} - r. */
- mp_size_t i;
-
- for (i = 0; i < rn && rp[i] == 0; i++)
- ;
- if (i < rn)
- {
- /* r > 0, need to flip sign. */
- rp[i] = ~rp[i] + 1;
- for (i++; i < rn; i++)
- rp[i] = ~rp[i];
+ mpn_neg (rp, rp, rn);
- rp[rn-1] &= mask;
+ rp[rn-1] &= mask;
- /* us is not used for anything else, so we can modify it
- here to indicate flipped sign. */
- us = -us;
- }
+ /* us is not used for anything else, so we can modify it
+ here to indicate flipped sign. */
+ us = -us;
}
}
rn = mpn_normalized_size (rp, rn);
@@ -2365,60 +2481,42 @@ mpz_divisible_p (const mpz_t n, const mpz_t d)
return mpz_div_qr (NULL, NULL, n, d, GMP_DIV_TRUNC) == 0;
}
-static unsigned long
-mpz_div_qr_ui (mpz_t q, mpz_t r,
- const mpz_t n, unsigned long d, enum mpz_div_round_mode mode)
+int
+mpz_congruent_p (const mpz_t a, const mpz_t b, const mpz_t m)
{
- mp_size_t ns, qn;
- mp_ptr qp;
- mp_limb_t rl;
- mp_size_t rs;
+ mpz_t t;
+ int res;
- ns = n->_mp_size;
- if (ns == 0)
- {
- if (q)
- q->_mp_size = 0;
- if (r)
- r->_mp_size = 0;
- return 0;
- }
+ /* a == b (mod 0) iff a == b */
+ if (mpz_sgn (m) == 0)
+ return (mpz_cmp (a, b) == 0);
- qn = GMP_ABS (ns);
- if (q)
- qp = MPZ_REALLOC (q, qn);
- else
- qp = NULL;
+ mpz_init (t);
+ mpz_sub (t, a, b);
+ res = mpz_divisible_p (t, m);
+ mpz_clear (t);
- rl = mpn_div_qr_1 (qp, n->_mp_d, qn, d);
- assert (rl < d);
+ return res;
+}
- rs = rl > 0;
- rs = (ns < 0) ? -rs : rs;
+static unsigned long
+mpz_div_qr_ui (mpz_t q, mpz_t r,
+ const mpz_t n, unsigned long d, enum mpz_div_round_mode mode)
+{
+ unsigned long ret;
+ mpz_t rr, dd;
- if (rl > 0 && ( (mode == GMP_DIV_FLOOR && ns < 0)
- || (mode == GMP_DIV_CEIL && ns >= 0)))
- {
- if (q)
- gmp_assert_nocarry (mpn_add_1 (qp, qp, qn, 1));
- rl = d - rl;
- rs = -rs;
- }
+ mpz_init (rr);
+ mpz_init_set_ui (dd, d);
+ mpz_div_qr (q, rr, n, dd, mode);
+ mpz_clear (dd);
+ ret = mpz_get_ui (rr);
if (r)
- {
- r->_mp_d[0] = rl;
- r->_mp_size = rs;
- }
- if (q)
- {
- qn -= (qp[qn-1] == 0);
- assert (qn == 0 || qp[qn-1] > 0);
+ mpz_swap (r, rr);
+ mpz_clear (rr);
- q->_mp_size = (ns < 0) ? - qn : qn;
- }
-
- return rl;
+ return ret;
}
unsigned long
@@ -2557,53 +2655,31 @@ mpn_gcd_11 (mp_limb_t u, mp_limb_t v)
unsigned long
mpz_gcd_ui (mpz_t g, const mpz_t u, unsigned long v)
{
- mp_size_t un;
+ mpz_t t;
+ mpz_init_set_ui(t, v);
+ mpz_gcd (t, u, t);
+ if (v > 0)
+ v = mpz_get_ui (t);
- if (v == 0)
- {
- if (g)
- mpz_abs (g, u);
- }
- else
- {
- un = GMP_ABS (u->_mp_size);
- if (un != 0)
- v = mpn_gcd_11 (mpn_div_qr_1 (NULL, u->_mp_d, un, v), v);
+ if (g)
+ mpz_swap (t, g);
- if (g)
- mpz_set_ui (g, v);
- }
+ mpz_clear (t);
return v;
}
static mp_bitcnt_t
-mpz_make_odd (mpz_t r, const mpz_t u)
+mpz_make_odd (mpz_t r)
{
- mp_size_t un, rn, i;
- mp_ptr rp;
- unsigned shift;
-
- un = GMP_ABS (u->_mp_size);
- assert (un > 0);
-
- for (i = 0; u->_mp_d[i] == 0; i++)
- ;
+ mp_bitcnt_t shift;
- gmp_ctz (shift, u->_mp_d[i]);
+ assert (r->_mp_size > 0);
+ /* Count trailing zeros, equivalent to mpn_scan1, because we know that there is a 1 */
+ shift = mpn_common_scan (r->_mp_d[0], 0, r->_mp_d, 0, 0);
+ mpz_tdiv_q_2exp (r, r, shift);
- rn = un - i;
- rp = MPZ_REALLOC (r, rn);
- if (shift > 0)
- {
- mpn_rshift (rp, u->_mp_d + i, rn, shift);
- rn -= (rp[rn-1] == 0);
- }
- else
- mpn_copyi (rp, u->_mp_d + i, rn);
-
- r->_mp_size = rn;
- return i * GMP_LIMB_BITS + shift;
+ return shift;
}
void
@@ -2626,8 +2702,10 @@ mpz_gcd (mpz_t g, const mpz_t u, const mpz_t v)
mpz_init (tu);
mpz_init (tv);
- uz = mpz_make_odd (tu, u);
- vz = mpz_make_odd (tv, v);
+ mpz_abs (tu, u);
+ uz = mpz_make_odd (tu);
+ mpz_abs (tv, v);
+ vz = mpz_make_odd (tv);
gz = GMP_MIN (uz, vz);
if (tu->_mp_size < tv->_mp_size)
@@ -2643,7 +2721,7 @@ mpz_gcd (mpz_t g, const mpz_t u, const mpz_t v)
{
int c;
- mpz_make_odd (tu, tu);
+ mpz_make_odd (tu);
c = mpz_cmp (tu, tv);
if (c == 0)
{
@@ -2680,7 +2758,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
signed long sign = mpz_sgn (v);
mpz_abs (g, v);
if (s)
- mpz_set_ui (s, 0);
+ s->_mp_size = 0;
if (t)
mpz_set_si (t, sign);
return;
@@ -2694,7 +2772,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
if (s)
mpz_set_si (s, sign);
if (t)
- mpz_set_ui (t, 0);
+ t->_mp_size = 0;
return;
}
@@ -2705,8 +2783,10 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
mpz_init (t0);
mpz_init (t1);
- uz = mpz_make_odd (tu, u);
- vz = mpz_make_odd (tv, v);
+ mpz_abs (tu, u);
+ uz = mpz_make_odd (tu);
+ mpz_abs (tv, v);
+ vz = mpz_make_odd (tv);
gz = GMP_MIN (uz, vz);
uz -= gz;
@@ -2754,7 +2834,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
if (tu->_mp_size > 0)
{
mp_bitcnt_t shift;
- shift = mpz_make_odd (tu, tu);
+ shift = mpz_make_odd (tu);
mpz_mul_2exp (t0, t0, shift);
mpz_mul_2exp (s0, s0, shift);
power += shift;
@@ -2777,7 +2857,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
mpz_add (t0, t0, t1);
mpz_add (s0, s0, s1);
- shift = mpz_make_odd (tv, tv);
+ shift = mpz_make_odd (tv);
mpz_mul_2exp (t1, t1, shift);
mpz_mul_2exp (s1, s1, shift);
}
@@ -2787,7 +2867,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
mpz_add (t1, t0, t1);
mpz_add (s1, s0, s1);
- shift = mpz_make_odd (tu, tu);
+ shift = mpz_make_odd (tu);
mpz_mul_2exp (t0, t0, shift);
mpz_mul_2exp (s0, s0, shift);
}
@@ -2817,8 +2897,9 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
mpz_sub (s0, s0, s1);
mpz_add (t0, t0, t1);
}
- mpz_divexact_ui (s0, s0, 2);
- mpz_divexact_ui (t0, t0, 2);
+ assert (mpz_even_p (t0) && mpz_even_p (s0));
+ mpz_tdiv_q_2exp (s0, s0, 1);
+ mpz_tdiv_q_2exp (t0, t0, 1);
}
/* Arrange so that |s| < |u| / 2g */
@@ -2925,12 +3006,16 @@ mpz_pow_ui (mpz_t r, const mpz_t b, unsigned long e)
mpz_t tr;
mpz_init_set_ui (tr, 1);
- for (bit = GMP_ULONG_HIGHBIT; bit > 0; bit >>= 1)
+ bit = GMP_ULONG_HIGHBIT;
+ do
{
mpz_mul (tr, tr, tr);
if (e & bit)
mpz_mul (tr, tr, b);
+ bit >>= 1;
}
+ while (bit > 0);
+
mpz_swap (r, tr);
mpz_clear (tr);
}
@@ -2939,6 +3024,7 @@ void
mpz_ui_pow_ui (mpz_t r, unsigned long blimb, unsigned long e)
{
mpz_t b;
+
mpz_init_set_ui (b, blimb);
mpz_pow_ui (r, b, e);
mpz_clear (b);
@@ -2986,7 +3072,7 @@ mpz_powm (mpz_t r, const mpz_t b, const mpz_t e, const mpz_t m)
if (e->_mp_size < 0)
{
if (!mpz_invert (base, b, m))
- gmp_die ("mpz_powm: Negative exponent and non-invertibe base.");
+ gmp_die ("mpz_powm: Negative exponent and non-invertible base.");
}
else
{
@@ -3013,12 +3099,13 @@ mpz_powm (mpz_t r, const mpz_t b, const mpz_t e, const mpz_t m)
}
mpz_init_set_ui (tr, 1);
- while (en-- > 0)
+ while (--en >= 0)
{
mp_limb_t w = e->_mp_d[en];
mp_limb_t bit;
- for (bit = GMP_LIMB_HIGHBIT; bit > 0; bit >>= 1)
+ bit = GMP_LIMB_HIGHBIT;
+ do
{
mpz_mul (tr, tr, tr);
if (w & bit)
@@ -3028,7 +3115,9 @@ mpz_powm (mpz_t r, const mpz_t b, const mpz_t e, const mpz_t m)
mpn_div_qr_preinv (NULL, tr->_mp_d, tr->_mp_size, mp, mn, &minv);
tr->_mp_size = mpn_normalized_size (tr->_mp_d, mn);
}
+ bit >>= 1;
}
+ while (bit > 0);
}
/* Final reduction */
@@ -3050,6 +3139,7 @@ void
mpz_powm_ui (mpz_t r, const mpz_t b, unsigned long elimb, const mpz_t m)
{
mpz_t e;
+
mpz_init_set_ui (e, elimb);
mpz_powm (r, b, e, m);
mpz_clear (e);
@@ -3063,20 +3153,21 @@ mpz_rootrem (mpz_t x, mpz_t r, const mpz_t y, unsigned long z)
mpz_t t, u;
sgn = y->_mp_size < 0;
- if (sgn && (z & 1) == 0)
+ if ((~z & sgn) != 0)
gmp_die ("mpz_rootrem: Negative argument, with even root.");
if (z == 0)
gmp_die ("mpz_rootrem: Zeroth root.");
if (mpz_cmpabs_ui (y, 1) <= 0) {
- mpz_set (x, y);
+ if (x)
+ mpz_set (x, y);
if (r)
r->_mp_size = 0;
return;
}
- mpz_init (t);
mpz_init (u);
+ mpz_init (t);
mpz_setbit (t, mpz_sizeinbase (y, 2) / z + 1);
if (z == 2) /* simplify sqrt loop: z-1 == 1 */
@@ -3109,7 +3200,8 @@ mpz_rootrem (mpz_t x, mpz_t r, const mpz_t y, unsigned long z)
mpz_pow_ui (t, u, z);
mpz_sub (r, y, t);
}
- mpz_swap (x, u);
+ if (x)
+ mpz_swap (x, u);
mpz_clear (u);
mpz_clear (t);
}
@@ -3141,19 +3233,69 @@ mpz_sqrt (mpz_t s, const mpz_t u)
mpz_rootrem (s, NULL, u, 2);
}
+int
+mpz_perfect_square_p (const mpz_t u)
+{
+ if (u->_mp_size <= 0)
+ return (u->_mp_size == 0);
+ else
+ return mpz_root (NULL, u, 2);
+}
+
+int
+mpn_perfect_square_p (mp_srcptr p, mp_size_t n)
+{
+ mpz_t t;
+
+ assert (n > 0);
+ assert (p [n-1] != 0);
+ return mpz_root (NULL, mpz_roinit_normal_n (t, p, n), 2);
+}
+
+mp_size_t
+mpn_sqrtrem (mp_ptr sp, mp_ptr rp, mp_srcptr p, mp_size_t n)
+{
+ mpz_t s, r, u;
+ mp_size_t res;
+
+ assert (n > 0);
+ assert (p [n-1] != 0);
+
+ mpz_init (r);
+ mpz_init (s);
+ mpz_rootrem (s, r, mpz_roinit_normal_n (u, p, n), 2);
+
+ assert (s->_mp_size == (n+1)/2);
+ mpn_copyd (sp, s->_mp_d, s->_mp_size);
+ mpz_clear (s);
+ res = r->_mp_size;
+ if (rp)
+ mpn_copyd (rp, r->_mp_d, res);
+ mpz_clear (r);
+ return res;
+}
/* Combinatorics */
void
+mpz_mfac_uiui (mpz_t x, unsigned long n, unsigned long m)
+{
+ mpz_set_ui (x, n + (n == 0));
+ if (m + 1 < 2) return;
+ while (n > m + 1)
+ mpz_mul_ui (x, x, n -= m);
+}
+
+void
+mpz_2fac_ui (mpz_t x, unsigned long n)
+{
+ mpz_mfac_uiui (x, n, 2);
+}
+
+void
mpz_fac_ui (mpz_t x, unsigned long n)
{
- if (n < 2) {
- mpz_set_ui (x, 1);
- return;
- }
- mpz_set_ui (x, n);
- for (;--n > 1;)
- mpz_mul_ui (x, x, n);
+ mpz_mfac_uiui (x, n, 1);
}
void
@@ -3161,25 +3303,299 @@ mpz_bin_uiui (mpz_t r, unsigned long n, unsigned long k)
{
mpz_t t;
- if (k > n) {
- r->_mp_size = 0;
- return;
- }
- mpz_fac_ui (r, n);
+ mpz_set_ui (r, k <= n);
+
+ if (k > (n >> 1))
+ k = (k <= n) ? n - k : 0;
+
mpz_init (t);
mpz_fac_ui (t, k);
- mpz_divexact (r, r, t);
- mpz_fac_ui (t, n - k);
+
+ for (; k > 0; --k)
+ mpz_mul_ui (r, r, n--);
+
mpz_divexact (r, r, t);
mpz_clear (t);
}
+/* Primality testing */
+
+/* Computes Kronecker (a/b) with odd b, a!=0 and GCD(a,b) = 1 */
+/* Adapted from JACOBI_BASE_METHOD==4 in mpn/generic/jacbase.c */
+static int
+gmp_jacobi_coprime (mp_limb_t a, mp_limb_t b)
+{
+ int c, bit = 0;
+
+ assert (b & 1);
+ assert (a != 0);
+ /* assert (mpn_gcd_11 (a, b) == 1); */
+
+ /* Below, we represent a and b shifted right so that the least
+ significant one bit is implicit. */
+ b >>= 1;
+
+ gmp_ctz(c, a);
+ a >>= 1;
+
+ do
+ {
+ a >>= c;
+ /* (2/b) = -1 if b = 3 or 5 mod 8 */
+ bit ^= c & (b ^ (b >> 1));
+ if (a < b)
+ {
+ bit ^= a & b;
+ a = b - a;
+ b -= a;
+ }
+ else
+ {
+ a -= b;
+ assert (a != 0);
+ }
+
+ gmp_ctz(c, a);
+ ++c;
+ }
+ while (b > 0);
+
+ return bit & 1 ? -1 : 1;
+}
+
+static void
+gmp_lucas_step_k_2k (mpz_t V, mpz_t Qk, const mpz_t n)
+{
+ mpz_mod (Qk, Qk, n);
+ /* V_{2k} <- V_k ^ 2 - 2Q^k */
+ mpz_mul (V, V, V);
+ mpz_submul_ui (V, Qk, 2);
+ mpz_tdiv_r (V, V, n);
+ /* Q^{2k} = (Q^k)^2 */
+ mpz_mul (Qk, Qk, Qk);
+}
+
+/* Computes V_k, Q^k (mod n) for the Lucas' sequence */
+/* with P=1, Q=Q; k = (n>>b0)|1. */
+/* Requires an odd n > 4; b0 > 0; -2*Q must not overflow a long */
+/* Returns (U_k == 0) and sets V=V_k and Qk=Q^k. */
+static int
+gmp_lucas_mod (mpz_t V, mpz_t Qk, long Q,
+ mp_bitcnt_t b0, const mpz_t n)
+{
+ mp_bitcnt_t bs;
+ mpz_t U;
+ int res;
+
+ assert (b0 > 0);
+ assert (Q <= - (LONG_MIN / 2));
+ assert (Q >= - (LONG_MAX / 2));
+ assert (mpz_cmp_ui (n, 4) > 0);
+ assert (mpz_odd_p (n));
+
+ mpz_init_set_ui (U, 1); /* U1 = 1 */
+ mpz_set_ui (V, 1); /* V1 = 1 */
+ mpz_set_si (Qk, Q);
+
+ for (bs = mpz_sizeinbase (n, 2) - 1; --bs >= b0;)
+ {
+ /* U_{2k} <- U_k * V_k */
+ mpz_mul (U, U, V);
+ /* V_{2k} <- V_k ^ 2 - 2Q^k */
+ /* Q^{2k} = (Q^k)^2 */
+ gmp_lucas_step_k_2k (V, Qk, n);
+
+ /* A step k->k+1 is performed if the bit in $n$ is 1 */
+ /* mpz_tstbit(n,bs) or the the bit is 0 in $n$ but */
+ /* should be 1 in $n+1$ (bs == b0) */
+ if (b0 == bs || mpz_tstbit (n, bs))
+ {
+ /* Q^{k+1} <- Q^k * Q */
+ mpz_mul_si (Qk, Qk, Q);
+ /* U_{k+1} <- (U_k + V_k) / 2 */
+ mpz_swap (U, V); /* Keep in V the old value of U_k */
+ mpz_add (U, U, V);
+ /* We have to compute U/2, so we need an even value, */
+ /* equivalent (mod n) */
+ if (mpz_odd_p (U))
+ mpz_add (U, U, n);
+ mpz_tdiv_q_2exp (U, U, 1);
+ /* V_{k+1} <-(D*U_k + V_k) / 2 =
+ U_{k+1} + (D-1)/2*U_k = U_{k+1} - 2Q*U_k */
+ mpz_mul_si (V, V, -2*Q);
+ mpz_add (V, U, V);
+ mpz_tdiv_r (V, V, n);
+ }
+ mpz_tdiv_r (U, U, n);
+ }
+
+ res = U->_mp_size == 0;
+ mpz_clear (U);
+ return res;
+}
+
+/* Performs strong Lucas' test on x, with parameters suggested */
+/* for the BPSW test. Qk is only passed to recycle a variable. */
+/* Requires GCD (x,6) = 1.*/
+static int
+gmp_stronglucas (const mpz_t x, mpz_t Qk)
+{
+ mp_bitcnt_t b0;
+ mpz_t V, n;
+ mp_limb_t maxD, D; /* The absolute value is stored. */
+ long Q;
+ mp_limb_t tl;
+
+ /* Test on the absolute value. */
+ mpz_roinit_normal_n (n, x->_mp_d, GMP_ABS (x->_mp_size));
+
+ assert (mpz_odd_p (n));
+ /* assert (mpz_gcd_ui (NULL, n, 6) == 1); */
+ if (mpz_root (Qk, n, 2))
+ return 0; /* A square is composite. */
+
+ /* Check Ds up to square root (in case, n is prime)
+ or avoid overflows */
+ maxD = (Qk->_mp_size == 1) ? Qk->_mp_d [0] - 1 : GMP_LIMB_MAX;
+
+ D = 3;
+ /* Search a D such that (D/n) = -1 in the sequence 5,-7,9,-11,.. */
+ /* For those Ds we have (D/n) = (n/|D|) */
+ do
+ {
+ if (D >= maxD)
+ return 1 + (D != GMP_LIMB_MAX); /* (1 + ! ~ D) */
+ D += 2;
+ tl = mpz_tdiv_ui (n, D);
+ if (tl == 0)
+ return 0;
+ }
+ while (gmp_jacobi_coprime (tl, D) == 1);
+
+ mpz_init (V);
+
+ /* n-(D/n) = n+1 = d*2^{b0}, with d = (n>>b0) | 1 */
+ b0 = mpz_scan0 (n, 0);
+
+ /* D= P^2 - 4Q; P = 1; Q = (1-D)/4 */
+ Q = (D & 2) ? (long) (D >> 2) + 1 : -(long) (D >> 2);
+
+ if (! gmp_lucas_mod (V, Qk, Q, b0, n)) /* If Ud != 0 */
+ while (V->_mp_size != 0 && --b0 != 0) /* while Vk != 0 */
+ /* V <- V ^ 2 - 2Q^k */
+ /* Q^{2k} = (Q^k)^2 */
+ gmp_lucas_step_k_2k (V, Qk, n);
+
+ mpz_clear (V);
+ return (b0 != 0);
+}
+
+static int
+gmp_millerrabin (const mpz_t n, const mpz_t nm1, mpz_t y,
+ const mpz_t q, mp_bitcnt_t k)
+{
+ assert (k > 0);
+
+ /* Caller must initialize y to the base. */
+ mpz_powm (y, y, q, n);
+
+ if (mpz_cmp_ui (y, 1) == 0 || mpz_cmp (y, nm1) == 0)
+ return 1;
+
+ while (--k > 0)
+ {
+ mpz_powm_ui (y, y, 2, n);
+ if (mpz_cmp (y, nm1) == 0)
+ return 1;
+ /* y == 1 means that the previous y was a non-trivial square root
+ of 1 (mod n). y == 0 means that n is a power of the base.
+ In either case, n is not prime. */
+ if (mpz_cmp_ui (y, 1) <= 0)
+ return 0;
+ }
+ return 0;
+}
+
+/* This product is 0xc0cfd797, and fits in 32 bits. */
+#define GMP_PRIME_PRODUCT \
+ (3UL*5UL*7UL*11UL*13UL*17UL*19UL*23UL*29UL)
+
+/* Bit (p+1)/2 is set, for each odd prime <= 61 */
+#define GMP_PRIME_MASK 0xc96996dcUL
+
+int
+mpz_probab_prime_p (const mpz_t n, int reps)
+{
+ mpz_t nm1;
+ mpz_t q;
+ mpz_t y;
+ mp_bitcnt_t k;
+ int is_prime;
+ int j;
+
+ /* Note that we use the absolute value of n only, for compatibility
+ with the real GMP. */
+ if (mpz_even_p (n))
+ return (mpz_cmpabs_ui (n, 2) == 0) ? 2 : 0;
+
+ /* Above test excludes n == 0 */
+ assert (n->_mp_size != 0);
+
+ if (mpz_cmpabs_ui (n, 64) < 0)
+ return (GMP_PRIME_MASK >> (n->_mp_d[0] >> 1)) & 2;
+
+ if (mpz_gcd_ui (NULL, n, GMP_PRIME_PRODUCT) != 1)
+ return 0;
+
+ /* All prime factors are >= 31. */
+ if (mpz_cmpabs_ui (n, 31*31) < 0)
+ return 2;
+
+ mpz_init (nm1);
+ mpz_init (q);
+
+ /* Find q and k, where q is odd and n = 1 + 2**k * q. */
+ mpz_abs (nm1, n);
+ nm1->_mp_d[0] -= 1;
+ k = mpz_scan1 (nm1, 0);
+ mpz_tdiv_q_2exp (q, nm1, k);
+
+ /* BPSW test */
+ mpz_init_set_ui (y, 2);
+ is_prime = gmp_millerrabin (n, nm1, y, q, k) && gmp_stronglucas (n, y);
+ reps -= 24; /* skip the first 24 repetitions */
+
+ /* Use Miller-Rabin, with a deterministic sequence of bases, a[j] =
+ j^2 + j + 41 using Euler's polynomial. We potentially stop early,
+ if a[j] >= n - 1. Since n >= 31*31, this can happen only if reps >
+ 30 (a[30] == 971 > 31*31 == 961). */
+
+ for (j = 0; is_prime & (j < reps); j++)
+ {
+ mpz_set_ui (y, (unsigned long) j*j+j+41);
+ if (mpz_cmp (y, nm1) >= 0)
+ {
+ /* Don't try any further bases. This "early" break does not affect
+ the result for any reasonable reps value (<=5000 was tested) */
+ assert (j >= 30);
+ break;
+ }
+ is_prime = gmp_millerrabin (n, nm1, y, q, k);
+ }
+ mpz_clear (nm1);
+ mpz_clear (q);
+ mpz_clear (y);
+
+ return is_prime;
+}
+
+
/* Logical operations and bit manipulation. */
/* Numbers are treated as if represented in two's complement (and
infinitely sign extended). For a negative values we get the two's
- complement from -x = ~x + 1, where ~ is bitwise complementt.
+ complement from -x = ~x + 1, where ~ is bitwise complement.
Negation transforms
xxxx10...0
@@ -3223,9 +3639,9 @@ mpz_tstbit (const mpz_t d, mp_bitcnt_t bit_index)
{
/* d < 0. Check if any of the bits below is set: If so, our bit
must be complemented. */
- if (shift > 0 && (w << (GMP_LIMB_BITS - shift)) > 0)
+ if (shift > 0 && (mp_limb_t) (w << (GMP_LIMB_BITS - shift)) > 0)
return bit ^ 1;
- while (limb_index-- > 0)
+ while (--limb_index >= 0)
if (d->_mp_d[limb_index] > 0)
return bit ^ 1;
}
@@ -3290,7 +3706,7 @@ mpz_abs_sub_bit (mpz_t d, mp_bitcnt_t bit_index)
gmp_assert_nocarry (mpn_sub_1 (dp + limb_index, dp + limb_index,
dn - limb_index, bit));
- dn -= (dp[dn-1] == 0);
+ dn = mpn_normalized_size (dp, dn);
d->_mp_size = (d->_mp_size < 0) ? - dn : dn;
}
@@ -3330,8 +3746,8 @@ mpz_combit (mpz_t d, mp_bitcnt_t bit_index)
void
mpz_com (mpz_t r, const mpz_t u)
{
- mpz_neg (r, u);
- mpz_sub_ui (r, r, 1);
+ mpz_add_ui (r, u, 1);
+ mpz_neg (r, r);
}
void
@@ -3368,12 +3784,13 @@ mpz_and (mpz_t r, const mpz_t u, const mpz_t v)
/* If the smaller input is positive, higher limbs don't matter. */
rn = vx ? un : vn;
- rp = MPZ_REALLOC (r, rn + rc);
+ rp = MPZ_REALLOC (r, rn + (mp_size_t) rc);
up = u->_mp_d;
vp = v->_mp_d;
- for (i = 0; i < vn; i++)
+ i = 0;
+ do
{
ul = (up[i] ^ ux) + uc;
uc = ul < uc;
@@ -3385,6 +3802,7 @@ mpz_and (mpz_t r, const mpz_t u, const mpz_t v)
rc = rl < rc;
rp[i] = rl;
}
+ while (++i < vn);
assert (vc == 0);
for (; i < rn; i++)
@@ -3439,12 +3857,13 @@ mpz_ior (mpz_t r, const mpz_t u, const mpz_t v)
don't matter. */
rn = vx ? vn : un;
- rp = MPZ_REALLOC (r, rn + rc);
+ rp = MPZ_REALLOC (r, rn + (mp_size_t) rc);
up = u->_mp_d;
vp = v->_mp_d;
- for (i = 0; i < vn; i++)
+ i = 0;
+ do
{
ul = (up[i] ^ ux) + uc;
uc = ul < uc;
@@ -3456,6 +3875,7 @@ mpz_ior (mpz_t r, const mpz_t u, const mpz_t v)
rc = rl < rc;
rp[i] = rl;
}
+ while (++i < vn);
assert (vc == 0);
for (; i < rn; i++)
@@ -3506,12 +3926,13 @@ mpz_xor (mpz_t r, const mpz_t u, const mpz_t v)
vx = -vc;
rx = -rc;
- rp = MPZ_REALLOC (r, un + rc);
+ rp = MPZ_REALLOC (r, un + (mp_size_t) rc);
up = u->_mp_d;
vp = v->_mp_d;
- for (i = 0; i < vn; i++)
+ i = 0;
+ do
{
ul = (up[i] ^ ux) + uc;
uc = ul < uc;
@@ -3523,6 +3944,7 @@ mpz_xor (mpz_t r, const mpz_t u, const mpz_t v)
rc = rl < rc;
rp[i] = rl;
}
+ while (++i < vn);
assert (vc == 0);
for (; i < un; i++)
@@ -3548,32 +3970,45 @@ gmp_popcount_limb (mp_limb_t x)
unsigned c;
/* Do 16 bits at a time, to avoid limb-sized constants. */
- for (c = 0; x > 0; x >>= 16)
+ int LOCAL_SHIFT_BITS = 16;
+ for (c = 0; x > 0;)
{
- unsigned w = ((x >> 1) & 0x5555) + (x & 0x5555);
+ unsigned w = x - ((x >> 1) & 0x5555);
w = ((w >> 2) & 0x3333) + (w & 0x3333);
- w = ((w >> 4) & 0x0f0f) + (w & 0x0f0f);
- w = (w >> 8) + (w & 0x00ff);
+ w = (w >> 4) + w;
+ w = ((w >> 8) & 0x000f) + (w & 0x000f);
c += w;
+ if (GMP_LIMB_BITS > LOCAL_SHIFT_BITS)
+ x >>= LOCAL_SHIFT_BITS;
+ else
+ x = 0;
}
return c;
}
mp_bitcnt_t
-mpz_popcount (const mpz_t u)
+mpn_popcount (mp_srcptr p, mp_size_t n)
{
- mp_size_t un, i;
+ mp_size_t i;
mp_bitcnt_t c;
+ for (c = 0, i = 0; i < n; i++)
+ c += gmp_popcount_limb (p[i]);
+
+ return c;
+}
+
+mp_bitcnt_t
+mpz_popcount (const mpz_t u)
+{
+ mp_size_t un;
+
un = u->_mp_size;
if (un < 0)
return ~(mp_bitcnt_t) 0;
- for (c = 0, i = 0; i < un; i++)
- c += gmp_popcount_limb (u->_mp_d[i]);
-
- return c;
+ return mpn_popcount (u->_mp_d, un);
}
mp_bitcnt_t
@@ -3590,16 +4025,13 @@ mpz_hamdist (const mpz_t u, const mpz_t v)
if ( (un ^ vn) < 0)
return ~(mp_bitcnt_t) 0;
- if (un < 0)
+ comp = - (uc = vc = (un < 0));
+ if (uc)
{
assert (vn < 0);
un = -un;
vn = -vn;
- uc = vc = 1;
- comp = - (mp_limb_t) 1;
}
- else
- uc = vc = comp = 0;
up = u->_mp_d;
vp = v->_mp_d;
@@ -3635,10 +4067,8 @@ mpz_scan1 (const mpz_t u, mp_bitcnt_t starting_bit)
{
mp_ptr up;
mp_size_t us, un, i;
- mp_limb_t limb, ux, uc;
- unsigned cnt;
+ mp_limb_t limb, ux;
- up = u->_mp_d;
us = u->_mp_size;
un = GMP_ABS (us);
i = starting_bit / GMP_LIMB_BITS;
@@ -3648,36 +4078,24 @@ mpz_scan1 (const mpz_t u, mp_bitcnt_t starting_bit)
if (i >= un)
return (us >= 0 ? ~(mp_bitcnt_t) 0 : starting_bit);
- if (us < 0)
- {
- ux = GMP_LIMB_MAX;
- uc = mpn_zero_p (up, i);
- }
- else
- ux = uc = 0;
-
- limb = (ux ^ up[i]) + uc;
- uc = limb < uc;
-
- /* Mask to 0 all bits before starting_bit, thus ignoring them. */
- limb &= (GMP_LIMB_MAX << (starting_bit % GMP_LIMB_BITS));
+ up = u->_mp_d;
+ ux = 0;
+ limb = up[i];
- while (limb == 0)
+ if (starting_bit != 0)
{
- i++;
- if (i == un)
+ if (us < 0)
{
- assert (uc == 0);
- /* For the u > 0 case, this can happen only for the first
- masked limb. For the u < 0 case, it happens when the
- highest limbs of the absolute value are all ones. */
- return (us >= 0 ? ~(mp_bitcnt_t) 0 : un * GMP_LIMB_BITS);
+ ux = mpn_zero_p (up, i);
+ limb = ~ limb + ux;
+ ux = - (mp_limb_t) (limb >= ux);
}
- limb = (ux ^ up[i]) + uc;
- uc = limb < uc;
+
+ /* Mask to 0 all bits before starting_bit, thus ignoring them. */
+ limb &= GMP_LIMB_MAX << (starting_bit % GMP_LIMB_BITS);
}
- gmp_ctz (cnt, limb);
- return (mp_bitcnt_t) i * GMP_LIMB_BITS + cnt;
+
+ return mpn_common_scan (limb, i, up, un, ux);
}
mp_bitcnt_t
@@ -3685,46 +4103,28 @@ mpz_scan0 (const mpz_t u, mp_bitcnt_t starting_bit)
{
mp_ptr up;
mp_size_t us, un, i;
- mp_limb_t limb, ux, uc;
- unsigned cnt;
+ mp_limb_t limb, ux;
- up = u->_mp_d;
us = u->_mp_size;
+ ux = - (mp_limb_t) (us >= 0);
un = GMP_ABS (us);
i = starting_bit / GMP_LIMB_BITS;
/* When past end, there's an immediate 0 bit for u>=0, or no 0 bits for
u<0. Notice this test picks up all cases of u==0 too. */
if (i >= un)
- return (us >= 0 ? starting_bit : ~(mp_bitcnt_t) 0);
+ return (ux ? starting_bit : ~(mp_bitcnt_t) 0);
- if (us < 0)
- {
- ux = GMP_LIMB_MAX;
- uc = mpn_zero_p (up, i);
- }
- else
- ux = uc = 0;
+ up = u->_mp_d;
+ limb = up[i] ^ ux;
- limb = (ux ^ up[i]) + uc;
- uc = limb < uc;
+ if (ux == 0)
+ limb -= mpn_zero_p (up, i); /* limb = ~(~limb + zero_p) */
- /* Mask to 1 all bits before starting_bit, thus ignoring them. */
- limb |= ((mp_limb_t) 1 << (starting_bit % GMP_LIMB_BITS)) - 1;
+ /* Mask all bits before starting_bit, thus ignoring them. */
+ limb &= GMP_LIMB_MAX << (starting_bit % GMP_LIMB_BITS);
- while (limb == GMP_LIMB_MAX)
- {
- i++;
- if (i == un)
- {
- assert (uc == 0);
- return (us >= 0 ? un * GMP_LIMB_BITS : ~(mp_bitcnt_t) 0);
- }
- limb = (ux ^ up[i]) + uc;
- uc = limb < uc;
- }
- gmp_ctz (cnt, ~limb);
- return (mp_bitcnt_t) i * GMP_LIMB_BITS + cnt;
+ return mpn_common_scan (limb, i, up, un, ux);
}
@@ -3741,7 +4141,7 @@ mpz_sizeinbase (const mpz_t u, int base)
size_t ndigits;
assert (base >= 2);
- assert (base <= 36);
+ assert (base <= 62);
un = GMP_ABS (u->_mp_size);
if (un == 0)
@@ -3770,11 +4170,15 @@ mpz_sizeinbase (const mpz_t u, int base)
mpn_copyi (tp, up, un);
mpn_div_qr_1_invert (&bi, base);
- for (ndigits = 0; un > 0; ndigits++)
+ ndigits = 0;
+ do
{
+ ndigits++;
mpn_div_qr_1_preinv (tp, tp, un, &bi);
un -= (tp[un-1] == 0);
}
+ while (un > 0);
+
gmp_free (tp);
return ndigits;
}
@@ -3787,23 +4191,26 @@ mpz_get_str (char *sp, int base, const mpz_t u)
mp_size_t un;
size_t i, sn;
- if (base >= 0)
+ digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+ if (base > 1)
{
- digits = "0123456789abcdefghijklmnopqrstuvwxyz";
+ if (base <= 36)
+ digits = "0123456789abcdefghijklmnopqrstuvwxyz";
+ else if (base > 62)
+ return NULL;
}
+ else if (base >= -1)
+ base = 10;
else
{
base = -base;
- digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ if (base > 36)
+ return NULL;
}
- if (base <= 1)
- base = 10;
- if (base > 36)
- return NULL;
sn = 1 + mpz_sizeinbase (u, base);
if (!sp)
- sp = gmp_xalloc (1 + sn);
+ sp = (char *) gmp_xalloc (1 + sn);
un = GMP_ABS (u->_mp_size);
@@ -3847,41 +4254,34 @@ mpz_get_str (char *sp, int base, const mpz_t u)
int
mpz_set_str (mpz_t r, const char *sp, int base)
{
- unsigned bits;
+ unsigned bits, value_of_a;
mp_size_t rn, alloc;
mp_ptr rp;
- size_t sn;
size_t dn;
int sign;
unsigned char *dp;
- assert (base == 0 || (base >= 2 && base <= 36));
+ assert (base == 0 || (base >= 2 && base <= 62));
while (isspace( (unsigned char) *sp))
sp++;
- if (*sp == '-')
- {
- sign = 1;
- sp++;
- }
- else
- sign = 0;
+ sign = (*sp == '-');
+ sp += sign;
if (base == 0)
{
- if (*sp == '0')
+ if (sp[0] == '0')
{
- sp++;
- if (*sp == 'x' || *sp == 'X')
+ if (sp[1] == 'x' || sp[1] == 'X')
{
base = 16;
- sp++;
+ sp += 2;
}
- else if (*sp == 'b' || *sp == 'B')
+ else if (sp[1] == 'b' || sp[1] == 'B')
{
base = 2;
- sp++;
+ sp += 2;
}
else
base = 8;
@@ -3890,25 +4290,30 @@ mpz_set_str (mpz_t r, const char *sp, int base)
base = 10;
}
- sn = strlen (sp);
- dp = gmp_xalloc (sn + (sn == 0));
+ if (!*sp)
+ {
+ r->_mp_size = 0;
+ return -1;
+ }
+ dp = (unsigned char *) gmp_xalloc (strlen (sp));
+ value_of_a = (base > 36) ? 36 : 10;
for (dn = 0; *sp; sp++)
{
unsigned digit;
if (isspace ((unsigned char) *sp))
continue;
- if (*sp >= '0' && *sp <= '9')
+ else if (*sp >= '0' && *sp <= '9')
digit = *sp - '0';
else if (*sp >= 'a' && *sp <= 'z')
- digit = *sp - 'a' + 10;
+ digit = *sp - 'a' + value_of_a;
else if (*sp >= 'A' && *sp <= 'Z')
digit = *sp - 'A' + 10;
else
digit = base; /* fail */
- if (digit >= base)
+ if (digit >= (unsigned) base)
{
gmp_free (dp);
r->_mp_size = 0;
@@ -3918,11 +4323,17 @@ mpz_set_str (mpz_t r, const char *sp, int base)
dp[dn++] = digit;
}
+ if (!dn)
+ {
+ gmp_free (dp);
+ r->_mp_size = 0;
+ return -1;
+ }
bits = mpn_base_power_of_two_p (base);
if (bits > 0)
{
- alloc = (sn * bits + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+ alloc = (dn * bits + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
rp = MPZ_REALLOC (r, alloc);
rn = mpn_set_str_bits (rp, dp, dn, bits);
}
@@ -3930,9 +4341,12 @@ mpz_set_str (mpz_t r, const char *sp, int base)
{
struct mpn_base_info info;
mpn_get_base_info (&info, base);
- alloc = (sn + info.exp - 1) / info.exp;
+ alloc = (dn + info.exp - 1) / info.exp;
rp = MPZ_REALLOC (r, alloc);
rn = mpn_set_str_other (rp, dp, dn, base, &info);
+ /* Normalization, needed for all-zero input. */
+ assert (rn > 0);
+ rn -= rp[rn-1] == 0;
}
assert (rn <= alloc);
gmp_free (dp);
@@ -3966,14 +4380,9 @@ mpz_out_str (FILE *stream, int base, const mpz_t x)
static int
gmp_detect_endian (void)
{
- static const int i = 1;
+ static const int i = 2;
const unsigned char *p = (const unsigned char *) &i;
- if (*p == 1)
- /* Little endian */
- return -1;
- else
- /* Big endian */
- return 1;
+ return 1 - *p;
}
/* Import and export. Does not support nails. */
@@ -4036,29 +4445,22 @@ mpz_import (mpz_t r, size_t count, int order, size_t size, int endian,
}
}
}
- if (bytes > 0)
+ assert (i + (bytes > 0) == rn);
+ if (limb != 0)
rp[i++] = limb;
- assert (i == rn);
+ else
+ i = mpn_normalized_size (rp, i);
- r->_mp_size = mpn_normalized_size (rp, i);
+ r->_mp_size = i;
}
void *
mpz_export (void *r, size_t *countp, int order, size_t size, int endian,
size_t nails, const mpz_t u)
{
- unsigned char *p;
- ptrdiff_t word_step;
- size_t count, k;
+ size_t count;
mp_size_t un;
- /* The current (partial) limb. */
- mp_limb_t limb;
- /* The number of bytes left to to in this limb. */
- size_t bytes;
- /* The index where the limb was read. */
- mp_size_t i;
-
if (nails != 0)
gmp_die ("mpz_import: Nails not supported.");
@@ -4066,62 +4468,90 @@ mpz_export (void *r, size_t *countp, int order, size_t size, int endian,
assert (endian >= -1 && endian <= 1);
assert (size > 0 || u->_mp_size == 0);
- un = GMP_ABS (u->_mp_size);
- if (un == 0)
- {
- if (countp)
- *countp = 0;
- return r;
- }
+ un = u->_mp_size;
+ count = 0;
+ if (un != 0)
+ {
+ size_t k;
+ unsigned char *p;
+ ptrdiff_t word_step;
+ /* The current (partial) limb. */
+ mp_limb_t limb;
+ /* The number of bytes left to to in this limb. */
+ size_t bytes;
+ /* The index where the limb was read. */
+ mp_size_t i;
- /* Count bytes in top limb. */
- for (limb = u->_mp_d[un-1], k = 0; limb > 0; k++, limb >>= CHAR_BIT)
- ;
+ un = GMP_ABS (un);
- assert (k > 0);
+ /* Count bytes in top limb. */
+ limb = u->_mp_d[un-1];
+ assert (limb != 0);
- count = (k + (un-1) * sizeof (mp_limb_t) + size - 1) / size;
+ k = (GMP_LIMB_BITS <= CHAR_BIT);
+ if (!k)
+ {
+ do {
+ int LOCAL_CHAR_BIT = CHAR_BIT;
+ k++; limb >>= LOCAL_CHAR_BIT;
+ } while (limb != 0);
+ }
+ /* else limb = 0; */
- if (!r)
- r = gmp_xalloc (count * size);
+ count = (k + (un-1) * sizeof (mp_limb_t) + size - 1) / size;
- if (endian == 0)
- endian = gmp_detect_endian ();
+ if (!r)
+ r = gmp_xalloc (count * size);
- p = (unsigned char *) r;
+ if (endian == 0)
+ endian = gmp_detect_endian ();
- word_step = (order != endian) ? 2 * size : 0;
+ p = (unsigned char *) r;
- /* Process bytes from the least significant end, so point p at the
- least significant word. */
- if (order == 1)
- {
- p += size * (count - 1);
- word_step = - word_step;
- }
+ word_step = (order != endian) ? 2 * size : 0;
- /* And at least significant byte of that word. */
- if (endian == 1)
- p += (size - 1);
+ /* Process bytes from the least significant end, so point p at the
+ least significant word. */
+ if (order == 1)
+ {
+ p += size * (count - 1);
+ word_step = - word_step;
+ }
- for (bytes = 0, i = 0, k = 0; k < count; k++, p += word_step)
- {
- size_t j;
- for (j = 0; j < size; j++, p -= (ptrdiff_t) endian)
- {
- if (bytes == 0)
- {
- if (i < un)
- limb = u->_mp_d[i++];
- bytes = sizeof (mp_limb_t);
- }
- *p = limb;
- limb >>= CHAR_BIT;
- bytes--;
- }
- }
- assert (i == un);
- assert (k == count);
+ /* And at least significant byte of that word. */
+ if (endian == 1)
+ p += (size - 1);
+
+ for (bytes = 0, i = 0, k = 0; k < count; k++, p += word_step)
+ {
+ size_t j;
+ for (j = 0; j < size; ++j, p -= (ptrdiff_t) endian)
+ {
+ if (sizeof (mp_limb_t) == 1)
+ {
+ if (i < un)
+ *p = u->_mp_d[i++];
+ else
+ *p = 0;
+ }
+ else
+ {
+ int LOCAL_CHAR_BIT = CHAR_BIT;
+ if (bytes == 0)
+ {
+ if (i < un)
+ limb = u->_mp_d[i++];
+ bytes = sizeof (mp_limb_t);
+ }
+ *p = limb;
+ limb >>= LOCAL_CHAR_BIT;
+ bytes--;
+ }
+ }
+ }
+ assert (i == un);
+ assert (k == count);
+ }
if (countp)
*countp = count;
diff --git a/src/gmp/mini-gmp.h b/lib/gmp/mini-gmp.h
index 8c94ca2ed..45ec808c1 100644
--- a/src/gmp/mini-gmp.h
+++ b/lib/gmp/mini-gmp.h
@@ -1,6 +1,6 @@
/* mini-gmp, a minimalistic implementation of a GNU GMP subset.
-Copyright 2011, 2012, 2013 Free Software Foundation, Inc.
+Copyright 2011-2015, 2017, 2019 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -42,7 +42,11 @@ void mp_get_memory_functions (void *(**) (size_t),
void *(**) (void *, size_t, size_t),
void (**) (void *, size_t));
-typedef unsigned long mp_limb_t;
+#ifndef MINI_GMP_LIMB_TYPE
+#define MINI_GMP_LIMB_TYPE long
+#endif
+
+typedef unsigned MINI_GMP_LIMB_TYPE mp_limb_t;
typedef long mp_size_t;
typedef unsigned long mp_bitcnt_t;
@@ -64,10 +68,14 @@ typedef __mpz_struct mpz_t[1];
typedef __mpz_struct *mpz_ptr;
typedef const __mpz_struct *mpz_srcptr;
+extern const int mp_bits_per_limb;
+
void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);
void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);
+void mpn_zero (mp_ptr, mp_size_t);
int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t);
+int mpn_zero_p (mp_srcptr, mp_size_t);
mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
@@ -84,10 +92,20 @@ mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
+int mpn_perfect_square_p (mp_srcptr, mp_size_t);
+mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t);
+mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t);
+
+void mpn_com (mp_ptr, mp_srcptr, mp_size_t);
+mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);
+
+mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t);
+
mp_limb_t mpn_invert_3by2 (mp_limb_t, mp_limb_t);
#define mpn_invert_limb(x) mpn_invert_3by2 ((x), 0)
@@ -124,6 +142,10 @@ void mpz_mul_si (mpz_t, const mpz_t, long int);
void mpz_mul_ui (mpz_t, const mpz_t, unsigned long int);
void mpz_mul (mpz_t, const mpz_t, const mpz_t);
void mpz_mul_2exp (mpz_t, const mpz_t, mp_bitcnt_t);
+void mpz_addmul_ui (mpz_t, const mpz_t, unsigned long int);
+void mpz_addmul (mpz_t, const mpz_t, const mpz_t);
+void mpz_submul_ui (mpz_t, const mpz_t, unsigned long int);
+void mpz_submul (mpz_t, const mpz_t, const mpz_t);
void mpz_cdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t);
void mpz_fdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t);
@@ -147,6 +169,7 @@ void mpz_mod (mpz_t, const mpz_t, const mpz_t);
void mpz_divexact (mpz_t, const mpz_t, const mpz_t);
int mpz_divisible_p (const mpz_t, const mpz_t);
+int mpz_congruent_p (const mpz_t, const mpz_t, const mpz_t);
unsigned long mpz_cdiv_qr_ui (mpz_t, mpz_t, const mpz_t, unsigned long);
unsigned long mpz_fdiv_qr_ui (mpz_t, mpz_t, const mpz_t, unsigned long);
@@ -176,6 +199,7 @@ int mpz_invert (mpz_t, const mpz_t, const mpz_t);
void mpz_sqrtrem (mpz_t, mpz_t, const mpz_t);
void mpz_sqrt (mpz_t, const mpz_t);
+int mpz_perfect_square_p (const mpz_t);
void mpz_pow_ui (mpz_t, const mpz_t, unsigned long);
void mpz_ui_pow_ui (mpz_t, unsigned long, unsigned long);
@@ -186,8 +210,12 @@ void mpz_rootrem (mpz_t, mpz_t, const mpz_t, unsigned long);
int mpz_root (mpz_t, const mpz_t, unsigned long);
void mpz_fac_ui (mpz_t, unsigned long);
+void mpz_2fac_ui (mpz_t, unsigned long);
+void mpz_mfac_uiui (mpz_t, unsigned long, unsigned long);
void mpz_bin_uiui (mpz_t, unsigned long, unsigned long);
+int mpz_probab_prime_p (const mpz_t, int);
+
int mpz_tstbit (const mpz_t, mp_bitcnt_t);
void mpz_setbit (mpz_t, mp_bitcnt_t);
void mpz_clrbit (mpz_t, mp_bitcnt_t);
@@ -211,6 +239,15 @@ double mpz_get_d (const mpz_t);
size_t mpz_size (const mpz_t);
mp_limb_t mpz_getlimbn (const mpz_t, mp_size_t);
+void mpz_realloc2 (mpz_t, mp_bitcnt_t);
+mp_srcptr mpz_limbs_read (mpz_srcptr);
+mp_ptr mpz_limbs_modify (mpz_t, mp_size_t);
+mp_ptr mpz_limbs_write (mpz_t, mp_size_t);
+void mpz_limbs_finish (mpz_t, mp_size_t);
+mpz_srcptr mpz_roinit_n (mpz_t, mp_srcptr, mp_size_t);
+
+#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
+
void mpz_set_si (mpz_t, signed long int);
void mpz_set_ui (mpz_t, unsigned long int);
void mpz_set (mpz_t, const mpz_t);
diff --git a/lib/jsoncpp/CMakeLists.txt b/lib/jsoncpp/CMakeLists.txt
new file mode 100644
index 000000000..cdd1a7ead
--- /dev/null
+++ b/lib/jsoncpp/CMakeLists.txt
@@ -0,0 +1,3 @@
+add_library(jsoncpp STATIC jsoncpp.cpp)
+target_link_libraries(jsoncpp)
+
diff --git a/lib/jsoncpp/json/UPDATING b/lib/jsoncpp/json/UPDATING
new file mode 100644
index 000000000..0893244cf
--- /dev/null
+++ b/lib/jsoncpp/json/UPDATING
@@ -0,0 +1,7 @@
+#!/bin/sh
+cd ..
+git clone https://github.com/open-source-parsers/jsoncpp -b 1.9.4 --depth 1
+cd jsoncpp
+python amalgamate.py
+cp -R dist/json ../json
+cp dist/jsoncpp.cpp ..
diff --git a/lib/jsoncpp/json/json-forwards.h b/lib/jsoncpp/json/json-forwards.h
new file mode 100644
index 000000000..d3260c57c
--- /dev/null
+++ b/lib/jsoncpp/json/json-forwards.h
@@ -0,0 +1,447 @@
+/// Json-cpp amalgamated forward header (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json-forwards.h"
+/// This header provides forward declaration for all JsonCpp types.
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+ http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
+# define JSON_FORWARD_AMALGAMATED_H_INCLUDED
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+#define JSON_IS_AMALGAMATION
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+#ifndef JSON_VERSION_H_INCLUDED
+#define JSON_VERSION_H_INCLUDED
+
+// Note: version must be updated in three places when doing a release. This
+// annoying process ensures that amalgamate, CMake, and meson all report the
+// correct version.
+// 1. /meson.build
+// 2. /include/json/version.h
+// 3. /CMakeLists.txt
+// IMPORTANT: also update the SOVERSION!!
+
+#define JSONCPP_VERSION_STRING "1.9.4"
+#define JSONCPP_VERSION_MAJOR 1
+#define JSONCPP_VERSION_MINOR 9
+#define JSONCPP_VERSION_PATCH 3
+#define JSONCPP_VERSION_QUALIFIER
+#define JSONCPP_VERSION_HEXA \
+ ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | \
+ (JSONCPP_VERSION_PATCH << 8))
+
+#ifdef JSONCPP_USING_SECURE_MEMORY
+#undef JSONCPP_USING_SECURE_MEMORY
+#endif
+#define JSONCPP_USING_SECURE_MEMORY 0
+// If non-zero, the library zeroes any memory that it has allocated before
+// it frees its memory.
+
+#endif // JSON_VERSION_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_ALLOCATOR_H_INCLUDED
+#define JSON_ALLOCATOR_H_INCLUDED
+
+#include <cstring>
+#include <memory>
+
+#pragma pack(push, 8)
+
+namespace Json {
+template <typename T> class SecureAllocator {
+public:
+ // Type definitions
+ using value_type = T;
+ using pointer = T*;
+ using const_pointer = const T*;
+ using reference = T&;
+ using const_reference = const T&;
+ using size_type = std::size_t;
+ using difference_type = std::ptrdiff_t;
+
+ /**
+ * Allocate memory for N items using the standard allocator.
+ */
+ pointer allocate(size_type n) {
+ // allocate using "global operator new"
+ return static_cast<pointer>(::operator new(n * sizeof(T)));
+ }
+
+ /**
+ * Release memory which was allocated for N items at pointer P.
+ *
+ * The memory block is filled with zeroes before being released.
+ * The pointer argument is tagged as "volatile" to prevent the
+ * compiler optimizing out this critical step.
+ */
+ void deallocate(volatile pointer p, size_type n) {
+ std::memset(p, 0, n * sizeof(T));
+ // free using "global operator delete"
+ ::operator delete(p);
+ }
+
+ /**
+ * Construct an item in-place at pointer P.
+ */
+ template <typename... Args> void construct(pointer p, Args&&... args) {
+ // construct using "placement new" and "perfect forwarding"
+ ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
+ }
+
+ size_type max_size() const { return size_t(-1) / sizeof(T); }
+
+ pointer address(reference x) const { return std::addressof(x); }
+
+ const_pointer address(const_reference x) const { return std::addressof(x); }
+
+ /**
+ * Destroy an item in-place at pointer P.
+ */
+ void destroy(pointer p) {
+ // destroy using "explicit destructor"
+ p->~T();
+ }
+
+ // Boilerplate
+ SecureAllocator() {}
+ template <typename U> SecureAllocator(const SecureAllocator<U>&) {}
+ template <typename U> struct rebind { using other = SecureAllocator<U>; };
+};
+
+template <typename T, typename U>
+bool operator==(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+ return true;
+}
+
+template <typename T, typename U>
+bool operator!=(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+ return false;
+}
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // JSON_ALLOCATOR_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_CONFIG_H_INCLUDED
+#define JSON_CONFIG_H_INCLUDED
+#include <cstddef>
+#include <cstdint>
+#include <istream>
+#include <memory>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+// If non-zero, the library uses exceptions to report bad input instead of C
+// assertion macros. The default is to use exceptions.
+#ifndef JSON_USE_EXCEPTION
+#define JSON_USE_EXCEPTION 1
+#endif
+
+// Temporary, tracked for removal with issue #982.
+#ifndef JSON_USE_NULLREF
+#define JSON_USE_NULLREF 1
+#endif
+
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+/// Remarks: it is automatically defined in the generated amalgamated header.
+// #define JSON_IS_AMALGAMATION
+
+// Export macros for DLL visibility
+#if defined(JSON_DLL_BUILD)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllexport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#elif defined(__GNUC__) || defined(__clang__)
+#define JSON_API __attribute__((visibility("default")))
+#endif // if defined(_MSC_VER)
+
+#elif defined(JSON_DLL)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllimport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#endif // ifdef JSON_DLL_BUILD
+
+#if !defined(JSON_API)
+#define JSON_API
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1800
+#error \
+ "ERROR: Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1900
+// As recommended at
+// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
+extern JSON_API int msvc_pre1900_c99_snprintf(char* outBuf, size_t size,
+ const char* format, ...);
+#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
+#else
+#define jsoncpp_snprintf std::snprintf
+#endif
+
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
+// integer
+// Storages, and 64 bits integer support is disabled.
+// #define JSON_NO_INT64 1
+
+// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
+// C++11 should be used directly in JSONCPP.
+#define JSONCPP_OVERRIDE override
+
+#ifdef __clang__
+#if __has_extension(attribute_deprecated_with_message)
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#endif
+#elif defined(__GNUC__) // not clang (gcc comes later since clang emulates gcc)
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
+#endif // GNUC version
+#elif defined(_MSC_VER) // MSVC (after clang because clang on Windows emulates
+ // MSVC)
+#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
+#endif // __clang__ || __GNUC__ || _MSC_VER
+
+#if !defined(JSONCPP_DEPRECATED)
+#define JSONCPP_DEPRECATED(message)
+#endif // if !defined(JSONCPP_DEPRECATED)
+
+#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 6))
+#define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "allocator.h"
+#include "version.h"
+
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+using Int = int;
+using UInt = unsigned int;
+#if defined(JSON_NO_INT64)
+using LargestInt = int;
+using LargestUInt = unsigned int;
+#undef JSON_HAS_INT64
+#else // if defined(JSON_NO_INT64)
+// For Microsoft Visual use specific types as long long is not supported
+#if defined(_MSC_VER) // Microsoft Visual Studio
+using Int64 = __int64;
+using UInt64 = unsigned __int64;
+#else // if defined(_MSC_VER) // Other platforms, use long long
+using Int64 = int64_t;
+using UInt64 = uint64_t;
+#endif // if defined(_MSC_VER)
+using LargestInt = Int64;
+using LargestUInt = UInt64;
+#define JSON_HAS_INT64
+#endif // if defined(JSON_NO_INT64)
+
+template <typename T>
+using Allocator =
+ typename std::conditional<JSONCPP_USING_SECURE_MEMORY, SecureAllocator<T>,
+ std::allocator<T>>::type;
+using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
+using IStringStream =
+ std::basic_istringstream<String::value_type, String::traits_type,
+ String::allocator_type>;
+using OStringStream =
+ std::basic_ostringstream<String::value_type, String::traits_type,
+ String::allocator_type>;
+using IStream = std::istream;
+using OStream = std::ostream;
+} // namespace Json
+
+// Legacy names (formerly macros).
+using JSONCPP_STRING = Json::String;
+using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
+using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
+using JSONCPP_ISTREAM = Json::IStream;
+using JSONCPP_OSTREAM = Json::OStream;
+
+#endif // JSON_CONFIG_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FORWARDS_H_INCLUDED
+#define JSON_FORWARDS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+// writer.h
+class StreamWriter;
+class StreamWriterBuilder;
+class Writer;
+class FastWriter;
+class StyledWriter;
+class StyledStreamWriter;
+
+// reader.h
+class Reader;
+class CharReader;
+class CharReaderBuilder;
+
+// json_features.h
+class Features;
+
+// value.h
+using ArrayIndex = unsigned int;
+class StaticString;
+class Path;
+class PathArgument;
+class Value;
+class ValueIteratorBase;
+class ValueIterator;
+class ValueConstIterator;
+
+} // namespace Json
+
+#endif // JSON_FORWARDS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#endif //ifndef JSON_FORWARD_AMALGAMATED_H_INCLUDED
diff --git a/lib/jsoncpp/json/json.h b/lib/jsoncpp/json/json.h
new file mode 100644
index 000000000..3f4813a95
--- /dev/null
+++ b/lib/jsoncpp/json/json.h
@@ -0,0 +1,2343 @@
+/// Json-cpp amalgamated header (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json.h"
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+ http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#ifndef JSON_AMALGAMATED_H_INCLUDED
+# define JSON_AMALGAMATED_H_INCLUDED
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+#define JSON_IS_AMALGAMATION
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+#ifndef JSON_VERSION_H_INCLUDED
+#define JSON_VERSION_H_INCLUDED
+
+// Note: version must be updated in three places when doing a release. This
+// annoying process ensures that amalgamate, CMake, and meson all report the
+// correct version.
+// 1. /meson.build
+// 2. /include/json/version.h
+// 3. /CMakeLists.txt
+// IMPORTANT: also update the SOVERSION!!
+
+#define JSONCPP_VERSION_STRING "1.9.4"
+#define JSONCPP_VERSION_MAJOR 1
+#define JSONCPP_VERSION_MINOR 9
+#define JSONCPP_VERSION_PATCH 3
+#define JSONCPP_VERSION_QUALIFIER
+#define JSONCPP_VERSION_HEXA \
+ ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | \
+ (JSONCPP_VERSION_PATCH << 8))
+
+#ifdef JSONCPP_USING_SECURE_MEMORY
+#undef JSONCPP_USING_SECURE_MEMORY
+#endif
+#define JSONCPP_USING_SECURE_MEMORY 0
+// If non-zero, the library zeroes any memory that it has allocated before
+// it frees its memory.
+
+#endif // JSON_VERSION_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_ALLOCATOR_H_INCLUDED
+#define JSON_ALLOCATOR_H_INCLUDED
+
+#include <cstring>
+#include <memory>
+
+#pragma pack(push, 8)
+
+namespace Json {
+template <typename T> class SecureAllocator {
+public:
+ // Type definitions
+ using value_type = T;
+ using pointer = T*;
+ using const_pointer = const T*;
+ using reference = T&;
+ using const_reference = const T&;
+ using size_type = std::size_t;
+ using difference_type = std::ptrdiff_t;
+
+ /**
+ * Allocate memory for N items using the standard allocator.
+ */
+ pointer allocate(size_type n) {
+ // allocate using "global operator new"
+ return static_cast<pointer>(::operator new(n * sizeof(T)));
+ }
+
+ /**
+ * Release memory which was allocated for N items at pointer P.
+ *
+ * The memory block is filled with zeroes before being released.
+ * The pointer argument is tagged as "volatile" to prevent the
+ * compiler optimizing out this critical step.
+ */
+ void deallocate(volatile pointer p, size_type n) {
+ std::memset(p, 0, n * sizeof(T));
+ // free using "global operator delete"
+ ::operator delete(p);
+ }
+
+ /**
+ * Construct an item in-place at pointer P.
+ */
+ template <typename... Args> void construct(pointer p, Args&&... args) {
+ // construct using "placement new" and "perfect forwarding"
+ ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
+ }
+
+ size_type max_size() const { return size_t(-1) / sizeof(T); }
+
+ pointer address(reference x) const { return std::addressof(x); }
+
+ const_pointer address(const_reference x) const { return std::addressof(x); }
+
+ /**
+ * Destroy an item in-place at pointer P.
+ */
+ void destroy(pointer p) {
+ // destroy using "explicit destructor"
+ p->~T();
+ }
+
+ // Boilerplate
+ SecureAllocator() {}
+ template <typename U> SecureAllocator(const SecureAllocator<U>&) {}
+ template <typename U> struct rebind { using other = SecureAllocator<U>; };
+};
+
+template <typename T, typename U>
+bool operator==(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+ return true;
+}
+
+template <typename T, typename U>
+bool operator!=(const SecureAllocator<T>&, const SecureAllocator<U>&) {
+ return false;
+}
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // JSON_ALLOCATOR_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/allocator.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_CONFIG_H_INCLUDED
+#define JSON_CONFIG_H_INCLUDED
+#include <cstddef>
+#include <cstdint>
+#include <istream>
+#include <memory>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <type_traits>
+
+// If non-zero, the library uses exceptions to report bad input instead of C
+// assertion macros. The default is to use exceptions.
+#ifndef JSON_USE_EXCEPTION
+#define JSON_USE_EXCEPTION 1
+#endif
+
+// Temporary, tracked for removal with issue #982.
+#ifndef JSON_USE_NULLREF
+#define JSON_USE_NULLREF 1
+#endif
+
+/// If defined, indicates that the source file is amalgamated
+/// to prevent private header inclusion.
+/// Remarks: it is automatically defined in the generated amalgamated header.
+// #define JSON_IS_AMALGAMATION
+
+// Export macros for DLL visibility
+#if defined(JSON_DLL_BUILD)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllexport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#elif defined(__GNUC__) || defined(__clang__)
+#define JSON_API __attribute__((visibility("default")))
+#endif // if defined(_MSC_VER)
+
+#elif defined(JSON_DLL)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllimport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#endif // ifdef JSON_DLL_BUILD
+
+#if !defined(JSON_API)
+#define JSON_API
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1800
+#error \
+ "ERROR: Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER < 1900
+// As recommended at
+// https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
+extern JSON_API int msvc_pre1900_c99_snprintf(char* outBuf, size_t size,
+ const char* format, ...);
+#define jsoncpp_snprintf msvc_pre1900_c99_snprintf
+#else
+#define jsoncpp_snprintf std::snprintf
+#endif
+
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
+// integer
+// Storages, and 64 bits integer support is disabled.
+// #define JSON_NO_INT64 1
+
+// JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
+// C++11 should be used directly in JSONCPP.
+#define JSONCPP_OVERRIDE override
+
+#ifdef __clang__
+#if __has_extension(attribute_deprecated_with_message)
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#endif
+#elif defined(__GNUC__) // not clang (gcc comes later since clang emulates gcc)
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+#define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
+#elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
+#endif // GNUC version
+#elif defined(_MSC_VER) // MSVC (after clang because clang on Windows emulates
+ // MSVC)
+#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
+#endif // __clang__ || __GNUC__ || _MSC_VER
+
+#if !defined(JSONCPP_DEPRECATED)
+#define JSONCPP_DEPRECATED(message)
+#endif // if !defined(JSONCPP_DEPRECATED)
+
+#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 6))
+#define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "allocator.h"
+#include "version.h"
+
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+using Int = int;
+using UInt = unsigned int;
+#if defined(JSON_NO_INT64)
+using LargestInt = int;
+using LargestUInt = unsigned int;
+#undef JSON_HAS_INT64
+#else // if defined(JSON_NO_INT64)
+// For Microsoft Visual use specific types as long long is not supported
+#if defined(_MSC_VER) // Microsoft Visual Studio
+using Int64 = __int64;
+using UInt64 = unsigned __int64;
+#else // if defined(_MSC_VER) // Other platforms, use long long
+using Int64 = int64_t;
+using UInt64 = uint64_t;
+#endif // if defined(_MSC_VER)
+using LargestInt = Int64;
+using LargestUInt = UInt64;
+#define JSON_HAS_INT64
+#endif // if defined(JSON_NO_INT64)
+
+template <typename T>
+using Allocator =
+ typename std::conditional<JSONCPP_USING_SECURE_MEMORY, SecureAllocator<T>,
+ std::allocator<T>>::type;
+using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
+using IStringStream =
+ std::basic_istringstream<String::value_type, String::traits_type,
+ String::allocator_type>;
+using OStringStream =
+ std::basic_ostringstream<String::value_type, String::traits_type,
+ String::allocator_type>;
+using IStream = std::istream;
+using OStream = std::ostream;
+} // namespace Json
+
+// Legacy names (formerly macros).
+using JSONCPP_STRING = Json::String;
+using JSONCPP_ISTRINGSTREAM = Json::IStringStream;
+using JSONCPP_OSTRINGSTREAM = Json::OStringStream;
+using JSONCPP_ISTREAM = Json::IStream;
+using JSONCPP_OSTREAM = Json::OStream;
+
+#endif // JSON_CONFIG_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FORWARDS_H_INCLUDED
+#define JSON_FORWARDS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+// writer.h
+class StreamWriter;
+class StreamWriterBuilder;
+class Writer;
+class FastWriter;
+class StyledWriter;
+class StyledStreamWriter;
+
+// reader.h
+class Reader;
+class CharReader;
+class CharReaderBuilder;
+
+// json_features.h
+class Features;
+
+// value.h
+using ArrayIndex = unsigned int;
+class StaticString;
+class Path;
+class PathArgument;
+class Value;
+class ValueIteratorBase;
+class ValueIterator;
+class ValueConstIterator;
+
+} // namespace Json
+
+#endif // JSON_FORWARDS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/json_features.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FEATURES_H_INCLUDED
+#define JSON_FEATURES_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+/** \brief Configuration passed to reader and writer.
+ * This configuration object can be used to force the Reader or Writer
+ * to behave in a standard conforming way.
+ */
+class JSON_API Features {
+public:
+ /** \brief A configuration that allows all features and assumes all strings
+ * are UTF-8.
+ * - C & C++ comments are allowed
+ * - Root object can be any JSON value
+ * - Assumes Value strings are encoded in UTF-8
+ */
+ static Features all();
+
+ /** \brief A configuration that is strictly compatible with the JSON
+ * specification.
+ * - Comments are forbidden.
+ * - Root object must be either an array or an object value.
+ * - Assumes Value strings are encoded in UTF-8
+ */
+ static Features strictMode();
+
+ /** \brief Initialize the configuration like JsonConfig::allFeatures;
+ */
+ Features();
+
+ /// \c true if comments are allowed. Default: \c true.
+ bool allowComments_{true};
+
+ /// \c true if root must be either an array or an object value. Default: \c
+ /// false.
+ bool strictRoot_{false};
+
+ /// \c true if dropped null placeholders are allowed. Default: \c false.
+ bool allowDroppedNullPlaceholders_{false};
+
+ /// \c true if numeric object key are allowed. Default: \c false.
+ bool allowNumericKeys_{false};
+};
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // JSON_FEATURES_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/json_features.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/value.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_H_INCLUDED
+#define JSON_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+// Conditional NORETURN attribute on the throw functions would:
+// a) suppress false positives from static code analysis
+// b) possibly improve optimization opportunities.
+#if !defined(JSONCPP_NORETURN)
+#if defined(_MSC_VER) && _MSC_VER == 1800
+#define JSONCPP_NORETURN __declspec(noreturn)
+#else
+#define JSONCPP_NORETURN [[noreturn]]
+#endif
+#endif
+
+// Support for '= delete' with template declarations was a late addition
+// to the c++11 standard and is rejected by clang 3.8 and Apple clang 8.2
+// even though these declare themselves to be c++11 compilers.
+#if !defined(JSONCPP_TEMPLATE_DELETE)
+#if defined(__clang__) && defined(__apple_build_version__)
+#if __apple_build_version__ <= 8000042
+#define JSONCPP_TEMPLATE_DELETE
+#endif
+#elif defined(__clang__)
+#if __clang_major__ == 3 && __clang_minor__ <= 8
+#define JSONCPP_TEMPLATE_DELETE
+#endif
+#endif
+#if !defined(JSONCPP_TEMPLATE_DELETE)
+#define JSONCPP_TEMPLATE_DELETE = delete
+#endif
+#endif
+
+#include <array>
+#include <exception>
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+/** \brief JSON (JavaScript Object Notation).
+ */
+namespace Json {
+
+#if JSON_USE_EXCEPTION
+/** Base class for all exceptions we throw.
+ *
+ * We use nothing but these internally. Of course, STL can throw others.
+ */
+class JSON_API Exception : public std::exception {
+public:
+ Exception(String msg);
+ ~Exception() noexcept override;
+ char const* what() const noexcept override;
+
+protected:
+ String msg_;
+};
+
+/** Exceptions which the user cannot easily avoid.
+ *
+ * E.g. out-of-memory (when we use malloc), stack-overflow, malicious input
+ *
+ * \remark derived from Json::Exception
+ */
+class JSON_API RuntimeError : public Exception {
+public:
+ RuntimeError(String const& msg);
+};
+
+/** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros.
+ *
+ * These are precondition-violations (user bugs) and internal errors (our bugs).
+ *
+ * \remark derived from Json::Exception
+ */
+class JSON_API LogicError : public Exception {
+public:
+ LogicError(String const& msg);
+};
+#endif
+
+/// used internally
+JSONCPP_NORETURN void throwRuntimeError(String const& msg);
+/// used internally
+JSONCPP_NORETURN void throwLogicError(String const& msg);
+
+/** \brief Type of the value held by a Value object.
+ */
+enum ValueType {
+ nullValue = 0, ///< 'null' value
+ intValue, ///< signed integer value
+ uintValue, ///< unsigned integer value
+ realValue, ///< double value
+ stringValue, ///< UTF-8 string value
+ booleanValue, ///< bool value
+ arrayValue, ///< array value (ordered list)
+ objectValue ///< object value (collection of name/value pairs).
+};
+
+enum CommentPlacement {
+ commentBefore = 0, ///< a comment placed on the line before a value
+ commentAfterOnSameLine, ///< a comment just after a value on the same line
+ commentAfter, ///< a comment on the line after a value (only make sense for
+ /// root value)
+ numberOfCommentPlacement
+};
+
+/** \brief Type of precision for formatting of real values.
+ */
+enum PrecisionType {
+ significantDigits = 0, ///< we set max number of significant digits in string
+ decimalPlaces ///< we set max number of digits after "." in string
+};
+
+/** \brief Lightweight wrapper to tag static string.
+ *
+ * Value constructor and objectValue member assignment takes advantage of the
+ * StaticString and avoid the cost of string duplication when storing the
+ * string or the member name.
+ *
+ * Example of usage:
+ * \code
+ * Json::Value aValue( StaticString("some text") );
+ * Json::Value object;
+ * static const StaticString code("code");
+ * object[code] = 1234;
+ * \endcode
+ */
+class JSON_API StaticString {
+public:
+ explicit StaticString(const char* czstring) : c_str_(czstring) {}
+
+ operator const char*() const { return c_str_; }
+
+ const char* c_str() const { return c_str_; }
+
+private:
+ const char* c_str_;
+};
+
+/** \brief Represents a <a HREF="http://www.json.org">JSON</a> value.
+ *
+ * This class is a discriminated union wrapper that can represents a:
+ * - signed integer [range: Value::minInt - Value::maxInt]
+ * - unsigned integer (range: 0 - Value::maxUInt)
+ * - double
+ * - UTF-8 string
+ * - boolean
+ * - 'null'
+ * - an ordered list of Value
+ * - collection of name/value pairs (javascript object)
+ *
+ * The type of the held value is represented by a #ValueType and
+ * can be obtained using type().
+ *
+ * Values of an #objectValue or #arrayValue can be accessed using operator[]()
+ * methods.
+ * Non-const methods will automatically create the a #nullValue element
+ * if it does not exist.
+ * The sequence of an #arrayValue will be automatically resized and initialized
+ * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue.
+ *
+ * The get() methods can be used to obtain default value in the case the
+ * required element does not exist.
+ *
+ * It is possible to iterate over the list of member keys of an object using
+ * the getMemberNames() method.
+ *
+ * \note #Value string-length fit in size_t, but keys must be < 2^30.
+ * (The reason is an implementation detail.) A #CharReader will raise an
+ * exception if a bound is exceeded to avoid security holes in your app,
+ * but the Value API does *not* check bounds. That is the responsibility
+ * of the caller.
+ */
+class JSON_API Value {
+ friend class ValueIteratorBase;
+
+public:
+ using Members = std::vector<String>;
+ using iterator = ValueIterator;
+ using const_iterator = ValueConstIterator;
+ using UInt = Json::UInt;
+ using Int = Json::Int;
+#if defined(JSON_HAS_INT64)
+ using UInt64 = Json::UInt64;
+ using Int64 = Json::Int64;
+#endif // defined(JSON_HAS_INT64)
+ using LargestInt = Json::LargestInt;
+ using LargestUInt = Json::LargestUInt;
+ using ArrayIndex = Json::ArrayIndex;
+
+ // Required for boost integration, e. g. BOOST_TEST
+ using value_type = std::string;
+
+#if JSON_USE_NULLREF
+ // Binary compatibility kludges, do not use.
+ static const Value& null;
+ static const Value& nullRef;
+#endif
+
+ // null and nullRef are deprecated, use this instead.
+ static Value const& nullSingleton();
+
+ /// Minimum signed integer value that can be stored in a Json::Value.
+ static constexpr LargestInt minLargestInt =
+ LargestInt(~(LargestUInt(-1) / 2));
+ /// Maximum signed integer value that can be stored in a Json::Value.
+ static constexpr LargestInt maxLargestInt = LargestInt(LargestUInt(-1) / 2);
+ /// Maximum unsigned integer value that can be stored in a Json::Value.
+ static constexpr LargestUInt maxLargestUInt = LargestUInt(-1);
+
+ /// Minimum signed int value that can be stored in a Json::Value.
+ static constexpr Int minInt = Int(~(UInt(-1) / 2));
+ /// Maximum signed int value that can be stored in a Json::Value.
+ static constexpr Int maxInt = Int(UInt(-1) / 2);
+ /// Maximum unsigned int value that can be stored in a Json::Value.
+ static constexpr UInt maxUInt = UInt(-1);
+
+#if defined(JSON_HAS_INT64)
+ /// Minimum signed 64 bits int value that can be stored in a Json::Value.
+ static constexpr Int64 minInt64 = Int64(~(UInt64(-1) / 2));
+ /// Maximum signed 64 bits int value that can be stored in a Json::Value.
+ static constexpr Int64 maxInt64 = Int64(UInt64(-1) / 2);
+ /// Maximum unsigned 64 bits int value that can be stored in a Json::Value.
+ static constexpr UInt64 maxUInt64 = UInt64(-1);
+#endif // defined(JSON_HAS_INT64)
+ /// Default precision for real value for string representation.
+ static constexpr UInt defaultRealPrecision = 17;
+ // The constant is hard-coded because some compiler have trouble
+ // converting Value::maxUInt64 to a double correctly (AIX/xlC).
+ // Assumes that UInt64 is a 64 bits integer.
+ static constexpr double maxUInt64AsDouble = 18446744073709551615.0;
+// Workaround for bug in the NVIDIAs CUDA 9.1 nvcc compiler
+// when using gcc and clang backend compilers. CZString
+// cannot be defined as private. See issue #486
+#ifdef __NVCC__
+public:
+#else
+private:
+#endif
+#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
+ class CZString {
+ public:
+ enum DuplicationPolicy { noDuplication = 0, duplicate, duplicateOnCopy };
+ CZString(ArrayIndex index);
+ CZString(char const* str, unsigned length, DuplicationPolicy allocate);
+ CZString(CZString const& other);
+ CZString(CZString&& other);
+ ~CZString();
+ CZString& operator=(const CZString& other);
+ CZString& operator=(CZString&& other);
+
+ bool operator<(CZString const& other) const;
+ bool operator==(CZString const& other) const;
+ ArrayIndex index() const;
+ // const char* c_str() const; ///< \deprecated
+ char const* data() const;
+ unsigned length() const;
+ bool isStaticString() const;
+
+ private:
+ void swap(CZString& other);
+
+ struct StringStorage {
+ unsigned policy_ : 2;
+ unsigned length_ : 30; // 1GB max
+ };
+
+ char const* cstr_; // actually, a prefixed string, unless policy is noDup
+ union {
+ ArrayIndex index_;
+ StringStorage storage_;
+ };
+ };
+
+public:
+ typedef std::map<CZString, Value> ObjectValues;
+#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
+
+public:
+ /**
+ * \brief Create a default Value of the given type.
+ *
+ * This is a very useful constructor.
+ * To create an empty array, pass arrayValue.
+ * To create an empty object, pass objectValue.
+ * Another Value can then be set to this one by assignment.
+ * This is useful since clear() and resize() will not alter types.
+ *
+ * Examples:
+ * \code
+ * Json::Value null_value; // null
+ * Json::Value arr_value(Json::arrayValue); // []
+ * Json::Value obj_value(Json::objectValue); // {}
+ * \endcode
+ */
+ Value(ValueType type = nullValue);
+ Value(Int value);
+ Value(UInt value);
+#if defined(JSON_HAS_INT64)
+ Value(Int64 value);
+ Value(UInt64 value);
+#endif // if defined(JSON_HAS_INT64)
+ Value(double value);
+ Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.)
+ Value(const char* begin, const char* end); ///< Copy all, incl zeroes.
+ /**
+ * \brief Constructs a value from a static string.
+ *
+ * Like other value string constructor but do not duplicate the string for
+ * internal storage. The given string must remain alive after the call to
+ * this constructor.
+ *
+ * \note This works only for null-terminated strings. (We cannot change the
+ * size of this class, so we have nowhere to store the length, which might be
+ * computed later for various operations.)
+ *
+ * Example of usage:
+ * \code
+ * static StaticString foo("some text");
+ * Json::Value aValue(foo);
+ * \endcode
+ */
+ Value(const StaticString& value);
+ Value(const String& value);
+ Value(bool value);
+ Value(std::nullptr_t ptr) = delete;
+ Value(const Value& other);
+ Value(Value&& other);
+ ~Value();
+
+ /// \note Overwrite existing comments. To preserve comments, use
+ /// #swapPayload().
+ Value& operator=(const Value& other);
+ Value& operator=(Value&& other);
+
+ /// Swap everything.
+ void swap(Value& other);
+ /// Swap values but leave comments and source offsets in place.
+ void swapPayload(Value& other);
+
+ /// copy everything.
+ void copy(const Value& other);
+ /// copy values but leave comments and source offsets in place.
+ void copyPayload(const Value& other);
+
+ ValueType type() const;
+
+ /// Compare payload only, not comments etc.
+ bool operator<(const Value& other) const;
+ bool operator<=(const Value& other) const;
+ bool operator>=(const Value& other) const;
+ bool operator>(const Value& other) const;
+ bool operator==(const Value& other) const;
+ bool operator!=(const Value& other) const;
+ int compare(const Value& other) const;
+
+ const char* asCString() const; ///< Embedded zeroes could cause you trouble!
+#if JSONCPP_USING_SECURE_MEMORY
+ unsigned getCStringLength() const; // Allows you to understand the length of
+ // the CString
+#endif
+ String asString() const; ///< Embedded zeroes are possible.
+ /** Get raw char* of string-value.
+ * \return false if !string. (Seg-fault if str or end are NULL.)
+ */
+ bool getString(char const** begin, char const** end) const;
+ Int asInt() const;
+ UInt asUInt() const;
+#if defined(JSON_HAS_INT64)
+ Int64 asInt64() const;
+ UInt64 asUInt64() const;
+#endif // if defined(JSON_HAS_INT64)
+ LargestInt asLargestInt() const;
+ LargestUInt asLargestUInt() const;
+ float asFloat() const;
+ double asDouble() const;
+ bool asBool() const;
+
+ bool isNull() const;
+ bool isBool() const;
+ bool isInt() const;
+ bool isInt64() const;
+ bool isUInt() const;
+ bool isUInt64() const;
+ bool isIntegral() const;
+ bool isDouble() const;
+ bool isNumeric() const;
+ bool isString() const;
+ bool isArray() const;
+ bool isObject() const;
+
+ /// The `as<T>` and `is<T>` member function templates and specializations.
+ template <typename T> T as() const JSONCPP_TEMPLATE_DELETE;
+ template <typename T> bool is() const JSONCPP_TEMPLATE_DELETE;
+
+ bool isConvertibleTo(ValueType other) const;
+
+ /// Number of values in array or object
+ ArrayIndex size() const;
+
+ /// \brief Return true if empty array, empty object, or null;
+ /// otherwise, false.
+ bool empty() const;
+
+ /// Return !isNull()
+ explicit operator bool() const;
+
+ /// Remove all object members and array elements.
+ /// \pre type() is arrayValue, objectValue, or nullValue
+ /// \post type() is unchanged
+ void clear();
+
+ /// Resize the array to newSize elements.
+ /// New elements are initialized to null.
+ /// May only be called on nullValue or arrayValue.
+ /// \pre type() is arrayValue or nullValue
+ /// \post type() is arrayValue
+ void resize(ArrayIndex newSize);
+
+ //@{
+ /// Access an array element (zero based index). If the array contains less
+ /// than index element, then null value are inserted in the array so that
+ /// its size is index+1.
+ /// (You may need to say 'value[0u]' to get your compiler to distinguish
+ /// this from the operator[] which takes a string.)
+ Value& operator[](ArrayIndex index);
+ Value& operator[](int index);
+ //@}
+
+ //@{
+ /// Access an array element (zero based index).
+ /// (You may need to say 'value[0u]' to get your compiler to distinguish
+ /// this from the operator[] which takes a string.)
+ const Value& operator[](ArrayIndex index) const;
+ const Value& operator[](int index) const;
+ //@}
+
+ /// If the array contains at least index+1 elements, returns the element
+ /// value, otherwise returns defaultValue.
+ Value get(ArrayIndex index, const Value& defaultValue) const;
+ /// Return true if index < size().
+ bool isValidIndex(ArrayIndex index) const;
+ /// \brief Append value to array at the end.
+ ///
+ /// Equivalent to jsonvalue[jsonvalue.size()] = value;
+ Value& append(const Value& value);
+ Value& append(Value&& value);
+
+ /// \brief Insert value in array at specific index
+ bool insert(ArrayIndex index, const Value& newValue);
+ bool insert(ArrayIndex index, Value&& newValue);
+
+ /// Access an object value by name, create a null member if it does not exist.
+ /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
+ /// Exceeding that will cause an exception.
+ Value& operator[](const char* key);
+ /// Access an object value by name, returns null if there is no member with
+ /// that name.
+ const Value& operator[](const char* key) const;
+ /// Access an object value by name, create a null member if it does not exist.
+ /// \param key may contain embedded nulls.
+ Value& operator[](const String& key);
+ /// Access an object value by name, returns null if there is no member with
+ /// that name.
+ /// \param key may contain embedded nulls.
+ const Value& operator[](const String& key) const;
+ /** \brief Access an object value by name, create a null member if it does not
+ * exist.
+ *
+ * If the object has no entry for that name, then the member name used to
+ * store the new entry is not duplicated.
+ * Example of use:
+ * \code
+ * Json::Value object;
+ * static const StaticString code("code");
+ * object[code] = 1234;
+ * \endcode
+ */
+ Value& operator[](const StaticString& key);
+ /// Return the member named key if it exist, defaultValue otherwise.
+ /// \note deep copy
+ Value get(const char* key, const Value& defaultValue) const;
+ /// Return the member named key if it exist, defaultValue otherwise.
+ /// \note deep copy
+ /// \note key may contain embedded nulls.
+ Value get(const char* begin, const char* end,
+ const Value& defaultValue) const;
+ /// Return the member named key if it exist, defaultValue otherwise.
+ /// \note deep copy
+ /// \param key may contain embedded nulls.
+ Value get(const String& key, const Value& defaultValue) const;
+ /// Most general and efficient version of isMember()const, get()const,
+ /// and operator[]const
+ /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
+ Value const* find(char const* begin, char const* end) const;
+ /// Most general and efficient version of object-mutators.
+ /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
+ /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue.
+ Value* demand(char const* begin, char const* end);
+ /// \brief Remove and return the named member.
+ ///
+ /// Do nothing if it did not exist.
+ /// \pre type() is objectValue or nullValue
+ /// \post type() is unchanged
+ void removeMember(const char* key);
+ /// Same as removeMember(const char*)
+ /// \param key may contain embedded nulls.
+ void removeMember(const String& key);
+ /// Same as removeMember(const char* begin, const char* end, Value* removed),
+ /// but 'key' is null-terminated.
+ bool removeMember(const char* key, Value* removed);
+ /** \brief Remove the named map member.
+ *
+ * Update 'removed' iff removed.
+ * \param key may contain embedded nulls.
+ * \return true iff removed (no exceptions)
+ */
+ bool removeMember(String const& key, Value* removed);
+ /// Same as removeMember(String const& key, Value* removed)
+ bool removeMember(const char* begin, const char* end, Value* removed);
+ /** \brief Remove the indexed array element.
+ *
+ * O(n) expensive operations.
+ * Update 'removed' iff removed.
+ * \return true if removed (no exceptions)
+ */
+ bool removeIndex(ArrayIndex index, Value* removed);
+
+ /// Return true if the object has a member named key.
+ /// \note 'key' must be null-terminated.
+ bool isMember(const char* key) const;
+ /// Return true if the object has a member named key.
+ /// \param key may contain embedded nulls.
+ bool isMember(const String& key) const;
+ /// Same as isMember(String const& key)const
+ bool isMember(const char* begin, const char* end) const;
+
+ /// \brief Return a list of the member names.
+ ///
+ /// If null, return an empty list.
+ /// \pre type() is objectValue or nullValue
+ /// \post if type() was nullValue, it remains nullValue
+ Members getMemberNames() const;
+
+ /// \deprecated Always pass len.
+ JSONCPP_DEPRECATED("Use setComment(String const&) instead.")
+ void setComment(const char* comment, CommentPlacement placement) {
+ setComment(String(comment, strlen(comment)), placement);
+ }
+ /// Comments must be //... or /* ... */
+ void setComment(const char* comment, size_t len, CommentPlacement placement) {
+ setComment(String(comment, len), placement);
+ }
+ /// Comments must be //... or /* ... */
+ void setComment(String comment, CommentPlacement placement);
+ bool hasComment(CommentPlacement placement) const;
+ /// Include delimiters and embedded newlines.
+ String getComment(CommentPlacement placement) const;
+
+ String toStyledString() const;
+
+ const_iterator begin() const;
+ const_iterator end() const;
+
+ iterator begin();
+ iterator end();
+
+ // Accessors for the [start, limit) range of bytes within the JSON text from
+ // which this value was parsed, if any.
+ void setOffsetStart(ptrdiff_t start);
+ void setOffsetLimit(ptrdiff_t limit);
+ ptrdiff_t getOffsetStart() const;
+ ptrdiff_t getOffsetLimit() const;
+
+private:
+ void setType(ValueType v) {
+ bits_.value_type_ = static_cast<unsigned char>(v);
+ }
+ bool isAllocated() const { return bits_.allocated_; }
+ void setIsAllocated(bool v) { bits_.allocated_ = v; }
+
+ void initBasic(ValueType type, bool allocated = false);
+ void dupPayload(const Value& other);
+ void releasePayload();
+ void dupMeta(const Value& other);
+
+ Value& resolveReference(const char* key);
+ Value& resolveReference(const char* key, const char* end);
+
+ // struct MemberNamesTransform
+ //{
+ // typedef const char *result_type;
+ // const char *operator()( const CZString &name ) const
+ // {
+ // return name.c_str();
+ // }
+ //};
+
+ union ValueHolder {
+ LargestInt int_;
+ LargestUInt uint_;
+ double real_;
+ bool bool_;
+ char* string_; // if allocated_, ptr to { unsigned, char[] }.
+ ObjectValues* map_;
+ } value_;
+
+ struct {
+ // Really a ValueType, but types should agree for bitfield packing.
+ unsigned int value_type_ : 8;
+ // Unless allocated_, string_ must be null-terminated.
+ unsigned int allocated_ : 1;
+ } bits_;
+
+ class Comments {
+ public:
+ Comments() = default;
+ Comments(const Comments& that);
+ Comments(Comments&& that);
+ Comments& operator=(const Comments& that);
+ Comments& operator=(Comments&& that);
+ bool has(CommentPlacement slot) const;
+ String get(CommentPlacement slot) const;
+ void set(CommentPlacement slot, String comment);
+
+ private:
+ using Array = std::array<String, numberOfCommentPlacement>;
+ std::unique_ptr<Array> ptr_;
+ };
+ Comments comments_;
+
+ // [start, limit) byte offsets in the source JSON text from which this Value
+ // was extracted.
+ ptrdiff_t start_;
+ ptrdiff_t limit_;
+};
+
+template <> inline bool Value::as<bool>() const { return asBool(); }
+template <> inline bool Value::is<bool>() const { return isBool(); }
+
+template <> inline Int Value::as<Int>() const { return asInt(); }
+template <> inline bool Value::is<Int>() const { return isInt(); }
+
+template <> inline UInt Value::as<UInt>() const { return asUInt(); }
+template <> inline bool Value::is<UInt>() const { return isUInt(); }
+
+#if defined(JSON_HAS_INT64)
+template <> inline Int64 Value::as<Int64>() const { return asInt64(); }
+template <> inline bool Value::is<Int64>() const { return isInt64(); }
+
+template <> inline UInt64 Value::as<UInt64>() const { return asUInt64(); }
+template <> inline bool Value::is<UInt64>() const { return isUInt64(); }
+#endif
+
+template <> inline double Value::as<double>() const { return asDouble(); }
+template <> inline bool Value::is<double>() const { return isDouble(); }
+
+template <> inline String Value::as<String>() const { return asString(); }
+template <> inline bool Value::is<String>() const { return isString(); }
+
+/// These `as` specializations are type conversions, and do not have a
+/// corresponding `is`.
+template <> inline float Value::as<float>() const { return asFloat(); }
+template <> inline const char* Value::as<const char*>() const {
+ return asCString();
+}
+
+/** \brief Experimental and untested: represents an element of the "path" to
+ * access a node.
+ */
+class JSON_API PathArgument {
+public:
+ friend class Path;
+
+ PathArgument();
+ PathArgument(ArrayIndex index);
+ PathArgument(const char* key);
+ PathArgument(String key);
+
+private:
+ enum Kind { kindNone = 0, kindIndex, kindKey };
+ String key_;
+ ArrayIndex index_{};
+ Kind kind_{kindNone};
+};
+
+/** \brief Experimental and untested: represents a "path" to access a node.
+ *
+ * Syntax:
+ * - "." => root node
+ * - ".[n]" => elements at index 'n' of root node (an array value)
+ * - ".name" => member named 'name' of root node (an object value)
+ * - ".name1.name2.name3"
+ * - ".[0][1][2].name1[3]"
+ * - ".%" => member name is provided as parameter
+ * - ".[%]" => index is provided as parameter
+ */
+class JSON_API Path {
+public:
+ Path(const String& path, const PathArgument& a1 = PathArgument(),
+ const PathArgument& a2 = PathArgument(),
+ const PathArgument& a3 = PathArgument(),
+ const PathArgument& a4 = PathArgument(),
+ const PathArgument& a5 = PathArgument());
+
+ const Value& resolve(const Value& root) const;
+ Value resolve(const Value& root, const Value& defaultValue) const;
+ /// Creates the "path" to access the specified node and returns a reference on
+ /// the node.
+ Value& make(Value& root) const;
+
+private:
+ using InArgs = std::vector<const PathArgument*>;
+ using Args = std::vector<PathArgument>;
+
+ void makePath(const String& path, const InArgs& in);
+ void addPathInArg(const String& path, const InArgs& in,
+ InArgs::const_iterator& itInArg, PathArgument::Kind kind);
+ static void invalidPath(const String& path, int location);
+
+ Args args_;
+};
+
+/** \brief base class for Value iterators.
+ *
+ */
+class JSON_API ValueIteratorBase {
+public:
+ using iterator_category = std::bidirectional_iterator_tag;
+ using size_t = unsigned int;
+ using difference_type = int;
+ using SelfType = ValueIteratorBase;
+
+ bool operator==(const SelfType& other) const { return isEqual(other); }
+
+ bool operator!=(const SelfType& other) const { return !isEqual(other); }
+
+ difference_type operator-(const SelfType& other) const {
+ return other.computeDistance(*this);
+ }
+
+ /// Return either the index or the member name of the referenced value as a
+ /// Value.
+ Value key() const;
+
+ /// Return the index of the referenced Value, or -1 if it is not an
+ /// arrayValue.
+ UInt index() const;
+
+ /// Return the member name of the referenced Value, or "" if it is not an
+ /// objectValue.
+ /// \note Avoid `c_str()` on result, as embedded zeroes are possible.
+ String name() const;
+
+ /// Return the member name of the referenced Value. "" if it is not an
+ /// objectValue.
+ /// \deprecated This cannot be used for UTF-8 strings, since there can be
+ /// embedded nulls.
+ JSONCPP_DEPRECATED("Use `key = name();` instead.")
+ char const* memberName() const;
+ /// Return the member name of the referenced Value, or NULL if it is not an
+ /// objectValue.
+ /// \note Better version than memberName(). Allows embedded nulls.
+ char const* memberName(char const** end) const;
+
+protected:
+ /*! Internal utility functions to assist with implementing
+ * other iterator functions. The const and non-const versions
+ * of the "deref" protected methods expose the protected
+ * current_ member variable in a way that can often be
+ * optimized away by the compiler.
+ */
+ const Value& deref() const;
+ Value& deref();
+
+ void increment();
+
+ void decrement();
+
+ difference_type computeDistance(const SelfType& other) const;
+
+ bool isEqual(const SelfType& other) const;
+
+ void copy(const SelfType& other);
+
+private:
+ Value::ObjectValues::iterator current_;
+ // Indicates that iterator is for a null value.
+ bool isNull_{true};
+
+public:
+ // For some reason, BORLAND needs these at the end, rather
+ // than earlier. No idea why.
+ ValueIteratorBase();
+ explicit ValueIteratorBase(const Value::ObjectValues::iterator& current);
+};
+
+/** \brief const iterator for object and array value.
+ *
+ */
+class JSON_API ValueConstIterator : public ValueIteratorBase {
+ friend class Value;
+
+public:
+ using value_type = const Value;
+ // typedef unsigned int size_t;
+ // typedef int difference_type;
+ using reference = const Value&;
+ using pointer = const Value*;
+ using SelfType = ValueConstIterator;
+
+ ValueConstIterator();
+ ValueConstIterator(ValueIterator const& other);
+
+private:
+ /*! \internal Use by Value to create an iterator.
+ */
+ explicit ValueConstIterator(const Value::ObjectValues::iterator& current);
+
+public:
+ SelfType& operator=(const ValueIteratorBase& other);
+
+ SelfType operator++(int) {
+ SelfType temp(*this);
+ ++*this;
+ return temp;
+ }
+
+ SelfType operator--(int) {
+ SelfType temp(*this);
+ --*this;
+ return temp;
+ }
+
+ SelfType& operator--() {
+ decrement();
+ return *this;
+ }
+
+ SelfType& operator++() {
+ increment();
+ return *this;
+ }
+
+ reference operator*() const { return deref(); }
+
+ pointer operator->() const { return &deref(); }
+};
+
+/** \brief Iterator for object and array value.
+ */
+class JSON_API ValueIterator : public ValueIteratorBase {
+ friend class Value;
+
+public:
+ using value_type = Value;
+ using size_t = unsigned int;
+ using difference_type = int;
+ using reference = Value&;
+ using pointer = Value*;
+ using SelfType = ValueIterator;
+
+ ValueIterator();
+ explicit ValueIterator(const ValueConstIterator& other);
+ ValueIterator(const ValueIterator& other);
+
+private:
+ /*! \internal Use by Value to create an iterator.
+ */
+ explicit ValueIterator(const Value::ObjectValues::iterator& current);
+
+public:
+ SelfType& operator=(const SelfType& other);
+
+ SelfType operator++(int) {
+ SelfType temp(*this);
+ ++*this;
+ return temp;
+ }
+
+ SelfType operator--(int) {
+ SelfType temp(*this);
+ --*this;
+ return temp;
+ }
+
+ SelfType& operator--() {
+ decrement();
+ return *this;
+ }
+
+ SelfType& operator++() {
+ increment();
+ return *this;
+ }
+
+ /*! The return value of non-const iterators can be
+ * changed, so the these functions are not const
+ * because the returned references/pointers can be used
+ * to change state of the base class.
+ */
+ reference operator*() { return deref(); }
+ pointer operator->() { return &deref(); }
+};
+
+inline void swap(Value& a, Value& b) { a.swap(b); }
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // JSON_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/value.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/reader.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_READER_H_INCLUDED
+#define JSON_READER_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "json_features.h"
+#include "value.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <deque>
+#include <iosfwd>
+#include <istream>
+#include <stack>
+#include <string>
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+/** \brief Unserialize a <a HREF="http://www.json.org">JSON</a> document into a
+ * Value.
+ *
+ * \deprecated Use CharReader and CharReaderBuilder.
+ */
+
+class JSONCPP_DEPRECATED(
+ "Use CharReader and CharReaderBuilder instead.") JSON_API Reader {
+public:
+ using Char = char;
+ using Location = const Char*;
+
+ /** \brief An error tagged with where in the JSON text it was encountered.
+ *
+ * The offsets give the [start, limit) range of bytes within the text. Note
+ * that this is bytes, not codepoints.
+ */
+ struct StructuredError {
+ ptrdiff_t offset_start;
+ ptrdiff_t offset_limit;
+ String message;
+ };
+
+ /** \brief Constructs a Reader allowing all features for parsing.
+ */
+ JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
+ Reader();
+
+ /** \brief Constructs a Reader allowing the specified feature set for parsing.
+ */
+ JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead")
+ Reader(const Features& features);
+
+ /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+ * document.
+ *
+ * \param document UTF-8 encoded string containing the document
+ * to read.
+ * \param[out] root Contains the root value of the document if it
+ * was successfully parsed.
+ * \param collectComments \c true to collect comment and allow writing
+ * them back during serialization, \c false to
+ * discard comments. This parameter is ignored
+ * if Features::allowComments_ is \c false.
+ * \return \c true if the document was successfully parsed, \c false if an
+ * error occurred.
+ */
+ bool parse(const std::string& document, Value& root,
+ bool collectComments = true);
+
+ /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+ * document.
+ *
+ * \param beginDoc Pointer on the beginning of the UTF-8 encoded
+ * string of the document to read.
+ * \param endDoc Pointer on the end of the UTF-8 encoded string
+ * of the document to read. Must be >= beginDoc.
+ * \param[out] root Contains the root value of the document if it
+ * was successfully parsed.
+ * \param collectComments \c true to collect comment and allow writing
+ * them back during serialization, \c false to
+ * discard comments. This parameter is ignored
+ * if Features::allowComments_ is \c false.
+ * \return \c true if the document was successfully parsed, \c false if an
+ * error occurred.
+ */
+ bool parse(const char* beginDoc, const char* endDoc, Value& root,
+ bool collectComments = true);
+
+ /// \brief Parse from input stream.
+ /// \see Json::operator>>(std::istream&, Json::Value&).
+ bool parse(IStream& is, Value& root, bool collectComments = true);
+
+ /** \brief Returns a user friendly string that list errors in the parsed
+ * document.
+ *
+ * \return Formatted error message with the list of errors with their
+ * location in the parsed document. An empty string is returned if no error
+ * occurred during parsing.
+ * \deprecated Use getFormattedErrorMessages() instead (typo fix).
+ */
+ JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.")
+ String getFormatedErrorMessages() const;
+
+ /** \brief Returns a user friendly string that list errors in the parsed
+ * document.
+ *
+ * \return Formatted error message with the list of errors with their
+ * location in the parsed document. An empty string is returned if no error
+ * occurred during parsing.
+ */
+ String getFormattedErrorMessages() const;
+
+ /** \brief Returns a vector of structured errors encountered while parsing.
+ *
+ * \return A (possibly empty) vector of StructuredError objects. Currently
+ * only one error can be returned, but the caller should tolerate multiple
+ * errors. This can occur if the parser recovers from a non-fatal parse
+ * error and then encounters additional errors.
+ */
+ std::vector<StructuredError> getStructuredErrors() const;
+
+ /** \brief Add a semantic error message.
+ *
+ * \param value JSON Value location associated with the error
+ * \param message The error message.
+ * \return \c true if the error was successfully added, \c false if the Value
+ * offset exceeds the document size.
+ */
+ bool pushError(const Value& value, const String& message);
+
+ /** \brief Add a semantic error message with extra context.
+ *
+ * \param value JSON Value location associated with the error
+ * \param message The error message.
+ * \param extra Additional JSON Value location to contextualize the error
+ * \return \c true if the error was successfully added, \c false if either
+ * Value offset exceeds the document size.
+ */
+ bool pushError(const Value& value, const String& message, const Value& extra);
+
+ /** \brief Return whether there are any errors.
+ *
+ * \return \c true if there are no errors to report \c false if errors have
+ * occurred.
+ */
+ bool good() const;
+
+private:
+ enum TokenType {
+ tokenEndOfStream = 0,
+ tokenObjectBegin,
+ tokenObjectEnd,
+ tokenArrayBegin,
+ tokenArrayEnd,
+ tokenString,
+ tokenNumber,
+ tokenTrue,
+ tokenFalse,
+ tokenNull,
+ tokenArraySeparator,
+ tokenMemberSeparator,
+ tokenComment,
+ tokenError
+ };
+
+ class Token {
+ public:
+ TokenType type_;
+ Location start_;
+ Location end_;
+ };
+
+ class ErrorInfo {
+ public:
+ Token token_;
+ String message_;
+ Location extra_;
+ };
+
+ using Errors = std::deque<ErrorInfo>;
+
+ bool readToken(Token& token);
+ void skipSpaces();
+ bool match(const Char* pattern, int patternLength);
+ bool readComment();
+ bool readCStyleComment();
+ bool readCppStyleComment();
+ bool readString();
+ void readNumber();
+ bool readValue();
+ bool readObject(Token& token);
+ bool readArray(Token& token);
+ bool decodeNumber(Token& token);
+ bool decodeNumber(Token& token, Value& decoded);
+ bool decodeString(Token& token);
+ bool decodeString(Token& token, String& decoded);
+ bool decodeDouble(Token& token);
+ bool decodeDouble(Token& token, Value& decoded);
+ bool decodeUnicodeCodePoint(Token& token, Location& current, Location end,
+ unsigned int& unicode);
+ bool decodeUnicodeEscapeSequence(Token& token, Location& current,
+ Location end, unsigned int& unicode);
+ bool addError(const String& message, Token& token, Location extra = nullptr);
+ bool recoverFromError(TokenType skipUntilToken);
+ bool addErrorAndRecover(const String& message, Token& token,
+ TokenType skipUntilToken);
+ void skipUntilSpace();
+ Value& currentValue();
+ Char getNextChar();
+ void getLocationLineAndColumn(Location location, int& line,
+ int& column) const;
+ String getLocationLineAndColumn(Location location) const;
+ void addComment(Location begin, Location end, CommentPlacement placement);
+ void skipCommentTokens(Token& token);
+
+ static bool containsNewLine(Location begin, Location end);
+ static String normalizeEOL(Location begin, Location end);
+
+ using Nodes = std::stack<Value*>;
+ Nodes nodes_;
+ Errors errors_;
+ String document_;
+ Location begin_{};
+ Location end_{};
+ Location current_{};
+ Location lastValueEnd_{};
+ Value* lastValue_{};
+ String commentsBefore_;
+ Features features_;
+ bool collectComments_{};
+}; // Reader
+
+/** Interface for reading JSON from a char array.
+ */
+class JSON_API CharReader {
+public:
+ virtual ~CharReader() = default;
+ /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
+ * document. The document must be a UTF-8 encoded string containing the
+ * document to read.
+ *
+ * \param beginDoc Pointer on the beginning of the UTF-8 encoded string
+ * of the document to read.
+ * \param endDoc Pointer on the end of the UTF-8 encoded string of the
+ * document to read. Must be >= beginDoc.
+ * \param[out] root Contains the root value of the document if it was
+ * successfully parsed.
+ * \param[out] errs Formatted error messages (if not NULL) a user
+ * friendly string that lists errors in the parsed
+ * document.
+ * \return \c true if the document was successfully parsed, \c false if an
+ * error occurred.
+ */
+ virtual bool parse(char const* beginDoc, char const* endDoc, Value* root,
+ String* errs) = 0;
+
+ class JSON_API Factory {
+ public:
+ virtual ~Factory() = default;
+ /** \brief Allocate a CharReader via operator new().
+ * \throw std::exception if something goes wrong (e.g. invalid settings)
+ */
+ virtual CharReader* newCharReader() const = 0;
+ }; // Factory
+}; // CharReader
+
+/** \brief Build a CharReader implementation.
+ *
+ * Usage:
+ * \code
+ * using namespace Json;
+ * CharReaderBuilder builder;
+ * builder["collectComments"] = false;
+ * Value value;
+ * String errs;
+ * bool ok = parseFromStream(builder, std::cin, &value, &errs);
+ * \endcode
+ */
+class JSON_API CharReaderBuilder : public CharReader::Factory {
+public:
+ // Note: We use a Json::Value so that we can add data-members to this class
+ // without a major version bump.
+ /** Configuration of this builder.
+ * These are case-sensitive.
+ * Available settings (case-sensitive):
+ * - `"collectComments": false or true`
+ * - true to collect comment and allow writing them back during
+ * serialization, false to discard comments. This parameter is ignored
+ * if allowComments is false.
+ * - `"allowComments": false or true`
+ * - true if comments are allowed.
+ * - `"allowTrailingCommas": false or true`
+ * - true if trailing commas in objects and arrays are allowed.
+ * - `"strictRoot": false or true`
+ * - true if root must be either an array or an object value
+ * - `"allowDroppedNullPlaceholders": false or true`
+ * - true if dropped null placeholders are allowed. (See
+ * StreamWriterBuilder.)
+ * - `"allowNumericKeys": false or true`
+ * - true if numeric object keys are allowed.
+ * - `"allowSingleQuotes": false or true`
+ * - true if '' are allowed for strings (both keys and values)
+ * - `"stackLimit": integer`
+ * - Exceeding stackLimit (recursive depth of `readValue()`) will cause an
+ * exception.
+ * - This is a security issue (seg-faults caused by deeply nested JSON), so
+ * the default is low.
+ * - `"failIfExtra": false or true`
+ * - If true, `parse()` returns false when extra non-whitespace trails the
+ * JSON value in the input string.
+ * - `"rejectDupKeys": false or true`
+ * - If true, `parse()` returns false when a key is duplicated within an
+ * object.
+ * - `"allowSpecialFloats": false or true`
+ * - If true, special float values (NaNs and infinities) are allowed and
+ * their values are lossfree restorable.
+ *
+ * You can examine 'settings_` yourself to see the defaults. You can also
+ * write and read them just like any JSON Value.
+ * \sa setDefaults()
+ */
+ Json::Value settings_;
+
+ CharReaderBuilder();
+ ~CharReaderBuilder() override;
+
+ CharReader* newCharReader() const override;
+
+ /** \return true if 'settings' are legal and consistent;
+ * otherwise, indicate bad settings via 'invalid'.
+ */
+ bool validate(Json::Value* invalid) const;
+
+ /** A simple way to update a specific setting.
+ */
+ Value& operator[](const String& key);
+
+ /** Called by ctor, but you can use this to reset settings_.
+ * \pre 'settings' != NULL (but Json::null is fine)
+ * \remark Defaults:
+ * \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults
+ */
+ static void setDefaults(Json::Value* settings);
+ /** Same as old Features::strictMode().
+ * \pre 'settings' != NULL (but Json::null is fine)
+ * \remark Defaults:
+ * \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode
+ */
+ static void strictMode(Json::Value* settings);
+};
+
+/** Consume entire stream and use its begin/end.
+ * Someday we might have a real StreamReader, but for now this
+ * is convenient.
+ */
+bool JSON_API parseFromStream(CharReader::Factory const&, IStream&, Value* root,
+ String* errs);
+
+/** \brief Read from 'sin' into 'root'.
+ *
+ * Always keep comments from the input JSON.
+ *
+ * This can be used to read a file into a particular sub-object.
+ * For example:
+ * \code
+ * Json::Value root;
+ * cin >> root["dir"]["file"];
+ * cout << root;
+ * \endcode
+ * Result:
+ * \verbatim
+ * {
+ * "dir": {
+ * "file": {
+ * // The input stream JSON would be nested here.
+ * }
+ * }
+ * }
+ * \endverbatim
+ * \throw std::exception on parse error.
+ * \see Json::operator<<()
+ */
+JSON_API IStream& operator>>(IStream&, Value&);
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // JSON_READER_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/reader.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/writer.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_WRITER_H_INCLUDED
+#define JSON_WRITER_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "value.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <ostream>
+#include <string>
+#include <vector>
+
+// Disable warning C4251: <data member>: <type> needs to have dll-interface to
+// be used by...
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) && defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4251)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+class Value;
+
+/**
+ *
+ * Usage:
+ * \code
+ * using namespace Json;
+ * void writeToStdout(StreamWriter::Factory const& factory, Value const& value)
+ * { std::unique_ptr<StreamWriter> const writer( factory.newStreamWriter());
+ * writer->write(value, &std::cout);
+ * std::cout << std::endl; // add lf and flush
+ * }
+ * \endcode
+ */
+class JSON_API StreamWriter {
+protected:
+ OStream* sout_; // not owned; will not delete
+public:
+ StreamWriter();
+ virtual ~StreamWriter();
+ /** Write Value into document as configured in sub-class.
+ * Do not take ownership of sout, but maintain a reference during function.
+ * \pre sout != NULL
+ * \return zero on success (For now, we always return zero, so check the
+ * stream instead.) \throw std::exception possibly, depending on
+ * configuration
+ */
+ virtual int write(Value const& root, OStream* sout) = 0;
+
+ /** \brief A simple abstract factory.
+ */
+ class JSON_API Factory {
+ public:
+ virtual ~Factory();
+ /** \brief Allocate a CharReader via operator new().
+ * \throw std::exception if something goes wrong (e.g. invalid settings)
+ */
+ virtual StreamWriter* newStreamWriter() const = 0;
+ }; // Factory
+}; // StreamWriter
+
+/** \brief Write into stringstream, then return string, for convenience.
+ * A StreamWriter will be created from the factory, used, and then deleted.
+ */
+String JSON_API writeString(StreamWriter::Factory const& factory,
+ Value const& root);
+
+/** \brief Build a StreamWriter implementation.
+
+* Usage:
+* \code
+* using namespace Json;
+* Value value = ...;
+* StreamWriterBuilder builder;
+* builder["commentStyle"] = "None";
+* builder["indentation"] = " "; // or whatever you like
+* std::unique_ptr<Json::StreamWriter> writer(
+* builder.newStreamWriter());
+* writer->write(value, &std::cout);
+* std::cout << std::endl; // add lf and flush
+* \endcode
+*/
+class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
+public:
+ // Note: We use a Json::Value so that we can add data-members to this class
+ // without a major version bump.
+ /** Configuration of this builder.
+ * Available settings (case-sensitive):
+ * - "commentStyle": "None" or "All"
+ * - "indentation": "<anything>".
+ * - Setting this to an empty string also omits newline characters.
+ * - "enableYAMLCompatibility": false or true
+ * - slightly change the whitespace around colons
+ * - "dropNullPlaceholders": false or true
+ * - Drop the "null" string from the writer's output for nullValues.
+ * Strictly speaking, this is not valid JSON. But when the output is being
+ * fed to a browser's JavaScript, it makes for smaller output and the
+ * browser can handle the output just fine.
+ * - "useSpecialFloats": false or true
+ * - If true, outputs non-finite floating point values in the following way:
+ * NaN values as "NaN", positive infinity as "Infinity", and negative
+ * infinity as "-Infinity".
+ * - "precision": int
+ * - Number of precision digits for formatting of real values.
+ * - "precisionType": "significant"(default) or "decimal"
+ * - Type of precision for formatting of real values.
+
+ * You can examine 'settings_` yourself
+ * to see the defaults. You can also write and read them just like any
+ * JSON Value.
+ * \sa setDefaults()
+ */
+ Json::Value settings_;
+
+ StreamWriterBuilder();
+ ~StreamWriterBuilder() override;
+
+ /**
+ * \throw std::exception if something goes wrong (e.g. invalid settings)
+ */
+ StreamWriter* newStreamWriter() const override;
+
+ /** \return true if 'settings' are legal and consistent;
+ * otherwise, indicate bad settings via 'invalid'.
+ */
+ bool validate(Json::Value* invalid) const;
+ /** A simple way to update a specific setting.
+ */
+ Value& operator[](const String& key);
+
+ /** Called by ctor, but you can use this to reset settings_.
+ * \pre 'settings' != NULL (but Json::null is fine)
+ * \remark Defaults:
+ * \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults
+ */
+ static void setDefaults(Json::Value* settings);
+};
+
+/** \brief Abstract class for writers.
+ * \deprecated Use StreamWriter. (And really, this is an implementation detail.)
+ */
+class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {
+public:
+ virtual ~Writer();
+
+ virtual String write(const Value& root) = 0;
+};
+
+/** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format
+ *without formatting (not human friendly).
+ *
+ * The JSON document is written in a single line. It is not intended for 'human'
+ *consumption,
+ * but may be useful to support feature such as RPC where bandwidth is limited.
+ * \sa Reader, Value
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API FastWriter
+ : public Writer {
+public:
+ FastWriter();
+ ~FastWriter() override = default;
+
+ void enableYAMLCompatibility();
+
+ /** \brief Drop the "null" string from the writer's output for nullValues.
+ * Strictly speaking, this is not valid JSON. But when the output is being
+ * fed to a browser's JavaScript, it makes for smaller output and the
+ * browser can handle the output just fine.
+ */
+ void dropNullPlaceholders();
+
+ void omitEndingLineFeed();
+
+public: // overridden from Writer
+ String write(const Value& root) override;
+
+private:
+ void writeValue(const Value& value);
+
+ String document_;
+ bool yamlCompatibilityEnabled_{false};
+ bool dropNullPlaceholders_{false};
+ bool omitEndingLineFeed_{false};
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
+ *human friendly way.
+ *
+ * The rules for line break and indent are as follow:
+ * - Object value:
+ * - if empty then print {} without indent and line break
+ * - if not empty the print '{', line break & indent, print one value per
+ *line
+ * and then unindent and line break and print '}'.
+ * - Array value:
+ * - if empty then print [] without indent and line break
+ * - if the array contains no object value, empty array or some other value
+ *types,
+ * and all the values fit on one lines, then print the array on a single
+ *line.
+ * - otherwise, it the values do not fit on one line, or the array contains
+ * object or non empty array, then print one value per line.
+ *
+ * If the Value have comments then they are outputed according to their
+ *#CommentPlacement.
+ *
+ * \sa Reader, Value, Value::setComment()
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
+ StyledWriter : public Writer {
+public:
+ StyledWriter();
+ ~StyledWriter() override = default;
+
+public: // overridden from Writer
+ /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
+ * \param root Value to serialize.
+ * \return String containing the JSON document that represents the root value.
+ */
+ String write(const Value& root) override;
+
+private:
+ void writeValue(const Value& value);
+ void writeArrayValue(const Value& value);
+ bool isMultilineArray(const Value& value);
+ void pushValue(const String& value);
+ void writeIndent();
+ void writeWithIndent(const String& value);
+ void indent();
+ void unindent();
+ void writeCommentBeforeValue(const Value& root);
+ void writeCommentAfterValueOnSameLine(const Value& root);
+ static bool hasCommentForValue(const Value& value);
+ static String normalizeEOL(const String& text);
+
+ using ChildValues = std::vector<String>;
+
+ ChildValues childValues_;
+ String document_;
+ String indentString_;
+ unsigned int rightMargin_{74};
+ unsigned int indentSize_{3};
+ bool addChildValues_{false};
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
+ human friendly way,
+ to a stream rather than to a string.
+ *
+ * The rules for line break and indent are as follow:
+ * - Object value:
+ * - if empty then print {} without indent and line break
+ * - if not empty the print '{', line break & indent, print one value per
+ line
+ * and then unindent and line break and print '}'.
+ * - Array value:
+ * - if empty then print [] without indent and line break
+ * - if the array contains no object value, empty array or some other value
+ types,
+ * and all the values fit on one lines, then print the array on a single
+ line.
+ * - otherwise, it the values do not fit on one line, or the array contains
+ * object or non empty array, then print one value per line.
+ *
+ * If the Value have comments then they are outputed according to their
+ #CommentPlacement.
+ *
+ * \sa Reader, Value, Value::setComment()
+ * \deprecated Use StreamWriterBuilder.
+ */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996) // Deriving from deprecated class
+#endif
+class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API
+ StyledStreamWriter {
+public:
+ /**
+ * \param indentation Each level will be indented by this amount extra.
+ */
+ StyledStreamWriter(String indentation = "\t");
+ ~StyledStreamWriter() = default;
+
+public:
+ /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
+ * \param out Stream to write to. (Can be ostringstream, e.g.)
+ * \param root Value to serialize.
+ * \note There is no point in deriving from Writer, since write() should not
+ * return a value.
+ */
+ void write(OStream& out, const Value& root);
+
+private:
+ void writeValue(const Value& value);
+ void writeArrayValue(const Value& value);
+ bool isMultilineArray(const Value& value);
+ void pushValue(const String& value);
+ void writeIndent();
+ void writeWithIndent(const String& value);
+ void indent();
+ void unindent();
+ void writeCommentBeforeValue(const Value& root);
+ void writeCommentAfterValueOnSameLine(const Value& root);
+ static bool hasCommentForValue(const Value& value);
+ static String normalizeEOL(const String& text);
+
+ using ChildValues = std::vector<String>;
+
+ ChildValues childValues_;
+ OStream* document_;
+ String indentString_;
+ unsigned int rightMargin_{74};
+ String indentation_;
+ bool addChildValues_ : 1;
+ bool indented_ : 1;
+};
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+#if defined(JSON_HAS_INT64)
+String JSON_API valueToString(Int value);
+String JSON_API valueToString(UInt value);
+#endif // if defined(JSON_HAS_INT64)
+String JSON_API valueToString(LargestInt value);
+String JSON_API valueToString(LargestUInt value);
+String JSON_API valueToString(
+ double value, unsigned int precision = Value::defaultRealPrecision,
+ PrecisionType precisionType = PrecisionType::significantDigits);
+String JSON_API valueToString(bool value);
+String JSON_API valueToQuotedString(const char* value);
+
+/// \brief Output using the StyledStreamWriter.
+/// \see Json::operator>>()
+JSON_API OStream& operator<<(OStream&, const Value& root);
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+#pragma warning(pop)
+#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
+
+#endif // JSON_WRITER_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/writer.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/assertions.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_ASSERTIONS_H_INCLUDED
+#define JSON_ASSERTIONS_H_INCLUDED
+
+#include <cstdlib>
+#include <sstream>
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+/** It should not be possible for a maliciously designed file to
+ * cause an abort() or seg-fault, so these macros are used only
+ * for pre-condition violations and internal logic errors.
+ */
+#if JSON_USE_EXCEPTION
+
+// @todo <= add detail about condition in exception
+#define JSON_ASSERT(condition) \
+ do { \
+ if (!(condition)) { \
+ Json::throwLogicError("assert json failed"); \
+ } \
+ } while (0)
+
+#define JSON_FAIL_MESSAGE(message) \
+ do { \
+ OStringStream oss; \
+ oss << message; \
+ Json::throwLogicError(oss.str()); \
+ abort(); \
+ } while (0)
+
+#else // JSON_USE_EXCEPTION
+
+#define JSON_ASSERT(condition) assert(condition)
+
+// The call to assert() will show the failure message in debug builds. In
+// release builds we abort, for a core-dump or debugger.
+#define JSON_FAIL_MESSAGE(message) \
+ { \
+ OStringStream oss; \
+ oss << message; \
+ assert(false && oss.str().c_str()); \
+ abort(); \
+ }
+
+#endif
+
+#define JSON_ASSERT_MESSAGE(condition, message) \
+ do { \
+ if (!(condition)) { \
+ JSON_FAIL_MESSAGE(message); \
+ } \
+ } while (0)
+
+#endif // JSON_ASSERTIONS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/assertions.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#endif //ifndef JSON_AMALGAMATED_H_INCLUDED
diff --git a/lib/jsoncpp/jsoncpp.cpp b/lib/jsoncpp/jsoncpp.cpp
new file mode 100644
index 000000000..30e0a69f7
--- /dev/null
+++ b/lib/jsoncpp/jsoncpp.cpp
@@ -0,0 +1,5326 @@
+/// Json-cpp amalgamated source (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json.h"
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+ http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+#include "json/json.h"
+
+#ifndef JSON_IS_AMALGAMATION
+#error "Compile with -I PATH_TO_JSON_DIRECTORY"
+#endif
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_tool.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include <json/config.h>
+#endif
+
+// Also support old flag NO_LOCALE_SUPPORT
+#ifdef NO_LOCALE_SUPPORT
+#define JSONCPP_NO_LOCALE_SUPPORT
+#endif
+
+#ifndef JSONCPP_NO_LOCALE_SUPPORT
+#include <clocale>
+#endif
+
+/* This header provides common string manipulation support, such as UTF-8,
+ * portable conversion from/to string...
+ *
+ * It is an internal header that must not be exposed.
+ */
+
+namespace Json {
+static inline char getDecimalPoint() {
+#ifdef JSONCPP_NO_LOCALE_SUPPORT
+ return '\0';
+#else
+ struct lconv* lc = localeconv();
+ return lc ? *(lc->decimal_point) : '\0';
+#endif
+}
+
+/// Converts a unicode code-point to UTF-8.
+static inline String codePointToUTF8(unsigned int cp) {
+ String result;
+
+ // based on description from http://en.wikipedia.org/wiki/UTF-8
+
+ if (cp <= 0x7f) {
+ result.resize(1);
+ result[0] = static_cast<char>(cp);
+ } else if (cp <= 0x7FF) {
+ result.resize(2);
+ result[1] = static_cast<char>(0x80 | (0x3f & cp));
+ result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
+ } else if (cp <= 0xFFFF) {
+ result.resize(3);
+ result[2] = static_cast<char>(0x80 | (0x3f & cp));
+ result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
+ result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
+ } else if (cp <= 0x10FFFF) {
+ result.resize(4);
+ result[3] = static_cast<char>(0x80 | (0x3f & cp));
+ result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
+ result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
+ result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
+ }
+
+ return result;
+}
+
+enum {
+ /// Constant that specify the size of the buffer that must be passed to
+ /// uintToString.
+ uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1
+};
+
+// Defines a char buffer for use with uintToString().
+using UIntToStringBuffer = char[uintToStringBufferSize];
+
+/** Converts an unsigned integer to string.
+ * @param value Unsigned integer to convert to string
+ * @param current Input/Output string buffer.
+ * Must have at least uintToStringBufferSize chars free.
+ */
+static inline void uintToString(LargestUInt value, char*& current) {
+ *--current = 0;
+ do {
+ *--current = static_cast<char>(value % 10U + static_cast<unsigned>('0'));
+ value /= 10;
+ } while (value != 0);
+}
+
+/** Change ',' to '.' everywhere in buffer.
+ *
+ * We had a sophisticated way, but it did not work in WinCE.
+ * @see https://github.com/open-source-parsers/jsoncpp/pull/9
+ */
+template <typename Iter> Iter fixNumericLocale(Iter begin, Iter end) {
+ for (; begin != end; ++begin) {
+ if (*begin == ',') {
+ *begin = '.';
+ }
+ }
+ return begin;
+}
+
+template <typename Iter> void fixNumericLocaleInput(Iter begin, Iter end) {
+ char decimalPoint = getDecimalPoint();
+ if (decimalPoint == '\0' || decimalPoint == '.') {
+ return;
+ }
+ for (; begin != end; ++begin) {
+ if (*begin == '.') {
+ *begin = decimalPoint;
+ }
+ }
+}
+
+/**
+ * Return iterator that would be the new end of the range [begin,end), if we
+ * were to delete zeros in the end of string, but not the last zero before '.'.
+ */
+template <typename Iter> Iter fixZerosInTheEnd(Iter begin, Iter end) {
+ for (; begin != end; --end) {
+ if (*(end - 1) != '0') {
+ return end;
+ }
+ // Don't delete the last zero before the decimal point.
+ if (begin != (end - 1) && *(end - 2) == '.') {
+ return end;
+ }
+ }
+ return end;
+}
+
+} // namespace Json
+
+#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_tool.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_reader.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2011 Baptiste Lepilleur and The JsonCpp Authors
+// Copyright (C) 2016 InfoTeCS JSC. All rights reserved.
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "json_tool.h"
+#include <json/assertions.h>
+#include <json/reader.h>
+#include <json/value.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <algorithm>
+#include <cassert>
+#include <cstring>
+#include <iostream>
+#include <istream>
+#include <limits>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <utility>
+
+#include <cstdio>
+#if __cplusplus >= 201103L
+
+#if !defined(sscanf)
+#define sscanf std::sscanf
+#endif
+
+#endif //__cplusplus
+
+#if defined(_MSC_VER)
+#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
+#endif //_MSC_VER
+
+#if defined(_MSC_VER)
+// Disable warning about strdup being deprecated.
+#pragma warning(disable : 4996)
+#endif
+
+// Define JSONCPP_DEPRECATED_STACK_LIMIT as an appropriate integer at compile
+// time to change the stack limit
+#if !defined(JSONCPP_DEPRECATED_STACK_LIMIT)
+#define JSONCPP_DEPRECATED_STACK_LIMIT 1000
+#endif
+
+static size_t const stackLimit_g =
+ JSONCPP_DEPRECATED_STACK_LIMIT; // see readValue()
+
+namespace Json {
+
+#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
+using CharReaderPtr = std::unique_ptr<CharReader>;
+#else
+using CharReaderPtr = std::auto_ptr<CharReader>;
+#endif
+
+// Implementation of class Features
+// ////////////////////////////////
+
+Features::Features() = default;
+
+Features Features::all() { return {}; }
+
+Features Features::strictMode() {
+ Features features;
+ features.allowComments_ = false;
+ features.strictRoot_ = true;
+ features.allowDroppedNullPlaceholders_ = false;
+ features.allowNumericKeys_ = false;
+ return features;
+}
+
+// Implementation of class Reader
+// ////////////////////////////////
+
+bool Reader::containsNewLine(Reader::Location begin, Reader::Location end) {
+ return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
+}
+
+// Class Reader
+// //////////////////////////////////////////////////////////////////
+
+Reader::Reader() : features_(Features::all()) {}
+
+Reader::Reader(const Features& features) : features_(features) {}
+
+bool Reader::parse(const std::string& document, Value& root,
+ bool collectComments) {
+ document_.assign(document.begin(), document.end());
+ const char* begin = document_.c_str();
+ const char* end = begin + document_.length();
+ return parse(begin, end, root, collectComments);
+}
+
+bool Reader::parse(std::istream& is, Value& root, bool collectComments) {
+ // std::istream_iterator<char> begin(is);
+ // std::istream_iterator<char> end;
+ // Those would allow streamed input from a file, if parse() were a
+ // template function.
+
+ // Since String is reference-counted, this at least does not
+ // create an extra copy.
+ String doc;
+ std::getline(is, doc, static_cast<char> EOF);
+ return parse(doc.data(), doc.data() + doc.size(), root, collectComments);
+}
+
+bool Reader::parse(const char* beginDoc, const char* endDoc, Value& root,
+ bool collectComments) {
+ if (!features_.allowComments_) {
+ collectComments = false;
+ }
+
+ begin_ = beginDoc;
+ end_ = endDoc;
+ collectComments_ = collectComments;
+ current_ = begin_;
+ lastValueEnd_ = nullptr;
+ lastValue_ = nullptr;
+ commentsBefore_.clear();
+ errors_.clear();
+ while (!nodes_.empty())
+ nodes_.pop();
+ nodes_.push(&root);
+
+ bool successful = readValue();
+ Token token;
+ skipCommentTokens(token);
+ if (collectComments_ && !commentsBefore_.empty())
+ root.setComment(commentsBefore_, commentAfter);
+ if (features_.strictRoot_) {
+ if (!root.isArray() && !root.isObject()) {
+ // Set error location to start of doc, ideally should be first token found
+ // in doc
+ token.type_ = tokenError;
+ token.start_ = beginDoc;
+ token.end_ = endDoc;
+ addError(
+ "A valid JSON document must be either an array or an object value.",
+ token);
+ return false;
+ }
+ }
+ return successful;
+}
+
+bool Reader::readValue() {
+ // readValue() may call itself only if it calls readObject() or ReadArray().
+ // These methods execute nodes_.push() just before and nodes_.pop)() just
+ // after calling readValue(). parse() executes one nodes_.push(), so > instead
+ // of >=.
+ if (nodes_.size() > stackLimit_g)
+ throwRuntimeError("Exceeded stackLimit in readValue().");
+
+ Token token;
+ skipCommentTokens(token);
+ bool successful = true;
+
+ if (collectComments_ && !commentsBefore_.empty()) {
+ currentValue().setComment(commentsBefore_, commentBefore);
+ commentsBefore_.clear();
+ }
+
+ switch (token.type_) {
+ case tokenObjectBegin:
+ successful = readObject(token);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ case tokenArrayBegin:
+ successful = readArray(token);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ case tokenNumber:
+ successful = decodeNumber(token);
+ break;
+ case tokenString:
+ successful = decodeString(token);
+ break;
+ case tokenTrue: {
+ Value v(true);
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenFalse: {
+ Value v(false);
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenNull: {
+ Value v;
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenArraySeparator:
+ case tokenObjectEnd:
+ case tokenArrayEnd:
+ if (features_.allowDroppedNullPlaceholders_) {
+ // "Un-read" the current token and mark the current value as a null
+ // token.
+ current_--;
+ Value v;
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(current_ - begin_ - 1);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ } // Else, fall through...
+ default:
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return addError("Syntax error: value, object or array expected.", token);
+ }
+
+ if (collectComments_) {
+ lastValueEnd_ = current_;
+ lastValue_ = &currentValue();
+ }
+
+ return successful;
+}
+
+void Reader::skipCommentTokens(Token& token) {
+ if (features_.allowComments_) {
+ do {
+ readToken(token);
+ } while (token.type_ == tokenComment);
+ } else {
+ readToken(token);
+ }
+}
+
+bool Reader::readToken(Token& token) {
+ skipSpaces();
+ token.start_ = current_;
+ Char c = getNextChar();
+ bool ok = true;
+ switch (c) {
+ case '{':
+ token.type_ = tokenObjectBegin;
+ break;
+ case '}':
+ token.type_ = tokenObjectEnd;
+ break;
+ case '[':
+ token.type_ = tokenArrayBegin;
+ break;
+ case ']':
+ token.type_ = tokenArrayEnd;
+ break;
+ case '"':
+ token.type_ = tokenString;
+ ok = readString();
+ break;
+ case '/':
+ token.type_ = tokenComment;
+ ok = readComment();
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '-':
+ token.type_ = tokenNumber;
+ readNumber();
+ break;
+ case 't':
+ token.type_ = tokenTrue;
+ ok = match("rue", 3);
+ break;
+ case 'f':
+ token.type_ = tokenFalse;
+ ok = match("alse", 4);
+ break;
+ case 'n':
+ token.type_ = tokenNull;
+ ok = match("ull", 3);
+ break;
+ case ',':
+ token.type_ = tokenArraySeparator;
+ break;
+ case ':':
+ token.type_ = tokenMemberSeparator;
+ break;
+ case 0:
+ token.type_ = tokenEndOfStream;
+ break;
+ default:
+ ok = false;
+ break;
+ }
+ if (!ok)
+ token.type_ = tokenError;
+ token.end_ = current_;
+ return ok;
+}
+
+void Reader::skipSpaces() {
+ while (current_ != end_) {
+ Char c = *current_;
+ if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
+ ++current_;
+ else
+ break;
+ }
+}
+
+bool Reader::match(const Char* pattern, int patternLength) {
+ if (end_ - current_ < patternLength)
+ return false;
+ int index = patternLength;
+ while (index--)
+ if (current_[index] != pattern[index])
+ return false;
+ current_ += patternLength;
+ return true;
+}
+
+bool Reader::readComment() {
+ Location commentBegin = current_ - 1;
+ Char c = getNextChar();
+ bool successful = false;
+ if (c == '*')
+ successful = readCStyleComment();
+ else if (c == '/')
+ successful = readCppStyleComment();
+ if (!successful)
+ return false;
+
+ if (collectComments_) {
+ CommentPlacement placement = commentBefore;
+ if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
+ if (c != '*' || !containsNewLine(commentBegin, current_))
+ placement = commentAfterOnSameLine;
+ }
+
+ addComment(commentBegin, current_, placement);
+ }
+ return true;
+}
+
+String Reader::normalizeEOL(Reader::Location begin, Reader::Location end) {
+ String normalized;
+ normalized.reserve(static_cast<size_t>(end - begin));
+ Reader::Location current = begin;
+ while (current != end) {
+ char c = *current++;
+ if (c == '\r') {
+ if (current != end && *current == '\n')
+ // convert dos EOL
+ ++current;
+ // convert Mac EOL
+ normalized += '\n';
+ } else {
+ normalized += c;
+ }
+ }
+ return normalized;
+}
+
+void Reader::addComment(Location begin, Location end,
+ CommentPlacement placement) {
+ assert(collectComments_);
+ const String& normalized = normalizeEOL(begin, end);
+ if (placement == commentAfterOnSameLine) {
+ assert(lastValue_ != nullptr);
+ lastValue_->setComment(normalized, placement);
+ } else {
+ commentsBefore_ += normalized;
+ }
+}
+
+bool Reader::readCStyleComment() {
+ while ((current_ + 1) < end_) {
+ Char c = getNextChar();
+ if (c == '*' && *current_ == '/')
+ break;
+ }
+ return getNextChar() == '/';
+}
+
+bool Reader::readCppStyleComment() {
+ while (current_ != end_) {
+ Char c = getNextChar();
+ if (c == '\n')
+ break;
+ if (c == '\r') {
+ // Consume DOS EOL. It will be normalized in addComment.
+ if (current_ != end_ && *current_ == '\n')
+ getNextChar();
+ // Break on Moc OS 9 EOL.
+ break;
+ }
+ }
+ return true;
+}
+
+void Reader::readNumber() {
+ Location p = current_;
+ char c = '0'; // stopgap for already consumed character
+ // integral part
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ // fractional part
+ if (c == '.') {
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ }
+ // exponential part
+ if (c == 'e' || c == 'E') {
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ if (c == '+' || c == '-')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ }
+}
+
+bool Reader::readString() {
+ Char c = '\0';
+ while (current_ != end_) {
+ c = getNextChar();
+ if (c == '\\')
+ getNextChar();
+ else if (c == '"')
+ break;
+ }
+ return c == '"';
+}
+
+bool Reader::readObject(Token& token) {
+ Token tokenName;
+ String name;
+ Value init(objectValue);
+ currentValue().swapPayload(init);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ while (readToken(tokenName)) {
+ bool initialTokenOk = true;
+ while (tokenName.type_ == tokenComment && initialTokenOk)
+ initialTokenOk = readToken(tokenName);
+ if (!initialTokenOk)
+ break;
+ if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
+ return true;
+ name.clear();
+ if (tokenName.type_ == tokenString) {
+ if (!decodeString(tokenName, name))
+ return recoverFromError(tokenObjectEnd);
+ } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
+ Value numberName;
+ if (!decodeNumber(tokenName, numberName))
+ return recoverFromError(tokenObjectEnd);
+ name = numberName.asString();
+ } else {
+ break;
+ }
+
+ Token colon;
+ if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
+ return addErrorAndRecover("Missing ':' after object member name", colon,
+ tokenObjectEnd);
+ }
+ Value& value = currentValue()[name];
+ nodes_.push(&value);
+ bool ok = readValue();
+ nodes_.pop();
+ if (!ok) // error already set
+ return recoverFromError(tokenObjectEnd);
+
+ Token comma;
+ if (!readToken(comma) ||
+ (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
+ comma.type_ != tokenComment)) {
+ return addErrorAndRecover("Missing ',' or '}' in object declaration",
+ comma, tokenObjectEnd);
+ }
+ bool finalizeTokenOk = true;
+ while (comma.type_ == tokenComment && finalizeTokenOk)
+ finalizeTokenOk = readToken(comma);
+ if (comma.type_ == tokenObjectEnd)
+ return true;
+ }
+ return addErrorAndRecover("Missing '}' or object member name", tokenName,
+ tokenObjectEnd);
+}
+
+bool Reader::readArray(Token& token) {
+ Value init(arrayValue);
+ currentValue().swapPayload(init);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ skipSpaces();
+ if (current_ != end_ && *current_ == ']') // empty array
+ {
+ Token endArray;
+ readToken(endArray);
+ return true;
+ }
+ int index = 0;
+ for (;;) {
+ Value& value = currentValue()[index++];
+ nodes_.push(&value);
+ bool ok = readValue();
+ nodes_.pop();
+ if (!ok) // error already set
+ return recoverFromError(tokenArrayEnd);
+
+ Token currentToken;
+ // Accept Comment after last item in the array.
+ ok = readToken(currentToken);
+ while (currentToken.type_ == tokenComment && ok) {
+ ok = readToken(currentToken);
+ }
+ bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
+ currentToken.type_ != tokenArrayEnd);
+ if (!ok || badTokenType) {
+ return addErrorAndRecover("Missing ',' or ']' in array declaration",
+ currentToken, tokenArrayEnd);
+ }
+ if (currentToken.type_ == tokenArrayEnd)
+ break;
+ }
+ return true;
+}
+
+bool Reader::decodeNumber(Token& token) {
+ Value decoded;
+ if (!decodeNumber(token, decoded))
+ return false;
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool Reader::decodeNumber(Token& token, Value& decoded) {
+ // Attempts to parse the number as an integer. If the number is
+ // larger than the maximum supported value of an integer then
+ // we decode the number as a double.
+ Location current = token.start_;
+ bool isNegative = *current == '-';
+ if (isNegative)
+ ++current;
+ // TODO: Help the compiler do the div and mod at compile time or get rid of
+ // them.
+ Value::LargestUInt maxIntegerValue =
+ isNegative ? Value::LargestUInt(Value::maxLargestInt) + 1
+ : Value::maxLargestUInt;
+ Value::LargestUInt threshold = maxIntegerValue / 10;
+ Value::LargestUInt value = 0;
+ while (current < token.end_) {
+ Char c = *current++;
+ if (c < '0' || c > '9')
+ return decodeDouble(token, decoded);
+ auto digit(static_cast<Value::UInt>(c - '0'));
+ if (value >= threshold) {
+ // We've hit or exceeded the max value divided by 10 (rounded down). If
+ // a) we've only just touched the limit, b) this is the last digit, and
+ // c) it's small enough to fit in that rounding delta, we're okay.
+ // Otherwise treat this number as a double to avoid overflow.
+ if (value > threshold || current != token.end_ ||
+ digit > maxIntegerValue % 10) {
+ return decodeDouble(token, decoded);
+ }
+ }
+ value = value * 10 + digit;
+ }
+ if (isNegative && value == maxIntegerValue)
+ decoded = Value::minLargestInt;
+ else if (isNegative)
+ decoded = -Value::LargestInt(value);
+ else if (value <= Value::LargestUInt(Value::maxInt))
+ decoded = Value::LargestInt(value);
+ else
+ decoded = value;
+ return true;
+}
+
+bool Reader::decodeDouble(Token& token) {
+ Value decoded;
+ if (!decodeDouble(token, decoded))
+ return false;
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool Reader::decodeDouble(Token& token, Value& decoded) {
+ double value = 0;
+ String buffer(token.start_, token.end_);
+ IStringStream is(buffer);
+ if (!(is >> value))
+ return addError(
+ "'" + String(token.start_, token.end_) + "' is not a number.", token);
+ decoded = value;
+ return true;
+}
+
+bool Reader::decodeString(Token& token) {
+ String decoded_string;
+ if (!decodeString(token, decoded_string))
+ return false;
+ Value decoded(decoded_string);
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool Reader::decodeString(Token& token, String& decoded) {
+ decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
+ Location current = token.start_ + 1; // skip '"'
+ Location end = token.end_ - 1; // do not include '"'
+ while (current != end) {
+ Char c = *current++;
+ if (c == '"')
+ break;
+ if (c == '\\') {
+ if (current == end)
+ return addError("Empty escape sequence in string", token, current);
+ Char escape = *current++;
+ switch (escape) {
+ case '"':
+ decoded += '"';
+ break;
+ case '/':
+ decoded += '/';
+ break;
+ case '\\':
+ decoded += '\\';
+ break;
+ case 'b':
+ decoded += '\b';
+ break;
+ case 'f':
+ decoded += '\f';
+ break;
+ case 'n':
+ decoded += '\n';
+ break;
+ case 'r':
+ decoded += '\r';
+ break;
+ case 't':
+ decoded += '\t';
+ break;
+ case 'u': {
+ unsigned int unicode;
+ if (!decodeUnicodeCodePoint(token, current, end, unicode))
+ return false;
+ decoded += codePointToUTF8(unicode);
+ } break;
+ default:
+ return addError("Bad escape sequence in string", token, current);
+ }
+ } else {
+ decoded += c;
+ }
+ }
+ return true;
+}
+
+bool Reader::decodeUnicodeCodePoint(Token& token, Location& current,
+ Location end, unsigned int& unicode) {
+
+ if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
+ return false;
+ if (unicode >= 0xD800 && unicode <= 0xDBFF) {
+ // surrogate pairs
+ if (end - current < 6)
+ return addError(
+ "additional six characters expected to parse unicode surrogate pair.",
+ token, current);
+ if (*(current++) == '\\' && *(current++) == 'u') {
+ unsigned int surrogatePair;
+ if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
+ unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
+ } else
+ return false;
+ } else
+ return addError("expecting another \\u token to begin the second half of "
+ "a unicode surrogate pair",
+ token, current);
+ }
+ return true;
+}
+
+bool Reader::decodeUnicodeEscapeSequence(Token& token, Location& current,
+ Location end,
+ unsigned int& ret_unicode) {
+ if (end - current < 4)
+ return addError(
+ "Bad unicode escape sequence in string: four digits expected.", token,
+ current);
+ int unicode = 0;
+ for (int index = 0; index < 4; ++index) {
+ Char c = *current++;
+ unicode *= 16;
+ if (c >= '0' && c <= '9')
+ unicode += c - '0';
+ else if (c >= 'a' && c <= 'f')
+ unicode += c - 'a' + 10;
+ else if (c >= 'A' && c <= 'F')
+ unicode += c - 'A' + 10;
+ else
+ return addError(
+ "Bad unicode escape sequence in string: hexadecimal digit expected.",
+ token, current);
+ }
+ ret_unicode = static_cast<unsigned int>(unicode);
+ return true;
+}
+
+bool Reader::addError(const String& message, Token& token, Location extra) {
+ ErrorInfo info;
+ info.token_ = token;
+ info.message_ = message;
+ info.extra_ = extra;
+ errors_.push_back(info);
+ return false;
+}
+
+bool Reader::recoverFromError(TokenType skipUntilToken) {
+ size_t const errorCount = errors_.size();
+ Token skip;
+ for (;;) {
+ if (!readToken(skip))
+ errors_.resize(errorCount); // discard errors caused by recovery
+ if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
+ break;
+ }
+ errors_.resize(errorCount);
+ return false;
+}
+
+bool Reader::addErrorAndRecover(const String& message, Token& token,
+ TokenType skipUntilToken) {
+ addError(message, token);
+ return recoverFromError(skipUntilToken);
+}
+
+Value& Reader::currentValue() { return *(nodes_.top()); }
+
+Reader::Char Reader::getNextChar() {
+ if (current_ == end_)
+ return 0;
+ return *current_++;
+}
+
+void Reader::getLocationLineAndColumn(Location location, int& line,
+ int& column) const {
+ Location current = begin_;
+ Location lastLineStart = current;
+ line = 0;
+ while (current < location && current != end_) {
+ Char c = *current++;
+ if (c == '\r') {
+ if (*current == '\n')
+ ++current;
+ lastLineStart = current;
+ ++line;
+ } else if (c == '\n') {
+ lastLineStart = current;
+ ++line;
+ }
+ }
+ // column & line start at 1
+ column = int(location - lastLineStart) + 1;
+ ++line;
+}
+
+String Reader::getLocationLineAndColumn(Location location) const {
+ int line, column;
+ getLocationLineAndColumn(location, line, column);
+ char buffer[18 + 16 + 16 + 1];
+ jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
+ return buffer;
+}
+
+// Deprecated. Preserved for backward compatibility
+String Reader::getFormatedErrorMessages() const {
+ return getFormattedErrorMessages();
+}
+
+String Reader::getFormattedErrorMessages() const {
+ String formattedMessage;
+ for (const auto& error : errors_) {
+ formattedMessage +=
+ "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
+ formattedMessage += " " + error.message_ + "\n";
+ if (error.extra_)
+ formattedMessage +=
+ "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
+ }
+ return formattedMessage;
+}
+
+std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
+ std::vector<Reader::StructuredError> allErrors;
+ for (const auto& error : errors_) {
+ Reader::StructuredError structured;
+ structured.offset_start = error.token_.start_ - begin_;
+ structured.offset_limit = error.token_.end_ - begin_;
+ structured.message = error.message_;
+ allErrors.push_back(structured);
+ }
+ return allErrors;
+}
+
+bool Reader::pushError(const Value& value, const String& message) {
+ ptrdiff_t const length = end_ - begin_;
+ if (value.getOffsetStart() > length || value.getOffsetLimit() > length)
+ return false;
+ Token token;
+ token.type_ = tokenError;
+ token.start_ = begin_ + value.getOffsetStart();
+ token.end_ = begin_ + value.getOffsetLimit();
+ ErrorInfo info;
+ info.token_ = token;
+ info.message_ = message;
+ info.extra_ = nullptr;
+ errors_.push_back(info);
+ return true;
+}
+
+bool Reader::pushError(const Value& value, const String& message,
+ const Value& extra) {
+ ptrdiff_t const length = end_ - begin_;
+ if (value.getOffsetStart() > length || value.getOffsetLimit() > length ||
+ extra.getOffsetLimit() > length)
+ return false;
+ Token token;
+ token.type_ = tokenError;
+ token.start_ = begin_ + value.getOffsetStart();
+ token.end_ = begin_ + value.getOffsetLimit();
+ ErrorInfo info;
+ info.token_ = token;
+ info.message_ = message;
+ info.extra_ = begin_ + extra.getOffsetStart();
+ errors_.push_back(info);
+ return true;
+}
+
+bool Reader::good() const { return errors_.empty(); }
+
+// Originally copied from the Features class (now deprecated), used internally
+// for features implementation.
+class OurFeatures {
+public:
+ static OurFeatures all();
+ bool allowComments_;
+ bool allowTrailingCommas_;
+ bool strictRoot_;
+ bool allowDroppedNullPlaceholders_;
+ bool allowNumericKeys_;
+ bool allowSingleQuotes_;
+ bool failIfExtra_;
+ bool rejectDupKeys_;
+ bool allowSpecialFloats_;
+ bool skipBom_;
+ size_t stackLimit_;
+}; // OurFeatures
+
+OurFeatures OurFeatures::all() { return {}; }
+
+// Implementation of class Reader
+// ////////////////////////////////
+
+// Originally copied from the Reader class (now deprecated), used internally
+// for implementing JSON reading.
+class OurReader {
+public:
+ using Char = char;
+ using Location = const Char*;
+ struct StructuredError {
+ ptrdiff_t offset_start;
+ ptrdiff_t offset_limit;
+ String message;
+ };
+
+ explicit OurReader(OurFeatures const& features);
+ bool parse(const char* beginDoc, const char* endDoc, Value& root,
+ bool collectComments = true);
+ String getFormattedErrorMessages() const;
+ std::vector<StructuredError> getStructuredErrors() const;
+
+private:
+ OurReader(OurReader const&); // no impl
+ void operator=(OurReader const&); // no impl
+
+ enum TokenType {
+ tokenEndOfStream = 0,
+ tokenObjectBegin,
+ tokenObjectEnd,
+ tokenArrayBegin,
+ tokenArrayEnd,
+ tokenString,
+ tokenNumber,
+ tokenTrue,
+ tokenFalse,
+ tokenNull,
+ tokenNaN,
+ tokenPosInf,
+ tokenNegInf,
+ tokenArraySeparator,
+ tokenMemberSeparator,
+ tokenComment,
+ tokenError
+ };
+
+ class Token {
+ public:
+ TokenType type_;
+ Location start_;
+ Location end_;
+ };
+
+ class ErrorInfo {
+ public:
+ Token token_;
+ String message_;
+ Location extra_;
+ };
+
+ using Errors = std::deque<ErrorInfo>;
+
+ bool readToken(Token& token);
+ void skipSpaces();
+ void skipBom(bool skipBom);
+ bool match(const Char* pattern, int patternLength);
+ bool readComment();
+ bool readCStyleComment(bool* containsNewLineResult);
+ bool readCppStyleComment();
+ bool readString();
+ bool readStringSingleQuote();
+ bool readNumber(bool checkInf);
+ bool readValue();
+ bool readObject(Token& token);
+ bool readArray(Token& token);
+ bool decodeNumber(Token& token);
+ bool decodeNumber(Token& token, Value& decoded);
+ bool decodeString(Token& token);
+ bool decodeString(Token& token, String& decoded);
+ bool decodeDouble(Token& token);
+ bool decodeDouble(Token& token, Value& decoded);
+ bool decodeUnicodeCodePoint(Token& token, Location& current, Location end,
+ unsigned int& unicode);
+ bool decodeUnicodeEscapeSequence(Token& token, Location& current,
+ Location end, unsigned int& unicode);
+ bool addError(const String& message, Token& token, Location extra = nullptr);
+ bool recoverFromError(TokenType skipUntilToken);
+ bool addErrorAndRecover(const String& message, Token& token,
+ TokenType skipUntilToken);
+ void skipUntilSpace();
+ Value& currentValue();
+ Char getNextChar();
+ void getLocationLineAndColumn(Location location, int& line,
+ int& column) const;
+ String getLocationLineAndColumn(Location location) const;
+ void addComment(Location begin, Location end, CommentPlacement placement);
+ void skipCommentTokens(Token& token);
+
+ static String normalizeEOL(Location begin, Location end);
+ static bool containsNewLine(Location begin, Location end);
+
+ using Nodes = std::stack<Value*>;
+
+ Nodes nodes_{};
+ Errors errors_{};
+ String document_{};
+ Location begin_ = nullptr;
+ Location end_ = nullptr;
+ Location current_ = nullptr;
+ Location lastValueEnd_ = nullptr;
+ Value* lastValue_ = nullptr;
+ bool lastValueHasAComment_ = false;
+ String commentsBefore_{};
+
+ OurFeatures const features_;
+ bool collectComments_ = false;
+}; // OurReader
+
+// complete copy of Read impl, for OurReader
+
+bool OurReader::containsNewLine(OurReader::Location begin,
+ OurReader::Location end) {
+ return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
+}
+
+OurReader::OurReader(OurFeatures const& features) : features_(features) {}
+
+bool OurReader::parse(const char* beginDoc, const char* endDoc, Value& root,
+ bool collectComments) {
+ if (!features_.allowComments_) {
+ collectComments = false;
+ }
+
+ begin_ = beginDoc;
+ end_ = endDoc;
+ collectComments_ = collectComments;
+ current_ = begin_;
+ lastValueEnd_ = nullptr;
+ lastValue_ = nullptr;
+ commentsBefore_.clear();
+ errors_.clear();
+ while (!nodes_.empty())
+ nodes_.pop();
+ nodes_.push(&root);
+
+ // skip byte order mark if it exists at the beginning of the UTF-8 text.
+ skipBom(features_.skipBom_);
+ bool successful = readValue();
+ nodes_.pop();
+ Token token;
+ skipCommentTokens(token);
+ if (features_.failIfExtra_ && (token.type_ != tokenEndOfStream)) {
+ addError("Extra non-whitespace after JSON value.", token);
+ return false;
+ }
+ if (collectComments_ && !commentsBefore_.empty())
+ root.setComment(commentsBefore_, commentAfter);
+ if (features_.strictRoot_) {
+ if (!root.isArray() && !root.isObject()) {
+ // Set error location to start of doc, ideally should be first token found
+ // in doc
+ token.type_ = tokenError;
+ token.start_ = beginDoc;
+ token.end_ = endDoc;
+ addError(
+ "A valid JSON document must be either an array or an object value.",
+ token);
+ return false;
+ }
+ }
+ return successful;
+}
+
+bool OurReader::readValue() {
+ // To preserve the old behaviour we cast size_t to int.
+ if (nodes_.size() > features_.stackLimit_)
+ throwRuntimeError("Exceeded stackLimit in readValue().");
+ Token token;
+ skipCommentTokens(token);
+ bool successful = true;
+
+ if (collectComments_ && !commentsBefore_.empty()) {
+ currentValue().setComment(commentsBefore_, commentBefore);
+ commentsBefore_.clear();
+ }
+
+ switch (token.type_) {
+ case tokenObjectBegin:
+ successful = readObject(token);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ case tokenArrayBegin:
+ successful = readArray(token);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ case tokenNumber:
+ successful = decodeNumber(token);
+ break;
+ case tokenString:
+ successful = decodeString(token);
+ break;
+ case tokenTrue: {
+ Value v(true);
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenFalse: {
+ Value v(false);
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenNull: {
+ Value v;
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenNaN: {
+ Value v(std::numeric_limits<double>::quiet_NaN());
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenPosInf: {
+ Value v(std::numeric_limits<double>::infinity());
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenNegInf: {
+ Value v(-std::numeric_limits<double>::infinity());
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ } break;
+ case tokenArraySeparator:
+ case tokenObjectEnd:
+ case tokenArrayEnd:
+ if (features_.allowDroppedNullPlaceholders_) {
+ // "Un-read" the current token and mark the current value as a null
+ // token.
+ current_--;
+ Value v;
+ currentValue().swapPayload(v);
+ currentValue().setOffsetStart(current_ - begin_ - 1);
+ currentValue().setOffsetLimit(current_ - begin_);
+ break;
+ } // else, fall through ...
+ default:
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return addError("Syntax error: value, object or array expected.", token);
+ }
+
+ if (collectComments_) {
+ lastValueEnd_ = current_;
+ lastValueHasAComment_ = false;
+ lastValue_ = &currentValue();
+ }
+
+ return successful;
+}
+
+void OurReader::skipCommentTokens(Token& token) {
+ if (features_.allowComments_) {
+ do {
+ readToken(token);
+ } while (token.type_ == tokenComment);
+ } else {
+ readToken(token);
+ }
+}
+
+bool OurReader::readToken(Token& token) {
+ skipSpaces();
+ token.start_ = current_;
+ Char c = getNextChar();
+ bool ok = true;
+ switch (c) {
+ case '{':
+ token.type_ = tokenObjectBegin;
+ break;
+ case '}':
+ token.type_ = tokenObjectEnd;
+ break;
+ case '[':
+ token.type_ = tokenArrayBegin;
+ break;
+ case ']':
+ token.type_ = tokenArrayEnd;
+ break;
+ case '"':
+ token.type_ = tokenString;
+ ok = readString();
+ break;
+ case '\'':
+ if (features_.allowSingleQuotes_) {
+ token.type_ = tokenString;
+ ok = readStringSingleQuote();
+ } else {
+ // If we don't allow single quotes, this is a failure case.
+ ok = false;
+ }
+ break;
+ case '/':
+ token.type_ = tokenComment;
+ ok = readComment();
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ token.type_ = tokenNumber;
+ readNumber(false);
+ break;
+ case '-':
+ if (readNumber(true)) {
+ token.type_ = tokenNumber;
+ } else {
+ token.type_ = tokenNegInf;
+ ok = features_.allowSpecialFloats_ && match("nfinity", 7);
+ }
+ break;
+ case '+':
+ if (readNumber(true)) {
+ token.type_ = tokenNumber;
+ } else {
+ token.type_ = tokenPosInf;
+ ok = features_.allowSpecialFloats_ && match("nfinity", 7);
+ }
+ break;
+ case 't':
+ token.type_ = tokenTrue;
+ ok = match("rue", 3);
+ break;
+ case 'f':
+ token.type_ = tokenFalse;
+ ok = match("alse", 4);
+ break;
+ case 'n':
+ token.type_ = tokenNull;
+ ok = match("ull", 3);
+ break;
+ case 'N':
+ if (features_.allowSpecialFloats_) {
+ token.type_ = tokenNaN;
+ ok = match("aN", 2);
+ } else {
+ ok = false;
+ }
+ break;
+ case 'I':
+ if (features_.allowSpecialFloats_) {
+ token.type_ = tokenPosInf;
+ ok = match("nfinity", 7);
+ } else {
+ ok = false;
+ }
+ break;
+ case ',':
+ token.type_ = tokenArraySeparator;
+ break;
+ case ':':
+ token.type_ = tokenMemberSeparator;
+ break;
+ case 0:
+ token.type_ = tokenEndOfStream;
+ break;
+ default:
+ ok = false;
+ break;
+ }
+ if (!ok)
+ token.type_ = tokenError;
+ token.end_ = current_;
+ return ok;
+}
+
+void OurReader::skipSpaces() {
+ while (current_ != end_) {
+ Char c = *current_;
+ if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
+ ++current_;
+ else
+ break;
+ }
+}
+
+void OurReader::skipBom(bool skipBom) {
+ // The default behavior is to skip BOM.
+ if (skipBom) {
+ if ((end_ - begin_) >= 3 && strncmp(begin_, "\xEF\xBB\xBF", 3) == 0) {
+ begin_ += 3;
+ current_ = begin_;
+ }
+ }
+}
+
+bool OurReader::match(const Char* pattern, int patternLength) {
+ if (end_ - current_ < patternLength)
+ return false;
+ int index = patternLength;
+ while (index--)
+ if (current_[index] != pattern[index])
+ return false;
+ current_ += patternLength;
+ return true;
+}
+
+bool OurReader::readComment() {
+ const Location commentBegin = current_ - 1;
+ const Char c = getNextChar();
+ bool successful = false;
+ bool cStyleWithEmbeddedNewline = false;
+
+ const bool isCStyleComment = (c == '*');
+ const bool isCppStyleComment = (c == '/');
+ if (isCStyleComment) {
+ successful = readCStyleComment(&cStyleWithEmbeddedNewline);
+ } else if (isCppStyleComment) {
+ successful = readCppStyleComment();
+ }
+
+ if (!successful)
+ return false;
+
+ if (collectComments_) {
+ CommentPlacement placement = commentBefore;
+
+ if (!lastValueHasAComment_) {
+ if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
+ if (isCppStyleComment || !cStyleWithEmbeddedNewline) {
+ placement = commentAfterOnSameLine;
+ lastValueHasAComment_ = true;
+ }
+ }
+ }
+
+ addComment(commentBegin, current_, placement);
+ }
+ return true;
+}
+
+String OurReader::normalizeEOL(OurReader::Location begin,
+ OurReader::Location end) {
+ String normalized;
+ normalized.reserve(static_cast<size_t>(end - begin));
+ OurReader::Location current = begin;
+ while (current != end) {
+ char c = *current++;
+ if (c == '\r') {
+ if (current != end && *current == '\n')
+ // convert dos EOL
+ ++current;
+ // convert Mac EOL
+ normalized += '\n';
+ } else {
+ normalized += c;
+ }
+ }
+ return normalized;
+}
+
+void OurReader::addComment(Location begin, Location end,
+ CommentPlacement placement) {
+ assert(collectComments_);
+ const String& normalized = normalizeEOL(begin, end);
+ if (placement == commentAfterOnSameLine) {
+ assert(lastValue_ != nullptr);
+ lastValue_->setComment(normalized, placement);
+ } else {
+ commentsBefore_ += normalized;
+ }
+}
+
+bool OurReader::readCStyleComment(bool* containsNewLineResult) {
+ *containsNewLineResult = false;
+
+ while ((current_ + 1) < end_) {
+ Char c = getNextChar();
+ if (c == '*' && *current_ == '/')
+ break;
+ if (c == '\n')
+ *containsNewLineResult = true;
+ }
+
+ return getNextChar() == '/';
+}
+
+bool OurReader::readCppStyleComment() {
+ while (current_ != end_) {
+ Char c = getNextChar();
+ if (c == '\n')
+ break;
+ if (c == '\r') {
+ // Consume DOS EOL. It will be normalized in addComment.
+ if (current_ != end_ && *current_ == '\n')
+ getNextChar();
+ // Break on Moc OS 9 EOL.
+ break;
+ }
+ }
+ return true;
+}
+
+bool OurReader::readNumber(bool checkInf) {
+ Location p = current_;
+ if (checkInf && p != end_ && *p == 'I') {
+ current_ = ++p;
+ return false;
+ }
+ char c = '0'; // stopgap for already consumed character
+ // integral part
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ // fractional part
+ if (c == '.') {
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ }
+ // exponential part
+ if (c == 'e' || c == 'E') {
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ if (c == '+' || c == '-')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ while (c >= '0' && c <= '9')
+ c = (current_ = p) < end_ ? *p++ : '\0';
+ }
+ return true;
+}
+bool OurReader::readString() {
+ Char c = 0;
+ while (current_ != end_) {
+ c = getNextChar();
+ if (c == '\\')
+ getNextChar();
+ else if (c == '"')
+ break;
+ }
+ return c == '"';
+}
+
+bool OurReader::readStringSingleQuote() {
+ Char c = 0;
+ while (current_ != end_) {
+ c = getNextChar();
+ if (c == '\\')
+ getNextChar();
+ else if (c == '\'')
+ break;
+ }
+ return c == '\'';
+}
+
+bool OurReader::readObject(Token& token) {
+ Token tokenName;
+ String name;
+ Value init(objectValue);
+ currentValue().swapPayload(init);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ while (readToken(tokenName)) {
+ bool initialTokenOk = true;
+ while (tokenName.type_ == tokenComment && initialTokenOk)
+ initialTokenOk = readToken(tokenName);
+ if (!initialTokenOk)
+ break;
+ if (tokenName.type_ == tokenObjectEnd &&
+ (name.empty() ||
+ features_.allowTrailingCommas_)) // empty object or trailing comma
+ return true;
+ name.clear();
+ if (tokenName.type_ == tokenString) {
+ if (!decodeString(tokenName, name))
+ return recoverFromError(tokenObjectEnd);
+ } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
+ Value numberName;
+ if (!decodeNumber(tokenName, numberName))
+ return recoverFromError(tokenObjectEnd);
+ name = numberName.asString();
+ } else {
+ break;
+ }
+ if (name.length() >= (1U << 30))
+ throwRuntimeError("keylength >= 2^30");
+ if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
+ String msg = "Duplicate key: '" + name + "'";
+ return addErrorAndRecover(msg, tokenName, tokenObjectEnd);
+ }
+
+ Token colon;
+ if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
+ return addErrorAndRecover("Missing ':' after object member name", colon,
+ tokenObjectEnd);
+ }
+ Value& value = currentValue()[name];
+ nodes_.push(&value);
+ bool ok = readValue();
+ nodes_.pop();
+ if (!ok) // error already set
+ return recoverFromError(tokenObjectEnd);
+
+ Token comma;
+ if (!readToken(comma) ||
+ (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
+ comma.type_ != tokenComment)) {
+ return addErrorAndRecover("Missing ',' or '}' in object declaration",
+ comma, tokenObjectEnd);
+ }
+ bool finalizeTokenOk = true;
+ while (comma.type_ == tokenComment && finalizeTokenOk)
+ finalizeTokenOk = readToken(comma);
+ if (comma.type_ == tokenObjectEnd)
+ return true;
+ }
+ return addErrorAndRecover("Missing '}' or object member name", tokenName,
+ tokenObjectEnd);
+}
+
+bool OurReader::readArray(Token& token) {
+ Value init(arrayValue);
+ currentValue().swapPayload(init);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ int index = 0;
+ for (;;) {
+ skipSpaces();
+ if (current_ != end_ && *current_ == ']' &&
+ (index == 0 ||
+ (features_.allowTrailingCommas_ &&
+ !features_.allowDroppedNullPlaceholders_))) // empty array or trailing
+ // comma
+ {
+ Token endArray;
+ readToken(endArray);
+ return true;
+ }
+ Value& value = currentValue()[index++];
+ nodes_.push(&value);
+ bool ok = readValue();
+ nodes_.pop();
+ if (!ok) // error already set
+ return recoverFromError(tokenArrayEnd);
+
+ Token currentToken;
+ // Accept Comment after last item in the array.
+ ok = readToken(currentToken);
+ while (currentToken.type_ == tokenComment && ok) {
+ ok = readToken(currentToken);
+ }
+ bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
+ currentToken.type_ != tokenArrayEnd);
+ if (!ok || badTokenType) {
+ return addErrorAndRecover("Missing ',' or ']' in array declaration",
+ currentToken, tokenArrayEnd);
+ }
+ if (currentToken.type_ == tokenArrayEnd)
+ break;
+ }
+ return true;
+}
+
+bool OurReader::decodeNumber(Token& token) {
+ Value decoded;
+ if (!decodeNumber(token, decoded))
+ return false;
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool OurReader::decodeNumber(Token& token, Value& decoded) {
+ // Attempts to parse the number as an integer. If the number is
+ // larger than the maximum supported value of an integer then
+ // we decode the number as a double.
+ Location current = token.start_;
+ const bool isNegative = *current == '-';
+ if (isNegative) {
+ ++current;
+ }
+
+ // We assume we can represent the largest and smallest integer types as
+ // unsigned integers with separate sign. This is only true if they can fit
+ // into an unsigned integer.
+ static_assert(Value::maxLargestInt <= Value::maxLargestUInt,
+ "Int must be smaller than UInt");
+
+ // We need to convert minLargestInt into a positive number. The easiest way
+ // to do this conversion is to assume our "threshold" value of minLargestInt
+ // divided by 10 can fit in maxLargestInt when absolute valued. This should
+ // be a safe assumption.
+ static_assert(Value::minLargestInt <= -Value::maxLargestInt,
+ "The absolute value of minLargestInt must be greater than or "
+ "equal to maxLargestInt");
+ static_assert(Value::minLargestInt / 10 >= -Value::maxLargestInt,
+ "The absolute value of minLargestInt must be only 1 magnitude "
+ "larger than maxLargest Int");
+
+ static constexpr Value::LargestUInt positive_threshold =
+ Value::maxLargestUInt / 10;
+ static constexpr Value::UInt positive_last_digit = Value::maxLargestUInt % 10;
+
+ // For the negative values, we have to be more careful. Since typically
+ // -Value::minLargestInt will cause an overflow, we first divide by 10 and
+ // then take the inverse. This assumes that minLargestInt is only a single
+ // power of 10 different in magnitude, which we check above. For the last
+ // digit, we take the modulus before negating for the same reason.
+ static constexpr auto negative_threshold =
+ Value::LargestUInt(-(Value::minLargestInt / 10));
+ static constexpr auto negative_last_digit =
+ Value::UInt(-(Value::minLargestInt % 10));
+
+ const Value::LargestUInt threshold =
+ isNegative ? negative_threshold : positive_threshold;
+ const Value::UInt max_last_digit =
+ isNegative ? negative_last_digit : positive_last_digit;
+
+ Value::LargestUInt value = 0;
+ while (current < token.end_) {
+ Char c = *current++;
+ if (c < '0' || c > '9')
+ return decodeDouble(token, decoded);
+
+ const auto digit(static_cast<Value::UInt>(c - '0'));
+ if (value >= threshold) {
+ // We've hit or exceeded the max value divided by 10 (rounded down). If
+ // a) we've only just touched the limit, meaing value == threshold,
+ // b) this is the last digit, or
+ // c) it's small enough to fit in that rounding delta, we're okay.
+ // Otherwise treat this number as a double to avoid overflow.
+ if (value > threshold || current != token.end_ ||
+ digit > max_last_digit) {
+ return decodeDouble(token, decoded);
+ }
+ }
+ value = value * 10 + digit;
+ }
+
+ if (isNegative) {
+ // We use the same magnitude assumption here, just in case.
+ const auto last_digit = static_cast<Value::UInt>(value % 10);
+ decoded = -Value::LargestInt(value / 10) * 10 - last_digit;
+ } else if (value <= Value::LargestUInt(Value::maxLargestInt)) {
+ decoded = Value::LargestInt(value);
+ } else {
+ decoded = value;
+ }
+
+ return true;
+}
+
+bool OurReader::decodeDouble(Token& token) {
+ Value decoded;
+ if (!decodeDouble(token, decoded))
+ return false;
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool OurReader::decodeDouble(Token& token, Value& decoded) {
+ double value = 0;
+ const String buffer(token.start_, token.end_);
+ IStringStream is(buffer);
+ if (!(is >> value)) {
+ return addError(
+ "'" + String(token.start_, token.end_) + "' is not a number.", token);
+ }
+ decoded = value;
+ return true;
+}
+
+bool OurReader::decodeString(Token& token) {
+ String decoded_string;
+ if (!decodeString(token, decoded_string))
+ return false;
+ Value decoded(decoded_string);
+ currentValue().swapPayload(decoded);
+ currentValue().setOffsetStart(token.start_ - begin_);
+ currentValue().setOffsetLimit(token.end_ - begin_);
+ return true;
+}
+
+bool OurReader::decodeString(Token& token, String& decoded) {
+ decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
+ Location current = token.start_ + 1; // skip '"'
+ Location end = token.end_ - 1; // do not include '"'
+ while (current != end) {
+ Char c = *current++;
+ if (c == '"')
+ break;
+ if (c == '\\') {
+ if (current == end)
+ return addError("Empty escape sequence in string", token, current);
+ Char escape = *current++;
+ switch (escape) {
+ case '"':
+ decoded += '"';
+ break;
+ case '/':
+ decoded += '/';
+ break;
+ case '\\':
+ decoded += '\\';
+ break;
+ case 'b':
+ decoded += '\b';
+ break;
+ case 'f':
+ decoded += '\f';
+ break;
+ case 'n':
+ decoded += '\n';
+ break;
+ case 'r':
+ decoded += '\r';
+ break;
+ case 't':
+ decoded += '\t';
+ break;
+ case 'u': {
+ unsigned int unicode;
+ if (!decodeUnicodeCodePoint(token, current, end, unicode))
+ return false;
+ decoded += codePointToUTF8(unicode);
+ } break;
+ default:
+ return addError("Bad escape sequence in string", token, current);
+ }
+ } else {
+ decoded += c;
+ }
+ }
+ return true;
+}
+
+bool OurReader::decodeUnicodeCodePoint(Token& token, Location& current,
+ Location end, unsigned int& unicode) {
+
+ if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
+ return false;
+ if (unicode >= 0xD800 && unicode <= 0xDBFF) {
+ // surrogate pairs
+ if (end - current < 6)
+ return addError(
+ "additional six characters expected to parse unicode surrogate pair.",
+ token, current);
+ if (*(current++) == '\\' && *(current++) == 'u') {
+ unsigned int surrogatePair;
+ if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
+ unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
+ } else
+ return false;
+ } else
+ return addError("expecting another \\u token to begin the second half of "
+ "a unicode surrogate pair",
+ token, current);
+ }
+ return true;
+}
+
+bool OurReader::decodeUnicodeEscapeSequence(Token& token, Location& current,
+ Location end,
+ unsigned int& ret_unicode) {
+ if (end - current < 4)
+ return addError(
+ "Bad unicode escape sequence in string: four digits expected.", token,
+ current);
+ int unicode = 0;
+ for (int index = 0; index < 4; ++index) {
+ Char c = *current++;
+ unicode *= 16;
+ if (c >= '0' && c <= '9')
+ unicode += c - '0';
+ else if (c >= 'a' && c <= 'f')
+ unicode += c - 'a' + 10;
+ else if (c >= 'A' && c <= 'F')
+ unicode += c - 'A' + 10;
+ else
+ return addError(
+ "Bad unicode escape sequence in string: hexadecimal digit expected.",
+ token, current);
+ }
+ ret_unicode = static_cast<unsigned int>(unicode);
+ return true;
+}
+
+bool OurReader::addError(const String& message, Token& token, Location extra) {
+ ErrorInfo info;
+ info.token_ = token;
+ info.message_ = message;
+ info.extra_ = extra;
+ errors_.push_back(info);
+ return false;
+}
+
+bool OurReader::recoverFromError(TokenType skipUntilToken) {
+ size_t errorCount = errors_.size();
+ Token skip;
+ for (;;) {
+ if (!readToken(skip))
+ errors_.resize(errorCount); // discard errors caused by recovery
+ if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
+ break;
+ }
+ errors_.resize(errorCount);
+ return false;
+}
+
+bool OurReader::addErrorAndRecover(const String& message, Token& token,
+ TokenType skipUntilToken) {
+ addError(message, token);
+ return recoverFromError(skipUntilToken);
+}
+
+Value& OurReader::currentValue() { return *(nodes_.top()); }
+
+OurReader::Char OurReader::getNextChar() {
+ if (current_ == end_)
+ return 0;
+ return *current_++;
+}
+
+void OurReader::getLocationLineAndColumn(Location location, int& line,
+ int& column) const {
+ Location current = begin_;
+ Location lastLineStart = current;
+ line = 0;
+ while (current < location && current != end_) {
+ Char c = *current++;
+ if (c == '\r') {
+ if (*current == '\n')
+ ++current;
+ lastLineStart = current;
+ ++line;
+ } else if (c == '\n') {
+ lastLineStart = current;
+ ++line;
+ }
+ }
+ // column & line start at 1
+ column = int(location - lastLineStart) + 1;
+ ++line;
+}
+
+String OurReader::getLocationLineAndColumn(Location location) const {
+ int line, column;
+ getLocationLineAndColumn(location, line, column);
+ char buffer[18 + 16 + 16 + 1];
+ jsoncpp_snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column);
+ return buffer;
+}
+
+String OurReader::getFormattedErrorMessages() const {
+ String formattedMessage;
+ for (const auto& error : errors_) {
+ formattedMessage +=
+ "* " + getLocationLineAndColumn(error.token_.start_) + "\n";
+ formattedMessage += " " + error.message_ + "\n";
+ if (error.extra_)
+ formattedMessage +=
+ "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n";
+ }
+ return formattedMessage;
+}
+
+std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
+ std::vector<OurReader::StructuredError> allErrors;
+ for (const auto& error : errors_) {
+ OurReader::StructuredError structured;
+ structured.offset_start = error.token_.start_ - begin_;
+ structured.offset_limit = error.token_.end_ - begin_;
+ structured.message = error.message_;
+ allErrors.push_back(structured);
+ }
+ return allErrors;
+}
+
+class OurCharReader : public CharReader {
+ bool const collectComments_;
+ OurReader reader_;
+
+public:
+ OurCharReader(bool collectComments, OurFeatures const& features)
+ : collectComments_(collectComments), reader_(features) {}
+ bool parse(char const* beginDoc, char const* endDoc, Value* root,
+ String* errs) override {
+ bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_);
+ if (errs) {
+ *errs = reader_.getFormattedErrorMessages();
+ }
+ return ok;
+ }
+};
+
+CharReaderBuilder::CharReaderBuilder() { setDefaults(&settings_); }
+CharReaderBuilder::~CharReaderBuilder() = default;
+CharReader* CharReaderBuilder::newCharReader() const {
+ bool collectComments = settings_["collectComments"].asBool();
+ OurFeatures features = OurFeatures::all();
+ features.allowComments_ = settings_["allowComments"].asBool();
+ features.allowTrailingCommas_ = settings_["allowTrailingCommas"].asBool();
+ features.strictRoot_ = settings_["strictRoot"].asBool();
+ features.allowDroppedNullPlaceholders_ =
+ settings_["allowDroppedNullPlaceholders"].asBool();
+ features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
+ features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool();
+
+ // Stack limit is always a size_t, so we get this as an unsigned int
+ // regardless of it we have 64-bit integer support enabled.
+ features.stackLimit_ = static_cast<size_t>(settings_["stackLimit"].asUInt());
+ features.failIfExtra_ = settings_["failIfExtra"].asBool();
+ features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool();
+ features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool();
+ features.skipBom_ = settings_["skipBom"].asBool();
+ return new OurCharReader(collectComments, features);
+}
+
+bool CharReaderBuilder::validate(Json::Value* invalid) const {
+ static const auto& valid_keys = *new std::set<String>{
+ "collectComments",
+ "allowComments",
+ "allowTrailingCommas",
+ "strictRoot",
+ "allowDroppedNullPlaceholders",
+ "allowNumericKeys",
+ "allowSingleQuotes",
+ "stackLimit",
+ "failIfExtra",
+ "rejectDupKeys",
+ "allowSpecialFloats",
+ "skipBom",
+ };
+ for (auto si = settings_.begin(); si != settings_.end(); ++si) {
+ auto key = si.name();
+ if (valid_keys.count(key))
+ continue;
+ if (invalid)
+ (*invalid)[std::move(key)] = *si;
+ else
+ return false;
+ }
+ return invalid ? invalid->empty() : true;
+}
+
+Value& CharReaderBuilder::operator[](const String& key) {
+ return settings_[key];
+}
+// static
+void CharReaderBuilder::strictMode(Json::Value* settings) {
+ //! [CharReaderBuilderStrictMode]
+ (*settings)["allowComments"] = false;
+ (*settings)["allowTrailingCommas"] = false;
+ (*settings)["strictRoot"] = true;
+ (*settings)["allowDroppedNullPlaceholders"] = false;
+ (*settings)["allowNumericKeys"] = false;
+ (*settings)["allowSingleQuotes"] = false;
+ (*settings)["stackLimit"] = 1000;
+ (*settings)["failIfExtra"] = true;
+ (*settings)["rejectDupKeys"] = true;
+ (*settings)["allowSpecialFloats"] = false;
+ (*settings)["skipBom"] = true;
+ //! [CharReaderBuilderStrictMode]
+}
+// static
+void CharReaderBuilder::setDefaults(Json::Value* settings) {
+ //! [CharReaderBuilderDefaults]
+ (*settings)["collectComments"] = true;
+ (*settings)["allowComments"] = true;
+ (*settings)["allowTrailingCommas"] = true;
+ (*settings)["strictRoot"] = false;
+ (*settings)["allowDroppedNullPlaceholders"] = false;
+ (*settings)["allowNumericKeys"] = false;
+ (*settings)["allowSingleQuotes"] = false;
+ (*settings)["stackLimit"] = 1000;
+ (*settings)["failIfExtra"] = false;
+ (*settings)["rejectDupKeys"] = false;
+ (*settings)["allowSpecialFloats"] = false;
+ (*settings)["skipBom"] = true;
+ //! [CharReaderBuilderDefaults]
+}
+
+//////////////////////////////////
+// global functions
+
+bool parseFromStream(CharReader::Factory const& fact, IStream& sin, Value* root,
+ String* errs) {
+ OStringStream ssin;
+ ssin << sin.rdbuf();
+ String doc = ssin.str();
+ char const* begin = doc.data();
+ char const* end = begin + doc.size();
+ // Note that we do not actually need a null-terminator.
+ CharReaderPtr const reader(fact.newCharReader());
+ return reader->parse(begin, end, root, errs);
+}
+
+IStream& operator>>(IStream& sin, Value& root) {
+ CharReaderBuilder b;
+ String errs;
+ bool ok = parseFromStream(b, sin, &root, &errs);
+ if (!ok) {
+ throwRuntimeError(errs);
+ }
+ return sin;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_reader.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_valueiterator.inl
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+// included by json_value.cpp
+
+namespace Json {
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueIteratorBase
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueIteratorBase::ValueIteratorBase() : current_() {}
+
+ValueIteratorBase::ValueIteratorBase(
+ const Value::ObjectValues::iterator& current)
+ : current_(current), isNull_(false) {}
+
+Value& ValueIteratorBase::deref() { return current_->second; }
+const Value& ValueIteratorBase::deref() const { return current_->second; }
+
+void ValueIteratorBase::increment() { ++current_; }
+
+void ValueIteratorBase::decrement() { --current_; }
+
+ValueIteratorBase::difference_type
+ValueIteratorBase::computeDistance(const SelfType& other) const {
+ // Iterator for null value are initialized using the default
+ // constructor, which initialize current_ to the default
+ // std::map::iterator. As begin() and end() are two instance
+ // of the default std::map::iterator, they can not be compared.
+ // To allow this, we handle this comparison specifically.
+ if (isNull_ && other.isNull_) {
+ return 0;
+ }
+
+ // Usage of std::distance is not portable (does not compile with Sun Studio 12
+ // RogueWave STL,
+ // which is the one used by default).
+ // Using a portable hand-made version for non random iterator instead:
+ // return difference_type( std::distance( current_, other.current_ ) );
+ difference_type myDistance = 0;
+ for (Value::ObjectValues::iterator it = current_; it != other.current_;
+ ++it) {
+ ++myDistance;
+ }
+ return myDistance;
+}
+
+bool ValueIteratorBase::isEqual(const SelfType& other) const {
+ if (isNull_) {
+ return other.isNull_;
+ }
+ return current_ == other.current_;
+}
+
+void ValueIteratorBase::copy(const SelfType& other) {
+ current_ = other.current_;
+ isNull_ = other.isNull_;
+}
+
+Value ValueIteratorBase::key() const {
+ const Value::CZString czstring = (*current_).first;
+ if (czstring.data()) {
+ if (czstring.isStaticString())
+ return Value(StaticString(czstring.data()));
+ return Value(czstring.data(), czstring.data() + czstring.length());
+ }
+ return Value(czstring.index());
+}
+
+UInt ValueIteratorBase::index() const {
+ const Value::CZString czstring = (*current_).first;
+ if (!czstring.data())
+ return czstring.index();
+ return Value::UInt(-1);
+}
+
+String ValueIteratorBase::name() const {
+ char const* keey;
+ char const* end;
+ keey = memberName(&end);
+ if (!keey)
+ return String();
+ return String(keey, end);
+}
+
+char const* ValueIteratorBase::memberName() const {
+ const char* cname = (*current_).first.data();
+ return cname ? cname : "";
+}
+
+char const* ValueIteratorBase::memberName(char const** end) const {
+ const char* cname = (*current_).first.data();
+ if (!cname) {
+ *end = nullptr;
+ return nullptr;
+ }
+ *end = cname + (*current_).first.length();
+ return cname;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueConstIterator
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueConstIterator::ValueConstIterator() = default;
+
+ValueConstIterator::ValueConstIterator(
+ const Value::ObjectValues::iterator& current)
+ : ValueIteratorBase(current) {}
+
+ValueConstIterator::ValueConstIterator(ValueIterator const& other)
+ : ValueIteratorBase(other) {}
+
+ValueConstIterator& ValueConstIterator::
+operator=(const ValueIteratorBase& other) {
+ copy(other);
+ return *this;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class ValueIterator
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+ValueIterator::ValueIterator() = default;
+
+ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current)
+ : ValueIteratorBase(current) {}
+
+ValueIterator::ValueIterator(const ValueConstIterator& other)
+ : ValueIteratorBase(other) {
+ throwRuntimeError("ConstIterator to Iterator should never be allowed.");
+}
+
+ValueIterator::ValueIterator(const ValueIterator& other) = default;
+
+ValueIterator& ValueIterator::operator=(const SelfType& other) {
+ copy(other);
+ return *this;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_valueiterator.inl
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_value.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include <json/assertions.h>
+#include <json/value.h>
+#include <json/writer.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <algorithm>
+#include <cassert>
+#include <cmath>
+#include <cstddef>
+#include <cstring>
+#include <iostream>
+#include <sstream>
+#include <utility>
+
+// Provide implementation equivalent of std::snprintf for older _MSC compilers
+#if defined(_MSC_VER) && _MSC_VER < 1900
+#include <stdarg.h>
+static int msvc_pre1900_c99_vsnprintf(char* outBuf, size_t size,
+ const char* format, va_list ap) {
+ int count = -1;
+ if (size != 0)
+ count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
+ if (count == -1)
+ count = _vscprintf(format, ap);
+ return count;
+}
+
+int JSON_API msvc_pre1900_c99_snprintf(char* outBuf, size_t size,
+ const char* format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ const int count = msvc_pre1900_c99_vsnprintf(outBuf, size, format, ap);
+ va_end(ap);
+ return count;
+}
+#endif
+
+// Disable warning C4702 : unreachable code
+#if defined(_MSC_VER)
+#pragma warning(disable : 4702)
+#endif
+
+#define JSON_ASSERT_UNREACHABLE assert(false)
+
+namespace Json {
+template <typename T>
+static std::unique_ptr<T> cloneUnique(const std::unique_ptr<T>& p) {
+ std::unique_ptr<T> r;
+ if (p) {
+ r = std::unique_ptr<T>(new T(*p));
+ }
+ return r;
+}
+
+// This is a walkaround to avoid the static initialization of Value::null.
+// kNull must be word-aligned to avoid crashing on ARM. We use an alignment of
+// 8 (instead of 4) as a bit of future-proofing.
+#if defined(__ARMEL__)
+#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
+#else
+#define ALIGNAS(byte_alignment)
+#endif
+
+// static
+Value const& Value::nullSingleton() {
+ static Value const nullStatic;
+ return nullStatic;
+}
+
+#if JSON_USE_NULLREF
+// for backwards compatibility, we'll leave these global references around, but
+// DO NOT use them in JSONCPP library code any more!
+// static
+Value const& Value::null = Value::nullSingleton();
+
+// static
+Value const& Value::nullRef = Value::nullSingleton();
+#endif
+
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+template <typename T, typename U>
+static inline bool InRange(double d, T min, U max) {
+ // The casts can lose precision, but we are looking only for
+ // an approximate range. Might fail on edge cases though. ~cdunn
+ return d >= static_cast<double>(min) && d <= static_cast<double>(max);
+}
+#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+static inline double integerToDouble(Json::UInt64 value) {
+ return static_cast<double>(Int64(value / 2)) * 2.0 +
+ static_cast<double>(Int64(value & 1));
+}
+
+template <typename T> static inline double integerToDouble(T value) {
+ return static_cast<double>(value);
+}
+
+template <typename T, typename U>
+static inline bool InRange(double d, T min, U max) {
+ return d >= integerToDouble(min) && d <= integerToDouble(max);
+}
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+
+/** Duplicates the specified string value.
+ * @param value Pointer to the string to duplicate. Must be zero-terminated if
+ * length is "unknown".
+ * @param length Length of the value. if equals to unknown, then it will be
+ * computed using strlen(value).
+ * @return Pointer on the duplicate instance of string.
+ */
+static inline char* duplicateStringValue(const char* value, size_t length) {
+ // Avoid an integer overflow in the call to malloc below by limiting length
+ // to a sane value.
+ if (length >= static_cast<size_t>(Value::maxInt))
+ length = Value::maxInt - 1;
+
+ auto newString = static_cast<char*>(malloc(length + 1));
+ if (newString == nullptr) {
+ throwRuntimeError("in Json::Value::duplicateStringValue(): "
+ "Failed to allocate string value buffer");
+ }
+ memcpy(newString, value, length);
+ newString[length] = 0;
+ return newString;
+}
+
+/* Record the length as a prefix.
+ */
+static inline char* duplicateAndPrefixStringValue(const char* value,
+ unsigned int length) {
+ // Avoid an integer overflow in the call to malloc below by limiting length
+ // to a sane value.
+ JSON_ASSERT_MESSAGE(length <= static_cast<unsigned>(Value::maxInt) -
+ sizeof(unsigned) - 1U,
+ "in Json::Value::duplicateAndPrefixStringValue(): "
+ "length too big for prefixing");
+ size_t actualLength = sizeof(length) + length + 1;
+ auto newString = static_cast<char*>(malloc(actualLength));
+ if (newString == nullptr) {
+ throwRuntimeError("in Json::Value::duplicateAndPrefixStringValue(): "
+ "Failed to allocate string value buffer");
+ }
+ *reinterpret_cast<unsigned*>(newString) = length;
+ memcpy(newString + sizeof(unsigned), value, length);
+ newString[actualLength - 1U] =
+ 0; // to avoid buffer over-run accidents by users later
+ return newString;
+}
+inline static void decodePrefixedString(bool isPrefixed, char const* prefixed,
+ unsigned* length, char const** value) {
+ if (!isPrefixed) {
+ *length = static_cast<unsigned>(strlen(prefixed));
+ *value = prefixed;
+ } else {
+ *length = *reinterpret_cast<unsigned const*>(prefixed);
+ *value = prefixed + sizeof(unsigned);
+ }
+}
+/** Free the string duplicated by
+ * duplicateStringValue()/duplicateAndPrefixStringValue().
+ */
+#if JSONCPP_USING_SECURE_MEMORY
+static inline void releasePrefixedStringValue(char* value) {
+ unsigned length = 0;
+ char const* valueDecoded;
+ decodePrefixedString(true, value, &length, &valueDecoded);
+ size_t const size = sizeof(unsigned) + length + 1U;
+ memset(value, 0, size);
+ free(value);
+}
+static inline void releaseStringValue(char* value, unsigned length) {
+ // length==0 => we allocated the strings memory
+ size_t size = (length == 0) ? strlen(value) : length;
+ memset(value, 0, size);
+ free(value);
+}
+#else // !JSONCPP_USING_SECURE_MEMORY
+static inline void releasePrefixedStringValue(char* value) { free(value); }
+static inline void releaseStringValue(char* value, unsigned) { free(value); }
+#endif // JSONCPP_USING_SECURE_MEMORY
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// ValueInternals...
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+#if !defined(JSON_IS_AMALGAMATION)
+
+#include "json_valueiterator.inl"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+#if JSON_USE_EXCEPTION
+Exception::Exception(String msg) : msg_(std::move(msg)) {}
+Exception::~Exception() noexcept = default;
+char const* Exception::what() const noexcept { return msg_.c_str(); }
+RuntimeError::RuntimeError(String const& msg) : Exception(msg) {}
+LogicError::LogicError(String const& msg) : Exception(msg) {}
+JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
+ throw RuntimeError(msg);
+}
+JSONCPP_NORETURN void throwLogicError(String const& msg) {
+ throw LogicError(msg);
+}
+#else // !JSON_USE_EXCEPTION
+JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
+ std::cerr << msg << std::endl;
+ abort();
+}
+JSONCPP_NORETURN void throwLogicError(String const& msg) {
+ std::cerr << msg << std::endl;
+ abort();
+}
+#endif
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class Value::CZString
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+// Notes: policy_ indicates if the string was allocated when
+// a string is stored.
+
+Value::CZString::CZString(ArrayIndex index) : cstr_(nullptr), index_(index) {}
+
+Value::CZString::CZString(char const* str, unsigned length,
+ DuplicationPolicy allocate)
+ : cstr_(str) {
+ // allocate != duplicate
+ storage_.policy_ = allocate & 0x3;
+ storage_.length_ = length & 0x3FFFFFFF;
+}
+
+Value::CZString::CZString(const CZString& other) {
+ cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != nullptr
+ ? duplicateStringValue(other.cstr_, other.storage_.length_)
+ : other.cstr_);
+ storage_.policy_ =
+ static_cast<unsigned>(
+ other.cstr_
+ ? (static_cast<DuplicationPolicy>(other.storage_.policy_) ==
+ noDuplication
+ ? noDuplication
+ : duplicate)
+ : static_cast<DuplicationPolicy>(other.storage_.policy_)) &
+ 3U;
+ storage_.length_ = other.storage_.length_;
+}
+
+Value::CZString::CZString(CZString&& other)
+ : cstr_(other.cstr_), index_(other.index_) {
+ other.cstr_ = nullptr;
+}
+
+Value::CZString::~CZString() {
+ if (cstr_ && storage_.policy_ == duplicate) {
+ releaseStringValue(const_cast<char*>(cstr_),
+ storage_.length_ + 1U); // +1 for null terminating
+ // character for sake of
+ // completeness but not actually
+ // necessary
+ }
+}
+
+void Value::CZString::swap(CZString& other) {
+ std::swap(cstr_, other.cstr_);
+ std::swap(index_, other.index_);
+}
+
+Value::CZString& Value::CZString::operator=(const CZString& other) {
+ cstr_ = other.cstr_;
+ index_ = other.index_;
+ return *this;
+}
+
+Value::CZString& Value::CZString::operator=(CZString&& other) {
+ cstr_ = other.cstr_;
+ index_ = other.index_;
+ other.cstr_ = nullptr;
+ return *this;
+}
+
+bool Value::CZString::operator<(const CZString& other) const {
+ if (!cstr_)
+ return index_ < other.index_;
+ // return strcmp(cstr_, other.cstr_) < 0;
+ // Assume both are strings.
+ unsigned this_len = this->storage_.length_;
+ unsigned other_len = other.storage_.length_;
+ unsigned min_len = std::min<unsigned>(this_len, other_len);
+ JSON_ASSERT(this->cstr_ && other.cstr_);
+ int comp = memcmp(this->cstr_, other.cstr_, min_len);
+ if (comp < 0)
+ return true;
+ if (comp > 0)
+ return false;
+ return (this_len < other_len);
+}
+
+bool Value::CZString::operator==(const CZString& other) const {
+ if (!cstr_)
+ return index_ == other.index_;
+ // return strcmp(cstr_, other.cstr_) == 0;
+ // Assume both are strings.
+ unsigned this_len = this->storage_.length_;
+ unsigned other_len = other.storage_.length_;
+ if (this_len != other_len)
+ return false;
+ JSON_ASSERT(this->cstr_ && other.cstr_);
+ int comp = memcmp(this->cstr_, other.cstr_, this_len);
+ return comp == 0;
+}
+
+ArrayIndex Value::CZString::index() const { return index_; }
+
+// const char* Value::CZString::c_str() const { return cstr_; }
+const char* Value::CZString::data() const { return cstr_; }
+unsigned Value::CZString::length() const { return storage_.length_; }
+bool Value::CZString::isStaticString() const {
+ return storage_.policy_ == noDuplication;
+}
+
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// class Value::Value
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+// //////////////////////////////////////////////////////////////////
+
+/*! \internal Default constructor initialization must be equivalent to:
+ * memset( this, 0, sizeof(Value) )
+ * This optimization is used in ValueInternalMap fast allocator.
+ */
+Value::Value(ValueType type) {
+ static char const emptyString[] = "";
+ initBasic(type);
+ switch (type) {
+ case nullValue:
+ break;
+ case intValue:
+ case uintValue:
+ value_.int_ = 0;
+ break;
+ case realValue:
+ value_.real_ = 0.0;
+ break;
+ case stringValue:
+ // allocated_ == false, so this is safe.
+ value_.string_ = const_cast<char*>(static_cast<char const*>(emptyString));
+ break;
+ case arrayValue:
+ case objectValue:
+ value_.map_ = new ObjectValues();
+ break;
+ case booleanValue:
+ value_.bool_ = false;
+ break;
+ default:
+ JSON_ASSERT_UNREACHABLE;
+ }
+}
+
+Value::Value(Int value) {
+ initBasic(intValue);
+ value_.int_ = value;
+}
+
+Value::Value(UInt value) {
+ initBasic(uintValue);
+ value_.uint_ = value;
+}
+#if defined(JSON_HAS_INT64)
+Value::Value(Int64 value) {
+ initBasic(intValue);
+ value_.int_ = value;
+}
+Value::Value(UInt64 value) {
+ initBasic(uintValue);
+ value_.uint_ = value;
+}
+#endif // defined(JSON_HAS_INT64)
+
+Value::Value(double value) {
+ initBasic(realValue);
+ value_.real_ = value;
+}
+
+Value::Value(const char* value) {
+ initBasic(stringValue, true);
+ JSON_ASSERT_MESSAGE(value != nullptr,
+ "Null Value Passed to Value Constructor");
+ value_.string_ = duplicateAndPrefixStringValue(
+ value, static_cast<unsigned>(strlen(value)));
+}
+
+Value::Value(const char* begin, const char* end) {
+ initBasic(stringValue, true);
+ value_.string_ =
+ duplicateAndPrefixStringValue(begin, static_cast<unsigned>(end - begin));
+}
+
+Value::Value(const String& value) {
+ initBasic(stringValue, true);
+ value_.string_ = duplicateAndPrefixStringValue(
+ value.data(), static_cast<unsigned>(value.length()));
+}
+
+Value::Value(const StaticString& value) {
+ initBasic(stringValue);
+ value_.string_ = const_cast<char*>(value.c_str());
+}
+
+Value::Value(bool value) {
+ initBasic(booleanValue);
+ value_.bool_ = value;
+}
+
+Value::Value(const Value& other) {
+ dupPayload(other);
+ dupMeta(other);
+}
+
+Value::Value(Value&& other) {
+ initBasic(nullValue);
+ swap(other);
+}
+
+Value::~Value() {
+ releasePayload();
+ value_.uint_ = 0;
+}
+
+Value& Value::operator=(const Value& other) {
+ Value(other).swap(*this);
+ return *this;
+}
+
+Value& Value::operator=(Value&& other) {
+ other.swap(*this);
+ return *this;
+}
+
+void Value::swapPayload(Value& other) {
+ std::swap(bits_, other.bits_);
+ std::swap(value_, other.value_);
+}
+
+void Value::copyPayload(const Value& other) {
+ releasePayload();
+ dupPayload(other);
+}
+
+void Value::swap(Value& other) {
+ swapPayload(other);
+ std::swap(comments_, other.comments_);
+ std::swap(start_, other.start_);
+ std::swap(limit_, other.limit_);
+}
+
+void Value::copy(const Value& other) {
+ copyPayload(other);
+ dupMeta(other);
+}
+
+ValueType Value::type() const {
+ return static_cast<ValueType>(bits_.value_type_);
+}
+
+int Value::compare(const Value& other) const {
+ if (*this < other)
+ return -1;
+ if (*this > other)
+ return 1;
+ return 0;
+}
+
+bool Value::operator<(const Value& other) const {
+ int typeDelta = type() - other.type();
+ if (typeDelta)
+ return typeDelta < 0;
+ switch (type()) {
+ case nullValue:
+ return false;
+ case intValue:
+ return value_.int_ < other.value_.int_;
+ case uintValue:
+ return value_.uint_ < other.value_.uint_;
+ case realValue:
+ return value_.real_ < other.value_.real_;
+ case booleanValue:
+ return value_.bool_ < other.value_.bool_;
+ case stringValue: {
+ if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
+ return other.value_.string_ != nullptr;
+ }
+ unsigned this_len;
+ unsigned other_len;
+ char const* this_str;
+ char const* other_str;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+ &this_str);
+ decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
+ &other_str);
+ unsigned min_len = std::min<unsigned>(this_len, other_len);
+ JSON_ASSERT(this_str && other_str);
+ int comp = memcmp(this_str, other_str, min_len);
+ if (comp < 0)
+ return true;
+ if (comp > 0)
+ return false;
+ return (this_len < other_len);
+ }
+ case arrayValue:
+ case objectValue: {
+ auto thisSize = value_.map_->size();
+ auto otherSize = other.value_.map_->size();
+ if (thisSize != otherSize)
+ return thisSize < otherSize;
+ return (*value_.map_) < (*other.value_.map_);
+ }
+ default:
+ JSON_ASSERT_UNREACHABLE;
+ }
+ return false; // unreachable
+}
+
+bool Value::operator<=(const Value& other) const { return !(other < *this); }
+
+bool Value::operator>=(const Value& other) const { return !(*this < other); }
+
+bool Value::operator>(const Value& other) const { return other < *this; }
+
+bool Value::operator==(const Value& other) const {
+ if (type() != other.type())
+ return false;
+ switch (type()) {
+ case nullValue:
+ return true;
+ case intValue:
+ return value_.int_ == other.value_.int_;
+ case uintValue:
+ return value_.uint_ == other.value_.uint_;
+ case realValue:
+ return value_.real_ == other.value_.real_;
+ case booleanValue:
+ return value_.bool_ == other.value_.bool_;
+ case stringValue: {
+ if ((value_.string_ == nullptr) || (other.value_.string_ == nullptr)) {
+ return (value_.string_ == other.value_.string_);
+ }
+ unsigned this_len;
+ unsigned other_len;
+ char const* this_str;
+ char const* other_str;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+ &this_str);
+ decodePrefixedString(other.isAllocated(), other.value_.string_, &other_len,
+ &other_str);
+ if (this_len != other_len)
+ return false;
+ JSON_ASSERT(this_str && other_str);
+ int comp = memcmp(this_str, other_str, this_len);
+ return comp == 0;
+ }
+ case arrayValue:
+ case objectValue:
+ return value_.map_->size() == other.value_.map_->size() &&
+ (*value_.map_) == (*other.value_.map_);
+ default:
+ JSON_ASSERT_UNREACHABLE;
+ }
+ return false; // unreachable
+}
+
+bool Value::operator!=(const Value& other) const { return !(*this == other); }
+
+const char* Value::asCString() const {
+ JSON_ASSERT_MESSAGE(type() == stringValue,
+ "in Json::Value::asCString(): requires stringValue");
+ if (value_.string_ == nullptr)
+ return nullptr;
+ unsigned this_len;
+ char const* this_str;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+ &this_str);
+ return this_str;
+}
+
+#if JSONCPP_USING_SECURE_MEMORY
+unsigned Value::getCStringLength() const {
+ JSON_ASSERT_MESSAGE(type() == stringValue,
+ "in Json::Value::asCString(): requires stringValue");
+ if (value_.string_ == 0)
+ return 0;
+ unsigned this_len;
+ char const* this_str;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+ &this_str);
+ return this_len;
+}
+#endif
+
+bool Value::getString(char const** begin, char const** end) const {
+ if (type() != stringValue)
+ return false;
+ if (value_.string_ == nullptr)
+ return false;
+ unsigned length;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &length,
+ begin);
+ *end = *begin + length;
+ return true;
+}
+
+String Value::asString() const {
+ switch (type()) {
+ case nullValue:
+ return "";
+ case stringValue: {
+ if (value_.string_ == nullptr)
+ return "";
+ unsigned this_len;
+ char const* this_str;
+ decodePrefixedString(this->isAllocated(), this->value_.string_, &this_len,
+ &this_str);
+ return String(this_str, this_len);
+ }
+ case booleanValue:
+ return value_.bool_ ? "true" : "false";
+ case intValue:
+ return valueToString(value_.int_);
+ case uintValue:
+ return valueToString(value_.uint_);
+ case realValue:
+ return valueToString(value_.real_);
+ default:
+ JSON_FAIL_MESSAGE("Type is not convertible to string");
+ }
+}
+
+Value::Int Value::asInt() const {
+ switch (type()) {
+ case intValue:
+ JSON_ASSERT_MESSAGE(isInt(), "LargestInt out of Int range");
+ return Int(value_.int_);
+ case uintValue:
+ JSON_ASSERT_MESSAGE(isInt(), "LargestUInt out of Int range");
+ return Int(value_.uint_);
+ case realValue:
+ JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt, maxInt),
+ "double out of Int range");
+ return Int(value_.real_);
+ case nullValue:
+ return 0;
+ case booleanValue:
+ return value_.bool_ ? 1 : 0;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to Int.");
+}
+
+Value::UInt Value::asUInt() const {
+ switch (type()) {
+ case intValue:
+ JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range");
+ return UInt(value_.int_);
+ case uintValue:
+ JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range");
+ return UInt(value_.uint_);
+ case realValue:
+ JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt),
+ "double out of UInt range");
+ return UInt(value_.real_);
+ case nullValue:
+ return 0;
+ case booleanValue:
+ return value_.bool_ ? 1 : 0;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to UInt.");
+}
+
+#if defined(JSON_HAS_INT64)
+
+Value::Int64 Value::asInt64() const {
+ switch (type()) {
+ case intValue:
+ return Int64(value_.int_);
+ case uintValue:
+ JSON_ASSERT_MESSAGE(isInt64(), "LargestUInt out of Int64 range");
+ return Int64(value_.uint_);
+ case realValue:
+ JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt64, maxInt64),
+ "double out of Int64 range");
+ return Int64(value_.real_);
+ case nullValue:
+ return 0;
+ case booleanValue:
+ return value_.bool_ ? 1 : 0;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to Int64.");
+}
+
+Value::UInt64 Value::asUInt64() const {
+ switch (type()) {
+ case intValue:
+ JSON_ASSERT_MESSAGE(isUInt64(), "LargestInt out of UInt64 range");
+ return UInt64(value_.int_);
+ case uintValue:
+ return UInt64(value_.uint_);
+ case realValue:
+ JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt64),
+ "double out of UInt64 range");
+ return UInt64(value_.real_);
+ case nullValue:
+ return 0;
+ case booleanValue:
+ return value_.bool_ ? 1 : 0;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to UInt64.");
+}
+#endif // if defined(JSON_HAS_INT64)
+
+LargestInt Value::asLargestInt() const {
+#if defined(JSON_NO_INT64)
+ return asInt();
+#else
+ return asInt64();
+#endif
+}
+
+LargestUInt Value::asLargestUInt() const {
+#if defined(JSON_NO_INT64)
+ return asUInt();
+#else
+ return asUInt64();
+#endif
+}
+
+double Value::asDouble() const {
+ switch (type()) {
+ case intValue:
+ return static_cast<double>(value_.int_);
+ case uintValue:
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ return static_cast<double>(value_.uint_);
+#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ return integerToDouble(value_.uint_);
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ case realValue:
+ return value_.real_;
+ case nullValue:
+ return 0.0;
+ case booleanValue:
+ return value_.bool_ ? 1.0 : 0.0;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to double.");
+}
+
+float Value::asFloat() const {
+ switch (type()) {
+ case intValue:
+ return static_cast<float>(value_.int_);
+ case uintValue:
+#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ return static_cast<float>(value_.uint_);
+#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ // This can fail (silently?) if the value is bigger than MAX_FLOAT.
+ return static_cast<float>(integerToDouble(value_.uint_));
+#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
+ case realValue:
+ return static_cast<float>(value_.real_);
+ case nullValue:
+ return 0.0;
+ case booleanValue:
+ return value_.bool_ ? 1.0F : 0.0F;
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to float.");
+}
+
+bool Value::asBool() const {
+ switch (type()) {
+ case booleanValue:
+ return value_.bool_;
+ case nullValue:
+ return false;
+ case intValue:
+ return value_.int_ != 0;
+ case uintValue:
+ return value_.uint_ != 0;
+ case realValue: {
+ // According to JavaScript language zero or NaN is regarded as false
+ const auto value_classification = std::fpclassify(value_.real_);
+ return value_classification != FP_ZERO && value_classification != FP_NAN;
+ }
+ default:
+ break;
+ }
+ JSON_FAIL_MESSAGE("Value is not convertible to bool.");
+}
+
+bool Value::isConvertibleTo(ValueType other) const {
+ switch (other) {
+ case nullValue:
+ return (isNumeric() && asDouble() == 0.0) ||
+ (type() == booleanValue && !value_.bool_) ||
+ (type() == stringValue && asString().empty()) ||
+ (type() == arrayValue && value_.map_->empty()) ||
+ (type() == objectValue && value_.map_->empty()) ||
+ type() == nullValue;
+ case intValue:
+ return isInt() ||
+ (type() == realValue && InRange(value_.real_, minInt, maxInt)) ||
+ type() == booleanValue || type() == nullValue;
+ case uintValue:
+ return isUInt() ||
+ (type() == realValue && InRange(value_.real_, 0, maxUInt)) ||
+ type() == booleanValue || type() == nullValue;
+ case realValue:
+ return isNumeric() || type() == booleanValue || type() == nullValue;
+ case booleanValue:
+ return isNumeric() || type() == booleanValue || type() == nullValue;
+ case stringValue:
+ return isNumeric() || type() == booleanValue || type() == stringValue ||
+ type() == nullValue;
+ case arrayValue:
+ return type() == arrayValue || type() == nullValue;
+ case objectValue:
+ return type() == objectValue || type() == nullValue;
+ }
+ JSON_ASSERT_UNREACHABLE;
+ return false;
+}
+
+/// Number of values in array or object
+ArrayIndex Value::size() const {
+ switch (type()) {
+ case nullValue:
+ case intValue:
+ case uintValue:
+ case realValue:
+ case booleanValue:
+ case stringValue:
+ return 0;
+ case arrayValue: // size of the array is highest index + 1
+ if (!value_.map_->empty()) {
+ ObjectValues::const_iterator itLast = value_.map_->end();
+ --itLast;
+ return (*itLast).first.index() + 1;
+ }
+ return 0;
+ case objectValue:
+ return ArrayIndex(value_.map_->size());
+ }
+ JSON_ASSERT_UNREACHABLE;
+ return 0; // unreachable;
+}
+
+bool Value::empty() const {
+ if (isNull() || isArray() || isObject())
+ return size() == 0U;
+ return false;
+}
+
+Value::operator bool() const { return !isNull(); }
+
+void Value::clear() {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue ||
+ type() == objectValue,
+ "in Json::Value::clear(): requires complex value");
+ start_ = 0;
+ limit_ = 0;
+ switch (type()) {
+ case arrayValue:
+ case objectValue:
+ value_.map_->clear();
+ break;
+ default:
+ break;
+ }
+}
+
+void Value::resize(ArrayIndex newSize) {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue,
+ "in Json::Value::resize(): requires arrayValue");
+ if (type() == nullValue)
+ *this = Value(arrayValue);
+ ArrayIndex oldSize = size();
+ if (newSize == 0)
+ clear();
+ else if (newSize > oldSize)
+ this->operator[](newSize - 1);
+ else {
+ for (ArrayIndex index = newSize; index < oldSize; ++index) {
+ value_.map_->erase(index);
+ }
+ JSON_ASSERT(size() == newSize);
+ }
+}
+
+Value& Value::operator[](ArrayIndex index) {
+ JSON_ASSERT_MESSAGE(
+ type() == nullValue || type() == arrayValue,
+ "in Json::Value::operator[](ArrayIndex): requires arrayValue");
+ if (type() == nullValue)
+ *this = Value(arrayValue);
+ CZString key(index);
+ auto it = value_.map_->lower_bound(key);
+ if (it != value_.map_->end() && (*it).first == key)
+ return (*it).second;
+
+ ObjectValues::value_type defaultValue(key, nullSingleton());
+ it = value_.map_->insert(it, defaultValue);
+ return (*it).second;
+}
+
+Value& Value::operator[](int index) {
+ JSON_ASSERT_MESSAGE(
+ index >= 0,
+ "in Json::Value::operator[](int index): index cannot be negative");
+ return (*this)[ArrayIndex(index)];
+}
+
+const Value& Value::operator[](ArrayIndex index) const {
+ JSON_ASSERT_MESSAGE(
+ type() == nullValue || type() == arrayValue,
+ "in Json::Value::operator[](ArrayIndex)const: requires arrayValue");
+ if (type() == nullValue)
+ return nullSingleton();
+ CZString key(index);
+ ObjectValues::const_iterator it = value_.map_->find(key);
+ if (it == value_.map_->end())
+ return nullSingleton();
+ return (*it).second;
+}
+
+const Value& Value::operator[](int index) const {
+ JSON_ASSERT_MESSAGE(
+ index >= 0,
+ "in Json::Value::operator[](int index) const: index cannot be negative");
+ return (*this)[ArrayIndex(index)];
+}
+
+void Value::initBasic(ValueType type, bool allocated) {
+ setType(type);
+ setIsAllocated(allocated);
+ comments_ = Comments{};
+ start_ = 0;
+ limit_ = 0;
+}
+
+void Value::dupPayload(const Value& other) {
+ setType(other.type());
+ setIsAllocated(false);
+ switch (type()) {
+ case nullValue:
+ case intValue:
+ case uintValue:
+ case realValue:
+ case booleanValue:
+ value_ = other.value_;
+ break;
+ case stringValue:
+ if (other.value_.string_ && other.isAllocated()) {
+ unsigned len;
+ char const* str;
+ decodePrefixedString(other.isAllocated(), other.value_.string_, &len,
+ &str);
+ value_.string_ = duplicateAndPrefixStringValue(str, len);
+ setIsAllocated(true);
+ } else {
+ value_.string_ = other.value_.string_;
+ }
+ break;
+ case arrayValue:
+ case objectValue:
+ value_.map_ = new ObjectValues(*other.value_.map_);
+ break;
+ default:
+ JSON_ASSERT_UNREACHABLE;
+ }
+}
+
+void Value::releasePayload() {
+ switch (type()) {
+ case nullValue:
+ case intValue:
+ case uintValue:
+ case realValue:
+ case booleanValue:
+ break;
+ case stringValue:
+ if (isAllocated())
+ releasePrefixedStringValue(value_.string_);
+ break;
+ case arrayValue:
+ case objectValue:
+ delete value_.map_;
+ break;
+ default:
+ JSON_ASSERT_UNREACHABLE;
+ }
+}
+
+void Value::dupMeta(const Value& other) {
+ comments_ = other.comments_;
+ start_ = other.start_;
+ limit_ = other.limit_;
+}
+
+// Access an object value by name, create a null member if it does not exist.
+// @pre Type of '*this' is object or null.
+// @param key is null-terminated.
+Value& Value::resolveReference(const char* key) {
+ JSON_ASSERT_MESSAGE(
+ type() == nullValue || type() == objectValue,
+ "in Json::Value::resolveReference(): requires objectValue");
+ if (type() == nullValue)
+ *this = Value(objectValue);
+ CZString actualKey(key, static_cast<unsigned>(strlen(key)),
+ CZString::noDuplication); // NOTE!
+ auto it = value_.map_->lower_bound(actualKey);
+ if (it != value_.map_->end() && (*it).first == actualKey)
+ return (*it).second;
+
+ ObjectValues::value_type defaultValue(actualKey, nullSingleton());
+ it = value_.map_->insert(it, defaultValue);
+ Value& value = (*it).second;
+ return value;
+}
+
+// @param key is not null-terminated.
+Value& Value::resolveReference(char const* key, char const* end) {
+ JSON_ASSERT_MESSAGE(
+ type() == nullValue || type() == objectValue,
+ "in Json::Value::resolveReference(key, end): requires objectValue");
+ if (type() == nullValue)
+ *this = Value(objectValue);
+ CZString actualKey(key, static_cast<unsigned>(end - key),
+ CZString::duplicateOnCopy);
+ auto it = value_.map_->lower_bound(actualKey);
+ if (it != value_.map_->end() && (*it).first == actualKey)
+ return (*it).second;
+
+ ObjectValues::value_type defaultValue(actualKey, nullSingleton());
+ it = value_.map_->insert(it, defaultValue);
+ Value& value = (*it).second;
+ return value;
+}
+
+Value Value::get(ArrayIndex index, const Value& defaultValue) const {
+ const Value* value = &((*this)[index]);
+ return value == &nullSingleton() ? defaultValue : *value;
+}
+
+bool Value::isValidIndex(ArrayIndex index) const { return index < size(); }
+
+Value const* Value::find(char const* begin, char const* end) const {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
+ "in Json::Value::find(begin, end): requires "
+ "objectValue or nullValue");
+ if (type() == nullValue)
+ return nullptr;
+ CZString actualKey(begin, static_cast<unsigned>(end - begin),
+ CZString::noDuplication);
+ ObjectValues::const_iterator it = value_.map_->find(actualKey);
+ if (it == value_.map_->end())
+ return nullptr;
+ return &(*it).second;
+}
+Value* Value::demand(char const* begin, char const* end) {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
+ "in Json::Value::demand(begin, end): requires "
+ "objectValue or nullValue");
+ return &resolveReference(begin, end);
+}
+const Value& Value::operator[](const char* key) const {
+ Value const* found = find(key, key + strlen(key));
+ if (!found)
+ return nullSingleton();
+ return *found;
+}
+Value const& Value::operator[](const String& key) const {
+ Value const* found = find(key.data(), key.data() + key.length());
+ if (!found)
+ return nullSingleton();
+ return *found;
+}
+
+Value& Value::operator[](const char* key) {
+ return resolveReference(key, key + strlen(key));
+}
+
+Value& Value::operator[](const String& key) {
+ return resolveReference(key.data(), key.data() + key.length());
+}
+
+Value& Value::operator[](const StaticString& key) {
+ return resolveReference(key.c_str());
+}
+
+Value& Value::append(const Value& value) { return append(Value(value)); }
+
+Value& Value::append(Value&& value) {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue,
+ "in Json::Value::append: requires arrayValue");
+ if (type() == nullValue) {
+ *this = Value(arrayValue);
+ }
+ return this->value_.map_->emplace(size(), std::move(value)).first->second;
+}
+
+bool Value::insert(ArrayIndex index, const Value& newValue) {
+ return insert(index, Value(newValue));
+}
+
+bool Value::insert(ArrayIndex index, Value&& newValue) {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == arrayValue,
+ "in Json::Value::insert: requires arrayValue");
+ ArrayIndex length = size();
+ if (index > length) {
+ return false;
+ }
+ for (ArrayIndex i = length; i > index; i--) {
+ (*this)[i] = std::move((*this)[i - 1]);
+ }
+ (*this)[index] = std::move(newValue);
+ return true;
+}
+
+Value Value::get(char const* begin, char const* end,
+ Value const& defaultValue) const {
+ Value const* found = find(begin, end);
+ return !found ? defaultValue : *found;
+}
+Value Value::get(char const* key, Value const& defaultValue) const {
+ return get(key, key + strlen(key), defaultValue);
+}
+Value Value::get(String const& key, Value const& defaultValue) const {
+ return get(key.data(), key.data() + key.length(), defaultValue);
+}
+
+bool Value::removeMember(const char* begin, const char* end, Value* removed) {
+ if (type() != objectValue) {
+ return false;
+ }
+ CZString actualKey(begin, static_cast<unsigned>(end - begin),
+ CZString::noDuplication);
+ auto it = value_.map_->find(actualKey);
+ if (it == value_.map_->end())
+ return false;
+ if (removed)
+ *removed = std::move(it->second);
+ value_.map_->erase(it);
+ return true;
+}
+bool Value::removeMember(const char* key, Value* removed) {
+ return removeMember(key, key + strlen(key), removed);
+}
+bool Value::removeMember(String const& key, Value* removed) {
+ return removeMember(key.data(), key.data() + key.length(), removed);
+}
+void Value::removeMember(const char* key) {
+ JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
+ "in Json::Value::removeMember(): requires objectValue");
+ if (type() == nullValue)
+ return;
+
+ CZString actualKey(key, unsigned(strlen(key)), CZString::noDuplication);
+ value_.map_->erase(actualKey);
+}
+void Value::removeMember(const String& key) { removeMember(key.c_str()); }
+
+bool Value::removeIndex(ArrayIndex index, Value* removed) {
+ if (type() != arrayValue) {
+ return false;
+ }
+ CZString key(index);
+ auto it = value_.map_->find(key);
+ if (it == value_.map_->end()) {
+ return false;
+ }
+ if (removed)
+ *removed = it->second;
+ ArrayIndex oldSize = size();
+ // shift left all items left, into the place of the "removed"
+ for (ArrayIndex i = index; i < (oldSize - 1); ++i) {
+ CZString keey(i);
+ (*value_.map_)[keey] = (*this)[i + 1];
+ }
+ // erase the last one ("leftover")
+ CZString keyLast(oldSize - 1);
+ auto itLast = value_.map_->find(keyLast);
+ value_.map_->erase(itLast);
+ return true;
+}
+
+bool Value::isMember(char const* begin, char const* end) const {
+ Value const* value = find(begin, end);
+ return nullptr != value;
+}
+bool Value::isMember(char const* key) const {
+ return isMember(key, key + strlen(key));
+}
+bool Value::isMember(String const& key) const {
+ return isMember(key.data(), key.data() + key.length());
+}
+
+Value::Members Value::getMemberNames() const {
+ JSON_ASSERT_MESSAGE(
+ type() == nullValue || type() == objectValue,
+ "in Json::Value::getMemberNames(), value must be objectValue");
+ if (type() == nullValue)
+ return Value::Members();
+ Members members;
+ members.reserve(value_.map_->size());
+ ObjectValues::const_iterator it = value_.map_->begin();
+ ObjectValues::const_iterator itEnd = value_.map_->end();
+ for (; it != itEnd; ++it) {
+ members.push_back(String((*it).first.data(), (*it).first.length()));
+ }
+ return members;
+}
+
+static bool IsIntegral(double d) {
+ double integral_part;
+ return modf(d, &integral_part) == 0.0;
+}
+
+bool Value::isNull() const { return type() == nullValue; }
+
+bool Value::isBool() const { return type() == booleanValue; }
+
+bool Value::isInt() const {
+ switch (type()) {
+ case intValue:
+#if defined(JSON_HAS_INT64)
+ return value_.int_ >= minInt && value_.int_ <= maxInt;
+#else
+ return true;
+#endif
+ case uintValue:
+ return value_.uint_ <= UInt(maxInt);
+ case realValue:
+ return value_.real_ >= minInt && value_.real_ <= maxInt &&
+ IsIntegral(value_.real_);
+ default:
+ break;
+ }
+ return false;
+}
+
+bool Value::isUInt() const {
+ switch (type()) {
+ case intValue:
+#if defined(JSON_HAS_INT64)
+ return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt);
+#else
+ return value_.int_ >= 0;
+#endif
+ case uintValue:
+#if defined(JSON_HAS_INT64)
+ return value_.uint_ <= maxUInt;
+#else
+ return true;
+#endif
+ case realValue:
+ return value_.real_ >= 0 && value_.real_ <= maxUInt &&
+ IsIntegral(value_.real_);
+ default:
+ break;
+ }
+ return false;
+}
+
+bool Value::isInt64() const {
+#if defined(JSON_HAS_INT64)
+ switch (type()) {
+ case intValue:
+ return true;
+ case uintValue:
+ return value_.uint_ <= UInt64(maxInt64);
+ case realValue:
+ // Note that maxInt64 (= 2^63 - 1) is not exactly representable as a
+ // double, so double(maxInt64) will be rounded up to 2^63. Therefore we
+ // require the value to be strictly less than the limit.
+ return value_.real_ >= double(minInt64) &&
+ value_.real_ < double(maxInt64) && IsIntegral(value_.real_);
+ default:
+ break;
+ }
+#endif // JSON_HAS_INT64
+ return false;
+}
+
+bool Value::isUInt64() const {
+#if defined(JSON_HAS_INT64)
+ switch (type()) {
+ case intValue:
+ return value_.int_ >= 0;
+ case uintValue:
+ return true;
+ case realValue:
+ // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
+ // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
+ // require the value to be strictly less than the limit.
+ return value_.real_ >= 0 && value_.real_ < maxUInt64AsDouble &&
+ IsIntegral(value_.real_);
+ default:
+ break;
+ }
+#endif // JSON_HAS_INT64
+ return false;
+}
+
+bool Value::isIntegral() const {
+ switch (type()) {
+ case intValue:
+ case uintValue:
+ return true;
+ case realValue:
+#if defined(JSON_HAS_INT64)
+ // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a
+ // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we
+ // require the value to be strictly less than the limit.
+ return value_.real_ >= double(minInt64) &&
+ value_.real_ < maxUInt64AsDouble && IsIntegral(value_.real_);
+#else
+ return value_.real_ >= minInt && value_.real_ <= maxUInt &&
+ IsIntegral(value_.real_);
+#endif // JSON_HAS_INT64
+ default:
+ break;
+ }
+ return false;
+}
+
+bool Value::isDouble() const {
+ return type() == intValue || type() == uintValue || type() == realValue;
+}
+
+bool Value::isNumeric() const { return isDouble(); }
+
+bool Value::isString() const { return type() == stringValue; }
+
+bool Value::isArray() const { return type() == arrayValue; }
+
+bool Value::isObject() const { return type() == objectValue; }
+
+Value::Comments::Comments(const Comments& that)
+ : ptr_{cloneUnique(that.ptr_)} {}
+
+Value::Comments::Comments(Comments&& that) : ptr_{std::move(that.ptr_)} {}
+
+Value::Comments& Value::Comments::operator=(const Comments& that) {
+ ptr_ = cloneUnique(that.ptr_);
+ return *this;
+}
+
+Value::Comments& Value::Comments::operator=(Comments&& that) {
+ ptr_ = std::move(that.ptr_);
+ return *this;
+}
+
+bool Value::Comments::has(CommentPlacement slot) const {
+ return ptr_ && !(*ptr_)[slot].empty();
+}
+
+String Value::Comments::get(CommentPlacement slot) const {
+ if (!ptr_)
+ return {};
+ return (*ptr_)[slot];
+}
+
+void Value::Comments::set(CommentPlacement slot, String comment) {
+ if (!ptr_) {
+ ptr_ = std::unique_ptr<Array>(new Array());
+ }
+ // check comments array boundry.
+ if (slot < CommentPlacement::numberOfCommentPlacement) {
+ (*ptr_)[slot] = std::move(comment);
+ }
+}
+
+void Value::setComment(String comment, CommentPlacement placement) {
+ if (!comment.empty() && (comment.back() == '\n')) {
+ // Always discard trailing newline, to aid indentation.
+ comment.pop_back();
+ }
+ JSON_ASSERT(!comment.empty());
+ JSON_ASSERT_MESSAGE(
+ comment[0] == '\0' || comment[0] == '/',
+ "in Json::Value::setComment(): Comments must start with /");
+ comments_.set(placement, std::move(comment));
+}
+
+bool Value::hasComment(CommentPlacement placement) const {
+ return comments_.has(placement);
+}
+
+String Value::getComment(CommentPlacement placement) const {
+ return comments_.get(placement);
+}
+
+void Value::setOffsetStart(ptrdiff_t start) { start_ = start; }
+
+void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; }
+
+ptrdiff_t Value::getOffsetStart() const { return start_; }
+
+ptrdiff_t Value::getOffsetLimit() const { return limit_; }
+
+String Value::toStyledString() const {
+ StreamWriterBuilder builder;
+
+ String out = this->hasComment(commentBefore) ? "\n" : "";
+ out += Json::writeString(builder, *this);
+ out += '\n';
+
+ return out;
+}
+
+Value::const_iterator Value::begin() const {
+ switch (type()) {
+ case arrayValue:
+ case objectValue:
+ if (value_.map_)
+ return const_iterator(value_.map_->begin());
+ break;
+ default:
+ break;
+ }
+ return {};
+}
+
+Value::const_iterator Value::end() const {
+ switch (type()) {
+ case arrayValue:
+ case objectValue:
+ if (value_.map_)
+ return const_iterator(value_.map_->end());
+ break;
+ default:
+ break;
+ }
+ return {};
+}
+
+Value::iterator Value::begin() {
+ switch (type()) {
+ case arrayValue:
+ case objectValue:
+ if (value_.map_)
+ return iterator(value_.map_->begin());
+ break;
+ default:
+ break;
+ }
+ return iterator();
+}
+
+Value::iterator Value::end() {
+ switch (type()) {
+ case arrayValue:
+ case objectValue:
+ if (value_.map_)
+ return iterator(value_.map_->end());
+ break;
+ default:
+ break;
+ }
+ return iterator();
+}
+
+// class PathArgument
+// //////////////////////////////////////////////////////////////////
+
+PathArgument::PathArgument() = default;
+
+PathArgument::PathArgument(ArrayIndex index)
+ : index_(index), kind_(kindIndex) {}
+
+PathArgument::PathArgument(const char* key) : key_(key), kind_(kindKey) {}
+
+PathArgument::PathArgument(String key) : key_(std::move(key)), kind_(kindKey) {}
+
+// class Path
+// //////////////////////////////////////////////////////////////////
+
+Path::Path(const String& path, const PathArgument& a1, const PathArgument& a2,
+ const PathArgument& a3, const PathArgument& a4,
+ const PathArgument& a5) {
+ InArgs in;
+ in.reserve(5);
+ in.push_back(&a1);
+ in.push_back(&a2);
+ in.push_back(&a3);
+ in.push_back(&a4);
+ in.push_back(&a5);
+ makePath(path, in);
+}
+
+void Path::makePath(const String& path, const InArgs& in) {
+ const char* current = path.c_str();
+ const char* end = current + path.length();
+ auto itInArg = in.begin();
+ while (current != end) {
+ if (*current == '[') {
+ ++current;
+ if (*current == '%')
+ addPathInArg(path, in, itInArg, PathArgument::kindIndex);
+ else {
+ ArrayIndex index = 0;
+ for (; current != end && *current >= '0' && *current <= '9'; ++current)
+ index = index * 10 + ArrayIndex(*current - '0');
+ args_.push_back(index);
+ }
+ if (current == end || *++current != ']')
+ invalidPath(path, int(current - path.c_str()));
+ } else if (*current == '%') {
+ addPathInArg(path, in, itInArg, PathArgument::kindKey);
+ ++current;
+ } else if (*current == '.' || *current == ']') {
+ ++current;
+ } else {
+ const char* beginName = current;
+ while (current != end && !strchr("[.", *current))
+ ++current;
+ args_.push_back(String(beginName, current));
+ }
+ }
+}
+
+void Path::addPathInArg(const String& /*path*/, const InArgs& in,
+ InArgs::const_iterator& itInArg,
+ PathArgument::Kind kind) {
+ if (itInArg == in.end()) {
+ // Error: missing argument %d
+ } else if ((*itInArg)->kind_ != kind) {
+ // Error: bad argument type
+ } else {
+ args_.push_back(**itInArg++);
+ }
+}
+
+void Path::invalidPath(const String& /*path*/, int /*location*/) {
+ // Error: invalid path.
+}
+
+const Value& Path::resolve(const Value& root) const {
+ const Value* node = &root;
+ for (const auto& arg : args_) {
+ if (arg.kind_ == PathArgument::kindIndex) {
+ if (!node->isArray() || !node->isValidIndex(arg.index_)) {
+ // Error: unable to resolve path (array value expected at position... )
+ return Value::nullSingleton();
+ }
+ node = &((*node)[arg.index_]);
+ } else if (arg.kind_ == PathArgument::kindKey) {
+ if (!node->isObject()) {
+ // Error: unable to resolve path (object value expected at position...)
+ return Value::nullSingleton();
+ }
+ node = &((*node)[arg.key_]);
+ if (node == &Value::nullSingleton()) {
+ // Error: unable to resolve path (object has no member named '' at
+ // position...)
+ return Value::nullSingleton();
+ }
+ }
+ }
+ return *node;
+}
+
+Value Path::resolve(const Value& root, const Value& defaultValue) const {
+ const Value* node = &root;
+ for (const auto& arg : args_) {
+ if (arg.kind_ == PathArgument::kindIndex) {
+ if (!node->isArray() || !node->isValidIndex(arg.index_))
+ return defaultValue;
+ node = &((*node)[arg.index_]);
+ } else if (arg.kind_ == PathArgument::kindKey) {
+ if (!node->isObject())
+ return defaultValue;
+ node = &((*node)[arg.key_]);
+ if (node == &Value::nullSingleton())
+ return defaultValue;
+ }
+ }
+ return *node;
+}
+
+Value& Path::make(Value& root) const {
+ Value* node = &root;
+ for (const auto& arg : args_) {
+ if (arg.kind_ == PathArgument::kindIndex) {
+ if (!node->isArray()) {
+ // Error: node is not an array at position ...
+ }
+ node = &((*node)[arg.index_]);
+ } else if (arg.kind_ == PathArgument::kindKey) {
+ if (!node->isObject()) {
+ // Error: node is not an object at position...
+ }
+ node = &((*node)[arg.key_]);
+ }
+ }
+ return *node;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_value.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: src/lib_json/json_writer.cpp
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2011 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "json_tool.h"
+#include <json/writer.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include <algorithm>
+#include <cassert>
+#include <cctype>
+#include <cstring>
+#include <iomanip>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <utility>
+
+#if __cplusplus >= 201103L
+#include <cmath>
+#include <cstdio>
+
+#if !defined(isnan)
+#define isnan std::isnan
+#endif
+
+#if !defined(isfinite)
+#define isfinite std::isfinite
+#endif
+
+#else
+#include <cmath>
+#include <cstdio>
+
+#if defined(_MSC_VER)
+#if !defined(isnan)
+#include <float.h>
+#define isnan _isnan
+#endif
+
+#if !defined(isfinite)
+#include <float.h>
+#define isfinite _finite
+#endif
+
+#if !defined(_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#endif //_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
+
+#endif //_MSC_VER
+
+#if defined(__sun) && defined(__SVR4) // Solaris
+#if !defined(isfinite)
+#include <ieeefp.h>
+#define isfinite finite
+#endif
+#endif
+
+#if defined(__hpux)
+#if !defined(isfinite)
+#if defined(__ia64) && !defined(finite)
+#define isfinite(x) \
+ ((sizeof(x) == sizeof(float) ? _Isfinitef(x) : _IsFinite(x)))
+#endif
+#endif
+#endif
+
+#if !defined(isnan)
+// IEEE standard states that NaN values will not compare to themselves
+#define isnan(x) (x != x)
+#endif
+
+#if !defined(__APPLE__)
+#if !defined(isfinite)
+#define isfinite finite
+#endif
+#endif
+#endif
+
+#if defined(_MSC_VER)
+// Disable warning about strdup being deprecated.
+#pragma warning(disable : 4996)
+#endif
+
+namespace Json {
+
+#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520)
+using StreamWriterPtr = std::unique_ptr<StreamWriter>;
+#else
+using StreamWriterPtr = std::auto_ptr<StreamWriter>;
+#endif
+
+String valueToString(LargestInt value) {
+ UIntToStringBuffer buffer;
+ char* current = buffer + sizeof(buffer);
+ if (value == Value::minLargestInt) {
+ uintToString(LargestUInt(Value::maxLargestInt) + 1, current);
+ *--current = '-';
+ } else if (value < 0) {
+ uintToString(LargestUInt(-value), current);
+ *--current = '-';
+ } else {
+ uintToString(LargestUInt(value), current);
+ }
+ assert(current >= buffer);
+ return current;
+}
+
+String valueToString(LargestUInt value) {
+ UIntToStringBuffer buffer;
+ char* current = buffer + sizeof(buffer);
+ uintToString(value, current);
+ assert(current >= buffer);
+ return current;
+}
+
+#if defined(JSON_HAS_INT64)
+
+String valueToString(Int value) { return valueToString(LargestInt(value)); }
+
+String valueToString(UInt value) { return valueToString(LargestUInt(value)); }
+
+#endif // # if defined(JSON_HAS_INT64)
+
+namespace {
+String valueToString(double value, bool useSpecialFloats,
+ unsigned int precision, PrecisionType precisionType) {
+ // Print into the buffer. We need not request the alternative representation
+ // that always has a decimal point because JSON doesn't distinguish the
+ // concepts of reals and integers.
+ if (!isfinite(value)) {
+ static const char* const reps[2][3] = {{"NaN", "-Infinity", "Infinity"},
+ {"null", "-1e+9999", "1e+9999"}};
+ return reps[useSpecialFloats ? 0 : 1]
+ [isnan(value) ? 0 : (value < 0) ? 1 : 2];
+ }
+
+ String buffer(size_t(36), '\0');
+ while (true) {
+ int len = jsoncpp_snprintf(
+ &*buffer.begin(), buffer.size(),
+ (precisionType == PrecisionType::significantDigits) ? "%.*g" : "%.*f",
+ precision, value);
+ assert(len >= 0);
+ auto wouldPrint = static_cast<size_t>(len);
+ if (wouldPrint >= buffer.size()) {
+ buffer.resize(wouldPrint + 1);
+ continue;
+ }
+ buffer.resize(wouldPrint);
+ break;
+ }
+
+ buffer.erase(fixNumericLocale(buffer.begin(), buffer.end()), buffer.end());
+
+ // strip the zero padding from the right
+ if (precisionType == PrecisionType::decimalPlaces) {
+ buffer.erase(fixZerosInTheEnd(buffer.begin(), buffer.end()), buffer.end());
+ }
+
+ // try to ensure we preserve the fact that this was given to us as a double on
+ // input
+ if (buffer.find('.') == buffer.npos && buffer.find('e') == buffer.npos) {
+ buffer += ".0";
+ }
+ return buffer;
+}
+} // namespace
+
+String valueToString(double value, unsigned int precision,
+ PrecisionType precisionType) {
+ return valueToString(value, false, precision, precisionType);
+}
+
+String valueToString(bool value) { return value ? "true" : "false"; }
+
+static bool doesAnyCharRequireEscaping(char const* s, size_t n) {
+ assert(s || !n);
+
+ return std::any_of(s, s + n, [](unsigned char c) {
+ return c == '\\' || c == '"' || c < 0x20 || c > 0x7F;
+ });
+}
+
+static unsigned int utf8ToCodepoint(const char*& s, const char* e) {
+ const unsigned int REPLACEMENT_CHARACTER = 0xFFFD;
+
+ unsigned int firstByte = static_cast<unsigned char>(*s);
+
+ if (firstByte < 0x80)
+ return firstByte;
+
+ if (firstByte < 0xE0) {
+ if (e - s < 2)
+ return REPLACEMENT_CHARACTER;
+
+ unsigned int calculated =
+ ((firstByte & 0x1F) << 6) | (static_cast<unsigned int>(s[1]) & 0x3F);
+ s += 1;
+ // oversized encoded characters are invalid
+ return calculated < 0x80 ? REPLACEMENT_CHARACTER : calculated;
+ }
+
+ if (firstByte < 0xF0) {
+ if (e - s < 3)
+ return REPLACEMENT_CHARACTER;
+
+ unsigned int calculated = ((firstByte & 0x0F) << 12) |
+ ((static_cast<unsigned int>(s[1]) & 0x3F) << 6) |
+ (static_cast<unsigned int>(s[2]) & 0x3F);
+ s += 2;
+ // surrogates aren't valid codepoints itself
+ // shouldn't be UTF-8 encoded
+ if (calculated >= 0xD800 && calculated <= 0xDFFF)
+ return REPLACEMENT_CHARACTER;
+ // oversized encoded characters are invalid
+ return calculated < 0x800 ? REPLACEMENT_CHARACTER : calculated;
+ }
+
+ if (firstByte < 0xF8) {
+ if (e - s < 4)
+ return REPLACEMENT_CHARACTER;
+
+ unsigned int calculated = ((firstByte & 0x07) << 18) |
+ ((static_cast<unsigned int>(s[1]) & 0x3F) << 12) |
+ ((static_cast<unsigned int>(s[2]) & 0x3F) << 6) |
+ (static_cast<unsigned int>(s[3]) & 0x3F);
+ s += 3;
+ // oversized encoded characters are invalid
+ return calculated < 0x10000 ? REPLACEMENT_CHARACTER : calculated;
+ }
+
+ return REPLACEMENT_CHARACTER;
+}
+
+static const char hex2[] = "000102030405060708090a0b0c0d0e0f"
+ "101112131415161718191a1b1c1d1e1f"
+ "202122232425262728292a2b2c2d2e2f"
+ "303132333435363738393a3b3c3d3e3f"
+ "404142434445464748494a4b4c4d4e4f"
+ "505152535455565758595a5b5c5d5e5f"
+ "606162636465666768696a6b6c6d6e6f"
+ "707172737475767778797a7b7c7d7e7f"
+ "808182838485868788898a8b8c8d8e8f"
+ "909192939495969798999a9b9c9d9e9f"
+ "a0a1a2a3a4a5a6a7a8a9aaabacadaeaf"
+ "b0b1b2b3b4b5b6b7b8b9babbbcbdbebf"
+ "c0c1c2c3c4c5c6c7c8c9cacbcccdcecf"
+ "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf"
+ "e0e1e2e3e4e5e6e7e8e9eaebecedeeef"
+ "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff";
+
+static String toHex16Bit(unsigned int x) {
+ const unsigned int hi = (x >> 8) & 0xff;
+ const unsigned int lo = x & 0xff;
+ String result(4, ' ');
+ result[0] = hex2[2 * hi];
+ result[1] = hex2[2 * hi + 1];
+ result[2] = hex2[2 * lo];
+ result[3] = hex2[2 * lo + 1];
+ return result;
+}
+
+static void appendRaw(String& result, unsigned ch) {
+ result += static_cast<char>(ch);
+}
+
+static void appendHex(String& result, unsigned ch) {
+ result.append("\\u").append(toHex16Bit(ch));
+}
+
+static String valueToQuotedStringN(const char* value, unsigned length,
+ bool emitUTF8 = false) {
+ if (value == nullptr)
+ return "";
+
+ if (!doesAnyCharRequireEscaping(value, length))
+ return String("\"") + value + "\"";
+ // We have to walk value and escape any special characters.
+ // Appending to String is not efficient, but this should be rare.
+ // (Note: forward slashes are *not* rare, but I am not escaping them.)
+ String::size_type maxsize = length * 2 + 3; // allescaped+quotes+NULL
+ String result;
+ result.reserve(maxsize); // to avoid lots of mallocs
+ result += "\"";
+ char const* end = value + length;
+ for (const char* c = value; c != end; ++c) {
+ switch (*c) {
+ case '\"':
+ result += "\\\"";
+ break;
+ case '\\':
+ result += "\\\\";
+ break;
+ case '\b':
+ result += "\\b";
+ break;
+ case '\f':
+ result += "\\f";
+ break;
+ case '\n':
+ result += "\\n";
+ break;
+ case '\r':
+ result += "\\r";
+ break;
+ case '\t':
+ result += "\\t";
+ break;
+ // case '/':
+ // Even though \/ is considered a legal escape in JSON, a bare
+ // slash is also legal, so I see no reason to escape it.
+ // (I hope I am not misunderstanding something.)
+ // blep notes: actually escaping \/ may be useful in javascript to avoid </
+ // sequence.
+ // Should add a flag to allow this compatibility mode and prevent this
+ // sequence from occurring.
+ default: {
+ if (emitUTF8) {
+ unsigned codepoint = static_cast<unsigned char>(*c);
+ if (codepoint < 0x20) {
+ appendHex(result, codepoint);
+ } else {
+ appendRaw(result, codepoint);
+ }
+ } else {
+ unsigned codepoint = utf8ToCodepoint(c, end); // modifies `c`
+ if (codepoint < 0x20) {
+ appendHex(result, codepoint);
+ } else if (codepoint < 0x80) {
+ appendRaw(result, codepoint);
+ } else if (codepoint < 0x10000) {
+ // Basic Multilingual Plane
+ appendHex(result, codepoint);
+ } else {
+ // Extended Unicode. Encode 20 bits as a surrogate pair.
+ codepoint -= 0x10000;
+ appendHex(result, 0xd800 + ((codepoint >> 10) & 0x3ff));
+ appendHex(result, 0xdc00 + (codepoint & 0x3ff));
+ }
+ }
+ } break;
+ }
+ }
+ result += "\"";
+ return result;
+}
+
+String valueToQuotedString(const char* value) {
+ return valueToQuotedStringN(value, static_cast<unsigned int>(strlen(value)));
+}
+
+// Class Writer
+// //////////////////////////////////////////////////////////////////
+Writer::~Writer() = default;
+
+// Class FastWriter
+// //////////////////////////////////////////////////////////////////
+
+FastWriter::FastWriter()
+
+ = default;
+
+void FastWriter::enableYAMLCompatibility() { yamlCompatibilityEnabled_ = true; }
+
+void FastWriter::dropNullPlaceholders() { dropNullPlaceholders_ = true; }
+
+void FastWriter::omitEndingLineFeed() { omitEndingLineFeed_ = true; }
+
+String FastWriter::write(const Value& root) {
+ document_.clear();
+ writeValue(root);
+ if (!omitEndingLineFeed_)
+ document_ += '\n';
+ return document_;
+}
+
+void FastWriter::writeValue(const Value& value) {
+ switch (value.type()) {
+ case nullValue:
+ if (!dropNullPlaceholders_)
+ document_ += "null";
+ break;
+ case intValue:
+ document_ += valueToString(value.asLargestInt());
+ break;
+ case uintValue:
+ document_ += valueToString(value.asLargestUInt());
+ break;
+ case realValue:
+ document_ += valueToString(value.asDouble());
+ break;
+ case stringValue: {
+ // Is NULL possible for value.string_? No.
+ char const* str;
+ char const* end;
+ bool ok = value.getString(&str, &end);
+ if (ok)
+ document_ += valueToQuotedStringN(str, static_cast<unsigned>(end - str));
+ break;
+ }
+ case booleanValue:
+ document_ += valueToString(value.asBool());
+ break;
+ case arrayValue: {
+ document_ += '[';
+ ArrayIndex size = value.size();
+ for (ArrayIndex index = 0; index < size; ++index) {
+ if (index > 0)
+ document_ += ',';
+ writeValue(value[index]);
+ }
+ document_ += ']';
+ } break;
+ case objectValue: {
+ Value::Members members(value.getMemberNames());
+ document_ += '{';
+ for (auto it = members.begin(); it != members.end(); ++it) {
+ const String& name = *it;
+ if (it != members.begin())
+ document_ += ',';
+ document_ += valueToQuotedStringN(name.data(),
+ static_cast<unsigned>(name.length()));
+ document_ += yamlCompatibilityEnabled_ ? ": " : ":";
+ writeValue(value[name]);
+ }
+ document_ += '}';
+ } break;
+ }
+}
+
+// Class StyledWriter
+// //////////////////////////////////////////////////////////////////
+
+StyledWriter::StyledWriter() = default;
+
+String StyledWriter::write(const Value& root) {
+ document_.clear();
+ addChildValues_ = false;
+ indentString_.clear();
+ writeCommentBeforeValue(root);
+ writeValue(root);
+ writeCommentAfterValueOnSameLine(root);
+ document_ += '\n';
+ return document_;
+}
+
+void StyledWriter::writeValue(const Value& value) {
+ switch (value.type()) {
+ case nullValue:
+ pushValue("null");
+ break;
+ case intValue:
+ pushValue(valueToString(value.asLargestInt()));
+ break;
+ case uintValue:
+ pushValue(valueToString(value.asLargestUInt()));
+ break;
+ case realValue:
+ pushValue(valueToString(value.asDouble()));
+ break;
+ case stringValue: {
+ // Is NULL possible for value.string_? No.
+ char const* str;
+ char const* end;
+ bool ok = value.getString(&str, &end);
+ if (ok)
+ pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
+ else
+ pushValue("");
+ break;
+ }
+ case booleanValue:
+ pushValue(valueToString(value.asBool()));
+ break;
+ case arrayValue:
+ writeArrayValue(value);
+ break;
+ case objectValue: {
+ Value::Members members(value.getMemberNames());
+ if (members.empty())
+ pushValue("{}");
+ else {
+ writeWithIndent("{");
+ indent();
+ auto it = members.begin();
+ for (;;) {
+ const String& name = *it;
+ const Value& childValue = value[name];
+ writeCommentBeforeValue(childValue);
+ writeWithIndent(valueToQuotedString(name.c_str()));
+ document_ += " : ";
+ writeValue(childValue);
+ if (++it == members.end()) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ document_ += ',';
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("}");
+ }
+ } break;
+ }
+}
+
+void StyledWriter::writeArrayValue(const Value& value) {
+ unsigned size = value.size();
+ if (size == 0)
+ pushValue("[]");
+ else {
+ bool isArrayMultiLine = isMultilineArray(value);
+ if (isArrayMultiLine) {
+ writeWithIndent("[");
+ indent();
+ bool hasChildValue = !childValues_.empty();
+ unsigned index = 0;
+ for (;;) {
+ const Value& childValue = value[index];
+ writeCommentBeforeValue(childValue);
+ if (hasChildValue)
+ writeWithIndent(childValues_[index]);
+ else {
+ writeIndent();
+ writeValue(childValue);
+ }
+ if (++index == size) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ document_ += ',';
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("]");
+ } else // output on a single line
+ {
+ assert(childValues_.size() == size);
+ document_ += "[ ";
+ for (unsigned index = 0; index < size; ++index) {
+ if (index > 0)
+ document_ += ", ";
+ document_ += childValues_[index];
+ }
+ document_ += " ]";
+ }
+ }
+}
+
+bool StyledWriter::isMultilineArray(const Value& value) {
+ ArrayIndex const size = value.size();
+ bool isMultiLine = size * 3 >= rightMargin_;
+ childValues_.clear();
+ for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+ const Value& childValue = value[index];
+ isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+ !childValue.empty());
+ }
+ if (!isMultiLine) // check if line length > max line length
+ {
+ childValues_.reserve(size);
+ addChildValues_ = true;
+ ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+ for (ArrayIndex index = 0; index < size; ++index) {
+ if (hasCommentForValue(value[index])) {
+ isMultiLine = true;
+ }
+ writeValue(value[index]);
+ lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+ }
+ addChildValues_ = false;
+ isMultiLine = isMultiLine || lineLength >= rightMargin_;
+ }
+ return isMultiLine;
+}
+
+void StyledWriter::pushValue(const String& value) {
+ if (addChildValues_)
+ childValues_.push_back(value);
+ else
+ document_ += value;
+}
+
+void StyledWriter::writeIndent() {
+ if (!document_.empty()) {
+ char last = document_[document_.length() - 1];
+ if (last == ' ') // already indented
+ return;
+ if (last != '\n') // Comments may add new-line
+ document_ += '\n';
+ }
+ document_ += indentString_;
+}
+
+void StyledWriter::writeWithIndent(const String& value) {
+ writeIndent();
+ document_ += value;
+}
+
+void StyledWriter::indent() { indentString_ += String(indentSize_, ' '); }
+
+void StyledWriter::unindent() {
+ assert(indentString_.size() >= indentSize_);
+ indentString_.resize(indentString_.size() - indentSize_);
+}
+
+void StyledWriter::writeCommentBeforeValue(const Value& root) {
+ if (!root.hasComment(commentBefore))
+ return;
+
+ document_ += '\n';
+ writeIndent();
+ const String& comment = root.getComment(commentBefore);
+ String::const_iterator iter = comment.begin();
+ while (iter != comment.end()) {
+ document_ += *iter;
+ if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+ writeIndent();
+ ++iter;
+ }
+
+ // Comments are stripped of trailing newlines, so add one here
+ document_ += '\n';
+}
+
+void StyledWriter::writeCommentAfterValueOnSameLine(const Value& root) {
+ if (root.hasComment(commentAfterOnSameLine))
+ document_ += " " + root.getComment(commentAfterOnSameLine);
+
+ if (root.hasComment(commentAfter)) {
+ document_ += '\n';
+ document_ += root.getComment(commentAfter);
+ document_ += '\n';
+ }
+}
+
+bool StyledWriter::hasCommentForValue(const Value& value) {
+ return value.hasComment(commentBefore) ||
+ value.hasComment(commentAfterOnSameLine) ||
+ value.hasComment(commentAfter);
+}
+
+// Class StyledStreamWriter
+// //////////////////////////////////////////////////////////////////
+
+StyledStreamWriter::StyledStreamWriter(String indentation)
+ : document_(nullptr), indentation_(std::move(indentation)),
+ addChildValues_(), indented_(false) {}
+
+void StyledStreamWriter::write(OStream& out, const Value& root) {
+ document_ = &out;
+ addChildValues_ = false;
+ indentString_.clear();
+ indented_ = true;
+ writeCommentBeforeValue(root);
+ if (!indented_)
+ writeIndent();
+ indented_ = true;
+ writeValue(root);
+ writeCommentAfterValueOnSameLine(root);
+ *document_ << "\n";
+ document_ = nullptr; // Forget the stream, for safety.
+}
+
+void StyledStreamWriter::writeValue(const Value& value) {
+ switch (value.type()) {
+ case nullValue:
+ pushValue("null");
+ break;
+ case intValue:
+ pushValue(valueToString(value.asLargestInt()));
+ break;
+ case uintValue:
+ pushValue(valueToString(value.asLargestUInt()));
+ break;
+ case realValue:
+ pushValue(valueToString(value.asDouble()));
+ break;
+ case stringValue: {
+ // Is NULL possible for value.string_? No.
+ char const* str;
+ char const* end;
+ bool ok = value.getString(&str, &end);
+ if (ok)
+ pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str)));
+ else
+ pushValue("");
+ break;
+ }
+ case booleanValue:
+ pushValue(valueToString(value.asBool()));
+ break;
+ case arrayValue:
+ writeArrayValue(value);
+ break;
+ case objectValue: {
+ Value::Members members(value.getMemberNames());
+ if (members.empty())
+ pushValue("{}");
+ else {
+ writeWithIndent("{");
+ indent();
+ auto it = members.begin();
+ for (;;) {
+ const String& name = *it;
+ const Value& childValue = value[name];
+ writeCommentBeforeValue(childValue);
+ writeWithIndent(valueToQuotedString(name.c_str()));
+ *document_ << " : ";
+ writeValue(childValue);
+ if (++it == members.end()) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ *document_ << ",";
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("}");
+ }
+ } break;
+ }
+}
+
+void StyledStreamWriter::writeArrayValue(const Value& value) {
+ unsigned size = value.size();
+ if (size == 0)
+ pushValue("[]");
+ else {
+ bool isArrayMultiLine = isMultilineArray(value);
+ if (isArrayMultiLine) {
+ writeWithIndent("[");
+ indent();
+ bool hasChildValue = !childValues_.empty();
+ unsigned index = 0;
+ for (;;) {
+ const Value& childValue = value[index];
+ writeCommentBeforeValue(childValue);
+ if (hasChildValue)
+ writeWithIndent(childValues_[index]);
+ else {
+ if (!indented_)
+ writeIndent();
+ indented_ = true;
+ writeValue(childValue);
+ indented_ = false;
+ }
+ if (++index == size) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ *document_ << ",";
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("]");
+ } else // output on a single line
+ {
+ assert(childValues_.size() == size);
+ *document_ << "[ ";
+ for (unsigned index = 0; index < size; ++index) {
+ if (index > 0)
+ *document_ << ", ";
+ *document_ << childValues_[index];
+ }
+ *document_ << " ]";
+ }
+ }
+}
+
+bool StyledStreamWriter::isMultilineArray(const Value& value) {
+ ArrayIndex const size = value.size();
+ bool isMultiLine = size * 3 >= rightMargin_;
+ childValues_.clear();
+ for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+ const Value& childValue = value[index];
+ isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+ !childValue.empty());
+ }
+ if (!isMultiLine) // check if line length > max line length
+ {
+ childValues_.reserve(size);
+ addChildValues_ = true;
+ ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+ for (ArrayIndex index = 0; index < size; ++index) {
+ if (hasCommentForValue(value[index])) {
+ isMultiLine = true;
+ }
+ writeValue(value[index]);
+ lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+ }
+ addChildValues_ = false;
+ isMultiLine = isMultiLine || lineLength >= rightMargin_;
+ }
+ return isMultiLine;
+}
+
+void StyledStreamWriter::pushValue(const String& value) {
+ if (addChildValues_)
+ childValues_.push_back(value);
+ else
+ *document_ << value;
+}
+
+void StyledStreamWriter::writeIndent() {
+ // blep intended this to look at the so-far-written string
+ // to determine whether we are already indented, but
+ // with a stream we cannot do that. So we rely on some saved state.
+ // The caller checks indented_.
+ *document_ << '\n' << indentString_;
+}
+
+void StyledStreamWriter::writeWithIndent(const String& value) {
+ if (!indented_)
+ writeIndent();
+ *document_ << value;
+ indented_ = false;
+}
+
+void StyledStreamWriter::indent() { indentString_ += indentation_; }
+
+void StyledStreamWriter::unindent() {
+ assert(indentString_.size() >= indentation_.size());
+ indentString_.resize(indentString_.size() - indentation_.size());
+}
+
+void StyledStreamWriter::writeCommentBeforeValue(const Value& root) {
+ if (!root.hasComment(commentBefore))
+ return;
+
+ if (!indented_)
+ writeIndent();
+ const String& comment = root.getComment(commentBefore);
+ String::const_iterator iter = comment.begin();
+ while (iter != comment.end()) {
+ *document_ << *iter;
+ if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+ // writeIndent(); // would include newline
+ *document_ << indentString_;
+ ++iter;
+ }
+ indented_ = false;
+}
+
+void StyledStreamWriter::writeCommentAfterValueOnSameLine(const Value& root) {
+ if (root.hasComment(commentAfterOnSameLine))
+ *document_ << ' ' << root.getComment(commentAfterOnSameLine);
+
+ if (root.hasComment(commentAfter)) {
+ writeIndent();
+ *document_ << root.getComment(commentAfter);
+ }
+ indented_ = false;
+}
+
+bool StyledStreamWriter::hasCommentForValue(const Value& value) {
+ return value.hasComment(commentBefore) ||
+ value.hasComment(commentAfterOnSameLine) ||
+ value.hasComment(commentAfter);
+}
+
+//////////////////////////
+// BuiltStyledStreamWriter
+
+/// Scoped enums are not available until C++11.
+struct CommentStyle {
+ /// Decide whether to write comments.
+ enum Enum {
+ None, ///< Drop all comments.
+ Most, ///< Recover odd behavior of previous versions (not implemented yet).
+ All ///< Keep all comments.
+ };
+};
+
+struct BuiltStyledStreamWriter : public StreamWriter {
+ BuiltStyledStreamWriter(String indentation, CommentStyle::Enum cs,
+ String colonSymbol, String nullSymbol,
+ String endingLineFeedSymbol, bool useSpecialFloats,
+ bool emitUTF8, unsigned int precision,
+ PrecisionType precisionType);
+ int write(Value const& root, OStream* sout) override;
+
+private:
+ void writeValue(Value const& value);
+ void writeArrayValue(Value const& value);
+ bool isMultilineArray(Value const& value);
+ void pushValue(String const& value);
+ void writeIndent();
+ void writeWithIndent(String const& value);
+ void indent();
+ void unindent();
+ void writeCommentBeforeValue(Value const& root);
+ void writeCommentAfterValueOnSameLine(Value const& root);
+ static bool hasCommentForValue(const Value& value);
+
+ using ChildValues = std::vector<String>;
+
+ ChildValues childValues_;
+ String indentString_;
+ unsigned int rightMargin_;
+ String indentation_;
+ CommentStyle::Enum cs_;
+ String colonSymbol_;
+ String nullSymbol_;
+ String endingLineFeedSymbol_;
+ bool addChildValues_ : 1;
+ bool indented_ : 1;
+ bool useSpecialFloats_ : 1;
+ bool emitUTF8_ : 1;
+ unsigned int precision_;
+ PrecisionType precisionType_;
+};
+BuiltStyledStreamWriter::BuiltStyledStreamWriter(
+ String indentation, CommentStyle::Enum cs, String colonSymbol,
+ String nullSymbol, String endingLineFeedSymbol, bool useSpecialFloats,
+ bool emitUTF8, unsigned int precision, PrecisionType precisionType)
+ : rightMargin_(74), indentation_(std::move(indentation)), cs_(cs),
+ colonSymbol_(std::move(colonSymbol)), nullSymbol_(std::move(nullSymbol)),
+ endingLineFeedSymbol_(std::move(endingLineFeedSymbol)),
+ addChildValues_(false), indented_(false),
+ useSpecialFloats_(useSpecialFloats), emitUTF8_(emitUTF8),
+ precision_(precision), precisionType_(precisionType) {}
+int BuiltStyledStreamWriter::write(Value const& root, OStream* sout) {
+ sout_ = sout;
+ addChildValues_ = false;
+ indented_ = true;
+ indentString_.clear();
+ writeCommentBeforeValue(root);
+ if (!indented_)
+ writeIndent();
+ indented_ = true;
+ writeValue(root);
+ writeCommentAfterValueOnSameLine(root);
+ *sout_ << endingLineFeedSymbol_;
+ sout_ = nullptr;
+ return 0;
+}
+void BuiltStyledStreamWriter::writeValue(Value const& value) {
+ switch (value.type()) {
+ case nullValue:
+ pushValue(nullSymbol_);
+ break;
+ case intValue:
+ pushValue(valueToString(value.asLargestInt()));
+ break;
+ case uintValue:
+ pushValue(valueToString(value.asLargestUInt()));
+ break;
+ case realValue:
+ pushValue(valueToString(value.asDouble(), useSpecialFloats_, precision_,
+ precisionType_));
+ break;
+ case stringValue: {
+ // Is NULL is possible for value.string_? No.
+ char const* str;
+ char const* end;
+ bool ok = value.getString(&str, &end);
+ if (ok)
+ pushValue(valueToQuotedStringN(str, static_cast<unsigned>(end - str),
+ emitUTF8_));
+ else
+ pushValue("");
+ break;
+ }
+ case booleanValue:
+ pushValue(valueToString(value.asBool()));
+ break;
+ case arrayValue:
+ writeArrayValue(value);
+ break;
+ case objectValue: {
+ Value::Members members(value.getMemberNames());
+ if (members.empty())
+ pushValue("{}");
+ else {
+ writeWithIndent("{");
+ indent();
+ auto it = members.begin();
+ for (;;) {
+ String const& name = *it;
+ Value const& childValue = value[name];
+ writeCommentBeforeValue(childValue);
+ writeWithIndent(valueToQuotedStringN(
+ name.data(), static_cast<unsigned>(name.length()), emitUTF8_));
+ *sout_ << colonSymbol_;
+ writeValue(childValue);
+ if (++it == members.end()) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ *sout_ << ",";
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("}");
+ }
+ } break;
+ }
+}
+
+void BuiltStyledStreamWriter::writeArrayValue(Value const& value) {
+ unsigned size = value.size();
+ if (size == 0)
+ pushValue("[]");
+ else {
+ bool isMultiLine = (cs_ == CommentStyle::All) || isMultilineArray(value);
+ if (isMultiLine) {
+ writeWithIndent("[");
+ indent();
+ bool hasChildValue = !childValues_.empty();
+ unsigned index = 0;
+ for (;;) {
+ Value const& childValue = value[index];
+ writeCommentBeforeValue(childValue);
+ if (hasChildValue)
+ writeWithIndent(childValues_[index]);
+ else {
+ if (!indented_)
+ writeIndent();
+ indented_ = true;
+ writeValue(childValue);
+ indented_ = false;
+ }
+ if (++index == size) {
+ writeCommentAfterValueOnSameLine(childValue);
+ break;
+ }
+ *sout_ << ",";
+ writeCommentAfterValueOnSameLine(childValue);
+ }
+ unindent();
+ writeWithIndent("]");
+ } else // output on a single line
+ {
+ assert(childValues_.size() == size);
+ *sout_ << "[";
+ if (!indentation_.empty())
+ *sout_ << " ";
+ for (unsigned index = 0; index < size; ++index) {
+ if (index > 0)
+ *sout_ << ((!indentation_.empty()) ? ", " : ",");
+ *sout_ << childValues_[index];
+ }
+ if (!indentation_.empty())
+ *sout_ << " ";
+ *sout_ << "]";
+ }
+ }
+}
+
+bool BuiltStyledStreamWriter::isMultilineArray(Value const& value) {
+ ArrayIndex const size = value.size();
+ bool isMultiLine = size * 3 >= rightMargin_;
+ childValues_.clear();
+ for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
+ Value const& childValue = value[index];
+ isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
+ !childValue.empty());
+ }
+ if (!isMultiLine) // check if line length > max line length
+ {
+ childValues_.reserve(size);
+ addChildValues_ = true;
+ ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]'
+ for (ArrayIndex index = 0; index < size; ++index) {
+ if (hasCommentForValue(value[index])) {
+ isMultiLine = true;
+ }
+ writeValue(value[index]);
+ lineLength += static_cast<ArrayIndex>(childValues_[index].length());
+ }
+ addChildValues_ = false;
+ isMultiLine = isMultiLine || lineLength >= rightMargin_;
+ }
+ return isMultiLine;
+}
+
+void BuiltStyledStreamWriter::pushValue(String const& value) {
+ if (addChildValues_)
+ childValues_.push_back(value);
+ else
+ *sout_ << value;
+}
+
+void BuiltStyledStreamWriter::writeIndent() {
+ // blep intended this to look at the so-far-written string
+ // to determine whether we are already indented, but
+ // with a stream we cannot do that. So we rely on some saved state.
+ // The caller checks indented_.
+
+ if (!indentation_.empty()) {
+ // In this case, drop newlines too.
+ *sout_ << '\n' << indentString_;
+ }
+}
+
+void BuiltStyledStreamWriter::writeWithIndent(String const& value) {
+ if (!indented_)
+ writeIndent();
+ *sout_ << value;
+ indented_ = false;
+}
+
+void BuiltStyledStreamWriter::indent() { indentString_ += indentation_; }
+
+void BuiltStyledStreamWriter::unindent() {
+ assert(indentString_.size() >= indentation_.size());
+ indentString_.resize(indentString_.size() - indentation_.size());
+}
+
+void BuiltStyledStreamWriter::writeCommentBeforeValue(Value const& root) {
+ if (cs_ == CommentStyle::None)
+ return;
+ if (!root.hasComment(commentBefore))
+ return;
+
+ if (!indented_)
+ writeIndent();
+ const String& comment = root.getComment(commentBefore);
+ String::const_iterator iter = comment.begin();
+ while (iter != comment.end()) {
+ *sout_ << *iter;
+ if (*iter == '\n' && ((iter + 1) != comment.end() && *(iter + 1) == '/'))
+ // writeIndent(); // would write extra newline
+ *sout_ << indentString_;
+ ++iter;
+ }
+ indented_ = false;
+}
+
+void BuiltStyledStreamWriter::writeCommentAfterValueOnSameLine(
+ Value const& root) {
+ if (cs_ == CommentStyle::None)
+ return;
+ if (root.hasComment(commentAfterOnSameLine))
+ *sout_ << " " + root.getComment(commentAfterOnSameLine);
+
+ if (root.hasComment(commentAfter)) {
+ writeIndent();
+ *sout_ << root.getComment(commentAfter);
+ }
+}
+
+// static
+bool BuiltStyledStreamWriter::hasCommentForValue(const Value& value) {
+ return value.hasComment(commentBefore) ||
+ value.hasComment(commentAfterOnSameLine) ||
+ value.hasComment(commentAfter);
+}
+
+///////////////
+// StreamWriter
+
+StreamWriter::StreamWriter() : sout_(nullptr) {}
+StreamWriter::~StreamWriter() = default;
+StreamWriter::Factory::~Factory() = default;
+StreamWriterBuilder::StreamWriterBuilder() { setDefaults(&settings_); }
+StreamWriterBuilder::~StreamWriterBuilder() = default;
+StreamWriter* StreamWriterBuilder::newStreamWriter() const {
+ const String indentation = settings_["indentation"].asString();
+ const String cs_str = settings_["commentStyle"].asString();
+ const String pt_str = settings_["precisionType"].asString();
+ const bool eyc = settings_["enableYAMLCompatibility"].asBool();
+ const bool dnp = settings_["dropNullPlaceholders"].asBool();
+ const bool usf = settings_["useSpecialFloats"].asBool();
+ const bool emitUTF8 = settings_["emitUTF8"].asBool();
+ unsigned int pre = settings_["precision"].asUInt();
+ CommentStyle::Enum cs = CommentStyle::All;
+ if (cs_str == "All") {
+ cs = CommentStyle::All;
+ } else if (cs_str == "None") {
+ cs = CommentStyle::None;
+ } else {
+ throwRuntimeError("commentStyle must be 'All' or 'None'");
+ }
+ PrecisionType precisionType(significantDigits);
+ if (pt_str == "significant") {
+ precisionType = PrecisionType::significantDigits;
+ } else if (pt_str == "decimal") {
+ precisionType = PrecisionType::decimalPlaces;
+ } else {
+ throwRuntimeError("precisionType must be 'significant' or 'decimal'");
+ }
+ String colonSymbol = " : ";
+ if (eyc) {
+ colonSymbol = ": ";
+ } else if (indentation.empty()) {
+ colonSymbol = ":";
+ }
+ String nullSymbol = "null";
+ if (dnp) {
+ nullSymbol.clear();
+ }
+ if (pre > 17)
+ pre = 17;
+ String endingLineFeedSymbol;
+ return new BuiltStyledStreamWriter(indentation, cs, colonSymbol, nullSymbol,
+ endingLineFeedSymbol, usf, emitUTF8, pre,
+ precisionType);
+}
+
+bool StreamWriterBuilder::validate(Json::Value* invalid) const {
+ static const auto& valid_keys = *new std::set<String>{
+ "indentation",
+ "commentStyle",
+ "enableYAMLCompatibility",
+ "dropNullPlaceholders",
+ "useSpecialFloats",
+ "emitUTF8",
+ "precision",
+ "precisionType",
+ };
+ for (auto si = settings_.begin(); si != settings_.end(); ++si) {
+ auto key = si.name();
+ if (valid_keys.count(key))
+ continue;
+ if (invalid)
+ (*invalid)[std::move(key)] = *si;
+ else
+ return false;
+ }
+ return invalid ? invalid->empty() : true;
+}
+
+Value& StreamWriterBuilder::operator[](const String& key) {
+ return settings_[key];
+}
+// static
+void StreamWriterBuilder::setDefaults(Json::Value* settings) {
+ //! [StreamWriterBuilderDefaults]
+ (*settings)["commentStyle"] = "All";
+ (*settings)["indentation"] = "\t";
+ (*settings)["enableYAMLCompatibility"] = false;
+ (*settings)["dropNullPlaceholders"] = false;
+ (*settings)["useSpecialFloats"] = false;
+ (*settings)["emitUTF8"] = false;
+ (*settings)["precision"] = 17;
+ (*settings)["precisionType"] = "significant";
+ //! [StreamWriterBuilderDefaults]
+}
+
+String writeString(StreamWriter::Factory const& factory, Value const& root) {
+ OStringStream sout;
+ StreamWriterPtr const writer(factory.newStreamWriter());
+ writer->write(root, &sout);
+ return sout.str();
+}
+
+OStream& operator<<(OStream& sout, Value const& root) {
+ StreamWriterBuilder builder;
+ StreamWriterPtr const writer(builder.newStreamWriter());
+ writer->write(root, &sout);
+ return sout;
+}
+
+} // namespace Json
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: src/lib_json/json_writer.cpp
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/src/lua/CMakeLists.txt b/lib/lua/CMakeLists.txt
index 119dd6302..2de4840cb 100644
--- a/src/lua/CMakeLists.txt
+++ b/lib/lua/CMakeLists.txt
@@ -1,23 +1,18 @@
-cmake_minimum_required(VERSION 2.4 FATAL_ERROR)
-
-project(lua C)
+project(lua CXX)
set(LUA_VERSION_MAJOR 5)
set(LUA_VERSION_MINOR 1)
set(LUA_VERSION_PATCH 4)
set(LUA_VERSION "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
-set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
-
set(COMMON_CFLAGS)
set(COMMON_LDFLAGS)
set(LIBS)
if(APPLE)
set(DEFAULT_POSIX TRUE)
- set(DEFAULT_DLOPEN ON)
- # use this on Mac OS X 10.3-
- option(LUA_USE_MACOSX "Mac OS X 10.3-" OFF)
+ set(DEFAULT_DLOPEN OFF)
+ set(COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_MACOSX")
elseif(UNIX OR CYGWIN)
set(DEFAULT_POSIX TRUE)
elseif(WIN32)
@@ -32,12 +27,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(DEFAULT_DLOPEN ON)
endif()
-# For "Mac OS X 10.3-"
-if(LUA_USE_MACOSX)
- set(COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_USE_MACOSX")
- set(LUA_USE_DLOPEN FALSE)
-endif(LUA_USE_MACOSX)
-
option(LUA_USE_DLOPEN "Enable dlopen support." ${DEFAULT_DLOPEN})
mark_as_advanced(LUA_USE_DLOPEN)
@@ -59,19 +48,12 @@ if(LUA_ANSI)
set(COMMON_CFLAGS "${COMMON_CFLAGS} -DLUA_ANSI")
endif(LUA_ANSI)
-# COMMON_CFLAGS has no effect without this line
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_CFLAGS}")
-
-
-# Standard flags to use for each build type.
-if(CMAKE_COMPILER_IS_GNUCC)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -Wextra -Wshadow -W -pedantic -std=gnu99")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g")
- set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -O1 -g")
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2 -g")
-endif(CMAKE_COMPILER_IS_GNUCC)
-
+# Standard flags to use
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|(Apple)?Clang")
+ set(COMMON_CFLAGS "${COMMON_CFLAGS} -pipe -Wall -Wextra -Wshadow -W -pedantic")
+endif()
-add_subdirectory(src build)
+# COMMON_CFLAGS has no effect without this line
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_CFLAGS}")
+add_subdirectory(src)
diff --git a/src/lua/COPYRIGHT b/lib/lua/COPYRIGHT
index 3a53e741e..a86026803 100644
--- a/src/lua/COPYRIGHT
+++ b/lib/lua/COPYRIGHT
@@ -9,7 +9,7 @@ For details and rationale, see http://www.lua.org/license.html .
===============================================================================
-Copyright (C) 1994-2008 Lua.org, PUC-Rio.
+Copyright (C) 1994-2012 Lua.org, PUC-Rio.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/src/lua/src/CMakeLists.txt b/lib/lua/src/CMakeLists.txt
index 8f6cc1213..2ca4f4168 100644
--- a/src/lua/src/CMakeLists.txt
+++ b/lib/lua/src/CMakeLists.txt
@@ -31,24 +31,14 @@ set(LUA_CORE_SRC
lvm.c
lzio.c
)
-set(LUA_LIB_HEADERS
- lua.h
- lualib.h
- lauxlib.h
- luaconf.h
-)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR})
-# Lua library.
+# Lua library
add_library(lua STATIC ${LUA_CORE_SRC})
target_link_libraries(lua ${LIBS})
-set(LUA_STATIC_LIB lua)
-set(LUA_LIBS lua)
-
-set_target_properties(${LUA_LIBS} PROPERTIES
+set_target_properties(lua PROPERTIES
VERSION ${LUA_VERSION}
CLEAN_DIRECT_OUTPUT 1
)
+# Compile code as C++
+set_source_files_properties(${LUA_CORE_SRC} PROPERTIES LANGUAGE CXX)
diff --git a/src/lua/src/lapi.c b/lib/lua/src/lapi.c
index 5d5145d2e..5d5145d2e 100644
--- a/src/lua/src/lapi.c
+++ b/lib/lua/src/lapi.c
diff --git a/src/lua/src/lapi.h b/lib/lua/src/lapi.h
index 2c3fab244..2c3fab244 100644
--- a/src/lua/src/lapi.h
+++ b/lib/lua/src/lapi.h
diff --git a/src/lua/src/lauxlib.c b/lib/lua/src/lauxlib.c
index be41ebcd3..10f14e2c0 100644
--- a/src/lua/src/lauxlib.c
+++ b/lib/lua/src/lauxlib.c
@@ -574,8 +574,7 @@ LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) {
lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */
if (lf.f == NULL) return errfile(L, "reopen", fnameindex);
/* skip eventual `#!...' */
- while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0])
- {}
+ while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;
lf.extraline = 0;
}
ungetc(c, lf.f);
diff --git a/src/lua/src/lauxlib.h b/lib/lua/src/lauxlib.h
index 34258235d..34258235d 100644
--- a/src/lua/src/lauxlib.h
+++ b/lib/lua/src/lauxlib.h
diff --git a/src/lua/src/lbaselib.c b/lib/lua/src/lbaselib.c
index 2a4c079d3..2ab550bd4 100644
--- a/src/lua/src/lbaselib.c
+++ b/lib/lua/src/lbaselib.c
@@ -631,7 +631,7 @@ static void base_open (lua_State *L) {
luaL_register(L, "_G", base_funcs);
lua_pushliteral(L, LUA_VERSION);
lua_setglobal(L, "_VERSION"); /* set global _VERSION */
- /* `ipairs' and `pairs' need auxliliary functions as upvalues */
+ /* `ipairs' and `pairs' need auxiliary functions as upvalues */
auxopen(L, "ipairs", luaB_ipairs, ipairsaux);
auxopen(L, "pairs", luaB_pairs, luaB_next);
/* `newproxy' needs a weaktable as upvalue */
diff --git a/src/lua/src/lcode.c b/lib/lua/src/lcode.c
index cff626b7f..679cb9cfd 100644
--- a/src/lua/src/lcode.c
+++ b/lib/lua/src/lcode.c
@@ -1,5 +1,5 @@
/*
-** $Id: lcode.c,v 2.25.1.3 2007/12/28 15:32:23 roberto Exp $
+** $Id: lcode.c,v 2.25.1.5 2011/01/31 14:53:16 roberto Exp $
** Code generator for Lua
** See Copyright Notice in lua.h
*/
@@ -544,10 +544,6 @@ void luaK_goiftrue (FuncState *fs, expdesc *e) {
pc = NO_JUMP; /* always true; do nothing */
break;
}
- case VFALSE: {
- pc = luaK_jump(fs); /* always jump */
- break;
- }
case VJMP: {
invertjump(fs, e);
pc = e->u.s.info;
@@ -572,10 +568,6 @@ static void luaK_goiffalse (FuncState *fs, expdesc *e) {
pc = NO_JUMP; /* always false; do nothing */
break;
}
- case VTRUE: {
- pc = luaK_jump(fs); /* always jump */
- break;
- }
case VJMP: {
pc = e->u.s.info;
break;
diff --git a/src/lua/src/lcode.h b/lib/lua/src/lcode.h
index b941c6072..b941c6072 100644
--- a/src/lua/src/lcode.h
+++ b/lib/lua/src/lcode.h
diff --git a/src/lua/src/ldblib.c b/lib/lua/src/ldblib.c
index 67de1222a..2027eda59 100644
--- a/src/lua/src/ldblib.c
+++ b/lib/lua/src/ldblib.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldblib.c,v 1.104.1.3 2008/01/21 13:11:21 roberto Exp $
+** $Id: ldblib.c,v 1.104.1.4 2009/08/04 18:50:18 roberto Exp $
** Interface from Lua to its debug API
** See Copyright Notice in lua.h
*/
@@ -45,6 +45,7 @@ static int db_setmetatable (lua_State *L) {
static int db_getfenv (lua_State *L) {
+ luaL_checkany(L, 1);
lua_getfenv(L, 1);
return 1;
}
diff --git a/src/lua/src/ldebug.c b/lib/lua/src/ldebug.c
index 50ad3d380..50ad3d380 100644
--- a/src/lua/src/ldebug.c
+++ b/lib/lua/src/ldebug.c
diff --git a/src/lua/src/ldebug.h b/lib/lua/src/ldebug.h
index ba28a9724..ba28a9724 100644
--- a/src/lua/src/ldebug.h
+++ b/lib/lua/src/ldebug.h
diff --git a/src/lua/src/ldo.c b/lib/lua/src/ldo.c
index 8de05f728..d1bf786cb 100644
--- a/src/lua/src/ldo.c
+++ b/lib/lua/src/ldo.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldo.c,v 2.38.1.3 2008/01/18 22:31:22 roberto Exp $
+** $Id: ldo.c,v 2.38.1.4 2012/01/18 02:27:10 roberto Exp $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@@ -217,6 +217,7 @@ static StkId adjust_varargs (lua_State *L, Proto *p, int actual) {
int nvar = actual - nfixargs; /* number of extra arguments */
lua_assert(p->is_vararg & VARARG_HASARG);
luaC_checkGC(L);
+ luaD_checkstack(L, p->maxstacksize);
htab = luaH_new(L, nvar, 1); /* create `arg' table */
for (i=0; i<nvar; i++) /* put extra arguments into `arg' table */
setobj2n(L, luaH_setnum(L, htab, i+1), L->top - nvar + i);
diff --git a/src/lua/src/ldo.h b/lib/lua/src/ldo.h
index 98fddac59..98fddac59 100644
--- a/src/lua/src/ldo.h
+++ b/lib/lua/src/ldo.h
diff --git a/src/lua/src/ldump.c b/lib/lua/src/ldump.c
index c9d3d4870..c9d3d4870 100644
--- a/src/lua/src/ldump.c
+++ b/lib/lua/src/ldump.c
diff --git a/src/lua/src/lfunc.c b/lib/lua/src/lfunc.c
index 813e88f58..813e88f58 100644
--- a/src/lua/src/lfunc.c
+++ b/lib/lua/src/lfunc.c
diff --git a/src/lua/src/lfunc.h b/lib/lua/src/lfunc.h
index a68cf5151..a68cf5151 100644
--- a/src/lua/src/lfunc.h
+++ b/lib/lua/src/lfunc.h
diff --git a/src/lua/src/lgc.c b/lib/lua/src/lgc.c
index d9e0b7829..9141a1c60 100644
--- a/src/lua/src/lgc.c
+++ b/lib/lua/src/lgc.c
@@ -1,5 +1,5 @@
/*
-** $Id: lgc.c,v 2.38.1.1 2007/12/27 13:02:25 roberto Exp $
+** $Id: lgc.c,v 2.38.1.2 2011/03/18 18:05:38 roberto Exp $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -164,8 +164,13 @@ static int traversetable (global_State *g, Table *h) {
markobject(g, h->metatable);
mode = gfasttm(g, h->metatable, TM_MODE);
if (mode && ttisstring(mode)) { /* is there a weak mode? */
- weakkey = (strchr(svalue(mode), 'k') != NULL);
- weakvalue = (strchr(svalue(mode), 'v') != NULL);
+ // Android's 'FORTIFY libc' calls __builtin_object_size on the argument of strchr.
+ // This produces an incorrect size for the expression `svalue(mode)`, causing
+ // an assertion. By placing it in a temporary, __builtin_object_size returns
+ // -1 (for unknown size) which functions correctly.
+ const char *tmp = svalue(mode);
+ weakkey = (strchr(tmp, 'k') != NULL);
+ weakvalue = (strchr(tmp, 'v') != NULL);
if (weakkey || weakvalue) { /* is really weak? */
h->marked &= ~(KEYWEAK | VALUEWEAK); /* clear bits */
h->marked |= cast_byte((weakkey << KEYWEAKBIT) |
@@ -627,7 +632,6 @@ void luaC_step (lua_State *L) {
}
}
else {
- lua_assert(g->totalbytes >= g->estimate);
setthreshold(g);
}
}
diff --git a/src/lua/src/lgc.h b/lib/lua/src/lgc.h
index 5a8dc605b..5a8dc605b 100644
--- a/src/lua/src/lgc.h
+++ b/lib/lua/src/lgc.h
diff --git a/src/lua/src/linit.c b/lib/lua/src/linit.c
index c1f90dfab..c1f90dfab 100644
--- a/src/lua/src/linit.c
+++ b/lib/lua/src/linit.c
diff --git a/src/lua/src/liolib.c b/lib/lua/src/liolib.c
index e79ed1cb2..649f9a595 100644
--- a/src/lua/src/liolib.c
+++ b/lib/lua/src/liolib.c
@@ -1,5 +1,5 @@
/*
-** $Id: liolib.c,v 2.73.1.3 2008/01/18 17:47:43 roberto Exp $
+** $Id: liolib.c,v 2.73.1.4 2010/05/14 15:33:51 roberto Exp $
** Standard I/O (and system) library
** See Copyright Notice in lua.h
*/
@@ -276,7 +276,10 @@ static int read_number (lua_State *L, FILE *f) {
lua_pushnumber(L, d);
return 1;
}
- else return 0; /* read fails */
+ else {
+ lua_pushnil(L); /* "result" to be removed */
+ return 0; /* read fails */
+ }
}
diff --git a/src/lua/src/llex.c b/lib/lua/src/llex.c
index 98068c1aa..d1b179670 100644
--- a/src/lua/src/llex.c
+++ b/lib/lua/src/llex.c
@@ -1,5 +1,5 @@
/*
-** $Id: llex.c,v 2.20.1.1 2007/12/27 13:02:25 roberto Exp $
+** $Id: llex.c,v 2.20.1.2 2009/11/23 14:58:22 roberto Exp $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@@ -118,8 +118,10 @@ TString *luaX_newstring (LexState *ls, const char *str, size_t l) {
lua_State *L = ls->L;
TString *ts = luaS_newlstr(L, str, l);
TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */
- if (ttisnil(o))
+ if (ttisnil(o)) {
setbvalue(o, 1); /* make sure `str' will not be collected */
+ luaC_checkGC(L);
+ }
return ts;
}
diff --git a/src/lua/src/llex.h b/lib/lua/src/llex.h
index a9201cee4..a9201cee4 100644
--- a/src/lua/src/llex.h
+++ b/lib/lua/src/llex.h
diff --git a/src/lua/src/llimits.h b/lib/lua/src/llimits.h
index ca8dcb722..ca8dcb722 100644
--- a/src/lua/src/llimits.h
+++ b/lib/lua/src/llimits.h
diff --git a/src/lua/src/lmathlib.c b/lib/lua/src/lmathlib.c
index 441fbf736..441fbf736 100644
--- a/src/lua/src/lmathlib.c
+++ b/lib/lua/src/lmathlib.c
diff --git a/src/lua/src/lmem.c b/lib/lua/src/lmem.c
index ae7d8c965..ae7d8c965 100644
--- a/src/lua/src/lmem.c
+++ b/lib/lua/src/lmem.c
diff --git a/src/lua/src/lmem.h b/lib/lua/src/lmem.h
index 7c2dcb322..7c2dcb322 100644
--- a/src/lua/src/lmem.h
+++ b/lib/lua/src/lmem.h
diff --git a/src/lua/src/loadlib.c b/lib/lua/src/loadlib.c
index 0d401eba1..6158c5353 100644
--- a/src/lua/src/loadlib.c
+++ b/lib/lua/src/loadlib.c
@@ -1,5 +1,5 @@
/*
-** $Id: loadlib.c,v 1.52.1.3 2008/08/06 13:29:28 roberto Exp $
+** $Id: loadlib.c,v 1.52.1.4 2009/09/09 13:17:16 roberto Exp $
** Dynamic library loader for Lua
** See Copyright Notice in lua.h
**
@@ -639,7 +639,7 @@ LUALIB_API int luaopen_package (lua_State *L) {
lua_pushvalue(L, -1);
lua_replace(L, LUA_ENVIRONINDEX);
/* create `loaders' table */
- lua_createtable(L, 0, sizeof(loaders)/sizeof(loaders[0]) - 1);
+ lua_createtable(L, sizeof(loaders)/sizeof(loaders[0]) - 1, 0);
/* fill it with pre-defined loaders */
for (i=0; loaders[i] != NULL; i++) {
lua_pushcfunction(L, loaders[i]);
diff --git a/src/lua/src/lobject.c b/lib/lua/src/lobject.c
index 4ff50732a..4ff50732a 100644
--- a/src/lua/src/lobject.c
+++ b/lib/lua/src/lobject.c
diff --git a/src/lua/src/lobject.h b/lib/lua/src/lobject.h
index f1e447ef3..f1e447ef3 100644
--- a/src/lua/src/lobject.h
+++ b/lib/lua/src/lobject.h
diff --git a/src/lua/src/lopcodes.c b/lib/lua/src/lopcodes.c
index 4cc745230..4cc745230 100644
--- a/src/lua/src/lopcodes.c
+++ b/lib/lua/src/lopcodes.c
diff --git a/src/lua/src/lopcodes.h b/lib/lua/src/lopcodes.h
index 41224d6ee..41224d6ee 100644
--- a/src/lua/src/lopcodes.h
+++ b/lib/lua/src/lopcodes.h
diff --git a/src/lua/src/loslib.c b/lib/lua/src/loslib.c
index da06a572a..da06a572a 100644
--- a/src/lua/src/loslib.c
+++ b/lib/lua/src/loslib.c
diff --git a/src/lua/src/lparser.c b/lib/lua/src/lparser.c
index 1e2a9a88b..dda7488dc 100644
--- a/src/lua/src/lparser.c
+++ b/lib/lua/src/lparser.c
@@ -1,5 +1,5 @@
/*
-** $Id: lparser.c,v 2.42.1.3 2007/12/28 15:32:23 roberto Exp $
+** $Id: lparser.c,v 2.42.1.4 2011/10/21 19:31:42 roberto Exp $
** Lua Parser
** See Copyright Notice in lua.h
*/
@@ -374,9 +374,9 @@ static void close_func (LexState *ls) {
lua_assert(luaG_checkcode(f));
lua_assert(fs->bl == NULL);
ls->fs = fs->prev;
- L->top -= 2; /* remove table and prototype from the stack */
/* last token read was anchored in defunct function; must reanchor it */
if (fs) anchor_token(ls);
+ L->top -= 2; /* remove table and prototype from the stack */
}
diff --git a/src/lua/src/lparser.h b/lib/lua/src/lparser.h
index 18836afd1..18836afd1 100644
--- a/src/lua/src/lparser.h
+++ b/lib/lua/src/lparser.h
diff --git a/src/lua/src/lstate.c b/lib/lua/src/lstate.c
index 4313b83a0..4313b83a0 100644
--- a/src/lua/src/lstate.c
+++ b/lib/lua/src/lstate.c
diff --git a/src/lua/src/lstate.h b/lib/lua/src/lstate.h
index 3bc575b6b..3bc575b6b 100644
--- a/src/lua/src/lstate.h
+++ b/lib/lua/src/lstate.h
diff --git a/src/lua/src/lstring.c b/lib/lua/src/lstring.c
index 49113151c..49113151c 100644
--- a/src/lua/src/lstring.c
+++ b/lib/lua/src/lstring.c
diff --git a/src/lua/src/lstring.h b/lib/lua/src/lstring.h
index 73a2ff8b3..73a2ff8b3 100644
--- a/src/lua/src/lstring.h
+++ b/lib/lua/src/lstring.h
diff --git a/src/lua/src/lstrlib.c b/lib/lua/src/lstrlib.c
index 1b4763d4e..7a03489be 100644
--- a/src/lua/src/lstrlib.c
+++ b/lib/lua/src/lstrlib.c
@@ -1,5 +1,5 @@
/*
-** $Id: lstrlib.c,v 1.132.1.4 2008/07/11 17:27:21 roberto Exp $
+** $Id: lstrlib.c,v 1.132.1.5 2010/05/14 15:34:19 roberto Exp $
** Standard library for string operations and pattern-matching
** See Copyright Notice in lua.h
*/
@@ -754,6 +754,7 @@ static void addintlen (char *form) {
static int str_format (lua_State *L) {
+ int top = lua_gettop(L);
int arg = 1;
size_t sfl;
const char *strfrmt = luaL_checklstring(L, arg, &sfl);
@@ -768,7 +769,8 @@ static int str_format (lua_State *L) {
else { /* format item */
char form[MAX_FORMAT]; /* to store the format (`%...') */
char buff[MAX_ITEM]; /* to store the formatted item */
- arg++;
+ if (++arg > top)
+ luaL_argerror(L, arg, "no value");
strfrmt = scanformat(L, strfrmt, form);
switch (*strfrmt++) {
case 'c': {
diff --git a/src/lua/src/ltable.c b/lib/lua/src/ltable.c
index ec84f4fab..ec84f4fab 100644
--- a/src/lua/src/ltable.c
+++ b/lib/lua/src/ltable.c
diff --git a/src/lua/src/ltable.h b/lib/lua/src/ltable.h
index f5b9d5ead..f5b9d5ead 100644
--- a/src/lua/src/ltable.h
+++ b/lib/lua/src/ltable.h
diff --git a/src/lua/src/ltablib.c b/lib/lua/src/ltablib.c
index b6d9cb4ac..b6d9cb4ac 100644
--- a/src/lua/src/ltablib.c
+++ b/lib/lua/src/ltablib.c
diff --git a/src/lua/src/ltm.c b/lib/lua/src/ltm.c
index c27f0f6fa..c27f0f6fa 100644
--- a/src/lua/src/ltm.c
+++ b/lib/lua/src/ltm.c
diff --git a/src/lua/src/ltm.h b/lib/lua/src/ltm.h
index 64343b781..64343b781 100644
--- a/src/lua/src/ltm.h
+++ b/lib/lua/src/ltm.h
diff --git a/src/lua/src/lua.c b/lib/lua/src/lua.c
index 3a4660932..3a4660932 100644
--- a/src/lua/src/lua.c
+++ b/lib/lua/src/lua.c
diff --git a/src/lua/src/lua.h b/lib/lua/src/lua.h
index e4bdfd3b9..a4b73e743 100644
--- a/src/lua/src/lua.h
+++ b/lib/lua/src/lua.h
@@ -1,5 +1,5 @@
/*
-** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 roberto Exp $
+** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $
** Lua - An Extensible Extension Language
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
** See Copyright Notice at the end of this file
@@ -17,9 +17,9 @@
#define LUA_VERSION "Lua 5.1"
-#define LUA_RELEASE "Lua 5.1.4"
+#define LUA_RELEASE "Lua 5.1.5"
#define LUA_VERSION_NUM 501
-#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio"
+#define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio"
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
@@ -362,7 +362,7 @@ struct lua_Debug {
/******************************************************************************
-* Copyright (C) 1994-2008 Lua.org, PUC-Rio. All rights reserved.
+* Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
diff --git a/src/lua/src/luac.c b/lib/lua/src/luac.c
index d07017391..d07017391 100644
--- a/src/lua/src/luac.c
+++ b/lib/lua/src/luac.c
diff --git a/src/lua/src/luaconf.h b/lib/lua/src/luaconf.h
index e2cb26163..1521f0cbc 100644
--- a/src/lua/src/luaconf.h
+++ b/lib/lua/src/luaconf.h
@@ -143,6 +143,14 @@
#define LUA_INTEGER ptrdiff_t
+/* MINETEST-SPECIFIC CHANGE: make sure API functions conform to the C ABI. */
+#if defined(__cplusplus)
+#define LUAI_API_EXTERN extern "C"
+#else
+#define LUAI_API_EXTERN extern
+#endif
+
+
/*
@@ LUA_API is a mark for all core API functions.
@@ LUALIB_API is a mark for all standard library functions.
@@ -154,14 +162,14 @@
#if defined(LUA_BUILD_AS_DLL)
#if defined(LUA_CORE) || defined(LUA_LIB)
-#define LUA_API __declspec(dllexport)
+#define LUA_API LUAI_API_EXTERN __declspec(dllexport)
#else
-#define LUA_API __declspec(dllimport)
+#define LUA_API LUAI_API_EXTERN __declspec(dllimport)
#endif
#else
-#define LUA_API extern
+#define LUA_API LUAI_API_EXTERN
#endif
diff --git a/src/lua/src/lualib.h b/lib/lua/src/lualib.h
index 469417f67..469417f67 100644
--- a/src/lua/src/lualib.h
+++ b/lib/lua/src/lualib.h
diff --git a/src/lua/src/lundump.c b/lib/lua/src/lundump.c
index 8010a4579..8010a4579 100644
--- a/src/lua/src/lundump.c
+++ b/lib/lua/src/lundump.c
diff --git a/src/lua/src/lundump.h b/lib/lua/src/lundump.h
index c80189dbf..c80189dbf 100644
--- a/src/lua/src/lundump.h
+++ b/lib/lua/src/lundump.h
diff --git a/src/lua/src/lvm.c b/lib/lua/src/lvm.c
index ee3256ab9..e0a0cd852 100644
--- a/src/lua/src/lvm.c
+++ b/lib/lua/src/lvm.c
@@ -1,5 +1,5 @@
/*
-** $Id: lvm.c,v 2.63.1.3 2007/12/28 15:32:23 roberto Exp $
+** $Id: lvm.c,v 2.63.1.5 2011/08/17 20:43:11 roberto Exp $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -133,6 +133,7 @@ void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId val) {
void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
int loop;
+ TValue temp;
for (loop = 0; loop < MAXTAGLOOP; loop++) {
const TValue *tm;
if (ttistable(t)) { /* `t' is a table? */
@@ -141,6 +142,7 @@ void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
if (!ttisnil(oldval) || /* result is no nil? */
(tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */
setobj2t(L, oldval, val);
+ h->flags = 0;
luaC_barriert(L, h, val);
return;
}
@@ -152,7 +154,9 @@ void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
callTM(L, tm, t, key, val);
return;
}
- t = tm; /* else repeat with `tm' */
+ /* else repeat with `tm' */
+ setobj(L, &temp, tm); /* avoid pointing inside table (may rehash) */
+ t = &temp;
}
luaG_runerror(L, "loop in settable");
}
diff --git a/src/lua/src/lvm.h b/lib/lua/src/lvm.h
index bfe4f5678..bfe4f5678 100644
--- a/src/lua/src/lvm.h
+++ b/lib/lua/src/lvm.h
diff --git a/src/lua/src/lzio.c b/lib/lua/src/lzio.c
index 293edd59b..293edd59b 100644
--- a/src/lua/src/lzio.c
+++ b/lib/lua/src/lzio.c
diff --git a/src/lua/src/lzio.h b/lib/lua/src/lzio.h
index 51d695d8c..51d695d8c 100644
--- a/src/lua/src/lzio.h
+++ b/lib/lua/src/lzio.h
diff --git a/src/lua/src/print.c b/lib/lua/src/print.c
index e240cfc3c..e240cfc3c 100644
--- a/src/lua/src/print.c
+++ b/lib/lua/src/print.c
diff --git a/minetest.conf.example b/minetest.conf.example
index 02f31779f..2f153413a 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -13,31 +13,16 @@
# http://wiki.minetest.net/
#
-# Client
+# Controls
#
-## Controls
+## General
# If enabled, you can place blocks at the position (feet + eye level) where you stand.
# This is helpful when working with nodeboxes in small areas.
# type: bool
# enable_build_where_you_stand = false
-# Player is able to fly without being affected by gravity.
-# This requires the "fly" privilege on the server.
-# type: bool
-# free_move = false
-
-# Fast movement (via use key).
-# This requires the "fast" privilege on the server.
-# type: bool
-# fast_move = false
-
-# If enabled together with fly mode, player is able to fly through solid nodes.
-# This requires the "noclip" privilege on the server.
-# type: bool
-# noclip = false
-
# Smooths camera when looking around. Also called look or mouse smoothing.
# Useful for recording videos.
# type: bool
@@ -51,15 +36,8 @@
# type: float min: 0 max: 0.99
# cinematic_camera_smoothing = 0.7
-# Invert vertical mouse movement.
-# type: bool
-# invert_mouse = false
-
-# Mouse sensitivity multiplier.
-# type: float
-# mouse_sensitivity = 0.2
-
-# If enabled, "use" key instead of "sneak" key is used for climbing down and descending.
+# If enabled, "Aux1" key instead of "Sneak" key is used for climbing down and
+# descending.
# type: bool
# aux1_descends = false
@@ -67,258 +45,262 @@
# type: bool
# doubletap_jump = false
-# If disabled "use" key is used to fly fast if both fly and fast mode are enabled.
+# If disabled, "Aux1" key is used to fly fast if both fly and fast mode are
+# enabled.
# type: bool
# always_fly_fast = true
-# The time in seconds it takes between repeated right clicks when holding the right mouse button.
-# type: float
-# repeat_rightclick_time = 0.25
+# The time in seconds it takes between repeated node placements when holding
+# the place button.
+# type: float min: 0.25 max: 2
+# repeat_place_time = 0.25
-# Enable random user input (only used for testing).
+# Automatically jump up single-node obstacles.
# type: bool
-# random_input = false
+# autojump = false
-# Continuous forward movement (only used for testing).
+# Prevent digging and placing from repeating when holding the mouse buttons.
+# Enable this when you dig or place too often by accident.
# type: bool
-# continuous_forward = false
+# safe_dig_and_place = false
+
+## Keyboard and Mouse
-# Enable Joysticks
+# Invert vertical mouse movement.
# type: bool
-# enable_joysticks = false
+# invert_mouse = false
-# The time in seconds it takes between repeated events
-# when holding down a joystick button combination.
-# type: float
-# repeat_joystick_button_time = 0.17
+# Mouse sensitivity multiplier.
+# type: float min: 0.001 max: 10
+# mouse_sensitivity = 0.2
-# The sensitivity of the joystick axes for moving the
-# ingame view frustum around.
-# type: float
-# joystick_frustum_sensitivity = 170
+## Touchscreen
-# Key for moving the player forward.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_forward = KEY_KEY_W
+# The length in pixels it takes for touch screen interaction to start.
+# type: int min: 0 max: 100
+# touchscreen_threshold = 20
-# Key for moving the player backward.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_backward = KEY_KEY_S
+# (Android) Fixes the position of virtual joystick.
+# If disabled, virtual joystick will center to first-touch's position.
+# type: bool
+# fixed_virtual_joystick = false
-# Key for moving the player left.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_left = KEY_KEY_A
+# (Android) Use virtual joystick to trigger "Aux1" button.
+# If enabled, virtual joystick will also tap "Aux1" button when out of main circle.
+# type: bool
+# virtual_joystick_triggers_aux1 = false
-# Key for moving the player right.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_right = KEY_KEY_D
+#
+# Graphics and Audio
+#
-# Key for jumping.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_jump = KEY_SPACE
+## Graphics
-# Key for sneaking.
-# Also used for climbing down and descending in water if aux1_descends is disabled.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_sneak = KEY_LSHIFT
+### Screen
-# Key for opening the inventory.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_inventory = KEY_KEY_I
+# Width component of the initial window size. Ignored in fullscreen mode.
+# type: int min: 1 max: 65535
+# screen_w = 1024
-# Key for moving fast in fast mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_special1 = KEY_KEY_E
+# Height component of the initial window size. Ignored in fullscreen mode.
+# type: int min: 1 max: 65535
+# screen_h = 600
-# Key for opening the chat window.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_chat = KEY_KEY_T
+# Save window size automatically when modified.
+# type: bool
+# autosave_screensize = true
-# Key for opening the chat window to type commands.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_cmd = /
+# Fullscreen mode.
+# type: bool
+# fullscreen = false
-# Key for opening the chat console.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keyman_console = KEY_F10
+# Open the pause menu when the window's focus is lost. Does not pause if a formspec is
+# open.
+# type: bool
+# pause_on_lost_focus = false
-# Key for toggling unlimited view range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_rangeselect = KEY_KEY_R
+### FPS
-# Key for toggling flying.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_freemove = KEY_KEY_K
+# If FPS would go higher than this, limit it by sleeping
+# to not waste CPU power for no benefit.
+# type: int min: 1 max: 4294967295
+# fps_max = 60
-# Key for toggling fast mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_fastmove = KEY_KEY_J
+# Vertical screen synchronization.
+# type: bool
+# vsync = false
-# Key for toggling noclip mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_noclip = KEY_KEY_H
+# Maximum FPS when the window is not focused, or when the game is paused.
+# type: int min: 1 max: 4294967295
+# fps_max_unfocused = 20
-# Key for toggling autorun.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_autorun =
+# View distance in nodes.
+# type: int min: 20 max: 4000
+# viewing_range = 190
-# Key for toggling cinematic mode.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_cinematic =
+# Undersampling is similar to using a lower screen resolution, but it applies
+# to the game world only, keeping the GUI intact.
+# It should give a significant performance boost at the cost of less detailed image.
+# Higher values result in a less detailed image.
+# type: int min: 1 max: 8
+# undersampling = 1
-# Key for toggling display of minimap.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_minimap = KEY_F9
+### Graphics Effects
-# Key for taking screenshots.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_screenshot = KEY_F12
+# Makes all liquids opaque
+# type: bool
+# opaque_water = false
-# Key for dropping the currently selected item.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_drop = KEY_KEY_Q
+# Leaves style:
+# - Fancy: all faces visible
+# - Simple: only outer faces, if defined special_tiles are used
+# - Opaque: disable transparency
+# type: enum values: fancy, simple, opaque
+# leaves_style = fancy
-# Key for toggling the display of the HUD.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_hud = KEY_F1
+# Connects glass if supported by node.
+# type: bool
+# connected_glass = false
-# Key for toggling the display of the chat.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_chat = KEY_F2
+# Enable smooth lighting with simple ambient occlusion.
+# Disable for speed or for different looks.
+# type: bool
+# smooth_lighting = true
-# Key for toggling the display of the fog.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_force_fog_off = KEY_F3
+# Enables tradeoffs that reduce CPU load or increase rendering performance
+# at the expense of minor visual glitches that do not impact game playability.
+# type: bool
+# performance_tradeoffs = false
-# Key for toggling the camera update. Only used for development
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_update_camera =
+# Adds particles when digging a node.
+# type: bool
+# enable_particles = true
-# Key for toggling the display of debug info.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_debug = KEY_F5
+### 3d
-# Key for toggling the display of the profiler. Used for development.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_toggle_profiler = KEY_F6
+# 3D support.
+# Currently supported:
+# - none: no 3d output.
+# - anaglyph: cyan/magenta color 3d.
+# - interlaced: odd/even line based polarisation screen support.
+# - topbottom: split screen top/bottom.
+# - sidebyside: split screen side by side.
+# - crossview: Cross-eyed 3d
+# - pageflip: quadbuffer based 3d.
+# Note that the interlaced mode requires shaders to be enabled.
+# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside, crossview, pageflip
+# 3d_mode = none
-# Key for switching between first- and third-person camera.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_camera_mode = KEY_F7
+# Strength of 3D mode parallax.
+# type: float min: -0.087 max: 0.087
+# 3d_paralax_strength = 0.025
-# Key for increasing the viewing range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_increase_viewing_range_min = +
+### Bobbing
-# Key for decreasing the viewing range.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_decrease_viewing_range_min = -
+# Arm inertia, gives a more realistic movement of
+# the arm when the camera moves.
+# type: bool
+# arm_inertia = true
-# Key for printing debug stacks. Used for development.
-# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
-# type: key
-# keymap_print_debug_stacks = KEY_KEY_P
+# Enable view bobbing and amount of view bobbing.
+# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
+# type: float min: 0 max: 7.9
+# view_bobbing_amount = 1.0
-## Network
+# Multiplier for fall bobbing.
+# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
+# type: float min: 0 max: 100
+# fall_bobbing_amount = 0.03
-# Address to connect to.
-# Leave this blank to start a local server.
-# Note that the address field in the main menu overrides this setting.
-# type: string
-# address =
+### Camera
-# Port to connect to (UDP).
-# Note that the port field in the main menu overrides this setting.
-# type: int min: 1 max: 65535
-# remote_port = 30000
+# Camera 'near clipping plane' distance in nodes, between 0 and 0.25
+# Only works on GLES platforms. Most users will not need to change this.
+# Increasing can reduce artifacting on weaker GPUs.
+# 0.1 = Default, 0.25 = Good value for weaker tablets.
+# type: float min: 0 max: 0.25
+# near_plane = 0.1
-# Whether to support older servers before protocol version 25.
-# Enable if you want to connect to 0.4.12 servers and before.
-# Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.
-# Disabling this option will protect your password better.
-# type: bool
-# send_pre_v25_init = false
+# Field of view in degrees.
+# type: int min: 45 max: 160
+# fov = 72
-# Save the map received by the client on disk.
-# type: bool
-# enable_local_map_saving = false
+# Alters the light curve by applying 'gamma correction' to it.
+# Higher values make middle and lower light levels brighter.
+# Value '1.0' leaves the light curve unaltered.
+# This only has significant effect on daylight and artificial
+# light, it has very little effect on natural night light.
+# type: float min: 0.33 max: 3
+# display_gamma = 1.0
-# Show entity selection boxes
-# type: bool
-# show_entity_selectionbox = true
+# The strength (darkness) of node ambient-occlusion shading.
+# Lower is darker, Higher is lighter. The valid range of values for this
+# setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
+# set to the nearest valid value.
+# type: float min: 0.25 max: 4
+# ambient_occlusion_gamma = 2.2
-# Enable usage of remote media server (if provided by server).
-# Remote servers offer a significantly faster way to download media (e.g. textures)
-# when connecting to the server.
-# type: bool
-# enable_remote_media_server = true
+### Screenshots
-# URL to the server list displayed in the Multiplayer Tab.
-# type: string
-# serverlist_url = servers.minetest.net
+# Path to save screenshots at. Can be an absolute or relative path.
+# The folder will be created if it doesn't already exist.
+# type: path
+# screenshot_path = screenshots
-# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab.
-# type: string
-# serverlist_file = favoriteservers.txt
+# Format of screenshots.
+# type: enum values: png, jpg
+# screenshot_format = png
-## Graphics
+# Screenshot quality. Only used for JPEG format.
+# 1 means worst quality; 100 means best quality.
+# Use 0 for default quality.
+# type: int min: 0 max: 100
+# screenshot_quality = 0
-### In-Game
+### Node and Entity Highlighting
-#### Basic
+# Method used to highlight selected object.
+# type: enum values: box, halo, none
+# node_highlighting = box
-# Enable VBO
+# Show entity selection boxes
+# A restart is required after changing this.
# type: bool
-# enable_vbo = true
+# show_entity_selectionbox = false
+
+# Selection box border color (R,G,B).
+# type: string
+# selectionbox_color = (0,0,0)
+
+# Width of the selection box lines around nodes.
+# type: int min: 1 max: 5
+# selectionbox_width = 2
+
+# Crosshair color (R,G,B).
+# Also controls the object crosshair color
+# type: string
+# crosshair_color = (255,255,255)
+
+# Crosshair alpha (opaqueness, between 0 and 255).
+# This also applies to the object crosshair.
+# type: int min: 0 max: 255
+# crosshair_alpha = 255
+
+### Fog
# Whether to fog out the end of the visible area.
# type: bool
# enable_fog = true
-# Leaves style:
-# - Fancy: all faces visible
-# - Simple: only outer faces, if defined special_tiles are used
-# - Opaque: disable transparency
-# type: enum values: fancy, simple, opaque
-# leaves_style = fancy
-
-# Connects glass if supported by node.
+# Make fog and sky colors depend on daytime (dawn/sunset) and view direction.
# type: bool
-# connected_glass = false
+# directional_colored_fog = true
-# Enable smooth lighting with simple ambient occlusion.
-# Disable for speed or for different looks.
-# type: bool
-# smooth_lighting = true
+# Fraction of the visible distance at which fog starts to be rendered
+# type: float min: 0 max: 0.99
+# fog_start = 0.4
+
+### Clouds
# Clouds are a client side effect.
# type: bool
@@ -328,13 +310,11 @@
# type: bool
# enable_3d_clouds = true
-# Method used to highlight selected object.
-# type: enum values: box, halo
-# node_highlighting = box
+### Filtering and Antialiasing
-#### Filtering
-
-# Use mip mapping to scale textures. May slightly increase performance.
+# Use mipmapping to scale textures. May slightly increase performance,
+# especially when using a high resolution texture pack.
+# Gamma correct downscaling is not supported.
# type: bool
# mip_map = false
@@ -351,284 +331,193 @@
# trilinear_filter = false
# Filtered textures can blend RGB values with fully-transparent neighbors,
-# which PNG optimizers usually discard, sometimes resulting in a dark or
-# light edge to transparent textures. Apply this filter to clean that up
-# at texture load time.
+# which PNG optimizers usually discard, often resulting in dark or
+# light edges to transparent textures. Apply a filter to clean that up
+# at texture load time. This is automatically enabled if mipmapping is enabled.
# type: bool
# texture_clean_transparent = false
# When using bilinear/trilinear/anisotropic filters, low-resolution textures
# can be blurred, so automatically upscale them with nearest-neighbor
-# interpolation to preserve crisp pixels. This sets the minimum texture size
+# interpolation to preserve crisp pixels. This sets the minimum texture size
# for the upscaled textures; higher values look sharper, but require more
-# memory. Powers of 2 are recommended. Setting this higher than 1 may not
-# have a visible effect unless bilinear/trilinear/anisotropic filtering is
-# enabled.
-# type: int
+# memory. Powers of 2 are recommended. This setting is ONLY applied if
+# bilinear/trilinear/anisotropic filtering is enabled.
+# This is also used as the base node texture size for world-aligned
+# texture autoscaling.
+# type: int min: 1 max: 32768
# texture_min_size = 64
-# Experimental option, might cause visible spaces between blocks
-# when set to higher number than 0.
+# Use multi-sample antialiasing (MSAA) to smooth out block edges.
+# This algorithm smooths out the 3D viewport while keeping the image sharp,
+# but it doesn't affect the insides of textures
+# (which is especially noticeable with transparent textures).
+# Visible spaces appear between nodes when shaders are disabled.
+# If set to 0, MSAA is disabled.
+# A restart is required after changing this option.
# type: enum values: 0, 1, 2, 4, 8, 16
# fsaa = 0
-#### Shaders
+## Shaders
-# Shaders allow advanced visual effects and may increase performance on some video cards.
-# Thy only work with the OpenGL video backend.
+# Shaders allow advanced visual effects and may increase performance on some video
+# cards.
+# This only works with the OpenGL video backend.
# type: bool
# enable_shaders = true
-##### Tone Mapping
+### Tone Mapping
-# Enables filmic tone mapping
+# Enables Hable's 'Uncharted 2' filmic tone mapping.
+# Simulates the tone curve of photographic film and how this approximates the
+# appearance of high dynamic range images. Mid-range contrast is slightly
+# enhanced, highlights and shadows are gradually compressed.
# type: bool
# tone_mapping = false
-##### Bumpmapping
+### Waving Nodes
-# Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack
-# or need to be auto-generated.
+# Set to true to enable waving leaves.
# Requires shaders to be enabled.
# type: bool
-# enable_bumpmapping = false
-
-# Enables on the fly normalmap generation (Emboss effect).
-# Requires bumpmapping to be enabled.
-# type: bool
-# generate_normalmaps = false
-
-# Strength of generated normalmaps.
-# type: float
-# normalmaps_strength = 0.6
-
-# Defines sampling step of texture.
-# A higher value results in smoother normal maps.
-# type: int min: 0 max: 2
-# normalmaps_smooth = 0
-
-##### Parallax Occlusion
+# enable_waving_leaves = false
-# Enables parallax occlusion mapping.
+# Set to true to enable waving plants.
# Requires shaders to be enabled.
# type: bool
-# enable_parallax_occlusion = false
-
-# 0 = parallax occlusion with slope information (faster).
-# 1 = relief mapping (slower, more accurate).
-# type: int min: 0 max: 1
-# parallax_occlusion_mode = 1
-
-# Strength of parallax.
-# type: float
-# 3d_parallax_strength = 0.025
-
-# Number of parallax occlusion iterations.
-# type: int
-# parallax_occlusion_iterations = 4
-
-# Overall scale of parallax occlusion effect.
-# type: float
-# parallax_occlusion_scale = 0.08
-
-# Overall bias of parallax occlusion effect, usually scale/2.
-# type: float
-# parallax_occlusion_bias = 0.04
-
-##### Waving Nodes
+# enable_waving_plants = false
-# Set to true enables waving water.
+# Set to true to enable waving liquids (like water).
# Requires shaders to be enabled.
# type: bool
# enable_waving_water = false
-# type: float
+# The maximum height of the surface of waving liquids.
+# 4.0 = Wave height is two nodes.
+# 0.0 = Wave doesn't move at all.
+# Default is 1.0 (1/2 node).
+# Requires waving liquids to be enabled.
+# type: float min: 0 max: 4
# water_wave_height = 1.0
-# type: float
+# Length of liquid waves.
+# Requires waving liquids to be enabled.
+# type: float min: 0.1
# water_wave_length = 20.0
+# How fast liquid waves will move. Higher = faster.
+# If negative, liquid waves will move backwards.
+# Requires waving liquids to be enabled.
# type: float
# water_wave_speed = 5.0
-# Set to true enables waving leaves.
-# Requires shaders to be enabled.
-# type: bool
-# enable_waving_leaves = false
+### Dynamic shadows
-# Set to true enables waving plants.
+# Set to true to enable Shadow Mapping.
# Requires shaders to be enabled.
# type: bool
-# enable_waving_plants = false
+# enable_dynamic_shadows = false
-#### Advanced
+# Set the shadow strength gamma.
+# Adjusts the intensity of in-game dynamic shadows.
+# Lower value means lighter shadows, higher value means darker shadows.
+# type: float min: 0.1 max: 10
+# shadow_strength_gamma = 1.0
-# If FPS would go higher than this, limit it by sleeping
-# to not waste CPU power for no benefit.
-# type: int
-# fps_max = 60
-
-# Maximum FPS when game is paused.
-# type: int
-# pause_fps_max = 20
+# Maximum distance to render shadows.
+# type: float min: 10 max: 1000
+# shadow_map_max_distance = 120.0
-# View distance in nodes.
-# Min = 20
-# type: int
-# viewing_range = 100
+# Texture size to render the shadow map on.
+# This must be a power of two.
+# Bigger numbers create better shadows but it is also more expensive.
+# type: int min: 128 max: 8192
+# shadow_map_texture_size = 1024
-# Width component of the initial window size.
-# type: int
-# screenW = 800
-
-# Height component of the initial window size.
-# type: int
-# screenH = 600
-
-# Fullscreen mode.
+# Sets shadow texture quality to 32 bits.
+# On false, 16 bits texture will be used.
+# This can cause much more artifacts in the shadow.
# type: bool
-# fullscreen = false
-
-# Bits per pixel (aka color depth) in fullscreen mode.
-# type: int
-# fullscreen_bpp = 24
+# shadow_map_texture_32bit = true
-# Vertical screen synchronization.
+# Enable Poisson disk filtering.
+# On true uses Poisson disk to make "soft shadows". Otherwise uses PCF filtering.
# type: bool
-# vsync = false
-
-# Field of view in degrees.
-# type: int min: 30 max: 160
-# fov = 72
-
-# Field of view while zooming in degrees.
-# This requires the "zoom" privilege on the server.
-# type: int min: 15 max: 160
-# zoom_fov = 15
-
-# Adjust the gamma encoding for the light tables. Lower numbers are brighter.
-# This setting is for the client only and is ignored by the server.
-# type: float min: 1 max: 3
-# display_gamma = 1.8
-
-# Path to texture directory. All textures are first searched from here.
-# type: path
-# texture_path =
-
-# The rendering back-end for Irrlicht.
-# type: enum values: null, software, burningsvideo, direct3d8, direct3d9, opengl
-# video_driver = opengl
-
-# Height on which clouds are appearing.
-# type: int
-# cloud_height = 120
-
-# Radius of cloud area stated in number of 64 node cloud squares.
-# Values larger than 26 will start to produce sharp cutoffs at cloud area corners.
-# type: int
-# cloud_radius = 12
-
-# Multiplier for view bobbing.
-# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
-# type: float
-# view_bobbing_amount = 1.0
-
-# Multiplier for fall bobbing.
-# For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
-# type: float
-# fall_bobbing_amount = 0.0
-
-# 3D support.
-# Currently supported:
-# - none: no 3d output.
-# - anaglyph: cyan/magenta color 3d.
-# - interlaced: odd/even line based polarisation screen support.
-# - topbottom: split screen top/bottom.
-# - sidebyside: split screen side by side.
-# - pageflip: quadbuffer based 3d.
-# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside, pageflip
-# 3d_mode = none
-
-# In-game chat console background color (R,G,B).
-# type: string
-# console_color = (0,0,0)
-
-# In-game chat console background alpha (opaqueness, between 0 and 255).
-# type: int min: 0 max: 255
-# console_alpha = 200
-
-# Selection box border color (R,G,B).
-# type: string
-# selectionbox_color = (0,0,0)
-
-# Width of the selectionbox's lines around nodes.
-# type: int min: 1 max: 5
-# selectionbox_width = 2
+# shadow_poisson_filter = true
-# Crosshair color (R,G,B).
-# type: string
-# crosshair_color = (255,255,255)
-
-# Crosshair alpha (opaqueness, between 0 and 255).
-# type: int min: 0 max: 255
-# crosshair_alpha = 255
+# Define shadow filtering quality.
+# This simulates the soft shadows effect by applying a PCF or Poisson disk
+# but also uses more resources.
+# type: enum values: 0, 1, 2
+# shadow_filters = 1
-# Whether node texture animations should be desynchronized per mapblock.
+# Enable colored shadows.
+# On true translucent nodes cast colored shadows. This is expensive.
# type: bool
-# desynchronize_mapblock_texture_animation = true
+# shadow_map_color = false
-# Maximum proportion of current window to be used for hotbar.
-# Useful if there's something to be displayed right or left of hotbar.
-# type: float
-# hud_hotbar_max_width = 1.0
+# Spread a complete update of shadow map over given amount of frames.
+# Higher values might make shadows laggy, lower values
+# will consume more resources.
+# Minimum value: 1; maximum value: 16
+# type: int min: 1 max: 16
+# shadow_update_frames = 8
-# Enables caching of facedir rotated meshes.
-# type: bool
-# enable_mesh_cache = false
+# Set the soft shadow radius size.
+# Lower values mean sharper shadows, bigger values mean softer shadows.
+# Minimum value: 1.0; maximum value: 15.0
+# type: float min: 1 max: 15
+# shadow_soft_radius = 5.0
-# Enables minimap.
-# type: bool
-# enable_minimap = true
+# Set the tilt of Sun/Moon orbit in degrees.
+# Value of 0 means no tilt / vertical orbit.
+# Minimum value: 0.0; maximum value: 60.0
+# type: float min: 0 max: 60
+# shadow_sky_body_orbit_tilt = 0.0
-# Shape of the minimap. Enabled = round, disabled = square.
-# type: bool
-# minimap_shape_round = true
+## Audio
-# True = 256
-# False = 128
-# Useable to make minimap smoother on slower machines.
-# type: bool
-# minimap_double_scan_height = true
+# Volume of all sounds.
+# Requires the sound system to be enabled.
+# type: float min: 0 max: 1
+# sound_volume = 0.7
-# Make fog and sky colors depend on daytime (dawn/sunset) and view direction.
+# Whether to mute sounds. You can unmute sounds at any time, unless the
+# sound system is disabled (enable_sound=false).
+# In-game, you can toggle the mute state with the mute key or by using the
+# pause menu.
# type: bool
-# directional_colored_fog = true
-
-# The strength (darkness) of node ambient-occlusion shading.
-# Lower is darker, Higher is lighter. The valid range of values for this
-# setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
-# set to the nearest valid value.
-# type: float min: 0.25 max: 4
-# ambient_occlusion_gamma = 2.2
+# mute_sound = false
-# Enables animation of inventory items.
-# type: bool
-# inventory_items_animations = false
+## User Interfaces
-### Menus
+# Set the language. Leave empty to use the system language.
+# A restart is required after changing this.
+# type: enum values: , be, bg, ca, cs, da, de, el, en, eo, es, et, eu, fi, fr, gd, gl, hu, id, it, ja, jbo, kk, ko, lt, lv, ms, nb, nl, nn, pl, pt, pt_BR, ro, ru, sk, sl, sr_Cyrl, sr_Latn, sv, sw, tr, uk, vi, zh_CN, zh_TW
+# language =
-# Use a cloud animation for the main menu background.
-# type: bool
-# menu_clouds = true
+### GUIs
-# Scale gui by a user specified value.
+# Scale GUI by a user specified value.
# Use a nearest-neighbor-anti-alias filter to scale the GUI.
# This will smooth over some of the rough edges, and blend
# pixels when scaling down, at the cost of blurring some
# edge pixels when images are scaled by non-integer sizes.
-# type: float
+# type: float min: 0.5 max: 20
# gui_scaling = 1.0
+# Enables animation of inventory items.
+# type: bool
+# inventory_items_animations = false
+
+# Formspec full-screen background opacity (between 0 and 255).
+# type: int min: 0 max: 255
+# formspec_fullscreen_bg_opacity = 140
+
+# Formspec full-screen background color (R,G,B).
+# type: string
+# formspec_fullscreen_bg_color = (0,0,0)
+
# When gui_scaling_filter is true, all GUI images need to be
# filtered in software, but some images are generated directly
# to hardware (e.g. render-to-texture for nodes in inventory).
@@ -643,93 +532,112 @@
# gui_scaling_filter_txr2img = true
# Delay showing tooltips, stated in milliseconds.
-# type: int
+# type: int min: 0 max: 1.844674407371e+19
# tooltip_show_delay = 400
-# Whether freetype fonts are used, requires freetype support to be compiled in.
+# Append item name to tooltip.
# type: bool
-# freetype = true
+# tooltip_append_itemname = false
-# Path to TrueTypeFont or bitmap.
-# type: path
-# font_path = fonts/liberationsans.ttf
+# Use a cloud animation for the main menu background.
+# type: bool
+# menu_clouds = true
-# type: int
-# font_size = 16
+### HUD
-# Font shadow offset, if 0 then shadow will not be drawn.
-# type: int
-# font_shadow = 1
+# Modifies the size of the HUD elements.
+# type: float min: 0.5 max: 20
+# hud_scaling = 1.0
-# Font shadow alpha (opaqueness, between 0 and 255).
-# type: int min: 0 max: 255
-# font_shadow_alpha = 127
+# Whether name tag backgrounds should be shown by default.
+# Mods may still set a background.
+# type: bool
+# show_nametag_backgrounds = true
-# type: path
-# mono_font_path = fonts/liberationmono.ttf
+### Chat
-# type: int
-# mono_font_size = 15
+# Maximum number of recent chat messages to show
+# type: int min: 2 max: 20
+# recent_chat_messages = 6
-# This font will be used for certain languages.
-# type: path
-# fallback_font_path = fonts/DroidSansFallbackFull.ttf
-
-# type: int
-# fallback_font_size = 15
+# In-game chat console height, between 0.1 (10%) and 1.0 (100%).
+# type: float min: 0.1 max: 1
+# console_height = 0.6
-# type: int
-# fallback_font_shadow = 1
+# In-game chat console background color (R,G,B).
+# type: string
+# console_color = (0,0,0)
+# In-game chat console background alpha (opaqueness, between 0 and 255).
# type: int min: 0 max: 255
-# fallback_font_shadow_alpha = 128
+# console_alpha = 200
-# Path to save screenshots at.
-# type: path
-# screenshot_path =
+# Maximum proportion of current window to be used for hotbar.
+# Useful if there's something to be displayed right or left of hotbar.
+# type: float min: 0.001 max: 1
+# hud_hotbar_max_width = 1.0
-# Format of screenshots.
-# type: enum values: png, jpg, bmp, pcx, ppm, tga
-# screenshot_format = png
+# Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console output.
+# type: bool
+# clickable_chat_weblinks = true
-# Screenshot quality. Only used for JPEG format.
-# 1 means worst quality; 100 means best quality.
-# Use 0 for default quality.
-# type: int min: 0 max: 100
-# screenshot_quality = 0
+# Optional override for chat weblink color.
+# type: string
+# chat_weblink_color =
-### Advanced
+# Font size of the recent chat text and chat prompt in point (pt).
+# Value 0 will use the default font size.
+# type: int min: 0 max: 72
+# chat_font_size = 0
-# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.
-# type: int
-# screen_dpi = 72
+### Content Repository
-## Sound
+# The URL for the content repository
+# type: string
+# contentdb_url = https://content.minetest.net
+
+# Comma-separated list of flags to hide in the content repository.
+# "nonfree" can be used to hide packages which do not qualify as 'free software',
+# as defined by the Free Software Foundation.
+# You can also specify content ratings.
+# These flags are independent from Minetest versions,
+# so see a full list at https://content.minetest.net/help/content_flags/
+# type: string
+# contentdb_flag_blacklist = nonfree, desktop_default
-# type: bool
-# enable_sound = true
+# Maximum number of concurrent downloads. Downloads exceeding this limit will be queued.
+# This should be lower than curl_parallel_limit.
+# type: int min: 1
+# contentdb_max_concurrent_downloads = 3
-# type: float min: 0 max: 1
-# sound_volume = 0.7
+#
+# Client and Server
+#
-## Advanced
+## Client
-# Timeout for client to remove unused map data from memory.
-# type: int
-# client_unload_unused_data_timeout = 600
+# Save the map received by the client on disk.
+# type: bool
+# enable_local_map_saving = false
-# Maximum number of mapblocks for client to be kept in memory.
-# Set to -1 for unlimited amount.
-# type: int
-# client_mapblock_limit = 5000
+# URL to the server list displayed in the Multiplayer Tab.
+# type: string
+# serverlist_url = servers.minetest.net
-# Whether to show the client debug info (has the same effect as hitting F5).
+# If enabled, account registration is separate from login in the UI.
+# If disabled, new accounts will be registered automatically when logging in.
# type: bool
-# show_debug = false
+# enable_split_login_register = true
-#
-# Server / Singleplayer
-#
+## Server
+
+# Name of the player.
+# When running a server, clients connecting with this name are admins.
+# When starting from the main menu, this is overridden.
+# type: string
+# name =
+
+### Serverlist and MOTD
# Name of the server, to be displayed when players join and in the serverlist.
# type: string
@@ -745,28 +653,33 @@
# Homepage of server, to be displayed in the serverlist.
# type: string
-# server_url = http://minetest.net
+# server_url = https://minetest.net
-# Automaticaly report to the serverlist.
+# Automatically report to the serverlist.
# type: bool
# server_announce = false
# Announce to this serverlist.
-# If you want to announce your ipv6 address, use serverlist_url = v6.servers.minetest.net.
# type: string
# serverlist_url = servers.minetest.net
-# Disable escape sequences, e.g. chat coloring.
-# Use this if you want to run a server with pre-0.4.14 clients and you want to disable
-# the escape sequences generated by mods.
-# type: bool
-# disable_escape_sequences = false
+# Message of the day displayed to players connecting.
+# type: string
+# motd =
-## Network
+# Maximum number of players that can be connected simultaneously.
+# type: int min: 0 max: 65535
+# max_users = 15
+
+# If this is set, players will always (re)spawn at the given position.
+# type: string
+# static_spawnpoint =
+
+### Networking
# Network port to listen (UDP).
# This value will be overridden when starting from the main menu.
-# type: int
+# type: int min: 1 max: 65535
# port = 30000
# The network interface that the server listens on.
@@ -786,71 +699,22 @@
# type: string
# remote_media =
-# Enable/disable running an IPv6 server. An IPv6 server may be restricted
-# to IPv6 clients, depending on system configuration.
+# Enable/disable running an IPv6 server.
# Ignored if bind_address is set.
+# Needs enable_ipv6 to be enabled.
# type: bool
# ipv6_server = false
-### Advanced
-
-# Maximum number of blocks that are simultaneously sent per client.
-# type: int
-# max_simultaneous_block_sends_per_client = 10
-
-# Maximum number of blocks that are simultaneously sent in total.
-# type: int
-# max_simultaneous_block_sends_server_total = 40
-
-# To reduce lag, block transfers are slowed down when a player is building something.
-# This determines how long they are slowed down after placing or removing a node.
-# type: float
-# full_block_send_enable_min_time_from_building = 2.0
-
-# Maximum number of packets sent per send step, if you have a slow connection
-# try reducing it, but don't reduce it to a number below double of targeted
-# client number.
-# type: int
-# max_packets_per_iteration = 1024
-
-## Game
-
-# Default game when creating a new world.
-# This will be overridden when creating a world from the main menu.
-# type: string
-# default_game = minetest
-
-# Message of the day displayed to players connecting.
-# type: string
-# motd =
-
-# Maximum number of players that can connect simultaneously.
-# type: int
-# max_users = 15
-
-# World directory (everything in the world is stored here).
-# Not needed if starting from the main menu.
-# type: path
-# map-dir =
-
-# Time in seconds for item entity (dropped items) to live.
-# Setting it to -1 disables the feature.
-# type: int
-# item_entity_ttl = 900
-
-# Enable players getting damage and dying.
-# type: bool
-# enable_damage = false
-
-# A chosen map seed for a new map, leave empty for random.
-# Will be overridden when creating a new world in the main menu.
-# type: string
-# fixed_map_seed =
+## Server Security
# New users need to input this password.
# type: string
# default_password =
+# If enabled, players cannot join without a password or change theirs to an empty password.
+# type: bool
+# disallow_empty_password = false
+
# The privileges that new users automatically get.
# See /privs in game for a full list on your server and mod configuration.
# type: string
@@ -860,27 +724,6 @@
# type: string
# basic_privs = interact, shout
-# Whether players are shown to clients without any range limit.
-# Deprecated, use the setting player_transfer_distance instead.
-# type: bool
-# unlimited_player_transfer_distance = true
-
-# Defines the maximal player transfer distance in blocks (0 = unlimited).
-# type: int
-# player_transfer_distance = 0
-
-# Whether to allow players to damage and kill each other.
-# type: bool
-# enable_pvp = true
-
-# If this is set, players will always (re)spawn at the given position.
-# type: string
-# static_spawnpoint =
-
-# If enabled, new players cannot join with an empty password.
-# type: bool
-# disallow_empty_password = false
-
# If enabled, disable cheat prevention in multiplayer.
# type: bool
# disable_anticheat = false
@@ -890,241 +733,406 @@
# type: bool
# enable_rollback_recording = false
-# A message to be displayed to all clients when the server shuts down.
-# type: string
-# kick_msg_shutdown = Server shutting down.
+### Client-side Modding
-# A message to be displayed to all clients when the server crashes.
-# type: string
-# kick_msg_crash = This server has experienced an internal error. You will now be disconnected.
+# Restricts the access of certain client-side functions on servers.
+# Combine the byteflags below to restrict client-side features, or set to 0
+# for no restrictions:
+# LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)
+# CHAT_MESSAGES: 2 (disable send_chat_message call client-side)
+# READ_ITEMDEFS: 4 (disable get_item_def call client-side)
+# READ_NODEDEFS: 8 (disable get_node_def call client-side)
+# LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
+# csm_restriction_noderange)
+# READ_PLAYERINFO: 32 (disable get_player_names call client-side)
+# type: int min: 0 max: 63
+# csm_restriction_flags = 62
-# Whether to ask clients to reconnect after a (Lua) crash.
-# Set this to true if your server is set up to restart automatically.
-# type: bool
-# ask_reconnect_on_crash = false
+# If the CSM restriction for node range is enabled, get_node calls are limited
+# to this distance from the player to the node.
+# type: int min: 0 max: 4294967295
+# csm_restriction_noderange = 0
-# From how far clients know about objects, stated in mapblocks (16 nodes).
-# type: int
-# active_object_send_range_blocks = 3
+### Chat
-# How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes).
-# In active blocks objects are loaded and ABMs run.
-# type: int
-# active_block_range = 2
+# Remove color codes from incoming chat messages
+# Use this to stop players from being able to use color in their messages
+# type: bool
+# strip_color_codes = false
-# From how far blocks are sent to clients, stated in mapblocks (16 nodes).
-# type: int
-# max_block_send_distance = 10
+# Set the maximum length of a chat message (in characters) sent by clients.
+# type: int min: 10 max: 65535
+# chat_message_max_size = 500
-# Maximum number of forceloaded mapblocks.
-# type: int
-# max_forceloaded_blocks = 16
+# Amount of messages a player may send per 10 seconds.
+# type: float min: 1
+# chat_message_limit_per_10sec = 10.0
+
+# Kick players who sent more than X messages per 10 seconds.
+# type: int min: 1 max: 65535
+# chat_message_limit_trigger_kick = 50
-# Interval of sending time of day to clients.
-# type: int
-# time_send_interval = 5
+## Server Gameplay
# Controls length of day/night cycle.
-# Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged.
-# type: int
+# Examples:
+# 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged.
+# type: int min: 0
# time_speed = 72
-# Interval of saving important changes in the world, stated in seconds.
-# type: float
-# server_map_save_interval = 5.3
-
-# Set the maximum character length of a chat message sent by clients. (0 to disable)
-# type: integer
-# chat_message_max_size = 500
-
-# Limit a single player to send X messages per 10 seconds. (0 to disable)
-# type: float
-# chat_message_limit_per_10sec = 8.0
+# Time of day when a new world is started, in millihours (0-23999).
+# type: int min: 0 max: 23999
+# world_start_time = 6125
-# Kick player if send more than X messages per 10 seconds. (0 to disable)
-# type: integer
-# chat_message_limit_trigger_kick = 50
+# Time in seconds for item entity (dropped items) to live.
+# Setting it to -1 disables the feature.
+# type: int min: -1
+# item_entity_ttl = 900
-# At this distance the server will aggressively optimize which blocks are sent to clients.
-# Small values potentially improve performance a lot, at the expense of visible rendering glitches.
-# (some blocks will not be rendered under water and in caves, as well as sometimes on land)
-# Setting this to a value greater than max_block_send_distance disables this optimization.
-# Stated in mapblocks (16 nodes)
-# type: int
-# block_send_optimize_distance = 4
+# Specifies the default stack size of nodes, items and tools.
+# Note that mods or games may explicitly set a stack for certain (or all) items.
+# type: int min: 1 max: 65535
+# default_stack_max = 99
### Physics
-# type: float
-# movement_acceleration_default = 3
+# Horizontal and vertical acceleration on ground or when climbing,
+# in nodes per second per second.
+# type: float min: 0
+# movement_acceleration_default = 3.0
-# type: float
-# movement_acceleration_air = 2
+# Horizontal acceleration in air when jumping or falling,
+# in nodes per second per second.
+# type: float min: 0
+# movement_acceleration_air = 2.0
-# type: float
-# movement_acceleration_fast = 10
+# Horizontal and vertical acceleration in fast mode,
+# in nodes per second per second.
+# type: float min: 0
+# movement_acceleration_fast = 10.0
-# type: float
-# movement_speed_walk = 4
+# Walking and flying speed, in nodes per second.
+# type: float min: 0
+# movement_speed_walk = 4.0
-# type: float
+# Sneaking speed, in nodes per second.
+# type: float min: 0
# movement_speed_crouch = 1.35
-# type: float
-# movement_speed_fast = 20
+# Walking, flying and climbing speed in fast mode, in nodes per second.
+# type: float min: 0
+# movement_speed_fast = 20.0
-# type: float
-# movement_speed_climb = 2
+# Vertical climbing speed, in nodes per second.
+# type: float min: 0
+# movement_speed_climb = 3.0
-# type: float
+# Initial vertical speed when jumping, in nodes per second.
+# type: float min: 0
# movement_speed_jump = 6.5
-# type: float
-# movement_speed_descend = 6
-
-# type: float
-# movement_liquid_fluidity = 1
+# How much you are slowed down when moving inside a liquid.
+# Decrease this to increase liquid resistance to movement.
+# type: float min: 0.001
+# movement_liquid_fluidity = 1.0
+# Maximum liquid resistance. Controls deceleration when entering liquid at
+# high speed.
# type: float
# movement_liquid_fluidity_smooth = 0.5
+# Controls sinking speed in liquid when idling. Negative values will cause
+# you to rise instead.
# type: float
-# movement_liquid_sink = 10
+# movement_liquid_sink = 10.0
+# Acceleration of gravity, in nodes per second per second.
# type: float
# movement_gravity = 9.81
-### Advanced
+#
+# Mapgen
+#
-# Handling for deprecated lua api calls:
-# - legacy: (try to) mimic old behaviour (default for release).
-# - log: mimic and log backtrace of deprecated call (default for debug).
-# - error: abort on usage of deprecated call (suggested for mod developers).
-# type: enum values: legacy, log, error
-# deprecated_lua_api_handling = legacy
+# A chosen map seed for a new map, leave empty for random.
+# Will be overridden when creating a new world in the main menu.
+# type: string
+# fixed_map_seed =
-# Number of extra blocks that can be loaded by /clearobjects at once.
-# This is a trade-off between sqlite transaction overhead and
-# memory consumption (4096=100MB, as a rule of thumb).
-# type: int
-# max_clearobjects_extra_loaded_blocks = 4096
+# Name of map generator to be used when creating a new world.
+# Creating a world in the main menu will override this.
+# Current mapgens in a highly unstable state:
+# - The optional floatlands of v7 (disabled by default).
+# type: enum values: v7, valleys, carpathian, v5, flat, fractal, singlenode, v6
+# mg_name = v7
-# How much the server will wait before unloading unused mapblocks.
-# Higher value is smoother, but will use more RAM.
-# type: int
-# server_unload_unused_data_timeout = 29
+# Water surface level of the world.
+# type: int min: -31000 max: 31000
+# water_level = 1
-# Maximum number of statically stored objects in a block.
-# type: int
-# max_objects_per_block = 64
+# From how far blocks are generated for clients, stated in mapblocks (16 nodes).
+# type: int min: 1 max: 32767
+# max_block_generate_distance = 10
-# See http://www.sqlite.org/pragma.html#pragma_synchronous
-# type: enum values: 0, 1, 2
-# sqlite_synchronous = 2
+# Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).
+# Only mapchunks completely within the mapgen limit are generated.
+# Value is stored per-world.
+# type: int min: 0 max: 31007
+# mapgen_limit = 31007
-# Length of a server tick and the interval at which objects are generally updated over network.
-# type: float
-# dedicated_server_step = 0.1
+# Global map generation attributes.
+# In Mapgen v6 the 'decorations' flag controls all decorations except trees
+# and jungle grass, in all other mapgens this flag controls all decorations.
+# type: flags possible values: caves, dungeons, light, decorations, biomes, ores, nocaves, nodungeons, nolight, nodecorations, nobiomes, noores
+# mg_flags = caves,dungeons,light,decorations,biomes,ores
+
+## Biome API noise parameters
+
+# Temperature variation for biomes.
+# type: noise_params_2d
+# mg_biome_np_heat = {
+# offset = 50,
+# scale = 50,
+# spread = (1000, 1000, 1000),
+# seed = 5349,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Time in between active block management cycles
-# type: float
-# active_block_mgmt_interval = 2.0
+# Small-scale temperature variation for blending biomes on borders.
+# type: noise_params_2d
+# mg_biome_np_heat_blend = {
+# offset = 0,
+# scale = 1.5,
+# spread = (8, 8, 8),
+# seed = 13,
+# octaves = 2,
+# persistence = 1.0,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Length of time between ABM execution cycles
-# type: float
-# abm_interval = 1.0
+# Humidity variation for biomes.
+# type: noise_params_2d
+# mg_biome_np_humidity = {
+# offset = 50,
+# scale = 50,
+# spread = (1000, 1000, 1000),
+# seed = 842,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Small-scale humidity variation for blending biomes on borders.
+# type: noise_params_2d
+# mg_biome_np_humidity_blend = {
+# offset = 0,
+# scale = 1.5,
+# spread = (8, 8, 8),
+# seed = 90003,
+# octaves = 2,
+# persistence = 1.0,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+## Mapgen V5
+
+# Map generation attributes specific to Mapgen v5.
+# type: flags possible values: caverns, nocaverns
+# mgv5_spflags = caverns
-# Length of time between NodeTimer execution cycles
+# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
# type: float
-# nodetimer_interval = 1.0
+# mgv5_cave_width = 0.09
-# If enabled, invalid world data won't cause the server to shut down.
-# Only enable this if you know what you are doing.
-# type: bool
-# ignore_world_load_errors = false
+# Y of upper limit of large caves.
+# type: int min: -31000 max: 31000
+# mgv5_large_cave_depth = -256
-# Max liquids processed per step.
-# type: int
-# liquid_loop_max = 100000
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgv5_small_cave_num_min = 0
-# The time (in seconds) that the liquids queue may grow beyond processing
-# capacity until an attempt is made to decrease its size by dumping old queue
-# items. A value of 0 disables the functionality.
-# type: int
-# liquid_queue_purge_time = 0
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgv5_small_cave_num_max = 0
-# Liquid update interval in seconds.
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgv5_large_cave_num_min = 0
+
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgv5_large_cave_num_max = 2
+
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgv5_large_cave_flooded = 0.5
+
+# Y-level of cavern upper limit.
+# type: int min: -31000 max: 31000
+# mgv5_cavern_limit = -256
+
+# Y-distance over which caverns expand to full size.
+# type: int min: 0 max: 32767
+# mgv5_cavern_taper = 256
+
+# Defines full size of caverns, smaller values create larger caverns.
# type: float
-# liquid_update = 1.0
+# mgv5_cavern_threshold = 0.7
-## Mapgen
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv5_dungeon_ymin = -31000
-# Name of map generator to be used when creating a new world.
-# Creating a world in the main menu will override this.
-# type: enum values: v5, v6, v7, flat, valleys, fractal, singlenode
-# mg_name = v6
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv5_dungeon_ymax = 31000
-# Water surface level of the world.
-# type: int
-# water_level = 1
+### Noises
-# From how far blocks are generated for clients, stated in mapblocks (16 nodes).
-# type: int
-# max_block_generate_distance = 6
-
-# Where the map generator stops.
-# Please note:
-# - Limited to 31000 (setting above has no effect)
-# - The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).
-# - Those groups have an offset of -32, -32 nodes from the origin.
-# - Only groups which are within the map_generation_limit are generated
-# type: int min: 0 max: 31000
-# map_generation_limit = 31000
+# Variation of biome filler depth.
+# type: noise_params_2d
+# mgv5_np_filler_depth = {
+# offset = 0,
+# scale = 1,
+# spread = (150, 150, 150),
+# seed = 261,
+# octaves = 4,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Global map generation attributes.
-# In Mapgen v6 the 'decorations' flag controls all decorations except trees
-# and junglegrass, in all other mapgens this flag controls all decorations.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-# type: flags possible values: caves, dungeons, light, decorations, nocaves, nodungeons, nolight, nodecorations
-# mg_flags = caves,dungeons,light,decorations
+# Variation of terrain vertical scale.
+# When noise is < -0.55 terrain is near-flat.
+# type: noise_params_2d
+# mgv5_np_factor = {
+# offset = 0,
+# scale = 1,
+# spread = (250, 250, 250),
+# seed = 920381,
+# octaves = 3,
+# persistence = 0.45,
+# lacunarity = 2.0,
+# flags = eased
+# }
-### Advanced
+# Y-level of average terrain surface.
+# type: noise_params_2d
+# mgv5_np_height = {
+# offset = 0,
+# scale = 10,
+# spread = (250, 250, 250),
+# seed = 84174,
+# octaves = 4,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Size of chunks to be generated at once by mapgen, stated in mapblocks (16 nodes).
-# type: int
-# chunksize = 5
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgv5_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# Dump the mapgen debug infos.
-# type: bool
-# enable_mapgen_debug_info = false
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgv5_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# Maximum number of blocks that can be queued for loading.
-# type: int
-# emergequeue_limit_total = 256
+# 3D noise defining giant caverns.
+# type: noise_params_3d
+# mgv5_np_cavern = {
+# offset = 0,
+# scale = 1,
+# spread = (384, 128, 384),
+# seed = 723,
+# octaves = 5,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
-# Maximum number of blocks to be queued that are to be loaded from file.
-# Set to blank for an appropriate amount to be chosen automatically.
-# type: int
-# emergequeue_limit_diskonly = 32
+# 3D noise defining terrain.
+# type: noise_params_3d
+# mgv5_np_ground = {
+# offset = 0,
+# scale = 40,
+# spread = (80, 80, 80),
+# seed = 983240,
+# octaves = 4,
+# persistence = 0.55,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Maximum number of blocks to be queued that are to be generated.
-# Set to blank for an appropriate amount to be chosen automatically.
-# type: int
-# emergequeue_limit_generate = 32
-
-# Number of emerge threads to use. Make this field blank, or increase this number
-# to use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly
-# at the cost of slightly buggy caves.
-# type: int
-# num_emerge_threads = 1
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgv5_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
-#### Noise parameters and formats
+## Mapgen V6
-# Noise parameters can be specified as a set of positional values, for example:
-# Offset, scale, (spread factors), seed offset, number of octaves, persistence, lacunarity
-# mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0
-# Or the group format can be used instead, for example:
+# Map generation attributes specific to Mapgen v6.
+# The 'snowbiomes' flag enables the new 5 biome system.
+# When the 'snowbiomes' flag is enabled jungles are automatically enabled and
+# the 'jungles' flag is ignored.
+# type: flags possible values: jungles, biomeblend, mudflow, snowbiomes, flat, trees, nojungles, nobiomeblend, nomudflow, nosnowbiomes, noflat, notrees
+# mgv6_spflags = jungles,biomeblend,mudflow,snowbiomes,noflat,trees
+
+# Deserts occur when np_biome exceeds this value.
+# When the 'snowbiomes' flag is enabled, this is ignored.
+# type: float
+# mgv6_freq_desert = 0.45
+
+# Sandy beaches occur when np_beach exceeds this value.
+# type: float
+# mgv6_freq_beach = 0.15
+
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv6_dungeon_ymin = -31000
+
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv6_dungeon_ymax = 31000
+
+### Noises
+
+# Y-level of lower terrain and seabed.
+# type: noise_params_2d
# mgv6_np_terrain_base = {
# offset = -4,
# scale = 20,
@@ -1133,175 +1141,771 @@
# octaves = 5,
# persistence = 0.6,
# lacunarity = 2.0,
-# flags = "defaults"
+# flags = eased
+# }
+
+# Y-level of higher terrain that creates cliffs.
+# type: noise_params_2d
+# mgv6_np_terrain_higher = {
+# offset = 20,
+# scale = 16,
+# spread = (500, 500, 500),
+# seed = 85039,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Varies steepness of cliffs.
+# type: noise_params_2d
+# mgv6_np_steepness = {
+# offset = 0.85,
+# scale = 0.5,
+# spread = (125, 125, 125),
+# seed = -932,
+# octaves = 5,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Defines distribution of higher terrain.
+# type: noise_params_2d
+# mgv6_np_height_select = {
+# offset = 0.5,
+# scale = 1,
+# spread = (250, 250, 250),
+# seed = 4213,
+# octaves = 5,
+# persistence = 0.69,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Varies depth of biome surface nodes.
+# type: noise_params_2d
+# mgv6_np_mud = {
+# offset = 4,
+# scale = 2,
+# spread = (200, 200, 200),
+# seed = 91013,
+# octaves = 3,
+# persistence = 0.55,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Defines areas with sandy beaches.
+# type: noise_params_2d
+# mgv6_np_beach = {
+# offset = 0,
+# scale = 1,
+# spread = (250, 250, 250),
+# seed = 59420,
+# octaves = 3,
+# persistence = 0.50,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Temperature variation for biomes.
+# type: noise_params_2d
+# mgv6_np_biome = {
+# offset = 0,
+# scale = 1,
+# spread = (500, 500, 500),
+# seed = 9130,
+# octaves = 3,
+# persistence = 0.50,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Variation of number of caves.
+# type: noise_params_2d
+# mgv6_np_cave = {
+# offset = 6,
+# scale = 6,
+# spread = (250, 250, 250),
+# seed = 34329,
+# octaves = 3,
+# persistence = 0.50,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Humidity variation for biomes.
+# type: noise_params_2d
+# mgv6_np_humidity = {
+# offset = 0.5,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 72384,
+# octaves = 3,
+# persistence = 0.50,
+# lacunarity = 2.0,
+# flags = eased
# }
-# Only the group format supports noise flags which are needed for eased noise.
-# Mgv5 uses eased noise for np_ground so this is shown in group format below.
-# Noise parameters for biome API temperature, humidity and biome blend.
-# type: noise_params
-# mg_biome_np_heat = 50, 50, (750, 750, 750), 5349, 3, 0.5, 2.0
+# Defines tree areas and tree density.
+# type: noise_params_2d
+# mgv6_np_trees = {
+# offset = 0,
+# scale = 1,
+# spread = (125, 125, 125),
+# seed = 2,
+# octaves = 4,
+# persistence = 0.66,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mg_biome_np_heat_blend = 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0
+# Defines areas where trees have apples.
+# type: noise_params_2d
+# mgv6_np_apple_trees = {
+# offset = 0,
+# scale = 1,
+# spread = (100, 100, 100),
+# seed = 342902,
+# octaves = 3,
+# persistence = 0.45,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mg_biome_np_humidity = 50, 50, (750, 750, 750), 842, 3, 0.5, 2.0
+## Mapgen V7
-# type: noise_params
-# mg_biome_np_humidity_blend = 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0
+# Map generation attributes specific to Mapgen v7.
+# 'ridges': Rivers.
+# 'floatlands': Floating land masses in the atmosphere.
+# 'caverns': Giant caves deep underground.
+# type: flags possible values: mountains, ridges, floatlands, caverns, nomountains, noridges, nofloatlands, nocaverns
+# mgv7_spflags = mountains,ridges,nofloatlands,caverns
+
+# Y of mountain density gradient zero level. Used to shift mountains vertically.
+# type: int min: -31000 max: 31000
+# mgv7_mount_zero_level = 0
+
+# Lower Y limit of floatlands.
+# type: int min: -31000 max: 31000
+# mgv7_floatland_ymin = 1024
+
+# Upper Y limit of floatlands.
+# type: int min: -31000 max: 31000
+# mgv7_floatland_ymax = 4096
+
+# Y-distance over which floatlands taper from full density to nothing.
+# Tapering starts at this distance from the Y limit.
+# For a solid floatland layer, this controls the height of hills/mountains.
+# Must be less than or equal to half the distance between the Y limits.
+# type: int min: 0 max: 32767
+# mgv7_floatland_taper = 256
+
+# Exponent of the floatland tapering. Alters the tapering behaviour.
+# Value = 1.0 creates a uniform, linear tapering.
+# Values > 1.0 create a smooth tapering suitable for the default separated
+# floatlands.
+# Values < 1.0 (for example 0.25) create a more defined surface level with
+# flatter lowlands, suitable for a solid floatland layer.
+# type: float
+# mgv7_float_taper_exp = 2.0
-#### Mapgen v5
+# Adjusts the density of the floatland layer.
+# Increase value to increase density. Can be positive or negative.
+# Value = 0.0: 50% of volume is floatland.
+# Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test
+# to be sure) creates a solid floatland layer.
+# type: float
+# mgv7_floatland_density = -0.6
+
+# Surface level of optional water placed on a solid floatland layer.
+# Water is disabled by default and will only be placed if this value is set
+# to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the
+# upper tapering).
+# ***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:
+# When enabling water placement the floatlands must be configured and tested
+# to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other
+# required value depending on 'mgv7_np_floatland'), to avoid
+# server-intensive extreme water flow and to avoid vast flooding of the
+# world surface below.
+# type: int min: -31000 max: 31000
+# mgv7_floatland_ywater = -31000
# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
# type: float
-# mgv5_cave_width = 0.125
+# mgv7_cave_width = 0.09
-# type: noise_params
-# mgv5_np_filler_depth = 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0
+# Y of upper limit of large caves.
+# type: int min: -31000 max: 31000
+# mgv7_large_cave_depth = -33
-# type: noise_params
-# mgv5_np_factor = 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgv7_small_cave_num_min = 0
-# type: noise_params
-# mgv5_np_height = 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgv7_small_cave_num_max = 0
-# type: noise_params
-# mgv5_np_cave1 = 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgv7_large_cave_num_min = 0
-# type: noise_params
-# mgv5_np_cave2 = 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgv7_large_cave_num_max = 2
-# Noise parameters in group format, unsupported by advanced settings
-# menu but settable in minetest.conf.
-# See documentation of noise parameter formats above.
-# mgv5_np_ground = {
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgv7_large_cave_flooded = 0.5
+
+# Y-level of cavern upper limit.
+# type: int min: -31000 max: 31000
+# mgv7_cavern_limit = -256
+
+# Y-distance over which caverns expand to full size.
+# type: int min: 0 max: 32767
+# mgv7_cavern_taper = 256
+
+# Defines full size of caverns, smaller values create larger caverns.
+# type: float
+# mgv7_cavern_threshold = 0.7
+
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv7_dungeon_ymin = -31000
+
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgv7_dungeon_ymax = 31000
+
+### Noises
+
+# Y-level of higher terrain that creates cliffs.
+# type: noise_params_2d
+# mgv7_np_terrain_base = {
+# offset = 4,
+# scale = 70,
+# spread = (600, 600, 600),
+# seed = 82341,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Y-level of lower terrain and seabed.
+# type: noise_params_2d
+# mgv7_np_terrain_alt = {
+# offset = 4,
+# scale = 25,
+# spread = (600, 600, 600),
+# seed = 5934,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Varies roughness of terrain.
+# Defines the 'persistence' value for terrain_base and terrain_alt noises.
+# type: noise_params_2d
+# mgv7_np_terrain_persist = {
+# offset = 0.6,
+# scale = 0.1,
+# spread = (2000, 2000, 2000),
+# seed = 539,
+# octaves = 3,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Defines distribution of higher terrain and steepness of cliffs.
+# type: noise_params_2d
+# mgv7_np_height_select = {
+# offset = -8,
+# scale = 16,
+# spread = (500, 500, 500),
+# seed = 4213,
+# octaves = 6,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Variation of biome filler depth.
+# type: noise_params_2d
+# mgv7_np_filler_depth = {
# offset = 0,
-# scale = 40,
-# spread = (80, 80, 80),
-# seed = 983240,
+# scale = 1.2,
+# spread = (150, 150, 150),
+# seed = 261,
+# octaves = 3,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Variation of maximum mountain height (in nodes).
+# type: noise_params_2d
+# mgv7_np_mount_height = {
+# offset = 256,
+# scale = 112,
+# spread = (1000, 1000, 1000),
+# seed = 72449,
+# octaves = 3,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Defines large-scale river channel structure.
+# type: noise_params_2d
+# mgv7_np_ridge_uwater = {
+# offset = 0,
+# scale = 1,
+# spread = (1000, 1000, 1000),
+# seed = 85039,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 3D noise defining mountain structure and height.
+# Also defines structure of floatland mountain terrain.
+# type: noise_params_3d
+# mgv7_np_mountain = {
+# offset = -0.6,
+# scale = 1,
+# spread = (250, 350, 250),
+# seed = 5333,
+# octaves = 5,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
+
+# 3D noise defining structure of river canyon walls.
+# type: noise_params_3d
+# mgv7_np_ridge = {
+# offset = 0,
+# scale = 1,
+# spread = (100, 100, 100),
+# seed = 6467,
# octaves = 4,
-# persistence = 0.55,
+# persistence = 0.75,
# lacunarity = 2.0,
-# flags = "eased"
+# flags =
+# }
+
+# 3D noise defining structure of floatlands.
+# If altered from the default, the noise 'scale' (0.7 by default) may need
+# to be adjusted, as floatland tapering functions best when this noise has
+# a value range of approximately -2.0 to 2.0.
+# type: noise_params_3d
+# mgv7_np_floatland = {
+# offset = 0,
+# scale = 0.7,
+# spread = (384, 96, 384),
+# seed = 1009,
+# octaves = 4,
+# persistence = 0.75,
+# lacunarity = 1.618,
+# flags =
# }
-#### Mapgen v6
+# 3D noise defining giant caverns.
+# type: noise_params_3d
+# mgv7_np_cavern = {
+# offset = 0,
+# scale = 1,
+# spread = (384, 128, 384),
+# seed = 723,
+# octaves = 5,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
-# Map generation attributes specific to Mapgen v6.
-# When snowbiomes are enabled jungles are automatically enabled, the 'jungles' flag is ignored.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-# type: flags possible values: jungles, biomeblend, mudflow, snowbiomes, flat, trees, nojungles, nobiomeblend, nomudflow, nosnowbiomes, noflat, notrees
-# mgv6_spflags = jungles,biomeblend,mudflow,snowbiomes,trees
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgv7_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# Controls size of deserts and beaches in Mapgen v6.
-# When snowbiomes are enabled 'mgv6_freq_desert' is ignored.
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgv7_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
+
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgv7_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
+
+## Mapgen Carpathian
+
+# Map generation attributes specific to Mapgen Carpathian.
+# type: flags possible values: caverns, rivers, nocaverns, norivers
+# mgcarpathian_spflags = caverns,norivers
+
+# Defines the base ground level.
# type: float
-# mgv6_freq_desert = 0.45
+# mgcarpathian_base_level = 12.0
+# Defines the width of the river channel.
# type: float
-# mgv6_freq_beach = 0.15
+# mgcarpathian_river_width = 0.05
-# type: noise_params
-# mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0
+# Defines the depth of the river channel.
+# type: float
+# mgcarpathian_river_depth = 24.0
-# type: noise_params
-# mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0
+# Defines the width of the river valley.
+# type: float
+# mgcarpathian_valley_width = 0.25
-# type: noise_params
-# mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0
+# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
+# type: float
+# mgcarpathian_cave_width = 0.09
-# type: noise_params
-# mgv6_np_height_select = 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0
+# Y of upper limit of large caves.
+# type: int min: -31000 max: 31000
+# mgcarpathian_large_cave_depth = -33
-# type: noise_params
-# mgv6_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgcarpathian_small_cave_num_min = 0
-# type: noise_params
-# mgv6_np_beach = 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgcarpathian_small_cave_num_max = 0
-# type: noise_params
-# mgv6_np_biome = 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgcarpathian_large_cave_num_min = 0
-# type: noise_params
-# mgv6_np_cave = 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgcarpathian_large_cave_num_max = 2
-# type: noise_params
-# mgv6_np_humidity = 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgcarpathian_large_cave_flooded = 0.5
-# type: noise_params
-# mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0
+# Y-level of cavern upper limit.
+# type: int min: -31000 max: 31000
+# mgcarpathian_cavern_limit = -256
-# type: noise_params
-# mgv6_np_apple_trees = 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0
+# Y-distance over which caverns expand to full size.
+# type: int min: 0 max: 32767
+# mgcarpathian_cavern_taper = 256
-#### Mapgen v7
+# Defines full size of caverns, smaller values create larger caverns.
+# type: float
+# mgcarpathian_cavern_threshold = 0.7
-# Map generation attributes specific to Mapgen v7.
-# The 'ridges' flag controls the rivers.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-# type: flags possible values: mountains, ridges, nomountains, noridges
-# mgv7_spflags = mountains,ridges
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgcarpathian_dungeon_ymin = -31000
-# Controls width of tunnels, a smaller value creates wider tunnels.
-# type: float
-# mgv7_cave_width = 0.2
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgcarpathian_dungeon_ymax = 31000
-# type: noise_params
-# mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0
+### Noises
-# type: noise_params
-# mgv7_np_terrain_alt = 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0
+# Variation of biome filler depth.
+# type: noise_params_2d
+# mgcarpathian_np_filler_depth = {
+# offset = 0,
+# scale = 1,
+# spread = (128, 128, 128),
+# seed = 261,
+# octaves = 3,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgv7_np_terrain_persist = 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0
+# First of 4 2D noises that together define hill/mountain range height.
+# type: noise_params_2d
+# mgcarpathian_np_height1 = {
+# offset = 0,
+# scale = 5,
+# spread = (251, 251, 251),
+# seed = 9613,
+# octaves = 5,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgv7_np_height_select = -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0
+# Second of 4 2D noises that together define hill/mountain range height.
+# type: noise_params_2d
+# mgcarpathian_np_height2 = {
+# offset = 0,
+# scale = 5,
+# spread = (383, 383, 383),
+# seed = 1949,
+# octaves = 5,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Third of 4 2D noises that together define hill/mountain range height.
+# type: noise_params_2d
+# mgcarpathian_np_height3 = {
+# offset = 0,
+# scale = 5,
+# spread = (509, 509, 509),
+# seed = 3211,
+# octaves = 5,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Fourth of 4 2D noises that together define hill/mountain range height.
+# type: noise_params_2d
+# mgcarpathian_np_height4 = {
+# offset = 0,
+# scale = 5,
+# spread = (631, 631, 631),
+# seed = 1583,
+# octaves = 5,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 2D noise that controls the size/occurrence of rolling hills.
+# type: noise_params_2d
+# mgcarpathian_np_hills_terrain = {
+# offset = 1,
+# scale = 1,
+# spread = (1301, 1301, 1301),
+# seed = 1692,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 2D noise that controls the size/occurrence of ridged mountain ranges.
+# type: noise_params_2d
+# mgcarpathian_np_ridge_terrain = {
+# offset = 1,
+# scale = 1,
+# spread = (1889, 1889, 1889),
+# seed = 3568,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 2D noise that controls the size/occurrence of step mountain ranges.
+# type: noise_params_2d
+# mgcarpathian_np_step_terrain = {
+# offset = 1,
+# scale = 1,
+# spread = (1889, 1889, 1889),
+# seed = 4157,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 2D noise that controls the shape/size of rolling hills.
+# type: noise_params_2d
+# mgcarpathian_np_hills = {
+# offset = 0,
+# scale = 3,
+# spread = (257, 257, 257),
+# seed = 6604,
+# octaves = 6,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgv7_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
+# 2D noise that controls the shape/size of ridged mountains.
+# type: noise_params_2d
+# mgcarpathian_np_ridge_mnt = {
+# offset = 0,
+# scale = 12,
+# spread = (743, 743, 743),
+# seed = 5520,
+# octaves = 6,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgv7_np_mount_height = 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0
+# 2D noise that controls the shape/size of step mountains.
+# type: noise_params_2d
+# mgcarpathian_np_step_mnt = {
+# offset = 0,
+# scale = 8,
+# spread = (509, 509, 509),
+# seed = 2590,
+# octaves = 6,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgv7_np_ridge_uwater = 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0
+# 2D noise that locates the river valleys and channels.
+# type: noise_params_2d
+# mgcarpathian_np_rivers = {
+# offset = 0,
+# scale = 1,
+# spread = (1000, 1000, 1000),
+# seed = 85039,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 3D noise for mountain overhangs, cliffs, etc. Usually small variations.
+# type: noise_params_3d
+# mgcarpathian_np_mnt_var = {
+# offset = 0,
+# scale = 1,
+# spread = (499, 499, 499),
+# seed = 2490,
+# octaves = 5,
+# persistence = 0.55,
+# lacunarity = 2.0,
+# flags =
+# }
-# type: noise_params
-# mgv7_np_mountain = -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgcarpathian_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# type: noise_params
-# mgv7_np_ridge = 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgcarpathian_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# type: noise_params
-# mgv7_np_cave1 = 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+# 3D noise defining giant caverns.
+# type: noise_params_3d
+# mgcarpathian_np_cavern = {
+# offset = 0,
+# scale = 1,
+# spread = (384, 128, 384),
+# seed = 723,
+# octaves = 5,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
-# type: noise_params
-# mgv7_np_cave2 = 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgcarpathian_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
-#### Mapgen flat
+## Mapgen Flat
-# Map generation attributes specific to Mapgen flat.
+# Map generation attributes specific to Mapgen Flat.
# Occasional lakes and hills can be added to the flat world.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-# type: flags possible values: lakes, hills, , nolakes, nohills
-# mgflat_spflags =
+# type: flags possible values: lakes, hills, caverns, nolakes, nohills, nocaverns
+# mgflat_spflags = nolakes,nohills,nocaverns
# Y of flat ground.
-# type: int
+# type: int min: -31000 max: 31000
# mgflat_ground_level = 8
-# Y of upper limit of large pseudorandom caves.
-# type: int
+# Y of upper limit of large caves.
+# type: int min: -31000 max: 31000
# mgflat_large_cave_depth = -33
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgflat_small_cave_num_min = 0
+
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgflat_small_cave_num_max = 0
+
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgflat_large_cave_num_min = 0
+
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgflat_large_cave_num_max = 2
+
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgflat_large_cave_flooded = 0.5
+
# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
# type: float
-# mgflat_cave_width = 0.2
+# mgflat_cave_width = 0.09
# Terrain noise threshold for lakes.
# Controls proportion of world area covered by lakes.
@@ -1323,195 +1927,542 @@
# type: float
# mgflat_hill_steepness = 64.0
-# Determines terrain shape.
-# The 3 numbers in brackets control the scale of the
-# terrain, the 3 numbers should be identical.
-# type: noise_params
-# mgflat_np_terrain = 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0
+# Y-level of cavern upper limit.
+# type: int min: -31000 max: 31000
+# mgflat_cavern_limit = -256
-# type: noise_params
-# mgflat_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
+# Y-distance over which caverns expand to full size.
+# type: int min: 0 max: 32767
+# mgflat_cavern_taper = 256
-# type: noise_params
-# mgflat_np_cave1 = 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+# Defines full size of caverns, smaller values create larger caverns.
+# type: float
+# mgflat_cavern_threshold = 0.7
+
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgflat_dungeon_ymin = -31000
-# type: noise_params
-# mgflat_np_cave2 = 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgflat_dungeon_ymax = 31000
-#### Mapgen fractal
+### Noises
+
+# Defines location and terrain of optional hills and lakes.
+# type: noise_params_2d
+# mgflat_np_terrain = {
+# offset = 0,
+# scale = 1,
+# spread = (600, 600, 600),
+# seed = 7244,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Variation of biome filler depth.
+# type: noise_params_2d
+# mgflat_np_filler_depth = {
+# offset = 0,
+# scale = 1.2,
+# spread = (150, 150, 150),
+# seed = 261,
+# octaves = 3,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgflat_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
+
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgflat_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
+
+# 3D noise defining giant caverns.
+# type: noise_params_3d
+# mgflat_np_cavern = {
+# offset = 0,
+# scale = 1,
+# spread = (384, 128, 384),
+# seed = 723,
+# octaves = 5,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
+
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgflat_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
+
+## Mapgen Fractal
+
+# Map generation attributes specific to Mapgen Fractal.
+# 'terrain' enables the generation of non-fractal terrain:
+# ocean, islands and underground.
+# type: flags possible values: terrain, noterrain
+# mgfractal_spflags = terrain
# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
# type: float
-# mgfractal_cave_width = 0.2
-
-# Choice of 18 fractals from 9 formulas.
-# 1 = 4D "Roundy" mandelbrot set.
-# 2 = 4D "Roundy" julia set.
-# 3 = 4D "Squarry" mandelbrot set.
-# 4 = 4D "Squarry" julia set.
-# 5 = 4D "Mandy Cousin" mandelbrot set.
-# 6 = 4D "Mandy Cousin" julia set.
-# 7 = 4D "Variation" mandelbrot set.
-# 8 = 4D "Variation" julia set.
-# 9 = 3D "Mandelbrot/Mandelbar" mandelbrot set.
-# 10 = 3D "Mandelbrot/Mandelbar" julia set.
-# 11 = 3D "Christmas Tree" mandelbrot set.
-# 12 = 3D "Christmas Tree" julia set.
-# 13 = 3D "Mandelbulb" mandelbrot set.
-# 14 = 3D "Mandelbulb" julia set.
-# 15 = 3D "Cosine Mandelbulb" mandelbrot set.
-# 16 = 3D "Cosine Mandelbulb" julia set.
-# 17 = 4D "Mandelbulb" mandelbrot set.
-# 18 = 4D "Mandelbulb" julia set.
+# mgfractal_cave_width = 0.09
+
+# Y of upper limit of large caves.
+# type: int min: -31000 max: 31000
+# mgfractal_large_cave_depth = -33
+
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgfractal_small_cave_num_min = 0
+
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgfractal_small_cave_num_max = 0
+
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgfractal_large_cave_num_min = 0
+
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgfractal_large_cave_num_max = 2
+
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgfractal_large_cave_flooded = 0.5
+
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgfractal_dungeon_ymin = -31000
+
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgfractal_dungeon_ymax = 31000
+
+# Selects one of 18 fractal types.
+# 1 = 4D "Roundy" Mandelbrot set.
+# 2 = 4D "Roundy" Julia set.
+# 3 = 4D "Squarry" Mandelbrot set.
+# 4 = 4D "Squarry" Julia set.
+# 5 = 4D "Mandy Cousin" Mandelbrot set.
+# 6 = 4D "Mandy Cousin" Julia set.
+# 7 = 4D "Variation" Mandelbrot set.
+# 8 = 4D "Variation" Julia set.
+# 9 = 3D "Mandelbrot/Mandelbar" Mandelbrot set.
+# 10 = 3D "Mandelbrot/Mandelbar" Julia set.
+# 11 = 3D "Christmas Tree" Mandelbrot set.
+# 12 = 3D "Christmas Tree" Julia set.
+# 13 = 3D "Mandelbulb" Mandelbrot set.
+# 14 = 3D "Mandelbulb" Julia set.
+# 15 = 3D "Cosine Mandelbulb" Mandelbrot set.
+# 16 = 3D "Cosine Mandelbulb" Julia set.
+# 17 = 4D "Mandelbulb" Mandelbrot set.
+# 18 = 4D "Mandelbulb" Julia set.
# type: int min: 1 max: 18
# mgfractal_fractal = 1
# Iterations of the recursive function.
-# Controls the amount of fine detail.
-# type: int
+# Increasing this increases the amount of fine detail, but also
+# increases processing load.
+# At iterations = 20 this mapgen has a similar load to mapgen V7.
+# type: int min: 1 max: 65535
# mgfractal_iterations = 11
-# Approximate (X,Y,Z) scale of fractal in nodes.
+# (X,Y,Z) scale of fractal in nodes.
+# Actual fractal size will be 2 to 3 times larger.
+# These numbers can be made very large, the fractal does
+# not have to fit inside the world.
+# Increase these to 'zoom' into the detail of the fractal.
+# Default is for a vertically-squashed shape suitable for
+# an island, set all 3 numbers equal for the raw shape.
# type: v3f
# mgfractal_scale = (4096.0, 1024.0, 4096.0)
-# (X,Y,Z) offset of fractal from world centre in units of 'scale'.
-# Used to move a suitable spawn area of low land close to (0, 0).
-# The default is suitable for mandelbrot sets, it needs to be edited for julia sets.
+# (X,Y,Z) offset of fractal from world center in units of 'scale'.
+# Can be used to move a desired point to (0, 0) to create a
+# suitable spawn point, or to allow 'zooming in' on a desired
+# point by increasing 'scale'.
+# The default is tuned for a suitable spawn point for Mandelbrot
+# sets with default parameters, it may need altering in other
+# situations.
# Range roughly -2 to 2. Multiply by 'scale' for offset in nodes.
# type: v3f
# mgfractal_offset = (1.79, 0.0, 0.0)
-# W co-ordinate of the generated 3D slice of a 4D fractal.
+# W coordinate of the generated 3D slice of a 4D fractal.
# Determines which 3D slice of the 4D shape is generated.
+# Alters the shape of the fractal.
# Has no effect on 3D fractals.
# Range roughly -2 to 2.
# type: float
# mgfractal_slice_w = 0.0
-# Julia set only: X component of hypercomplex constant determining julia shape.
+# Julia set only.
+# X component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
# type: float
# mgfractal_julia_x = 0.33
-# Julia set only: Y component of hypercomplex constant determining julia shape.
+# Julia set only.
+# Y component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
# type: float
# mgfractal_julia_y = 0.33
-# Julia set only: Z component of hypercomplex constant determining julia shape.
+# Julia set only.
+# Z component of hypercomplex constant.
+# Alters the shape of the fractal.
# Range roughly -2 to 2.
# type: float
# mgfractal_julia_z = 0.33
-# Julia set only: W component of hypercomplex constant determining julia shape.
+# Julia set only.
+# W component of hypercomplex constant.
+# Alters the shape of the fractal.
# Has no effect on 3D fractals.
# Range roughly -2 to 2.
# type: float
# mgfractal_julia_w = 0.33
-# type: noise_params
-# mgfractal_np_seabed = -14, 9, (600, 600, 600), 41900, 5, 0.6, 2.0
+### Noises
-# type: noise_params
-# mgfractal_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0
+# Y-level of seabed.
+# type: noise_params_2d
+# mgfractal_np_seabed = {
+# offset = -14,
+# scale = 9,
+# spread = (600, 600, 600),
+# seed = 41900,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgfractal_np_cave1 = 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+# Variation of biome filler depth.
+# type: noise_params_2d
+# mgfractal_np_filler_depth = {
+# offset = 0,
+# scale = 1.2,
+# spread = (150, 150, 150),
+# seed = 261,
+# octaves = 3,
+# persistence = 0.7,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# type: noise_params
-# mgfractal_np_cave2 = 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgfractal_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-#### Mapgen Valleys
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgfractal_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-##### General
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgfractal_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
+
+## Mapgen Valleys
# Map generation attributes specific to Mapgen Valleys.
-# 'altitude_chill' makes higher elevations colder, which may cause biome issues.
-# 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool,
-# it may interfere with delicately adjusted biomes.
-# Flags that are not specified in the flag string are not modified from the default.
-# Flags starting with 'no' are used to explicitly disable them.
-# type: flags possible values: altitude_chill, noaltitude_chill, humid_rivers, nohumid_rivers
-# mg_valleys_spflags = altitude_chill,humid_rivers
-
-# The altitude at which temperature drops by 20C
-# type: int
+# 'altitude_chill': Reduces heat with altitude.
+# 'humid_rivers': Increases humidity around rivers.
+# 'vary_river_depth': If enabled, low humidity and high heat causes rivers
+# to become shallower and occasionally dry.
+# 'altitude_dry': Reduces humidity with altitude.
+# type: flags possible values: altitude_chill, humid_rivers, vary_river_depth, altitude_dry, noaltitude_chill, nohumid_rivers, novary_river_depth, noaltitude_dry
+# mgvalleys_spflags = altitude_chill,humid_rivers,vary_river_depth,altitude_dry
+
+# The vertical distance over which heat drops by 20 if 'altitude_chill' is
+# enabled. Also the vertical distance over which humidity drops by 10 if
+# 'altitude_dry' is enabled.
+# type: int min: 0 max: 65535
# mgvalleys_altitude_chill = 90
# Depth below which you'll find large caves.
-# type: int
+# type: int min: -31000 max: 31000
# mgvalleys_large_cave_depth = -33
-# Creates unpredictable lava features in caves.
-# These can make mining difficult. Zero disables them. (0-10)
-# type: int
-# mgvalleys_lava_features = 0
+# Minimum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgvalleys_small_cave_num_min = 0
+
+# Maximum limit of random number of small caves per mapchunk.
+# type: int min: 0 max: 256
+# mgvalleys_small_cave_num_max = 0
+
+# Minimum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgvalleys_large_cave_num_min = 0
+
+# Maximum limit of random number of large caves per mapchunk.
+# type: int min: 0 max: 64
+# mgvalleys_large_cave_num_max = 2
-# Depth below which you'll find massive caves.
-# type: int
-# mgvalleys_massive_cave_depth = -256
+# Proportion of large caves that contain liquid.
+# type: float min: 0 max: 1
+# mgvalleys_large_cave_flooded = 0.5
+
+# Depth below which you'll find giant caverns.
+# type: int min: -31000 max: 31000
+# mgvalleys_cavern_limit = -256
+
+# Y-distance over which caverns expand to full size.
+# type: int min: 0 max: 32767
+# mgvalleys_cavern_taper = 192
-# How deep to make rivers
-# type: int
+# Defines full size of caverns, smaller values create larger caverns.
+# type: float
+# mgvalleys_cavern_threshold = 0.6
+
+# How deep to make rivers.
+# type: int min: 0 max: 65535
# mgvalleys_river_depth = 4
-# How wide to make rivers
-# type: int
+# How wide to make rivers.
+# type: int min: 0 max: 65535
# mgvalleys_river_size = 5
-# Creates unpredictable water features in caves.
-# These can make mining difficult. Zero disables them. (0-10)
-# type: int
-# mgvalleys_water_features = 0
-
# Controls width of tunnels, a smaller value creates wider tunnels.
+# Value >= 10.0 completely disables generation of tunnels and avoids the
+# intensive noise calculations.
# type: float
-# mgvalleys_cave_width = 0.2
+# mgvalleys_cave_width = 0.09
-##### Noises
+# Lower Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgvalleys_dungeon_ymin = -31000
-# Caves and tunnels form at the intersection of the two noises
-# type: noise_params
-# mgvalleys_np_cave1 = 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
+# Upper Y limit of dungeons.
+# type: int min: -31000 max: 31000
+# mgvalleys_dungeon_ymax = 63
-# Caves and tunnels form at the intersection of the two noises
-# type: noise_params
-# mgvalleys_np_cave2 = 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
+### Noises
-# The depth of dirt or other filler
-# type: noise_params
-# mgvalleys_np_filler_depth = 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0
+# First of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgvalleys_np_cave1 = {
+# offset = 0,
+# scale = 12,
+# spread = (61, 61, 61),
+# seed = 52534,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# Massive caves form here.
-# type: noise_params
-# mgvalleys_np_massive_caves = 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0
+# Second of two 3D noises that together define tunnels.
+# type: noise_params_3d
+# mgvalleys_np_cave2 = {
+# offset = 0,
+# scale = 12,
+# spread = (67, 67, 67),
+# seed = 10325,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags =
+# }
-# River noise -- rivers occur close to zero
-# type: noise_params
-# mgvalleys_np_rivers = 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0
+# The depth of dirt or other biome filler node.
+# type: noise_params_2d
+# mgvalleys_np_filler_depth = {
+# offset = 0,
+# scale = 1.2,
+# spread = (256, 256, 256),
+# seed = 1605,
+# octaves = 3,
+# persistence = 0.5,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Base terrain height
-# type: noise_params
-# mgvalleys_np_terrain_height = -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0
+# 3D noise defining giant caverns.
+# type: noise_params_3d
+# mgvalleys_np_cavern = {
+# offset = 0,
+# scale = 1,
+# spread = (768, 256, 768),
+# seed = 59033,
+# octaves = 6,
+# persistence = 0.63,
+# lacunarity = 2.0,
+# flags =
+# }
-# Raises terrain to make valleys around the rivers
-# type: noise_params
-# mgvalleys_np_valley_depth = 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0
+# Defines large-scale river channel structure.
+# type: noise_params_2d
+# mgvalleys_np_rivers = {
+# offset = 0,
+# scale = 1,
+# spread = (256, 256, 256),
+# seed = -6050,
+# octaves = 5,
+# persistence = 0.6,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Slope and fill work together to modify the heights
-# type: noise_params
-# mgvalleys_np_inter_valley_fill = 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0
+# Base terrain height.
+# type: noise_params_2d
+# mgvalleys_np_terrain_height = {
+# offset = -10,
+# scale = 50,
+# spread = (1024, 1024, 1024),
+# seed = 5202,
+# octaves = 6,
+# persistence = 0.4,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Amplifies the valleys
-# type: noise_params
-# mgvalleys_np_valley_profile = 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0
+# Raises terrain to make valleys around the rivers.
+# type: noise_params_2d
+# mgvalleys_np_valley_depth = {
+# offset = 5,
+# scale = 4,
+# spread = (512, 512, 512),
+# seed = -1914,
+# octaves = 1,
+# persistence = 1.0,
+# lacunarity = 2.0,
+# flags = eased
+# }
-# Slope and fill work together to modify the heights
-# type: noise_params
-# mgvalleys_np_inter_valley_slope = 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0
+# Slope and fill work together to modify the heights.
+# type: noise_params_3d
+# mgvalleys_np_inter_valley_fill = {
+# offset = 0,
+# scale = 1,
+# spread = (256, 512, 256),
+# seed = 1993,
+# octaves = 6,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
-## Security
+# Amplifies the valleys.
+# type: noise_params_2d
+# mgvalleys_np_valley_profile = {
+# offset = 0.6,
+# scale = 0.5,
+# spread = (512, 512, 512),
+# seed = 777,
+# octaves = 1,
+# persistence = 1.0,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# Slope and fill work together to modify the heights.
+# type: noise_params_2d
+# mgvalleys_np_inter_valley_slope = {
+# offset = 0.5,
+# scale = 0.5,
+# spread = (128, 128, 128),
+# seed = 746,
+# octaves = 1,
+# persistence = 1.0,
+# lacunarity = 2.0,
+# flags = eased
+# }
+
+# 3D noise that determines number of dungeons per mapchunk.
+# type: noise_params_3d
+# mgvalleys_np_dungeons = {
+# offset = 0.9,
+# scale = 0.5,
+# spread = (500, 500, 500),
+# seed = 0,
+# octaves = 2,
+# persistence = 0.8,
+# lacunarity = 2.0,
+# flags =
+# }
+
+#
+# Advanced
+#
+
+## Developer Options
+
+# Enable Lua modding support on client.
+# This support is experimental and API can change.
+# type: bool
+# enable_client_modding = false
+
+# Replaces the default main menu with a custom one.
+# type: string
+# main_menu_script =
+
+### Mod Security
# Prevent mods from doing insecure things like running shell commands.
# type: bool
@@ -1527,9 +2478,47 @@
# type: string
# secure.http_mods =
-## Advanced
+### Debugging
-### Profiling
+# Level of logging to be written to debug.txt:
+# - <nothing> (no logging)
+# - none (messages with no level)
+# - error
+# - warning
+# - action
+# - info
+# - verbose
+# - trace
+# type: enum values: , none, error, warning, action, info, verbose, trace
+# debug_log_level = action
+
+# If the file size of debug.txt exceeds the number of megabytes specified in
+# this setting when it is opened, the file is moved to debug.txt.1,
+# deleting an older debug.txt.1 if it exists.
+# debug.txt is only moved if this setting is positive.
+# type: int min: 1
+# debug_log_size_max = 50
+
+# Minimal level of logging to be written to chat.
+# type: enum values: , none, error, warning, action, info, verbose, trace
+# chat_log_level = error
+
+# Handling for deprecated Lua API calls:
+# - none: Do not log deprecated calls
+# - log: mimic and log backtrace of deprecated call (default).
+# - error: abort on usage of deprecated call (suggested for mod developers).
+# type: enum values: none, log, error
+# deprecated_lua_api_handling = log
+
+# Enable random user input (only used for testing).
+# type: bool
+# random_input = false
+
+# Enable mod channels support.
+# type: bool
+# enable_mod_channels = false
+
+### Mod Profiler
# Load the game profiler to collect game profiling data.
# Provides a /profiler command to access the compiled profile.
@@ -1543,12 +2532,9 @@
# profiler.default_report_format = txt
# The file path relative to your worldpath in which profiles will be saved to.
-#
# type: string
# profiler.report_path = ""
-#### Instrumentation
-
# Instrument the methods of entities on registration.
# type: bool
# instrument.entity = true
@@ -1561,7 +2547,7 @@
# type: bool
# instrument.lbm = true
-# Instrument chatcommands on registration.
+# Instrument chat commands on registration.
# type: bool
# instrument.chatcommand = true
@@ -1570,8 +2556,6 @@
# type: bool
# instrument.global_callback = true
-##### Advanced
-
# Instrument builtin.
# This is usually only needed by core/builtin contributors
# type: bool
@@ -1584,79 +2568,957 @@
# type: bool
# instrument.profiler = false
-#
-# Client and Server
-#
+### Engine profiler
-# Name of the player.
-# When running a server, clients connecting with this name are admins.
-# When starting from the main menu, this is overridden.
-# type: string
-# name =
+# Print the engine's profiling data in regular intervals (in seconds).
+# 0 = disable. Useful for developers.
+# type: int min: 0
+# profiler_print_interval = 0
-# Set the language. Leave empty to use the system language.
+## Advanced
+
+# Enable IPv6 support (for both client and server).
+# Required for IPv6 connections to work at all.
+# type: bool
+# enable_ipv6 = true
+
+# If enabled, invalid world data won't cause the server to shut down.
+# Only enable this if you know what you are doing.
+# type: bool
+# ignore_world_load_errors = false
+
+### Graphics
+
+# Path to shader directory. If no path is defined, default location will be used.
+# type: path
+# shader_path =
+
+# The rendering back-end.
# A restart is required after changing this.
-# type: enum values: , be, ca, cs, da, de, en, eo, es, et, fr, he, hu, id, it, ja, jbo, ko, ky, lt, nb, nl, pl, pt, pt_BR, ro, ru, sr_Cyrl, tr, uk, zh_CN, zh_TW
-# language =
+# Note: On Android, stick with OGLES1 if unsure! App may fail to start otherwise.
+# On other platforms, OpenGL is recommended.
+# Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)
+# type: enum values: opengl, ogles1, ogles2
+# video_driver = opengl
-# Level of logging to be written to debug.txt:
-# - <nothing> (no logging)
-# - none (messages with no level)
-# - error
-# - warning
-# - action
-# - info
-# - verbose
-# type: enum values: , warning, action, info, verbose
-# debug_log_level = action
+# Distance in nodes at which transparency depth sorting is enabled
+# Use this to limit the performance impact of transparency depth sorting
+# type: int min: 0 max: 128
+# transparency_sorting_distance = 16
-# IPv6 support.
+# Enable vertex buffer objects.
+# This should greatly improve graphics performance.
# type: bool
-# enable_ipv6 = true
+# enable_vbo = true
-## Advanced
+# Radius of cloud area stated in number of 64 node cloud squares.
+# Values larger than 26 will start to produce sharp cutoffs at cloud area corners.
+# type: int min: 1 max: 62
+# cloud_radius = 12
-# Default timeout for cURL, stated in milliseconds.
-# Only has an effect if compiled with cURL.
-# type: int
-# curl_timeout = 5000
+# Whether node texture animations should be desynchronized per mapblock.
+# type: bool
+# desynchronize_mapblock_texture_animation = true
+
+# Enables caching of facedir rotated meshes.
+# type: bool
+# enable_mesh_cache = false
+
+# Delay between mesh updates on the client in ms. Increasing this will slow
+# down the rate of mesh updates, thus reducing jitter on slower clients.
+# type: int min: 0 max: 50
+# mesh_generation_interval = 0
+
+# Size of the MapBlock cache of the mesh generator. Increasing this will
+# increase the cache hit %, reducing the data being copied from the main
+# thread, thus reducing jitter.
+# type: int min: 0 max: 1000
+# meshgen_block_cache_size = 20
+
+# True = 256
+# False = 128
+# Usable to make minimap smoother on slower machines.
+# type: bool
+# minimap_double_scan_height = true
+
+# Textures on a node may be aligned either to the node or to the world.
+# The former mode suits better things like machines, furniture, etc., while
+# the latter makes stairs and microblocks fit surroundings better.
+# However, as this possibility is new, thus may not be used by older servers,
+# this option allows enforcing it for certain node types. Note though that
+# that is considered EXPERIMENTAL and may not work properly.
+# type: enum values: disable, enable, force_solid, force_nodebox
+# world_aligned_mode = enable
+
+# World-aligned textures may be scaled to span several nodes. However,
+# the server may not send the scale you want, especially if you use
+# a specially-designed texture pack; with this option, the client tries
+# to determine the scale automatically basing on the texture size.
+# See also texture_min_size.
+# Warning: This option is EXPERIMENTAL!
+# type: enum values: disable, enable, force
+# autoscale_mode = disable
+
+### Font
+
+# type: bool
+# font_bold = false
+
+# type: bool
+# font_italic = false
+
+# Shadow offset (in pixels) of the default font. If 0, then shadow will not be drawn.
+# type: int min: 0 max: 65535
+# font_shadow = 1
+
+# Opaqueness (alpha) of the shadow behind the default font, between 0 and 255.
+# type: int min: 0 max: 255
+# font_shadow_alpha = 127
+
+# Font size of the default font where 1 unit = 1 pixel at 96 DPI
+# type: int min: 5 max: 72
+# font_size = 16
+
+# For pixel-style fonts that do not scale well, this ensures that font sizes used
+# with this font will always be divisible by this value, in pixels. For instance,
+# a pixel font 16 pixels tall should have this set to 16, so it will only ever be
+# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
+# type: int min: 1
+# font_size_divisible_by = 1
+
+# Path to the default font. Must be a TrueType font.
+# The fallback font will be used if the font cannot be loaded.
+# type: filepath
+# font_path = fonts/Arimo-Regular.ttf
+
+# type: filepath
+# font_path_bold = fonts/Arimo-Bold.ttf
+
+# type: filepath
+# font_path_italic = fonts/Arimo-Italic.ttf
+
+# type: filepath
+# font_path_bold_italic = fonts/Arimo-BoldItalic.ttf
+
+# Font size of the monospace font where 1 unit = 1 pixel at 96 DPI
+# type: int min: 5 max: 72
+# mono_font_size = 16
+
+# For pixel-style fonts that do not scale well, this ensures that font sizes used
+# with this font will always be divisible by this value, in pixels. For instance,
+# a pixel font 16 pixels tall should have this set to 16, so it will only ever be
+# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
+# type: int min: 1
+# mono_font_size_divisible_by = 1
+
+# Path to the monospace font. Must be a TrueType font.
+# This font is used for e.g. the console and profiler screen.
+# type: filepath
+# mono_font_path = fonts/Cousine-Regular.ttf
+
+# type: filepath
+# mono_font_path_bold = fonts/Cousine-Bold.ttf
+
+# type: filepath
+# mono_font_path_italic = fonts/Cousine-Italic.ttf
+
+# type: filepath
+# mono_font_path_bold_italic = fonts/Cousine-BoldItalic.ttf
+
+# Path of the fallback font. Must be a TrueType font.
+# This font will be used for certain languages or if the default font is unavailable.
+# type: filepath
+# fallback_font_path = fonts/DroidSansFallbackFull.ttf
+
+### Lighting
+
+# Gradient of light curve at minimum light level.
+# Controls the contrast of the lowest light levels.
+# type: float min: 0 max: 3
+# lighting_alpha = 0.0
+
+# Gradient of light curve at maximum light level.
+# Controls the contrast of the highest light levels.
+# type: float min: 0 max: 3
+# lighting_beta = 1.5
+
+# Strength of light curve boost.
+# The 3 'boost' parameters define a range of the light
+# curve that is boosted in brightness.
+# type: float min: 0 max: 0.4
+# lighting_boost = 0.2
+
+# Center of light curve boost range.
+# Where 0.0 is minimum light level, 1.0 is maximum light level.
+# type: float min: 0 max: 1
+# lighting_boost_center = 0.5
+
+# Spread of light curve boost range.
+# Controls the width of the range to be boosted.
+# Standard deviation of the light curve boost Gaussian.
+# type: float min: 0 max: 0.4
+# lighting_boost_spread = 0.2
+
+### Networking
+
+# Prometheus listener address.
+# If Minetest is compiled with ENABLE_PROMETHEUS option enabled,
+# enable metrics listener for Prometheus on that address.
+# Metrics can be fetched on http://127.0.0.1:30000/metrics
+# type: string
+# prometheus_listener_address = 127.0.0.1:30000
+
+# Maximum size of the out chat queue.
+# 0 to disable queueing and -1 to make the queue size unlimited.
+# type: int min: -1 max: 32767
+# max_out_chat_queue_size = 20
+
+# Timeout for client to remove unused map data from memory, in seconds.
+# type: float min: 0
+# client_unload_unused_data_timeout = 600.0
+
+# Maximum number of mapblocks for client to be kept in memory.
+# Set to -1 for unlimited amount.
+# type: int min: -1 max: 2147483647
+# client_mapblock_limit = 7500
+
+# Whether to show the client debug info (has the same effect as hitting F5).
+# type: bool
+# show_debug = false
+
+# Maximum number of blocks that are simultaneously sent per client.
+# The maximum total count is calculated dynamically:
+# max_total = ceil((#clients + max_users) * per_client / 4)
+# type: int min: 1 max: 4294967295
+# max_simultaneous_block_sends_per_client = 40
+
+# To reduce lag, block transfers are slowed down when a player is building something.
+# This determines how long they are slowed down after placing or removing a node.
+# type: float min: 0
+# full_block_send_enable_min_time_from_building = 2.0
+
+# Maximum number of packets sent per send step, if you have a slow connection
+# try reducing it, but don't reduce it to a number below double of targeted
+# client number.
+# type: int min: 1 max: 65535
+# max_packets_per_iteration = 1024
+
+# Compression level to use when sending mapblocks to the client.
+# -1 - use default compression level
+# 0 - least compression, fastest
+# 9 - best compression, slowest
+# type: int min: -1 max: 9
+# map_compression_level_net = -1
+
+### Server
+
+# Format of player chat messages. The following strings are valid placeholders:
+# @name, @message, @timestamp (optional)
+# type: string
+# chat_message_format = <@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
+# type: float min: 0
+# chatcommand_msg_time_threshold = 0.1
+
+# A message to be displayed to all clients when the server shuts down.
+# type: string
+# kick_msg_shutdown = Server shutting down.
+
+# A message to be displayed to all clients when the server crashes.
+# type: string
+# kick_msg_crash = This server has experienced an internal error. You will now be disconnected.
+
+# Whether to ask clients to reconnect after a (Lua) crash.
+# Set this to true if your server is set up to restart automatically.
+# type: bool
+# ask_reconnect_on_crash = false
+
+### Server/Env Performance
+
+# Length of a server tick and the interval at which objects are generally updated over
+# network, stated in seconds.
+# type: float min: 0
+# dedicated_server_step = 0.09
+
+# Whether players are shown to clients without any range limit.
+# Deprecated, use the setting player_transfer_distance instead.
+# type: bool
+# unlimited_player_transfer_distance = true
+
+# Defines the maximal player transfer distance in blocks (0 = unlimited).
+# type: int min: 0 max: 65535
+# player_transfer_distance = 0
+
+# From how far clients know about objects, stated in mapblocks (16 nodes).
+#
+# Setting this larger than active_block_range will also cause the server
+# to maintain active objects up to this distance in the direction the
+# player is looking. (This can avoid mobs suddenly disappearing from view)
+# type: int min: 1 max: 65535
+# active_object_send_range_blocks = 8
+
+# The radius of the volume of blocks around every player that is subject to the
+# active block stuff, stated in mapblocks (16 nodes).
+# In active blocks objects are loaded and ABMs run.
+# This is also the minimum range in which active objects (mobs) are maintained.
+# This should be configured together with active_object_send_range_blocks.
+# type: int min: 1 max: 65535
+# active_block_range = 4
+
+# From how far blocks are sent to clients, stated in mapblocks (16 nodes).
+# type: int min: 1 max: 65535
+# max_block_send_distance = 12
+
+# Maximum number of forceloaded mapblocks.
+# type: int min: 0
+# max_forceloaded_blocks = 16
+
+# Interval of sending time of day to clients, stated in seconds.
+# type: float min: 0.001
+# time_send_interval = 5.0
+
+# Interval of saving important changes in the world, stated in seconds.
+# type: float min: 0.001
+# server_map_save_interval = 5.3
+
+# How long the server will wait before unloading unused mapblocks, stated in seconds.
+# Higher value is smoother, but will use more RAM.
+# type: int min: 0 max: 4294967295
+# server_unload_unused_data_timeout = 29
+
+# Maximum number of statically stored objects in a block.
+# type: int min: 1 max: 65535
+# max_objects_per_block = 256
+
+# Length of time between active block management cycles, stated in seconds.
+# type: float min: 0
+# active_block_mgmt_interval = 2.0
+
+# Length of time between Active Block Modifier (ABM) execution cycles, stated in seconds.
+# type: float min: 0
+# abm_interval = 1.0
+
+# The time budget allowed for ABMs to execute on each step
+# (as a fraction of the ABM Interval)
+# type: float min: 0.1 max: 0.9
+# abm_time_budget = 0.2
+
+# Length of time between NodeTimer execution cycles, stated in seconds.
+# type: float min: 0
+# nodetimer_interval = 0.2
+
+# Max liquids processed per step.
+# type: int min: 1 max: 4294967295
+# liquid_loop_max = 100000
+
+# The time (in seconds) that the liquids queue may grow beyond processing
+# capacity until an attempt is made to decrease its size by dumping old queue
+# items. A value of 0 disables the functionality.
+# type: int min: 0 max: 65535
+# liquid_queue_purge_time = 0
+
+# Liquid update interval in seconds.
+# type: float min: 0.001
+# liquid_update = 1.0
+
+# At this distance the server will aggressively optimize which blocks are sent to
+# clients.
+# Small values potentially improve performance a lot, at the expense of visible
+# rendering glitches (some blocks will not be rendered under water and in caves,
+# as well as sometimes on land).
+# Setting this to a value greater than max_block_send_distance disables this
+# optimization.
+# Stated in mapblocks (16 nodes).
+# type: int min: 2 max: 32767
+# block_send_optimize_distance = 4
+
+# If enabled the server will perform map block occlusion culling based on
+# on the eye position of the player. This can reduce the number of blocks
+# sent to the client 50-80%. The client will not longer receive most invisible
+# so that the utility of noclip mode is reduced.
+# type: bool
+# server_side_occlusion_culling = true
+
+### Mapgen
+
+# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
+# WARNING!: There is no benefit, and there are several dangers, in
+# increasing this value above 5.
+# Reducing this value increases cave and dungeon density.
+# Altering this value is for special usage, leaving it unchanged is
+# recommended.
+# type: int min: 1 max: 10
+# chunksize = 5
+
+# Dump the mapgen debug information.
+# type: bool
+# enable_mapgen_debug_info = false
+
+# Maximum number of blocks that can be queued for loading.
+# type: int min: 1 max: 1000000
+# emergequeue_limit_total = 1024
+
+# Maximum number of blocks to be queued that are to be loaded from file.
+# This limit is enforced per player.
+# type: int min: 1 max: 1000000
+# emergequeue_limit_diskonly = 128
+
+# Maximum number of blocks to be queued that are to be generated.
+# This limit is enforced per player.
+# type: int min: 1 max: 1000000
+# emergequeue_limit_generate = 128
+
+# Number of emerge threads to use.
+# Value 0:
+# - Automatic selection. The number of emerge threads will be
+# - 'number of processors - 2', with a lower limit of 1.
+# Any other value:
+# - Specifies the number of emerge threads, with a lower limit of 1.
+# WARNING: Increasing the number of emerge threads increases engine mapgen
+# speed, but this may harm game performance by interfering with other
+# processes, especially in singleplayer and/or when running Lua code in
+# 'on_generated'. For many users the optimum setting may be '1'.
+# type: int min: 0 max: 32767
+# num_emerge_threads = 1
+
+### cURL
+
+# Maximum time an interactive request (e.g. server list fetch) may take, stated in milliseconds.
+# type: int min: 100 max: 2147483647
+# curl_timeout = 20000
# Limits number of parallel HTTP requests. Affects:
# - Media fetch if server uses remote_media setting.
# - Serverlist download and server announcement.
# - Downloads performed by main menu (e.g. mod manager).
# Only has an effect if compiled with cURL.
-# type: int
+# type: int min: 1 max: 2147483647
# curl_parallel_limit = 8
-# Maximum time in ms a file download (e.g. a mod download) may take.
-# type: int
+# Maximum time a file download (e.g. a mod download) may take, stated in milliseconds.
+# type: int min: 100 max: 2147483647
# curl_file_download_timeout = 300000
-# Makes DirectX work with LuaJIT. Disable if it causes troubles.
+### Misc
+
+# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.
+# type: int min: 1
+# screen_dpi = 72
+
+# Adjust the detected display density, used for scaling UI elements.
+# type: float min: 0.5 max: 5
+# display_density_factor = 1
+
+# Windows systems only: Start Minetest with the command line window in the background.
+# Contains the same information as the file debug.txt (default name).
# type: bool
-# high_precision_fpu = true
+# enable_console = false
-# Replaces the default main menu with a custom one.
+# Number of extra blocks that can be loaded by /clearobjects at once.
+# This is a trade-off between SQLite transaction overhead and
+# memory consumption (4096=100MB, as a rule of thumb).
+# type: int min: 0 max: 4294967295
+# max_clearobjects_extra_loaded_blocks = 4096
+
+# World directory (everything in the world is stored here).
+# Not needed if starting from the main menu.
+# type: path
+# map-dir =
+
+# See https://www.sqlite.org/pragma.html#pragma_synchronous
+# type: enum values: 0, 1, 2
+# sqlite_synchronous = 2
+
+# Compression level to use when saving mapblocks to disk.
+# -1 - use default compression level
+# 0 - least compression, fastest
+# 9 - best compression, slowest
+# type: int min: -1 max: 9
+# map_compression_level_disk = -1
+
+# Enable usage of remote media server (if provided by server).
+# Remote servers offer a significantly faster way to download media (e.g. textures)
+# when connecting to the server.
+# type: bool
+# enable_remote_media_server = true
+
+# File in client/serverlist/ that contains your favorite servers displayed in the
+# Multiplayer Tab.
# type: string
-# main_menu_script =
+# serverlist_file = favoriteservers.json
+
+## Gamepads
+
+# Enable joysticks. Requires a restart to take effect
+# type: bool
+# enable_joysticks = false
+
+# The identifier of the joystick to use
+# type: int min: 0 max: 255
+# joystick_id = 0
+
+# The type of joystick
+# type: enum values: auto, generic, xbox, dragonrise_gamecube
+# joystick_type = auto
+
+# The time in seconds it takes between repeated events
+# when holding down a joystick button combination.
+# type: float min: 0.001
+# repeat_joystick_button_time = 0.17
-# type: int
-# main_menu_game_mgr = 0
+# The dead zone of the joystick
+# type: int min: 0 max: 65535
+# joystick_deadzone = 2048
+
+# The sensitivity of the joystick axes for moving the
+# in-game view frustum around.
+# type: float min: 0.001
+# joystick_frustum_sensitivity = 170.0
-# type: int
-# main_menu_mod_mgr = 1
+## Temporary Settings
+# Path to texture directory. All textures are first searched from here.
+# type: path
+# texture_path =
+
+# Enables minimap.
+# type: bool
+# enable_minimap = true
+
+# Shape of the minimap. Enabled = round, disabled = square.
+# type: bool
+# minimap_shape_round = true
+
+# Address to connect to.
+# Leave this blank to start a local server.
+# Note that the address field in the main menu overrides this setting.
# type: string
-# modstore_download_url = https://forum.minetest.net/media/
+# address =
+
+# Port to connect to (UDP).
+# Note that the port field in the main menu overrides this setting.
+# type: int min: 1 max: 65535
+# remote_port = 30000
+# Default game when creating a new world.
+# This will be overridden when creating a world from the main menu.
# type: string
-# modstore_listmods_url = https://forum.minetest.net/mmdb/mods/
+# default_game = minetest
+
+# Enable players getting damage and dying.
+# type: bool
+# enable_damage = false
+
+# Enable creative mode for all players
+# type: bool
+# creative_mode = false
+
+# Whether to allow players to damage and kill each other.
+# type: bool
+# enable_pvp = true
+# Player is able to fly without being affected by gravity.
+# This requires the "fly" privilege on the server.
+# type: bool
+# free_move = false
+
+# If enabled, makes move directions relative to the player's pitch when flying or swimming.
+# type: bool
+# pitch_move = false
+
+# Fast movement (via the "Aux1" key).
+# This requires the "fast" privilege on the server.
+# type: bool
+# fast_move = false
+
+# If enabled together with fly mode, player is able to fly through solid nodes.
+# This requires the "noclip" privilege on the server.
+# type: bool
+# noclip = false
+
+# Continuous forward movement, toggled by autoforward key.
+# Press the autoforward key again or the backwards movement to disable.
+# type: bool
+# continuous_forward = false
+
+# Formspec default background opacity (between 0 and 255).
+# type: int min: 0 max: 255
+# formspec_default_bg_opacity = 140
+
+# Formspec default background color (R,G,B).
# type: string
-# modstore_details_url = https://forum.minetest.net/mmdb/mod/*/
+# formspec_default_bg_color = (0,0,0)
-# Print the engine's profiling data in regular intervals (in seconds). 0 = disable. Useful for developers.
-# type: int
-# profiler_print_interval = 0
+# Whether to show technical names.
+# Affects mods and texture packs in the Content and Select Mods menus, as well as
+# setting names in All Settings.
+# Controlled by the checkbox in the "All settings" menu.
+# type: bool
+# show_technical_names = false
+
+# Enables the sound system.
+# If disabled, this completely disables all sounds everywhere and the in-game
+# sound controls will be non-functional.
+# Changing this setting requires a restart.
+# type: bool
+# enable_sound = true
+
+# Key for moving the player forward.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_forward = KEY_KEY_W
+
+# Key for moving the player backward.
+# Will also disable autoforward, when active.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_backward = KEY_KEY_S
+
+# Key for moving the player left.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_left = KEY_KEY_A
+
+# Key for moving the player right.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_right = KEY_KEY_D
+
+# Key for jumping.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_jump = KEY_SPACE
+
+# Key for sneaking.
+# Also used for climbing down and descending in water if aux1_descends is disabled.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_sneak = KEY_LSHIFT
+
+# Key for digging.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_dig = KEY_LBUTTON
+
+# Key for placing.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_place = KEY_RBUTTON
+
+# Key for opening the inventory.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_inventory = KEY_KEY_I
+
+# Key for moving fast in fast mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_aux1 = KEY_KEY_E
+
+# Key for opening the chat window.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_chat = KEY_KEY_T
+
+# Key for opening the chat window to type commands.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_cmd = /
+
+# Key for opening the chat window to type local commands.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_cmd_local = .
+
+# Key for toggling unlimited view range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_rangeselect = KEY_KEY_R
+
+# Key for toggling flying.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_freemove = KEY_KEY_K
+
+# Key for toggling pitch move mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_pitchmove = KEY_KEY_P
+
+# Key for toggling fast mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_fastmove = KEY_KEY_J
+
+# Key for toggling noclip mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_noclip = KEY_KEY_H
+
+# Key for selecting the next item in the hotbar.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_hotbar_next = KEY_KEY_N
+
+# Key for selecting the previous item in the hotbar.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_hotbar_previous = KEY_KEY_B
+
+# Key for muting the game.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_mute = KEY_KEY_M
+
+# Key for increasing the volume.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_increase_volume =
+
+# Key for decreasing the volume.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_decrease_volume =
+
+# Key for toggling autoforward.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_autoforward =
+
+# Key for toggling cinematic mode.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_cinematic =
+
+# Key for toggling display of minimap.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_minimap = KEY_KEY_V
+
+# Key for taking screenshots.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_screenshot = KEY_F12
+
+# Key for dropping the currently selected item.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_drop = KEY_KEY_Q
+
+# Key to use view zoom when possible.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_zoom = KEY_KEY_Z
+
+# Key for selecting the first hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot1 = KEY_KEY_1
+
+# Key for selecting the second hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot2 = KEY_KEY_2
+
+# Key for selecting the third hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot3 = KEY_KEY_3
+
+# Key for selecting the fourth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot4 = KEY_KEY_4
+
+# Key for selecting the fifth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot5 = KEY_KEY_5
+
+# Key for selecting the sixth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot6 = KEY_KEY_6
+
+# Key for selecting the seventh hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot7 = KEY_KEY_7
+
+# Key for selecting the eighth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot8 = KEY_KEY_8
+
+# Key for selecting the ninth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot9 = KEY_KEY_9
+
+# Key for selecting the tenth hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot10 = KEY_KEY_0
+
+# Key for selecting the 11th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot11 =
+
+# Key for selecting the 12th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot12 =
+
+# Key for selecting the 13th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot13 =
+
+# Key for selecting the 14th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot14 =
+
+# Key for selecting the 15th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot15 =
+
+# Key for selecting the 16th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot16 =
+
+# Key for selecting the 17th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot17 =
+
+# Key for selecting the 18th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot18 =
+
+# Key for selecting the 19th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot19 =
+
+# Key for selecting the 20th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot20 =
+
+# Key for selecting the 21st hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot21 =
+
+# Key for selecting the 22nd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot22 =
+
+# Key for selecting the 23rd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot23 =
+
+# Key for selecting the 24th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot24 =
+
+# Key for selecting the 25th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot25 =
+
+# Key for selecting the 26th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot26 =
+
+# Key for selecting the 27th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot27 =
+
+# Key for selecting the 28th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot28 =
+
+# Key for selecting the 29th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot29 =
+
+# Key for selecting the 30th hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot30 =
+
+# Key for selecting the 31st hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot31 =
+
+# Key for selecting the 32nd hotbar slot.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_slot32 =
+
+# Key for toggling the display of the HUD.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_hud = KEY_F1
+
+# Key for toggling the display of chat.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_chat = KEY_F2
+
+# Key for toggling the display of the large chat console.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_console = KEY_F10
+
+# Key for toggling the display of fog.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_force_fog_off = KEY_F3
+
+# Key for toggling the camera update. Only used for development
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_update_camera =
+
+# Key for toggling the display of debug info.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_debug = KEY_F5
+
+# Key for toggling the display of the profiler. Used for development.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_toggle_profiler = KEY_F6
+
+# Key for switching between first- and third-person camera.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_camera_mode = KEY_KEY_C
+
+# Key for increasing the viewing range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_increase_viewing_range_min = +
+
+# Key for decreasing the viewing range.
+# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
+# type: key
+# keymap_decrease_viewing_range_min = -
diff --git a/misc/CPACK_WIX_UI_BANNER.BMP b/misc/CPACK_WIX_UI_BANNER.BMP
new file mode 100644
index 000000000..612d53741
--- /dev/null
+++ b/misc/CPACK_WIX_UI_BANNER.BMP
Binary files differ
diff --git a/misc/CPACK_WIX_UI_DIALOG.BMP b/misc/CPACK_WIX_UI_DIALOG.BMP
new file mode 100644
index 000000000..c6750e7b7
--- /dev/null
+++ b/misc/CPACK_WIX_UI_DIALOG.BMP
Binary files differ
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
new file mode 100644
index 000000000..e867f3eb9
--- /dev/null
+++ b/misc/debpkg-control
@@ -0,0 +1,33 @@
+Section: games
+Priority: extra
+Standards-Version: 3.6.2
+Package: minetest-staging
+Version: 5.4.0-DATEPLACEHOLDER
+Depends: libc6, libcurl3-gnutls, libfreetype6, libgl1, JPEG_PLACEHOLDER, JSONCPP_PLACEHOLDER, LEVELDB_PLACEHOLDER, libopenal1, libpng16-16, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, libxxf86vm1, libzstd1, zlib1g
+Maintainer: Loic Blot <loic.blot@unix-experience.fr>
+Homepage: https://www.minetest.net/
+Vcs-Git: https://github.com/minetest/minetest.git
+Vcs-Browser: https://github.com/minetest/minetest.git
+Architecture: amd64
+Build-Depends:
+ cmake,
+ gettext,
+ libcurl4-gnutls-dev,
+ libfreetype6-dev,
+ libgl1-mesa-dev,
+ libjpeg-dev,
+ libjsoncpp-dev,
+ libleveldb-dev,
+ libogg-dev,
+ libopenal-dev,
+ libpng-dev,
+ libsqlite3-dev,
+ libvorbis-dev,
+ libx11-dev,
+ zlib1g-dev
+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
+ generator.
+Conflicts: minetestc55, minetest, minetest-server, minetest-data
diff --git a/misc/irrlichtmt_tag.txt b/misc/irrlichtmt_tag.txt
new file mode 100644
index 000000000..be66833ae
--- /dev/null
+++ b/misc/irrlichtmt_tag.txt
@@ -0,0 +1 @@
+1.9.0mt8
diff --git a/misc/kubernetes.yml b/misc/kubernetes.yml
new file mode 100644
index 000000000..1a956abe9
--- /dev/null
+++ b/misc/kubernetes.yml
@@ -0,0 +1,53 @@
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ labels:
+ app: minetest
+ name: minetest
+ namespace: default
+spec:
+ selector:
+ matchLabels:
+ app: minetest
+ template:
+ metadata:
+ labels:
+ app: minetest
+ spec:
+ containers:
+ - image: registry.gitlab.com/minetest/minetest/server:master
+ name: minetest
+ ports:
+ - containerPort: 30000
+ protocol: UDP
+ volumeMounts:
+ - mountPath: /var/lib/minetest
+ name: minetest-data
+ - mountPath: /etc/minetest
+ name: config
+ restartPolicy: Always
+ volumes:
+ - name: minetest-data
+ persistentVolumeClaim:
+ claimName: minetest-data
+ - configMap:
+ defaultMode: 420
+ name: minetest
+ name: config
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app: minetest
+ name: minetest
+ namespace: default
+spec:
+ ports:
+ - name: minetest
+ port: 30000
+ protocol: UDP
+ selector:
+ app: minetest
+ type: NodePort
diff --git a/misc/minetest.appdata.xml b/misc/minetest.appdata.xml
deleted file mode 100644
index 65acf96ec..000000000
--- a/misc/minetest.appdata.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<application>
- <id type="desktop">minetest.desktop</id>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-2.1+ and CC-BY-SA-3.0 and MIT and Apache-2.0</project_license>
- <name>Minetest</name>
- <summary>Multiplayer infinite-world block sandbox game</summary>
- <description>
- <p>
- Minetest is an infinite-world block sandbox game and game engine.
- </p><p>
- Players can create and destroy various types of blocks in a
- three-dimensional open world. This allows forming structures in
- every possible creation, on multiplayer servers or in singleplayer.
- </p><p>
- Minetest is designed to be simple, stable, and portable.
- It is lightweight enough to run on fairly old hardware.
- </p><p>
- Minetest has many features, including:
- </p>
- <ul>
- <li>Ability to walk around, dig, and build in a near-infinite voxel world</li>
- <li>Crafting of items from raw materials</li>
- <li>Fast and able to run on old and slow hardware</li>
- <li>A simple modding API that supports many additions and modifications to the game</li>
- <li>Multiplayer support via servers hosted by users</li>
- <li>Beautiful lightning-fast map generator</li>
- </ul>
- </description>
- <screenshots>
- <screenshot type="default" width="1920" height="1080">http://www.minetest.net/media/gallery/1.jpg</screenshot>
- <screenshot width="1920" height="1080">http://www.minetest.net/media/gallery/3.jpg</screenshot>
- <screenshot width="1920" height="1080">http://www.minetest.net/media/gallery/5.jpg</screenshot>
- </screenshots>
- <keywords>
- <keyword>sandbox</keyword>
- <keyword>world</keyword>
- <keyword>mining</keyword>
- <keyword>multiplayer</keyword>
- </keywords>
- <url type="homepage">http://minetest.net</url>
- <url type="bugtracker">http://www.minetest.net/development/#reporting-issues</url>
- <url type="translate">http://dev.minetest.net/Translation</url>
- <url type="donation">http://www.minetest.net/development/#donate</url>
- <updatecontact>sfan5@live.de</updatecontact>
-</application>
diff --git a/misc/minetest.exe.manifest b/misc/minetest.exe.manifest
index 3c32b0f8b..dcad3fcde 100644
--- a/misc/minetest.exe.manifest
+++ b/misc/minetest.exe.manifest
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity type="win32" name="minetest" version="0.0.0.0" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
@@ -10,6 +11,7 @@
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+ <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
</windowsSettings>
</application>
</assembly>
diff --git a/misc/net.minetest.minetest.appdata.xml b/misc/net.minetest.minetest.appdata.xml
new file mode 100644
index 000000000..357aa82dc
--- /dev/null
+++ b/misc/net.minetest.minetest.appdata.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop-application">
+ <id>net.minetest.minetest.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>LGPL-2.1+ and CC-BY-SA-3.0 and MIT and Apache-2.0</project_license>
+ <content_rating type="oars-1.0">
+ <content_attribute id="violence-cartoon">mild</content_attribute>
+ <content_attribute id="violence-fantasy">mild</content_attribute>
+ <content_attribute id="social-chat">intense</content_attribute>
+ <content_attribute id="social-info">mild</content_attribute>
+ </content_rating>
+ <name>Minetest</name>
+ <summary>Multiplayer infinite-world block sandbox game</summary>
+ <summary xml:lang="de">Mehrspieler-Sandkastenspiel mit unendlichen Blockwelten</summary>
+ <description>
+ <p>
+ Minetest is an infinite-world block sandbox game and game engine.
+ </p><p xml:lang="de">
+ Minetest ist ein Sandkastenspiel und eine Spielengine mit unendlichen Welten.
+ </p><p>
+ Players can create and destroy various types of blocks in a
+ three-dimensional open world. This allows forming structures in
+ every possible creation, on multiplayer servers or in singleplayer.
+ </p><p xml:lang="de">
+ Spieler können in einer offenen 3D-Welt viele verschiedene Arten von
+ Blöcken platzieren und abbauen. Dies erlaubt das Bauen von vielfältigen
+ Strukturen im Einzelspieler oder auf Mehrspielerservern.
+ </p><p>
+ Minetest is designed to be simple, stable, and portable.
+ It is lightweight enough to run on fairly old hardware.
+ </p><p xml:lang="de">
+ Minetest wurde entworfen, um einfach, stabil und portabel zu sein.
+ Es ist leichtgewichtig genug, um auf relativ alter Hardware zu laufen.
+ </p><p>
+ Minetest has many features, including:
+ </p><p xml:lang="de">
+ Minetest besitzt viele Features, unter anderem:
+ </p>
+ <ul>
+ <li>Ability to walk around, dig, and build in a near-infinite voxel world</li>
+ <li xml:lang="de">Die Möglichkeit, in einer nahezu unendlichen Voxel-Welt herumzulaufen, zu graben und zu bauen</li>
+ <li>Crafting of items from raw materials</li>
+ <li xml:lang="de">Fertigen von Items aus Rohmaterialien</li>
+ <li>Fast and able to run on old and slow hardware</li>
+ <li xml:lang="de">Gute Performance selbst auf älterer und langsamer Hardware</li>
+ <li>A simple modding API that supports many additions and modifications to the game</li>
+ <li xml:lang="de">Eine einfache Modding-API, die viele Ergänzungen und Änderungen am Spiel unterstützt</li>
+ <li>Multiplayer support via servers hosted by users</li>
+ <li xml:lang="de">Mehrspieler auf selber gehosteten Servern</li>
+ <li>Beautiful lightning-fast map generator</li>
+ <li xml:lang="de">Wunderschöner, blitzschneller Kartengenerator</li>
+ </ul>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>http://www.minetest.net/media/gallery/1.jpg</image>
+ </screenshot>
+ <screenshot>
+ <image>http://www.minetest.net/media/gallery/3.jpg</image>
+ </screenshot>
+ <screenshot>
+ <image>http://www.minetest.net/media/gallery/5.jpg</image>
+ </screenshot>
+ </screenshots>
+ <keywords>
+ <keyword>sandbox</keyword>
+ <keyword>world</keyword>
+ <keyword>mining</keyword>
+ <keyword>multiplayer</keyword>
+ </keywords>
+ <url type="homepage">https://www.minetest.net</url>
+ <url type="bugtracker">https://www.minetest.net/development/#reporting-issues</url>
+ <url type="translate">https://dev.minetest.net/Translation</url>
+ <url type="donation">https://www.minetest.net/development/#donate</url>
+ <url type="faq">https://wiki.minetest.net/FAQ</url>
+ <url type="help">https://wiki.minetest.net</url>
+ <url type="vcs-browser">https://github.com/minetest/minetest</url>
+ <url type="contribute">https://www.minetest.net/get-involved/</url>
+ <provides>
+ <binary>minetest</binary>
+ </provides>
+ <translation type="gettext">minetest</translation>
+ <update_contact>sfan5@live.de</update_contact>
+ <releases>
+ <release date="2022-09-19" version="5.6.1"/>
+ </releases>
+</component>
diff --git a/misc/minetest.desktop b/misc/net.minetest.minetest.desktop
index ca493c44e..a94dbab1b 100644
--- a/misc/minetest.desktop
+++ b/misc/net.minetest.minetest.desktop
@@ -11,6 +11,7 @@ Comment[tr]=Tek-Çok oyuncuyla küplerden sonsuz dünyalar inşa et
Exec=minetest
Icon=minetest
Terminal=false
+PrefersNonDefaultGPU=true
Type=Application
Categories=Game;Simulation;
StartupNotify=false
diff --git a/misc/winresource.rc b/misc/winresource.rc
index 6b82e261b..ffb493873 100644
--- a/misc/winresource.rc
+++ b/misc/winresource.rc
@@ -1,7 +1,11 @@
#include <windows.h>
+#include <winuser.h>
#include <commctrl.h>
#include <richedit.h>
+
+#ifndef USE_CMAKE_CONFIG_H
#define USE_CMAKE_CONFIG_H
+#endif
#include "config.h"
#undef USE_CMAKE_CONFIG_H
@@ -11,6 +15,10 @@
#define BUILDMODE "RUN_IN_PLACE=0"
#endif
+#ifdef __MINGW32__
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "minetest.exe.manifest"
+#endif
+
LANGUAGE 0, SUBLANG_NEUTRAL
130 ICON "minetest-icon.ico"
diff --git a/mods/mods_here.txt b/mods/mods_here.txt
index e105fbd1a..e14b7539e 100644
--- a/mods/mods_here.txt
+++ b/mods/mods_here.txt
@@ -1,4 +1,10 @@
+You can use the content tab in the main menu
+
+ OR
+
You can install Minetest mods by copying (and extracting) them into this folder.
To enable them, go to the configure world window in the main menu or write
+
load_mod_<modname> = true
-in world.mt in the world directory.
+
+in world.mt in the world directory.
diff --git a/po/ar/minetest.po b/po/ar/minetest.po
new file mode 100644
index 000000000..55ba0af16
--- /dev/null
+++ b/po/ar/minetest.po
@@ -0,0 +1,7139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-03-18 02:57+0000\n"
+"Last-Translator: abidin toumi <abidin24@disroot.org>\n"
+"Language-Team: Arabic <https://hosted.weblate.org/projects/minetest/minetest/"
+"ar/>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
+"X-Generator: Weblate 4.12-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "امسح طابور الرسائل الصادرة"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "أمر فارغ."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "اخرج للقائمة الرئيسة"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "أمر غير صالح: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "قائمة اللاعبين المتصلين"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "اللاعبون المتصلون: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "طابور الرسائل الصادرة فارغ."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "هذا الأمر معطل من الخادم."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "أعِد الإحياء"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "مِت"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "الأوامر المتوفرة:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "الأوامر المتاحة: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "الأوامر غير المتاحة: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "احصل على تعليمات الأوامر"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"استخدم '.help <cmd>' للحصول على مزيد من المعلومات أو '.help all' لعرض كل شيء."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "موافق"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<ليس متاحًا>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "حدث خطأ في برنامج Lua النصي:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "حدث خطأ:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "القائمة الرئيسية"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "أعد الإتصال"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "يطلب الخادم إعادة الإتصال:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "اختر التعديلات"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "لا تتطابق نسخ الميفاق. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "يفرظ الخادم إ ستخدام الميفاق $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "الخادم يدعم نسخ الميفاق ما بين $1 و $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "نحن ندعم نسخة الميفاق $1فقط."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "نحن ندعم نسخ الميفاق ما بين $1 و $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "ألغِ"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "الإعتماديات:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "عطِل الكل"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "عطل حزمة التعديلات"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "فعِل الكل"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "مكن حزمة التعديلات"
+
+#: 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 ""
+"فشل تمكين التعديل \"$1\" لإحتوائه على محارف غير مسموحة. المحارف المسموحة هي "
+"[a-z0-9_] فقط."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "جد المزيد من التعديلات"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "التعديل:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "بدون إعتماديات إختيارية"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "لا يتوفر وصف للعبة."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "بدون إعتماديات لازمة"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "وصف حزمة التعديلات غير متوفر."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "بدون إعتماديات إختيارية"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "الإعتماديات الإختيارية:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "إحفظ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "العالم:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "مُفعل"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" موجود مسبقًا. هل تريد الكتابة عليه؟"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "الاعتماديتان \"$1\" و $2 ستثبتان."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 بواسطة $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"يُنزل $1،\n"
+"$2 في الطابور"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "ينزل $1..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "يحتاج $1 لكن لم يُعثر عليها."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 سيُثبت، واعتماديات $1 ستُتجاهل."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "كل الحزم"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "مثبت مسبقا"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "عُد للقائمة الرئيسة"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "اللعبة القاعدية :"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "لا يمكن استخدام ContentDB عند بناء Minetest بدون cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "يحمل..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "فشل تحميل $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "الألعاب"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "ثبت"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "ثبت $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "ثبت الإعتماديات المفقودة"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "التثبيت: نوع الملف غير مدعوم أو هو أرشيف تالف"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "التعديلات"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "تعذر استيراد الحزم"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "بدون نتائج"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "لا توجد تحديثات"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "لم يُعثر عليه"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "اكتب عليه"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "تحقق من صحة اللعبة القاعدية."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "في الطابور"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "حِزم الإكساء"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "أزل"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "حدِث"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "حدِّث الكل [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "اعرض مزيدًا من المعلومات عبر المتصفح"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "إسم العالم \"$1\" موجود مسبقاً"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "تضاريس إضافية"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "تبريد مع زيادة الارتفاع"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "نقص الرطوبة مع الارتفاع"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "دمج المواطن البيئية"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "مواطن بيئية"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "كهوف"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "مغارات"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "أنشئ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "تحذير: إختبار التطور موجه للمطورين."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "الزنزانات"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "أرض مسطحة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "أرض عائمة في السماء"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "أراضيٌ عائمة (تجريبية)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "ولد تضاريس غير كسورية: محيطات وباطن الأرض"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "التلال"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "أنهار رطبة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "زِد الرطوبة قرب الأنهار"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "ثبت $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "بحيرات"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "قلة الرطوبة وارتفاعه الحرارة تسبب جفاف او ضحالة الانهار"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "مولِد الخريطة"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "جبال"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "تدفق الطين"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "شبكة أنفاق ومغارات"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "لم تحدد لعبة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "يخفض الحرارة مع ازدياد الإرتفاع"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "يخفض الرطوبة مع ازدياد الإرتفاع"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "أنهار"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "أنهار بمستوى البحر"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "البذرة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "تغيير سلس للمناطق البيئية"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr "المنشآت السطحية (لا تأثر على الأشجار والأعشاب المنشأة ب v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "الهياكل التي تظهر على التضاريس ، عادة الأشجار والنباتات"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "معتدل، صحراء"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "معتدل، صحراء، غابة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "المعتدلة, الصحراء, الغابة, التندرا, التايغا"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "تآكل التربة"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "أعشاب الغابة والشجر"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "تمايز عمق النهر"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "كهوف كبيرة في أعماق الأرض"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "إسم العالم"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "ليس لديك لعبة مثبتت."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "هل تريد حذف \"$1\" ؟"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "إحذف"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "مدير الحزم: فشل حذف \"$1\""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "مدير الحزم: المسار \"$1\" غير صالح"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "حذف العالم \"$1\"؟"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "أكد كلمة المرور"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "الاسم"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "كلمة المرور"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "كلمتا المرور غير متطابقتين!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "سجل وادخل"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "أقبل"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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.conf لذا أي تسمية سيتم استبدالها."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(الإعداد بدون وصف)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "ضوضاء 2D"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< عد لصفحة الإعدادات"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "استعرض"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "المحتوى"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "المحتوى"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "عطِّل"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "حرر"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "مُفعل"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "المُعادل"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Persistence"
+msgstr "استمرار"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "يرجى إدخال رقم صحيح صالح."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "يرجى إدخال رقم صالح."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "إستعِد الإفتراضي"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "تكبير/تصغير"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "إبحث"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "إختر الدليل"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "إختر ملف"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "إعرض الأسماء التقنية"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "يحب أن لا تقل القيمة عن $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "يحب أن لا تزيد القيمة عن $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "التوزع على محور X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Y spread"
+msgstr "التوزع على محور Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "التوزع على محور Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 "إفتراضي"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "مخفف"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (مفعل)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 تعديلات"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "فشل تثبيت $1 في $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "تثبيت تعديل: لا يمكن ايجاد الاسم الحقيقي التعديل$1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr "تثبيت تعديل: لا يمكن العصور على اسم مجلد مناسب لحزمة التعديلات $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "فشل إيجاد تعديل أو حزمة تعديلات صالحة"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "فشل تثبيت $1 كحزمة إكساء"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "فشل تثبيت اللعبة ك $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "فشل تثبيت التعديل كـ $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "تعذر تثبيت حزمة التعديلات مثل $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 "جرب إعادة تمكين قائمة الحوادم العامة وتحقق من إتصالك بالانترنت."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "حول"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "المساهمون النشطون"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "محرك التصيير النشط:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "المطورون الرئيسيون"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "افتح دليل بيانات المستخدم"
+
+#: builtin/mainmenu/tab_about.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_about.lua
+msgid "Previous Contributors"
+msgstr "المساهمون السابقون"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "المطورون الرئيسيون السابقون"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "تصفح المحتوى عبر الانترنت"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "المحتوى"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "عطل حزمة الإكساء"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "معلومات:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "الحومة المثبتت:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "بدون اعتماديات."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "لايتوفر وصف للحزمة"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "أعد التسمية"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "أزل الحزمة"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "إستعمال حزمة الإكساء"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "أعلن عن الخادوم"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Bind Address"
+msgstr "العنوان المطلوب"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "النمط الإبداعي"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "مكن الضرر"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "استضف لعبة"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "استضف خدوم"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "ثبت العابا من ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "جديد"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "لم تنشئ او تحدد عالما!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "إلعب"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "المنفذ"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "اختر التعديلات"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "حدد العالم:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "منفذ الخدوم"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "ابدأ اللعبة"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "عنوان"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "امسح"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "النمط الإبداعي"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "الضرر / قتال اللاعبين"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "المفضلة"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "خوادم غير متوافقة"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "انضم للعبة"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "خوادم عمومية"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "حدِّث"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "حذف المفضلة"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "وصف الخادم"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "سحب 3D"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "كل الإعدادات"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "التنعييم:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "حفظ حجم الشاشة تلقائيا"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "مرشح خطي ثنائي"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "غيِر المفاتيح"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "زجاج متصل"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "ظلال ديناميكية"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "ظلال ديناميكية: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "اوراق بتفاصيل واضحة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "عالي"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "متوسط"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "بدون مرشح"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "إبراز العقد"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "اقتضاب العقد"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "بدون"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "اوراق معتِمة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "مياه معتمة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "جسيمات"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "الشاشة:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "إعدادات"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "مُظللات"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "المظللات (تجريبية)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "مظللات (غير متوفر)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "أوراق بسيطة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "إضاءة سلسة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "الإكساء:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "حساسية اللمس: (بكسل)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "مرشح خطي ثلاثي"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "عالية جدا"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "منخفضة جدًا"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "اوراق متموجة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "سوائل متموجة"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "نباتات متموجة"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "خطأ في الاتصال (انتهاء المهلة؟)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "انتهت مهلة الاتصال."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "تم!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "تحضير العقد"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "تحضير العقد..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "يحمل الإكساء..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "يعيد بناء المظلِلات..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "خطأ في الاتصال (انتهاء المهلة؟)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "تعذر العثور على اللعبة أو تحميلها "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "مواصفات اللعبة غير صالحة."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "القائمة الرئيسية"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "بدون عالم محدد وعنوان معطى. لاشيء لفعله."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "إسم اللاعب طويل."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "يرجى اختيار اسم!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "فشل فتح ملف كلمة المرور المدخل: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "مسار العالم المدخل غير موجود: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"راجع debug.txt لمزيد من التفاصيل."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- العنوان: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- النمط: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- المنفذ: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- عام: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- قتال اللاعبين: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- اسم الخادم: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "حدث خطأ في التسلسل:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "رُفض النفاذ. السبب: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "المشي التلقائي معطل"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "المشي التلقائي ممكن"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "حدود الكتل مخفية"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "حدود كل الكتل ظاهرة"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "حدود الكتلة الحالية ظاهرة"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "حدود الكتل القريبة ظاهرة"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "تحديث الكاميرا معطل"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "تحديث الكاميرا مفعل"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr "تعذر إظهار حدود الكتل ( تحتاج امتياز 'basic_debug')"
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "غير كلمة المرور"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "الوضع السينمائي معطل"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "الوضع السينمائي مفعل"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "فُصل الاتصال عن العميل"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "البرمجة النصية معطلة من جانب العميل"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "يتصل بالخادوم…"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "فشل الاتصال لسبب مجهول"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "تابع"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"أزرار التحكم:\n"
+"- %s: سر للأمام\n"
+"- %s: سر للخلف\n"
+"- %s: سر يسارا\n"
+"- %s: سر يمينا\n"
+"- %s: اقفز/تسلق\n"
+"- %s: احفر/الكم\n"
+"- %s: ضع/استخدم\n"
+"- %s: ازحف/انزل\n"
+"- %s: ارمي عنصر\n"
+"- %s: افتح المخزن\n"
+"- تحريك الفأرة: دوران\n"
+"- عجلة الفأرة: غيير العنصر\n"
+"- -%s: دردشة\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "تعذر تحليل العنوان:%s"
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "ينشىء عميلا…"
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "ينشىء خادوما…"
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "معلومات التنقيح ومنحنى محلل البيانات مخفيان"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "معلومات التنقيح مرئية"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- 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 "مدى الرؤية غير المحدود معطل"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "مدى الرؤية غير المحدود مفعل"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "ينشىء عميلا…"
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "اخرج للقائمة"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "اخرج لنظام التشغيل"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "نمط السرعة معطل"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "نمط السرعة مفعل"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "نمط السرعة مفعل (ملاحظة: لا تمتلك امتياز 'السرعة')"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "نمط الطيران معطل"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "نمط الطيران مفعل"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "نمط الطيران مفعل (ملاحظة: لا تمتلك امتياز 'الطيران')"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "الضباب معطل"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "الضباب مفعل"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "معلومات اللعبة:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "اللعبة موقفة مؤقتا"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "استضافة خادوم"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "تعريف العنصر…"
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "كب\\ثا"
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "وسائط…"
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "مب\\ثا"
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "الخريطة المصغرة معطلة من قبل لعبة أو تعديل"
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "متعدد اللاعبين"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "وضع العقبات مفعل"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "وضع القبات معطل"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "تعريفات العقدة..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "معطّل"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "مفعل"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "منحنى محلل البيانات ظاهر"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "خادوم بعيد"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "يستورد العناوين…"
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "يغلق…"
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "لاعب منفرد"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "حجم الصوت"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "الصوت مكتوم"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "نظام الصوت معطل"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "نظام الصوت غير مدمج أثناء البناء"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "الصوت غير مكتوم"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "يُحتمل أن نسخة الخادم مختلفة عن %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "تعذر الاتصال بـ %s لأن IPv6 معطلة"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "غُيرَ مدى الرؤية الى %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "مدى الرؤية في أقصى حد: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "مدى الرؤية في أدنى حد: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "غُير الحجم الى %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "التكبير معطل من قبل لعبة أو تعديل"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "موافق"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "الدردشة مخفية"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "الدردشة ظاهرة"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "الواجهة مخفية"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "الواجهة ظاهرة"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "محلل البيانات مخفي"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "محلل البيانات ظاهر ( صفحة %d من %d)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "تطبيقات"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "التحكم"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "أسفل"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "شغّل"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "مساعدة"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "الرئيسية"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Accept"
+msgstr "IME Accept"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Convert"
+msgstr "IME Convert"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Escape"
+msgstr "IME Escape"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Mode Change"
+msgstr "IME Mode Change"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Nonconvert"
+msgstr "IME Nonconvert"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "يسار"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "الزر الأيسر"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Left Control"
+msgstr "Left Control"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "القائمة اليسرى"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Left Shift"
+msgstr "Left Shift"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Left Windows"
+msgstr "Left Windows"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Menu"
+msgstr "Menu"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Middle Button"
+msgstr "Middle Button"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad *"
+msgstr "Numpad *"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad +"
+msgstr "Numpad +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad ."
+msgstr "Numpad ."
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad /"
+msgstr "Numpad /"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 0"
+msgstr "Numpad 0"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 1"
+msgstr "Numpad 1"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 2"
+msgstr "Numpad 2"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 3"
+msgstr "Numpad 3"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 4"
+msgstr "Numpad 4"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 5"
+msgstr "Numpad 5"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 6"
+msgstr "Numpad 6"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 7"
+msgstr "Numpad 7"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 8"
+msgstr "Numpad 8"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad 9"
+msgstr "Numpad 9"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "OEM Clear"
+msgstr "OEM Clear"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Page down"
+msgstr "Page down"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Page up"
+msgstr "Page up"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Pause"
+msgstr "Pause"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Play"
+msgstr "Play"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Print"
+msgstr "Print"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Return"
+msgstr "Return"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Right"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Right Control"
+msgstr "Right Control"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Right Menu"
+msgstr "Right Menu"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Right Shift"
+msgstr "Right Shift"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Right Windows"
+msgstr "Right Windows"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#. ~ Key name
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Select"
+msgstr "Select"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Shift"
+msgstr "Shift"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Sleep"
+msgstr "Sleep"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Snapshot"
+msgstr "Snapshot"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Tab"
+msgstr "Tab"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Up"
+msgstr "Up"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "X Button 1"
+msgstr "X Button 1"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "X Button 2"
+msgstr "X Button 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "كبِر"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "الخريطة المصغرة مخفية"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "الخريطة المصغرة في وضع الرادار، تكبير x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "الخريطة المصغرة في وضع الأسطح، تكبير x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "الخريطة المصغرة في وضع الاكساء"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "فشل فتح صفحة الويب"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "يفتح صفحة الويب"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "تابع"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = التسلق نزولا"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "المشي التلقائي"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "القفز التلقائي"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "للخلف"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "حدود الكتلة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "غير الكاميرا"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "دردشة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "الأوامر"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "قلل المدى"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "قلل الحجم"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "اضغط مرتين على \"اقفز\" لتفعيل الطيران"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "اسقاط"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "للأمام"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "زد المدى"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "زد الحجم"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "المخزن"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "اقفز"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "المفتاح مستخدم مسبقا"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "اكتم"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "العنصر التالي"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "العنصر السابق"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "حدد المدى"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "صوّر الشاشة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "تسلل"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "بدّل عرض الواجهة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "بدّل عرض سجل المحادثة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "بدّل وضع السرعة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "بدّل حالة الطيران"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "بدّل ظهور الضباب"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "بدّل ظهور الخريطة المصغرة"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "اضغط على زر"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "غيِّر"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "كلمة مرور جديدة"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "كلمة المرور القديمة"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "كلمتا المرور غير متطابقتين!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "أخرج"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "مكتوم"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "حجم الصوت: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "ar"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "يرجى اختيار اسم!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(أندرويد) ثبت موقع عصى التحكم.\n"
+"اذا عُطل ستنتقل عصى التحكم لموقع اللمسة الأولى."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "سحب ثلاثية الأبعاد"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr "وضع الشاشة ثلاثية الأبعاد"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr "رسالة ستعرض عند انهيار الخادم."
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr "رسالة تعرض لكل العملاء عند اغلاق الخادم."
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr "تسارع الطيران"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "تسارع الجاذبية، عقدة/ثانية²."
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr "معدِلات الكتل النشطة"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr "مهلة إدارة الكتل النشطة"
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr "مدى الكتل النشطة"
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "ضمّن اسم العنصر"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr "متقدم"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"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"
+"لها تأثير كبير فقط على ضوء النهار والضوء الصناعي ، ولها تأثير ضئيل للغاية "
+"على ضوء الليل الطبيعي."
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "عدد اارسائل المسموح بها لكل 10 ثوان."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "تضخيم الوديان."
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr "أعلن عن الخادم"
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr "أدرجه في هذه القائمة."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "ضمّن اسم العنصر"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr "اطلب إعادة الاتصال بعد انقطاعه"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "زر المشي التلقائي"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "قفز تلقائي فوق العوائق التي ارتفاعها كتلة واحدة."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "حفظ حجم الشاشة تلقائيًا"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "مفتاح Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "مفتاح Aux1 للتسلق / للنزول"
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr "مستوى الأرض الأساسي"
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr "إرتفاع التضاريس الأساسي."
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr "الإمتيازات الأساسية"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr "ترشيح خطي ثنائي"
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "مسار الخطين العريض والمائل"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "مسار خطي monospace العريض والمائل"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "مسار الخط العريض"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "مسار خط monospace العريض"
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr "ضع الكتلة في موقع اللاعب"
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr "مدمج"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "غير الكاميرا"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "انسيابية حركة الكامير"
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr "انسيابية حركة الكامير في الوضع السنيمائي"
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr "عُرض المغارة"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "الأوامر"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "حجم خط المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "مفتاح المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "حدُّ رسائل المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "نسقُ رسائل المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "الطول الأقصى لرسائل المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "روابط المحادثة"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr "الوضع السنيمائي"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr "مفتاح الوضع السنيمائي"
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"روابط ويب قابلة للنقر (زر الفأرة الأوسط أو زر الفأرة الأيسر+Ctrl) مفعلة في "
+"المحادثة."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "عميل"
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr "عميل وخادم"
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "سرعة التسلق"
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr "تفاصيل السحاب"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr "سحاب"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr "سحب في القائمة"
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr "ضباب ملون"
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "ظلال ملونة"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"مستوى ضغط لحفظ الملف mapblocks في القرص.\n"
+"-1 - المستوى الافتراضي\n"
+"0 - ضغط ضعيف، سريع\n"
+"9 - ضغط قوي، بطيء"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"مستوى ضغط لإرسال ملف mapblocks للعميل.\n"
+"-1 - المستوى الافتراضي\n"
+"0 - ضغط ضعيف، سريع\n"
+"9 - ضغط قوي، بطيء"
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr "زجاج متصل"
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr "اتصل بخادم وسائط خارجي"
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr "زجاج متصل اذا كانت العقدة تدعمه."
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr "التحكم"
+
+#: src/settings_translation_file.cpp
+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 = نهار / ليل أبدي."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr "رسالة الانهيار"
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr "إبداعي"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr "ضرر"
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "مفتاح تقليل الحجم"
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr "التسارع الافتراضي"
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr "اللعبة الافتراضية"
+
+#: 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 ""
+"اللعبة الافتراضية عند إنشاء عالم جديد.\n"
+"سيُتجاوز هذا الخيار عند إنشاء عالم جديد من القائمة."
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr "كلمة المرور الافتراضية"
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr "الامتيازات الافتراضية"
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr "نسقُ التقارير الافتراضي"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "حجم المكدس الافتراضي"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr "يحدد المناطق التي تتواجد بها أشجار التفاح."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "يحدد المناطق التي توجد بها شواطئ رملية."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "يحدد توزع التضاريس العالية والمنحدرات."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "يحدد توزع التضاريس العالية."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr "يضبط حجم الكهوف ، كلما قلت القيمة زاد حجم الكهوف."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "يحدد تضاريس التلال والبحيرات الاختيارية وموقعها."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "يحدد مستوى الأرض الأساسي."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "يحدد عمق الأنهار."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "يحدد مواقع الأشجار وكثافتها."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "تأخير إرسال الكتل بعد البناء"
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Deprecated Lua API handling"
+msgstr "معالجة API Lua القديمة"
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "بُعد الكهوف الكبيرة عن السطح."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "المطورون الرئيسيون"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr "حقل الرؤية"
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr "حقل الرؤية بالدرجات."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "التنعييم:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "عصا التحكم الافتراضية ثابتة"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "كثافة الأرض الطافية"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr "زر الطيران"
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr "الضباب"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "بداية الضباب"
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr "مفتاح تبديل ظهور الضباب"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "حجم الخط"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "الخط عريض افتراضيًا"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "الخط مائل افتراضيًا"
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr "ظل الخط"
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "حجم الخط"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "الألعاب"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "الواجهة ظاهرة"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+msgstr "مفتاح العنصر التالي في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "مفتاح العنصر السابق في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "مفتاح الخانة 1 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "مفتاح الخانة 10 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "مفتاح الخانة 11 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "مفتاح الخانة 21 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "مفتاح الخانة 13 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "مفتاح الخانة 14 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "مفتاح الخانة 15 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "مفتاح الخانة 16 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "مفتاح الخانة 17 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "مفتاح الخانة 18 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "مفتاح الخانة 19 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "مفتاح الخانة 2 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "مفتاح الخانة 20 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "مفتاح الخانة 21 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "مفتاح الخانة 22 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "مفتاح الخانة 23 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "مفتاح الخانة 24 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "مفتاح الخانة 25 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "مفتاح الخانة 26 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "مفتاح الخانة 27 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "مفتاح الخانة 28 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "مفتاح الخانة 29 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "مفتاح الخانة 3 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "مفتاح الخانة 30 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "مفتاح الخانة 31 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "مفتاح الخانة 32 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "مفتاح الخانة 4 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "مفتاح الخانة 5 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "مفتاح الخانة 6 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "مفتاح الخانة 7 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "مفتاح الخانة 8 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "مفتاح الخانة 9 في شريط الإجراءات"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"سرعة موجات السوائل.كلما زادت القيمة زادت سرعتها.\n"
+"إذا كانت سالبة ، فإن حركة الموجات ستكون لجهة المعاكسة .\n"
+"لاستخدامها فعّل سوائل متموجة."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "قلل منه لزيادة مقاومة الحركة في السوائل."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "اختلاف الرطوبة في الحيوم."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "خادم IPv6"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+"إذا كان عدد الإطارات في الثانية (FPS) يتجاوز هذه القيمة\n"
+"حدّه حتى لا تستهلك سرعة المعالج هباءً."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+"إذا تم تعطيله ، فسيتم استخدام مفتاح \"Aux1\" للطيران بسرعة إذا كانت أوضاع "
+"الطيران والسرعة \n"
+"مفعلة."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"إذا فُعّل ، سيستخدم مفتاح \"Aux1\" بدلاً من مفتاح \"التسلل\" للتحرك للتسلق "
+"والنزول."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr "إذا فُعّل، سيعطل مكافحة الغش في وضع تعدد اللاعبين."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "اطرد اللاعبين الذين أرسلوا أكثر من X رسالة في 10 ثوانٍ."
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr "اللغة"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr "عمق المغارات الكبيرة"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr "أقصى عدد للمغارات الكبيرة"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr "أقل عدد للمغارات الكبيرة"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr "مظهر الأوراق"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+"مظهر أوراق الشجر:\n"
+"- مفصل: كل الوجوه مرئية\n"
+"- بسيط: الوجوه الخارجية فقط ، إذا تم تحديد \"special_tiles\"\n"
+"- معتم: يعطل الشفافية"
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "إضاءة سلسة"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr "حمّل محلل بيانات اللعبة"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "إبراز العقد"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "الشاشة:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "صوّر الشاشة"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "استضف خدوم"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- اسم الخادم: "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "وصف الخادم"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "منفذ الخدوم"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Show name tag backgrounds by default"
+msgstr "الخط عريض افتراضيًا"
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "إعدادات"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- النمط الإبداعي: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- التضرر: "
+
+#~ msgid "Address / Port"
+#~ msgstr "العنوان \\ المنفذ"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "هل أنت متأكد من إعادة تعيين عالم اللاعب الوحيد؟"
+
+#~ msgid "Back"
+#~ msgstr "عُد"
+
+#~ msgid "Basic"
+#~ msgstr "أساسي"
+
+#~ msgid "Bump Mapping"
+#~ msgstr "خريطة النتوءات"
+
+#~ msgid "Config mods"
+#~ msgstr "اضبط التعديلات"
+
+#~ msgid "Configure"
+#~ msgstr "اضبط"
+
+#~ msgid "Connect"
+#~ msgstr "اتصل"
+
+#~ msgid "Credits"
+#~ msgstr "إشادات"
+
+#~ msgid "Damage enabled"
+#~ msgstr "الضرر ممكن"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "نزِّل لعبة,مثل لعبة Minetest, من minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "نزِّل لعبة من minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "تنزيل وتثبيت $1, يرجى الإنتظار..."
+
+#~ msgid "Enter "
+#~ msgstr "أدخل "
+
+#~ msgid "Filtering"
+#~ msgstr "الترشيح"
+
+#~ msgid "Game"
+#~ msgstr "اللعبة"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "ولِد خرائط عادية"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "ثبت: الملف: \"$1\""
+
+#~ msgid "Main"
+#~ msgstr "الرئيسية"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "الخريطة المصغرة في وضع الرادار، تكبير x2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "الخريطة المصغرة في وضع الرادار، تكبير x4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "الخريطة المصغرة في وضع الأسطح، تكبير x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "الخريطة المصغرة في وضع الأسطح، تكبير x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "الاسم \\ كلمة المرور"
+
+#~ msgid "Name/Password"
+#~ msgstr "الاسم\\كلمة المرور"
+
+#~ msgid "No"
+#~ msgstr "لا"
+
+#~ msgid "Ok"
+#~ msgstr "موافق"
+
+#~ msgid "PvP enabled"
+#~ msgstr "قتال اللاعبين ممكن"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "أعد تعيين عالم اللاعب المنفرد"
+
+#~ msgid "Special"
+#~ msgstr "خاص"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "إلعب فرديا"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "لاستخدام المظللات يجب استخدام تعريف OpenGL."
+
+#~ msgid "View"
+#~ msgstr "إعرض"
+
+#~ msgid "Yes"
+#~ msgstr "نعم"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "أنت على وشك دخول هذا الخادوم للمرة الأولى باسم \"%s\".\n"
+#~ "اذا رغبت بالاستمرار سيتم إنشاء حساب جديد باستخدام بياناتك الاعتمادية.\n"
+#~ "لتأكيد التسجيل ادخل كلمة مرورك وانقر 'سجل وادخل'، أو 'ألغ' للإلغاء."
+
+#~ msgid "You died."
+#~ msgstr "مِت"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/be/minetest.po b/po/be/minetest.po
index 25d8bf0af..8fa81a04d 100644
--- a/po/be/minetest.po
+++ b/po/be/minetest.po
@@ -1,777 +1,1500 @@
-# Belarusian translation for Minetest.
-# Copyright (C) 2010 celeron55, Pertu Ahola <celeron55@gmail.com>
-# This file is distributed under the same license as the Minetest package.
-# Selat <LongExampleTestName@gmail.com>, 2014.
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Belarusian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2013-11-23 17:37+0100\n"
-"Last-Translator: Selat <LongExampleTestName@gmail.com>\n"
-"Language-Team: Belarusian\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"minetest/be/>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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 3.10-dev\n"
-#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Clear the out chat queue"
+msgstr "Максімальны памер чаргі размовы"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "Загады размовы"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Выхад у меню"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "Лакальная каманда"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
msgstr ""
-#: builtin/fstk/ui.lua
-msgid "An error occured:"
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Адзіночная гульня"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Адзіночная гульня"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
msgstr ""
-#: builtin/fstk/ui.lua
-msgid "Main menu"
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Адрадзіцца"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Вы загінулі"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "Лакальная каманда"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "Лакальная каманда"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
msgstr ""
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
msgstr ""
#: builtin/fstk/ui.lua
-msgid "Reconnect"
+msgid "<none available>"
msgstr ""
#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Адбылася памылка ў Lua-скрыпце:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Адбылася памылка:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Галоўнае меню"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Перазлучыцца"
+
+#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
+msgstr "Сервер патрабуе перазлучыцца:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
msgstr ""
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Абраць свет:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Protocol version mismatch. "
+msgid "Later"
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Server enforces protocol version $1. "
+msgid "Never"
msgstr ""
#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Версіі пратакола адрозніваюцца. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Сервер патрабуе версію пратакола $1. "
+
+#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr ""
+msgstr "Сервер падтрымлівае версіі пратакола паміж $1 і $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr ""
+msgstr "Мы падтрымліваем толькі $1 версію пратакола."
#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
+msgstr "Мы падтрымліваем версіі пратакола паміж $1 і $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
-msgstr ""
+msgstr "Скасаваць"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr ""
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Залежнасці:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr ""
+msgid "Disable all"
+msgstr "Адключыць усё"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr ""
+msgid "Disable modpack"
+msgstr "Адключыць пакунак"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr ""
+msgstr "Уключыць усё"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Уключыць пакунак"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
+"Не атрымалася ўключыць мадыфікацыю \"$1\" бо яна ўтрымлівае недапушчальныя "
+"сімвалы. Дапускаюцца толькі [a-z0-9_]."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
+msgid "Find More Mods"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr ""
+msgid "Mod:"
+msgstr "Мадыфікацыя:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr ""
+msgid "No (optional) dependencies"
+msgstr "Няма (неабясковыя) залежнасцей"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Апісанне гульні адсутнічае."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Няма жорсткіх залежнасцяў"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Апісанне мадыфікацыі адсутнічае."
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No optional dependencies"
+msgstr "Няма неабавязковых залежнасцей"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Неабавязковыя залежнасці:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
-msgstr ""
+msgstr "Захаваць"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
-msgstr ""
+msgstr "Свет:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
+msgstr "уключаны"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Загрузка…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Усе пакункі"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Already installed"
+msgstr "Клавіша ўжо выкарыстоўваецца"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Вярнуцца ў галоўнае меню"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "Гуляць (сервер)"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "Загрузка…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Не атрымалася спампаваць $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Гульні"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Усталяваць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Усталяваць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "Неабавязковыя залежнасці:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Усталёўка: непадтрымліваемы файл тыпу \"$1\" або сапсаваны архіў"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Мадыфікацыі"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Немагчыма атрымаць пакункі"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Вынікі адсутнічаюць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "Абнавіць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Not found"
+msgstr "Выключыць гук"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Пакункі тэкстур"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Выдаліць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Абнавіць"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
+msgstr "Свет з назвай \"$1\" ужо існуе"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
msgstr ""
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+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 "Шум біёму"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Biomes"
+msgstr "Шум біёму"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caverns"
+msgstr "Шум пячор"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caves"
+msgstr "Актавы"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
+msgstr "Стварыць"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Decorations"
+msgstr "Ітэрацыі"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
msgstr ""
+"Увага: \"The minimal development test\" прызначаны толькі распрацоўшчыкам."
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Dungeons"
+msgstr "Шум падзямелля"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
+msgid "Flat terrain"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
+#, fuzzy
+msgid "Floating landmasses in the sky"
+msgstr "Шчыльнасць гор лятучых астравоў"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Floatlands (experimental)"
+msgstr "Узровень лятучых астравоў"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
msgstr ""
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Humid rivers"
+msgstr "Відэадрайвер"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Усталяваць"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
+msgstr "Генератар мапы"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Генератар мапы: параметры"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mapgen-specific flags"
+msgstr "Адмысловыя параметры генератара мапы 5"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mountains"
+msgstr "Шум гор"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Гульня не абраная"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
+#, fuzzy
+msgid "Rivers"
+msgstr "Памер рэк"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
+msgstr "Зерне"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "World name"
+msgid "Structures appearing on the terrain, typically trees and plants"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+msgid "Temperate, Desert"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Are you sure you want to delete \"$1\"?"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
-msgid "Delete"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Terrain surface erosion"
+msgstr "Базавы шум рэльефу"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Vary river depth"
+msgstr "Глыбіня рэк"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
msgstr ""
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Назва свету"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "У вас няма ўсталяваных гульняў."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Вы ўпэўненыя, што хочаце выдаліць «$1»?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Выдаліць"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: не атрымалася выдаліць \"$1\""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: хібны шлях да \"$1\""
+
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
+msgstr "Выдаліць свет \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Пацвердзіць пароль"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
msgstr ""
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
-msgid "Accept"
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Назва генератара мапы"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
msgstr ""
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Новы пароль"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Паролі не супадаюць!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Зарэгістравацца і далучыцца"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Ухваліць"
+
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr ""
+msgstr "Змяніць назву пакунка мадыфікацый:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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.conf, якая не зменіцца, калі яе "
+"змяніць тут."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr ""
+msgstr "(Няма апісання)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D-шум"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< Назад на старонку налад"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "Праглядзець"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Змесціва"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Змесціва"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr ""
+msgstr "Адключаны"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "Рэдагаваць"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
-msgstr ""
+msgstr "Уключаны"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
+msgid "Lacunarity"
+msgstr "Лакунарнасць"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "Актавы"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Зрух"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr ""
+#, fuzzy
+msgid "Persistence"
+msgstr "Сталасць"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Калі ласка, увядзіце цэлы лік."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+msgid "Please enter a valid number."
+msgstr "Калі ласка, увядзіце нумар."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Restore Default"
+msgstr "Аднавіць прадвызначанае"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Маштаб"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Пошук"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr ""
+msgid "Select directory"
+msgstr "Абраць каталог"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr ""
+msgid "Select file"
+msgstr "Абраць файл"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Паказваць тэхнічныя назвы"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr ""
+msgid "The value must be at least $1."
+msgstr "Значэнне мусіць быць не менш за $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr ""
+msgid "The value must not be larger than $1."
+msgstr "Значэнне мусіць быць не больш за $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr ""
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr ""
+msgid "X spread"
+msgstr "X распаўсюджвання"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr ""
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr ""
+msgid "Y spread"
+msgstr "Y распаўсюджвання"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z распаўсюджвання"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr ""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "абсалютная велічыня"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-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 "прадвызначаны"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "паслаблены"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (уключана)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 мадыфікацый"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Не атрымалася ўсталяваць $1 у $2"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr ""
+"Усталёўка мадыфікацыі: не атрымалася знайсці сапраўдную назву для \"$1\""
-#: builtin/mainmenu/store.lua
-msgid "Rating"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
+"Усталёўка мадыфікацыі: не атрымалася знайсці прыдатны каталог для пакунка "
+"мадыфікацый \"$1\""
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Не атрымалася знайсці прыдатную мадыфікацыю альбо пакунак мадыфікацый"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Не атрымалася ўсталяваць $1 як пакунак тэкстур"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Не атрымалася ўсталяваць як $1"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Не атрымалася ўсталяваць мадыфікацыю як $1"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Не атрымалася ўсталяваць пакунак мадыфікацый як $1"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Active Contributors"
-msgstr ""
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Загрузка…"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Core Developers"
-msgstr ""
+#: builtin/mainmenu/serverlistmgr.lua
+#, fuzzy
+msgid "Public server list is disabled"
+msgstr "Кліентскія мадыфікацыі выключаныя"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
+"Паспрабуйце паўторна ўключыць спіс публічных сервераў і праверце злучэнне з "
+"сецівам."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Core Developers"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Актыўныя ўдзельнікі"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Active renderer:"
+msgstr "Адлегласць адпраўлення актыўнага аб'екта"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Асноўныя распрацоўшчыкі"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "Абраць каталог"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Былыя ўдзельнікі"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Былыя асноўныя распрацоўшчыкі"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Паказваць адладачную інфармацыю"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Пошук у сеціве"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Змесціва"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Адключыць пакунак тэкстур"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Інфармацыя:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Усталяваныя пакункі:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Залежнасці адсутнічаюць."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Апісанне пакунка адсутнічае"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Змяніць назву"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Выдаліць пакунак"
-#: builtin/mainmenu/tab_server.lua
-msgid "Bind Address"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Выкарыстоўваць пакунак тэкстур"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Анансаваць сервер"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Адрас прывязкі"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr ""
+msgstr "Творчы рэжым"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr ""
+msgstr "Уключыць пашкоджанні"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Гуляць (сервер)"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Сервер"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
-msgstr ""
+msgstr "Новы"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr ""
+msgstr "Няма створанага альбо абранага свету!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Гуляць"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
-msgstr ""
+msgstr "Порт"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Абраць свет:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
+msgstr "Абраць свет:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Порт сервера"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Пачаць гульню"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- Адрас: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Ачысціць"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Творчы рэжым"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Пашкоджанні"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Упадабанае"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Далучыцца да гульні"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Server Port"
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Пінг"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Анансаваць сервер"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Start Game"
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Адлеглы порт"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "Апісанне сервера"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
-msgstr ""
+msgstr "2x"
#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
-msgstr ""
+msgstr "3D-аблокі"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr ""
+msgstr "4x"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr ""
+msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr ""
+msgid "All Settings"
+msgstr "Усе налады"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "Згладжванне:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr ""
+msgid "Autosave Screen Size"
+msgstr "Запамінаць памеры экрана"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr ""
+msgstr "Білінейны фільтр"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Змяніць клавішы"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr ""
+msgid "Connected Glass"
+msgstr "Суцэльнае шкло"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dynamic shadows"
+msgstr "Цень шрыфту"
#: builtin/mainmenu/tab_settings.lua
-msgid "Connected Glass"
-msgstr ""
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Цень шрыфту"
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr ""
+msgstr "Аздобленае лісце"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
+msgid "High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
+msgid "Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
+msgid "Medium"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "MIP-тэкстураванне"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "MIP-тэкстураванне + анізатропны фільтр"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
-msgstr ""
+msgstr "Без фільтра"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
-msgstr ""
+msgstr "Без MIP-тэкстуравання"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Highlighting"
-msgstr ""
+msgstr "Падсвятленне вузла"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr ""
+msgstr "Абрыс вузла"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
+msgid "None"
+msgstr "Няма"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr ""
+msgstr "Непразрыстае лісце"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
+msgstr "Непразрыстая вада"
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
-msgstr ""
+msgstr "Часціцы"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr ""
+msgid "Screen:"
+msgstr "Экран:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
-msgstr ""
+msgstr "Налады"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr ""
+msgstr "Шэйдэры"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "Узровень лятучых астравоў"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+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 ""
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
+msgstr "Тэкстураванне:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr ""
+msgstr "Танальнае адлюстраванне"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr ""
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Сэнсарны парог: (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr ""
+msgstr "Трылінейны фільтр"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
+msgid "Very High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
+msgid "Very Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr ""
+msgid "Waving Leaves"
+msgstr "Дрыготкае лісце"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr ""
+msgid "Waving Liquids"
+msgstr "Калыханне вадкасцяў"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Дрыготкія расліны"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Памылка злучэння (таймаут?)"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr ""
-
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr ""
+msgstr "Таймаут злучэння."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr ""
+msgstr "Завершана!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr ""
+msgstr "Ініцыялізацыя вузлоў"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr ""
+msgstr "Ініцыялізацыя вузлоў…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr ""
+msgstr "Загрузка тэкстур…"
-#: src/client.cpp
+#: 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 ""
+#, fuzzy
+msgid "Could not find or load game: "
+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 "Provided world path doesn't exist: "
-msgstr ""
+msgid "Please choose a name!"
+msgstr "Калі ласка, абярыце імя!"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr ""
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Не атрымалася адкрыць пададзены файл пароля: "
-#: src/game.cpp
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Пададзены шлях не існуе: "
+
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
+"\n"
+"Падрабязней у файле debug.txt."
-#: src/game.cpp
-msgid "Change Keys"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Адрас: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Рэжым: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Порт: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Публічны: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Назва сервера: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Адбылася памылка:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
msgstr ""
-#: src/game.cpp
-msgid "Change Password"
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Аўтаматычны рух наперад адключаны"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Аўтаматычны рух наперад уключаны"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
msgstr ""
-#: src/game.cpp
-msgid "Connecting to server..."
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
msgstr ""
-#: src/game.cpp
-msgid "Continue"
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
msgstr ""
-#: src/game.cpp
-msgid "Creating client..."
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
msgstr ""
-#: src/game.cpp
-msgid "Creating server..."
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Абнаўленне камеры адключана"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Абнаўленне камеры ўключана"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
msgstr ""
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Змяніць пароль"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Кінематаграфічны рэжым адключаны"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Кінематаграфічны рэжым уключаны"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Модынг кліента"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Кліентскія мадыфікацыі выключаныя"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Злучэнне з серверам…"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Працягнуць"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
+"- %s: chat\n"
+msgstr ""
+"Кіраванне:\n"
+"- %s: ісці ўперад\n"
+"- %s: ісці назад\n"
+"- %s: ісці ўлева\n"
+"- %s: ісці ўправа\n"
+"- %s: скакаць/караскацца\n"
+"- %s: красціся/спускацца\n"
+"- %s: выкінуць прадмет\n"
+"- %s: інвентар\n"
+"- Mouse: круціцца/глядзець\n"
+"- Mouse left: капаць/прабіваць\n"
+"- Mouse right: змясціць/ужыць\n"
+"- Mouse wheel: абраць прадмет\n"
+"- %s: размова\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Стварэнне кліента…"
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Стварэнне сервера…"
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Адладачная інфармацыя і графік прафіліроўшчыка схаваныя"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Адладачная інфармацыя паказваецца"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Адладачная інфармацыя, графік прафіліроўшчыка і каркас схаваныя"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -786,497 +1509,874 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-
-#: src/game.cpp
+"Прадвызначанае кіраванне:\n"
+"Не ў меню:\n"
+"- адзін націск: кнопка актывізацыі\n"
+"- падвойны націск: пакласці/выкарыстаць\n"
+"- слізганне пальцам: аглядзецца\n"
+"У меню/інвентары:\n"
+"- падвойны націск па-за меню:\n"
+" --> закрыць\n"
+"- крануць стос, крануць слот:\n"
+" --> рухаць стос\n"
+"- крануць і валачы, націснуць другім пальцам:\n"
+" --> пакласці адзін прадмет у слот\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Абмежаванне бачнасці адключана"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Абмежаванне бачнасці ўключана"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Стварэнне кліента…"
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr ""
+msgstr "Выхад у меню"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr ""
+msgstr "Выхад у сістэму"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Шпаркі рэжым адключаны"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Шпаркі рэжым уключаны"
-#: src/game.cpp
-msgid "Media..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Шпаркі рэжым уключаны (прывілей \"fast\" адсутнічае)"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Рэжым палёту адключаны"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Рэжым палёту ўключаны"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Рэжым палёту ўключаны (прывілей \"fly\" адсутнічае)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Туман адключаны"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Туман уключаны"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr ""
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Інфармацыя пра гульню:"
-#: src/game.cpp
-msgid "You died."
-msgstr ""
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Гульня прыпыненая"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr ""
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Сервер (хост)"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr ""
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Апісанне прадметаў…"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr ""
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "КіБ/сек"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr ""
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Медыя…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr ""
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "МіБ/сек"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr ""
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Мінімапа на дадзены момант адключаная гульнёй альбо мадыфікацыяй"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr ""
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Адзіночная гульня"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Рэжым руху скрозь сцены адключаны"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Рэжым руху скрозь сцены ўключаны"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Рэжым руху скрозь сцены ўключаны (прывілей \"noclip\" адсутнічае)"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr ""
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Апісанне вузлоў…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr ""
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Адключана"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr ""
+#: src/client/game.cpp
+msgid "On"
+msgstr "Уключана"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Рэжым нахілення руху выключаны"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Рэжым нахілення руху ўключаны"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr ""
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Графік прафіліроўшчыка паказваецца"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr ""
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Адлеглы сервер"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr ""
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Распазнаванне адраса…"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr ""
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Выключэнне…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr ""
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Адзіночная гульня"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Гучнасць"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Гук адключаны"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Гук уключаны"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Бачнасць змененая на %d"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Бачнасць прызначаная на максімум: %d"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Бачнасць прызначаная на мінімум: %d"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Гучнасць змененая на %d %%"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr ""
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Каркас паказваецца"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr ""
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Павелічэнне зараз выключана гульнёй альбо мадыфікацыяй"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr ""
+#: src/client/game.cpp
+msgid "ok"
+msgstr "добра"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Размова схаваная"
-#: src/keycode.cpp
-msgid "Back"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Размова паказваецца"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD схаваны"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD паказваецца"
-#: src/keycode.cpp
-msgid "Comma"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Прафіліроўшчык схаваны"
-#: src/keycode.cpp
-msgid "Control"
-msgstr ""
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Прафіліроўшчык паказваецца (старонка %d з %d)"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Праграмы"
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
-#: src/keycode.cpp
-msgid "Down"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "End"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Ctrl"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Уніз"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "End"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Ачысціць EOF"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
-msgstr ""
+msgstr "Выканаць"
-#: src/keycode.cpp
-msgid "Final"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr ""
+msgstr "Даведка"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
-msgstr ""
+msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Accept"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Пераўтварыць IME"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Змяніць рэжым IME"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME без пераўтварэння"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Уставіць"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Улева"
+
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr ""
+msgstr "Левая кнопка"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
-msgstr ""
+msgstr "Левы Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr ""
+msgstr "Левае меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
-msgstr ""
+msgstr "Левы Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr ""
+msgstr "Левы Super"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
-msgstr ""
+msgstr "Меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Minus"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
+msgstr "Сярэдняя кнопка"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
-msgstr ""
+msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr ""
+msgstr "Дадат. *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr ""
+msgstr "Дадат. +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr ""
+msgstr "Дадат. -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Дадат. ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr ""
+msgstr "Дадат. /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr ""
+msgstr "Дадат. 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr ""
+msgstr "Дадат. 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr ""
+msgstr "Дадат. 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr ""
+msgstr "Дадат. 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr ""
+msgstr "Дадат. 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr ""
+msgstr "Дадат. 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr ""
+msgstr "Дадат. 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr ""
+msgstr "Дадат. 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr ""
+msgstr "Дадат. 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr ""
+msgstr "Дадат. 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
-msgstr ""
+msgstr "Ачысціць OEM"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page down"
-#: src/keycode.cpp
-msgid "Pause"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page up"
-#: src/keycode.cpp
-msgid "Period"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Паўза"
-#: src/keycode.cpp
-msgid "Plus"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Гуляць"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr ""
+msgstr "Друкаваць"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
-msgstr ""
+msgstr "Вярнуцца"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Управа"
+
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr ""
+msgstr "Правая кнопка"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
-msgstr ""
+msgstr "Правы Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
-msgstr ""
+msgstr "Правае меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
-msgstr ""
+msgstr "Правы Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr ""
+msgstr "Правы Super"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
-msgstr ""
+msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr ""
+msgstr "Абраць"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
-msgstr ""
+msgstr "Сон"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
-msgstr ""
+msgstr "Здымак"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
-msgstr ""
+msgstr "Прагал"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
-msgstr ""
+msgstr "Табуляцыя"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
-msgstr ""
+msgstr "Уверх"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
-msgstr ""
+msgstr "Дадат. кнопка 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
+msgstr "Дадат. кнопка 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Павялічыць"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Мінімапа схаваная"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Мінімапа ў рэжыме радару, павелічэнне х1"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Мінімапа ў рэжыме паверхні, павелічэнне х1"
+
+#: src/client/minimap.cpp
+#, fuzzy
+msgid "Minimap in texture mode"
+msgstr "Мінімальны памер тэкстуры"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Не атрымалася спампаваць $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Працягнуць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "«Адмысловая» = злазіць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Аўтабег"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Аўтаскок"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Назад"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Змяніць камеру"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Размова"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Загад"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Кансоль"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Паменшыць бачнасць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Паменшыць гучнасць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Падвойны \"скок\" = палёт"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Выкінуць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Уперад"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Павялічыць бачнасць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Павялічыць гучнасць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Інвентар"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Скакаць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Клавіша ўжо выкарыстоўваецца"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
msgstr ""
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Лакальная каманда"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Прыглушыць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Наступны прадмет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Папярэдні прадмет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Адлегласць бачнасці"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Здымак экрана"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Красціся"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Размова"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Шпаркасць"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Палёт"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Туман"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Мінімапа"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Рух скрозь сцены"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Нахіленне руху"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "націсніце кнопку"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Змяніць"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Новы пароль"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Стары пароль"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Паролі не супадаюць!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Выхад"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Сцішаны"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Гучнасць: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "be"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Калі ласка, абярыце імя!"
+
+#: src/settings_translation_file.cpp
+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
+#, fuzzy
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Выкарыстоўваць віртуальны джойсцік для актывацыі кнопкі \"aux\".\n"
+"Калі ўключана, віртуальны джойсцік таксама будзе націскаць кнопку \"aux\" "
+"калі будзе знаходзіцца па-за межамі асноўнага кола."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"(X, Y, Z) зрух фрактала ад цэнтру свету ў адзінках шкалы маштабу.\n"
+"Выкарыстоўваецца для перамяшчэння вобласці адраджэння бліжэй да зямлі (0, "
+"0).\n"
+"Прадвызначанае значэнне падыходзіць для мностваў Мандэльброта, але для "
+"мностваў Жулія яго неабходна падладзіць.\n"
+"Дыяпазон прыкладна ад −2 да 2. Памножце на адзінку шкалы маштабу, каб "
+"атрымаць зрух ў блоках."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
+"(Х,Y,Z) шкала фрактала ў блоках.\n"
+"Фактычны фрактальны памер будзе ў 2-3 разы больш.\n"
+"Гэтыя ліку могуць быць вельмі вялікімі, фракталу няма патрэбы запаўняць "
+"свет.\n"
+"Павялічце іх, каб павялічыць маштаб дэталі фрактала.\n"
+"Для вертыкальна сціснутай фігуры, што падыходзіць\n"
+"востраву, зрабіце ўсе 3 лікі роўнымі для неапрацаванай формы."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "2D-шум, што кіруе формай/памерам горных хрыбтоў."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2D-шум, што кіруе формай/памерам пагоркаў."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2D-шум, што кіруе формай/памерам сталовых гор."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "2D-шум, што кіруе памерам/распаўсюдам складчатых горных ланцугоў."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2D-шум, што кіруе памерам/распаўсюдам пагоркаў."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "2D-шум, што кіруе памерам/распаўсюдам ступенявых горных ланцугоў."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "2D-шум, што размяшчае поймы рэк і рэчышчы."
#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr ""
+msgstr "3D-аблокі"
#: src/settings_translation_file.cpp
msgid "3D mode"
+msgstr "3D-рэжым"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "3D mode parallax strength"
+msgstr "Моц мапы нармаляў"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3D-шум, што вызначае гіганцкія гроты."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
msgstr ""
+"3D-шум, што вызначае структуру і вышыню гор.\n"
+"Таксама вызначае структуру горнага рэльефу лятучых астравоў."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "3D-шум, што вызначае структуру схілаў рачных каньёнаў."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3D-шум, што вызначае гіганцкія гроты."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"3D-шум, што вызначае горныя выступы, скалы і т. п. Звычайна няшмат варыяцый."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3D-шум, што вызначае колькасць падзямелляў на кавалку мапы."
#: src/settings_translation_file.cpp
msgid ""
@@ -1287,7 +2387,22 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"3D-падтрымка.\n"
+"Зараз падтрымліваюцца:\n"
+"- none: без 3D-вываду.\n"
+"- anaglyph: блакітны/пурпурны колеры ў 3D.\n"
+"- interlaced: цотныя і няцотныя лініі адлюстроўваюць два розных кадра для "
+"экранаў з падтрымкай палярызацыі.\n"
+"- topbottom: падзел экрана верх/ніз.\n"
+"- sidebyside: падзел экрана права/лева.\n"
+"- pageflip: чатырохразовая буферызацыя (квадра-буфер)."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1295,42 +2410,54 @@ 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 ""
+"Паведамленне, якое будзе паказана ўсім кліентам пры выключэнні сервера."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "Інтэрвал захавання мапы"
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
+msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+#, fuzzy
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Абсалютны ліміт чаргі запытаў"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Acceleration in air"
+msgstr "Паскарэнне ў паветры"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Паскарэнне свабоднага падзення ў вузлах за секунду за секунду."
#: src/settings_translation_file.cpp
msgid "Active Block Modifiers"
-msgstr ""
+msgstr "Мадыфікатары актыўных блокаў"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+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 ""
@@ -1338,502 +2465,939 @@ 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 "Дадае часціцы пры капанні блока."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
+"Наладка DPI (кропак на цалю) на экране\n"
+"(не толькі X11/Android), напрыклад, для 4k-экранаў."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Дадаваць назвы прадметаў"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
-msgstr ""
+msgstr "Пашыраныя"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr ""
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Заўсёды ў палёце і шпарка"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "Гама навакольнай аклюзіі"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
msgstr ""
+"Колькасць паведамленняў, што гулец можа адправіць у размову цягам 10 секунд."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+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.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
+msgid "Announce to this serverlist."
+msgstr "Аб гэтым серверы."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Дадаваць назвы прадметаў"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Дадаваць назвы прадметаў у выплыўных падказках."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Apple trees noise"
+msgstr "Шум яблынь"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+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 "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
msgstr ""
+"На гэтай дыстанцыі сервер будзе агрэсіўна аптымізаваць блокі, якія будзе "
+"адпраўляць кліентам.\n"
+"Малыя значэнні патэнцыйна палепшаць працаздольнасць за кошт бачных глюкаў "
+"візуалізацыі.\n"
+"(некаторыя блокі не будуць адлюстроўвацца пад вадой і ў пячорах, а таксама "
+"часам на сушы)\n"
+"Прызначэнне гэтага значэння на больш чым max_block_send_distance адключыць "
+"аптымізацыю.\n"
+"Прызначаецца ў блоках мапы (16 вузлоў)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Клавіша аўта-ўперад"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Аўтаматычна заскокваць на аднаблокавыя перашкоды."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Аўтаматычна дадаваць у спіс сервераў."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Аўтаматычна захоўваць памеры экрана"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Рэжым аўтамаштабавання"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "Клавіша скока"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "Адмысловая клавіша для караскання/спускання"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr ""
+msgstr "Клавіша назад"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr ""
+msgid "Base ground level"
+msgstr "Узровень зямлі"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr ""
+msgid "Base terrain height."
+msgstr "Вышыня асноўнай мясцовасці."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr ""
+msgid "Basic privileges"
+msgstr "Базавыя прывілеі"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Шум пляжаў"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+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 "Bits per pixel (aka color depth) in fullscreen mode."
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Параметры шуму тэмпературы і вільготнасці для API-біёму"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Шум біёму"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Аптымізаваная адлегласць адпраўлення блокаў"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Bold and italic font path"
+msgstr "Шлях да монашырыннага шрыфту"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Bold and italic monospace font path"
+msgstr "Шлях да монашырыннага шрыфту"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Bold font path"
+msgstr "Шлях да шрыфту"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Bold monospace font path"
+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 "Bumpmapping"
+#, fuzzy
+msgid "Camera"
+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.5.\n"
+"Большасці карыстальнікаў няма патрэбы змяняць гэты параметр.\n"
+"Павелічэнне можа паменшыць колькасць артэфактаў на слабых графічных "
+"працэсарах.\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 "Шум пячор"
#: 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 "Caves and tunnels form at the intersection of the two noises"
-msgstr ""
+msgid "Cave1 noise"
+msgstr "Шум пячоры 1"
#: src/settings_translation_file.cpp
-msgid "Chat key"
-msgstr ""
+msgid "Cave2 noise"
+msgstr "Шум пячоры 2"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr ""
+msgid "Cavern limit"
+msgstr "Абмежаванне пячор"
#: src/settings_translation_file.cpp
-msgid "Chatcommands"
-msgstr ""
+msgid "Cavern noise"
+msgstr "Шум пячор"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Конуснасць пячор"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Парог пячор"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Абмежаванне пячор"
#: src/settings_translation_file.cpp
msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+"Center of light curve boost range.\n"
+"Where 0.0 is minimum light level, 1.0 is maximum light level."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat command time message threshold"
+msgstr "Максімальная колькасць паведамленняў у размове для выключэння"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Загады размовы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat font size"
+msgstr "Памер шрыфту"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Клавіша размовы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat log level"
+msgstr "Узровень журнала адладкі"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Максімальная колькасць паведамленняў у размове"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Фармат чат-паведамленняў"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Максімальная колькасць паведамленняў у размове для выключэння"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Максімальная працягласць паведамлення ў размове"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Клавіша пераключэння размовы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+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 "Чыстыя празрыстыя тэкстуры"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Кліент"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr ""
+msgstr "Кліент і сервер"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr ""
+msgid "Client modding"
+msgstr "Модынг кліента"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr ""
+msgid "Client side modding restrictions"
+msgstr "Модынг кліента"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Абмежаванне дыяпазону пошуку ад кліента"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Модынг кліента"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Хуткасць караскання"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
-msgstr ""
+msgstr "Радыус аблокаў"
#: src/settings_translation_file.cpp
msgid "Clouds"
-msgstr ""
+msgstr "Аблокі"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr ""
+msgstr "Аблокі — эфект на баку кліента."
#: src/settings_translation_file.cpp
msgid "Clouds in menu"
-msgstr ""
+msgstr "Аблокі ў меню"
#: src/settings_translation_file.cpp
msgid "Colored fog"
+msgstr "Каляровы туман"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Colored shadows"
+msgstr "Каляровы туман"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
msgstr ""
+"Падзелены коскамі спіс пазнак, якія можна хаваць у рэпазіторыі.\n"
+"\"nonfree\" можна выкарыстоўвацца, каб схаваць пакункі, якія з’яўляюцца "
+"свабодным праграмным забеспячэннем паводле Free Software Foundation.\n"
+"Таксама вы можаце прызначыць рэйтынг.\n"
+"Пазнакі не залежаць ад версіі Minetest,\n"
+"таму ўбачыць поўны спіс можна на https://content.minetest.net/help/"
+"content_flags/"
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
+"Спіс модаў, падзеленых коскамі, якім дазволены доступ да HTTP API, які\n"
+"дазваляе ім адпраўляць і атрымліваць даныя праз Інтэрнэт."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
+"Спіс давераных модаў, падзеленых коскамі, якім дазволены доступ да\n"
+"небяспечных функцый, нават калі мод бяспекі ўключаны\n"
+"(праз request_insecure_environment())."
#: src/settings_translation_file.cpp
msgid "Command key"
+msgstr "Клавіша загаду"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Connect glass"
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr "Суцэльнае шкло"
+
+#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr ""
+msgstr "Злучэнне з вонкавым медыясерверам"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr ""
+msgstr "Злучае шкло, калі падтрымліваецца блокам."
#: src/settings_translation_file.cpp
msgid "Console alpha"
-msgstr ""
+msgstr "Празрыстасць кансолі"
#: src/settings_translation_file.cpp
msgid "Console color"
-msgstr ""
+msgstr "Колер кансолі"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "Вышыня кансолі"
#: src/settings_translation_file.cpp
-msgid "Console key"
+#, fuzzy
+msgid "Content Repository"
+msgstr "Сеціўны рэпазіторый"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Чорны спіс сцяжкоў ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "URL ContentDB"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
-msgstr ""
+msgstr "Бесперапынная хада"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
+"Бесперапынны рух уперад, што пераключаецца клавішай \"аўтаматычны бег\".\n"
+"Націсніце аўтаматычны бег яшчэ раз альбо рух назад, каб выключыць."
#: src/settings_translation_file.cpp
msgid "Controls"
-msgstr ""
+msgstr "Кіраванне"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
+"Кіруе працягласцю цыкла дня/ночы.\n"
+"Прыклады: 72 = 20 мін, 360 = 4 мін, 1 = 24 г, 0 — дзень і ноч не змяняюцца."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr ""
+msgstr "Кіруе крутасцю/глыбінёй азёр."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr ""
+msgstr "Кіруе крутасцю/вышынёй пагоркаў."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
msgid "Crash message"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgstr "Паведамленне пры крушэнні"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgid "Creative"
+msgstr "Творчасць"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr ""
+msgstr "Празрыстасць перакрыжавання"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr ""
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr "Празрыстасць перакрыжавання (паміж 0 і 255)."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr ""
+msgstr "Колер перакрыжавання"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
msgid "DPI"
-msgstr ""
+msgstr "DPI (кропак на цалю)"
#: src/settings_translation_file.cpp
msgid "Damage"
-msgstr ""
+msgstr "Пашкоджанні"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr ""
+msgstr "Клавіша пераключэння адладачных даных"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Парог памеру файла журнала адладкі"
#: src/settings_translation_file.cpp
msgid "Debug log level"
+msgstr "Узровень журнала адладкі"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Кнопка памяншэння гучнасці"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr ""
+msgstr "Крок адведзенага сервера"
#: src/settings_translation_file.cpp
msgid "Default acceleration"
-msgstr ""
+msgstr "Прадвызначанае паскарэнне"
#: src/settings_translation_file.cpp
msgid "Default game"
-msgstr ""
+msgstr "Прадвызначаная гульня"
#: 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 ""
+"Прадвызначаная гульня пры стварэнні новага свету.\n"
+"Гэта можна змяніць пры стварэнні свету ў галоўным меню."
#: src/settings_translation_file.cpp
msgid "Default password"
-msgstr ""
+msgstr "Прадвызначаны пароль"
#: src/settings_translation_file.cpp
msgid "Default privileges"
-msgstr ""
+msgstr "Прадвызначаныя прывілеі"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Прадвызначаны фармат справаздачы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Default stack size"
+msgstr "Прадвызначаная гульня"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Вызначае вобласці, дзе на дрэвах ёсць яблыкі."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Вызначае вобласці з пяшчанымі пляжамі."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "Вызначае вобласці ўзвышэнняў паверхні і ўплывае на крутасць скал."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Вызначае размеркаванне паверхні на ўзвышшах."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Вызначае поўны памер пячор. Пры малых значэннях ствараюцца вялікія пячоры."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Вызначае буйнамаштабную структуру рэчышч."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Вызначае размяшчэнне і рэльеф дадатковых пагоркаў і азёр."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Вызначае базавы ўзровень зямлі."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Вызначае глыбіню рэчышча."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
+"Вызначае максімальную адлегласць перадачы даных гульца ў блоках\n"
+"(0 — неабмежаваная)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Вызначае шырыню рэчышча."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Вызначае шырыню поймы ракі."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Вызначае вобласці і шчыльнасць дрэў."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Затрымка паміж абнаўленнямі сетак на кліенце ў мілісекундах. Павелічэнне "
+"гэтага значэння\n"
+"запаволіць тэмп абнаўлення сетак, і такім чынам паменшыць дрыжанне на "
+"павольных кліентах."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Затрымка ў адпраўленні блокаў пасля будаўніцтва"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
-msgstr ""
+msgstr "Затрымка паказу падказак, зададзеная ў мілісекундах."
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
-msgstr ""
+msgstr "Апрацоўка састарэлых выклікаў Lua API"
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "Глыбіня, ніжэй якой трапляюцца вялікія пячоры."
#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
-msgstr ""
+msgstr "Глыбіня, ніжэй якой трапляюцца вялікія пячоры."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
msgstr ""
+"Апісанне сервера, якое паказваецца пры далучэнні гульцоў і ў спісе сервераў."
#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Парог шуму пустынь"
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
+"Пустыні з'яўляюцца, калі np_biome перавысіць гэтае значэнне.\n"
+"Ігнаруецца, калі ўключаны сцяжок snowbiomes."
#: src/settings_translation_file.cpp
msgid "Desynchronize block animation"
-msgstr ""
+msgstr "Дэсінхранізаваць анімацыю блока"
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Ітэрацыі"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "Клавіша ўправа"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Часціцы пры капанні"
#: src/settings_translation_file.cpp
msgid "Disable anticheat"
-msgstr ""
+msgstr "Выключыць антычыт"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+msgid "Disallow empty passwords"
+msgstr "Забараніць пустыя паролі"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr ""
+msgstr "Даменная назва сервера, што будзе паказвацца ў спісе сервераў."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr ""
+msgstr "Падвойны націск \"скока\" пераключае рэжым палёту"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
-msgstr ""
+msgstr "Палвойны націск клавішы скока пераключае рэжым палёту."
#: src/settings_translation_file.cpp
msgid "Drop item key"
+msgstr "Клавіша выкідання прадмета"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Зводка адладачных даных генератара мапы."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Максімальная Y падзямелля"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Мінімальная Y падзямелля"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Шум падзямелля"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
msgstr ""
+"Уключыць падтрымку Lua-модынгу на кліенце.\n"
+"Гэта падтрымка эксперыментальная і API можа змяніцца."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable mod security"
+msgid "Enable console window"
+msgstr "Уключаць акно кансолі"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Enable creative mode for all players"
+msgstr "Уключыць творчы рэжым для новых мап."
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Уключыць джойсцікі"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Уключыць абарону мадыфікацый."
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr "Уключыць абарону мадыфікацый"
+
+#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr ""
+msgstr "Дазволіць гульцам атрымоўваць пашкоджанні і паміраць."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
-msgstr ""
+msgstr "Уключыць выпадковы карыстальніцкі ўвод (толькі для тэставання)."
#: src/settings_translation_file.cpp
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
+"Уключыць мяккае асвятленне з простай навакольнай аклюзіяй.\n"
+"Адключыць для хуткасці ці другога выгляду."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1843,6 +3407,10 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
+"Забараніць падлучэнне старых кліентаў.\n"
+"Старыя кліенты — тыя, што не крушацца пры злучэнні\n"
+"з новымі серверамі, але яны могуць не падтрымліваць усе новыя функцыі, што "
+"чакаюцца."
#: src/settings_translation_file.cpp
msgid ""
@@ -1851,303 +3419,530 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
+"Уключыць выкарыстанне адлеглага медыясервера (калі забяспечана серверам).\n"
+"Адлеглыя серверы даюць магчымасць хутчэй спампоўваць медыяфайлы (напрыклад "
+"тэкстуры) пры злучэнні з серверам."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Уключыць калыханне камеры і вызначыць яго значэнне.\n"
+"Напрыклад: 0 — няма, 1.0 — звычайнае, 2.0 — падвойнае."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"Уключыць/выключыць падтрымку IPv6. Сервер IPv6 можа быць абмежаваны IPv6-"
+"кліентамі ў залежнасці ад сістэмнай канфігурацыі.\n"
+"Ігнаруецца, калі зададзены «bind_address»."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr ""
+msgid "Enables animation of inventory items."
+msgstr "Уключае анімацыю прадметаў інвентару."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Уключае кэшаванне павернутых вонкі сетак."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr ""
+msgstr "Уключае мінімапу."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Профіль даліны"
+
+#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "Інтэрвал друкавання даных прафілявання рухавіка"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Метады сутнасці"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr ""
+#, fuzzy
+msgid "FPS when unfocused or paused"
+msgstr "Максімальны FPS, калі гульня прыпыненая."
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr ""
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr ""
+msgid "Factor noise"
+msgstr "Каэфіцыентны шум"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr ""
+msgid "Fall bobbing factor"
+msgstr "Каэфіцыент калыхання пры падзенні"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+#, fuzzy
+msgid "Fallback font path"
+msgstr "Рэзервовы шрыфт"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr ""
+msgstr "Клавіша шпаркасці"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
-msgstr ""
+msgstr "Паскарэнне шпаркага рэжыму"
#: src/settings_translation_file.cpp
msgid "Fast mode speed"
-msgstr ""
+msgstr "Хуткасць шпаркага рэжыму"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr ""
+msgstr "Шпаркае перамяшчэнне"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
+"Шпаркае перамяшчэнне (з дапамогай клавішы выкарыстання).\n"
+"Патрабуецца прывілей \"fast\" на серверы."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Поле зроку"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "Поле зроку ў градусах."
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
+"Файл у каталозе client/serverlist/, які змяшчае вашыя ўлюбёныя серверы, якія "
+"паказваюцца\n"
+"ва ўкладцы сумеснай гульні."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+msgid "Filler depth"
+msgstr "Глыбіня запаўняльніка"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+msgid "Filler depth noise"
+msgstr "Шум глыбіні запаўняльніка"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Кінематаграфічнае танальнае адлюстраванне"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
+"Адфільтраваныя тэкстуры могуць змешваць значэнні RGB з цалкам празрыстымі "
+"суседнімі, якія PNG-аптымізатары звычайна адкідваюць, што часам прыводзіць "
+"да з’яўлення цёмнага ці светлага краёў празрыстых тэкстур.\n"
+"Выкарыстайце гэты фільтр, каб выправіць тэкстуры падчас загрузкі."
#: src/settings_translation_file.cpp
-msgid "Filtering"
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Згладжванне:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Першы з чатырох 3D-шумоў, якія разам вызначаюць дыяпазон вышыні пагоркаў/гор."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Першы з двух 3D-шумоў, якія разам вызначаюць тунэлі."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
-msgstr ""
+msgstr "Фіксацыя зерня мапы"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Фіксацыя віртуальнага джойсціка"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland density"
+msgstr "Шчыльнасць гор лятучых астравоў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland maximum Y"
+msgstr "Максімальная Y падзямелля"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland minimum Y"
+msgstr "Мінімальная Y падзямелля"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland noise"
+msgstr "Базавы шум лятучых астравоў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland taper exponent"
+msgstr "Шчыльнасць гор лятучых астравоў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland tapering distance"
+msgstr "Базавы шум лятучых астравоў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland water level"
+msgstr "Узровень лятучых астравоў"
#: src/settings_translation_file.cpp
msgid "Fly key"
-msgstr ""
+msgstr "Клавіша палёту"
#: src/settings_translation_file.cpp
msgid "Flying"
-msgstr ""
+msgstr "Палёт"
#: src/settings_translation_file.cpp
msgid "Fog"
-msgstr ""
+msgstr "Туман"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Пачатак туману"
#: src/settings_translation_file.cpp
msgid "Fog toggle key"
+msgstr "Клавіша пераключэння туману"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "Памер шрыфту"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr ""
+msgstr "Цень шрыфту"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
+msgstr "Празрыстасць цені шрыфту"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Памер шрыфту"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid ""
+"Font size of the recent chat text and chat prompt in point (pt).\n"
+"Value 0 will use the default font size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Фармат чат-паведамленняў гульца. Наступныя радкі з'яўляюцца "
+"запаўняльнікамі:\n"
+"@name, @message і @timestamp (неабавязкова)"
+
+#: src/settings_translation_file.cpp
msgid "Format of screenshots."
+msgstr "Фармат здымкаў экрана."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Прадвызначаны колер фону гульнявой кансолі"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Прадвызначаная непразрыстасць фону гульнявой кансолі"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Колер фону гульнявой кансолі ў поўнаэкранным рэжыме"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Непразрыстасць фону гульнявой кансолі ў поўнаэкранным рэжыме"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Колер фону гульнявой кансолі (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Непразрыстасць фону гульнявой кансолі (паміж 0 і 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Колер фону гульнявой кансолі (R,G,B) у поўнаэкранным рэжыме."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
msgstr ""
+"Непразрыстасць фону гульнявой кансолі ў поўнаэкранным рэжыме (паміж 0 і 255)."
#: src/settings_translation_file.cpp
msgid "Forward key"
-msgstr ""
+msgstr "Клавіша ўперад"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Першы з чатырох 2D-шумоў, якія разам вызначаюць дыяпазон вышыні пагоркаў/гор."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Тып фрактала"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "Частка бачнай адлегласці, на якой пачынае з'яўляцца туман"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"Як далёка ад кліентаў ствараюцца блокі. Вызначаецца ў блоках мапы (16 "
+"блокаў)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"Як далёка блокі адпраўляюцца кліенту. Вызначаецца ў блоках мапы (16 блокаў)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"Адлегласць у блоках, на якой кліенты распазнаюць аб'екты (16 блокаў).\n"
+"\n"
+"Калі прызначыць значэнне больш за active_block_range, то сервер будзе "
+"запамінаць рухаючыяся аб’екты на гэтай адлегласці ў накірунку погляду "
+"гульца. (Гэта дапаможа пазбегнуць раптоўнага знікнення жывых істот)"
#: src/settings_translation_file.cpp
msgid "Full screen"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
+msgstr "На ўвесь экран"
#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "Поўнаэкранны рэжым."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr ""
+msgstr "Маштабаванне графічнага інтэрфейсу"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr ""
+msgstr "Фільтр маштабавання графічнага інтэрфейсу"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "txr2img-фільтр маштабавання графічнага інтэрфейсу"
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Гульні"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Глабальныя зваротныя выклікі"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
+"Глабальныя параметры генерацыі мапы.\n"
+"У генератары мапы 6 параметр «decorations» кіруе ўсімі дэкарацыямі,\n"
+"апроч дрэў і травы джунгляў, а ў астатніх генератарах гэты параметр\n"
+"кіруе ўсімі дэкарацыямі."
+
+#: 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 "Градыент крывой святла на максімальным узроўні святла."
+
+#: 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 "Градыент крывой святла на мінімальным узроўні святла."
#: src/settings_translation_file.cpp
msgid "Graphics"
-msgstr ""
+msgstr "Графіка"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Графіка"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Графіка"
#: src/settings_translation_file.cpp
msgid "Gravity"
-msgstr ""
+msgstr "Гравітацыя"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr "Узровень зямлі"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Шум бруду"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "HTTP mods"
+msgstr "HTTP-мадыфікацыі"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Маштабаванне графічнага інтэрфейсу"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr ""
+msgstr "Клавіша пераключэння HUD"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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: прыпыніць пры састарэлым выкліку (пажадана для распрацоўшчыкаў "
+"модаў)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2157,67 +3952,303 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Прафіляваць самаго прафіліроўшчыка:\n"
+"* Вымяраць пустую функцыю.\n"
+"Вызначыць дадатковыя выдаткі ад вымярэнняў (+1 выклік функцыі).\n"
+"* Вымяраць сэмплера, што выкарыстоўваецца для абнаўлення статыстыкі."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr ""
+msgid "Heat blend noise"
+msgstr "Шум цеплавога змешвання"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr ""
+msgid "Heat noise"
+msgstr "Цеплавы шум"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr ""
+#, fuzzy
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "Вышыня акна падчас запуску."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Шум вышыні"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Шум выбару вышыні"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Крутасць пагоркаў"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Парог пагоркаў"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Шум крутасці"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Шум крутасці 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Шум крутасці 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Шум крутасці 4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
-msgstr ""
+msgstr "Хатняя старонка сервера, якая будзе паказвацца ў спісе сервераў."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
+"Гарызантальнае паскарэнне ў паветры пры скачках ці падзенні\n"
+"ў вузлах за секунду за секунду."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Гарызантальнае паскарэнне ў хуткі рэжыме\n"
+"ў вузлах за секунду за секунду."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
+"Гарызантальнае і вертыкальнае паскарэнне на зямлі ці пры карасканні\n"
+"ў вузлах за секунду за секунду."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr ""
+msgid "Hotbar next key"
+msgstr "Наступны прадмет на панэлі хуткага доступу"
#: src/settings_translation_file.cpp
-msgid "IPv6"
-msgstr ""
+msgid "Hotbar previous key"
+msgstr "Папярэдні прадмет на панэлі хуткага доступу"
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Hotbar slot 1 key"
+msgstr "Прадмет 1 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Прадмет 10 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Прадмет 11 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Прадмет 12 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Прадмет 13 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Прадмет 14 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Прадмет 15 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Прадмет 16 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Прадмет 17 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Прадмет 18 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Прадмет 19 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Прадмет 2 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Прадмет 20 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Прадмет 21 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Прадмет 22 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Прадмет 23 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Прадмет 24 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Прадмет 25 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Прадмет 26 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Прадмет 27 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Прадмет 28 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Прадмет 29 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Прадмет 3 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Прадмет 30 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Прадмет 31 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Прадмет 32 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Прадмет 4 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Прадмет 5 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Прадмет 6 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Прадмет 7 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Прадмет 8 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Прадмет 9 панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Наколькі глыбокімі рабіць рэкі."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
+"Як доўга сервер будзе чакаць перад выгрузкай блокаў мапы,\n"
+"якія не выкарыстоўваюцца.\n"
+"На больш высокіх значэннях адбываецца плаўней, але патрабуецца больш памяці."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Паменшыце гэта, каб павялічыць інерцыю вадкасці."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Наколькі шырокімі рабіць рэкі."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Шум змешвання вільготнасці"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Шум вільготнасці"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Варыяцыя вільготнасці для біёмаў."
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "Сервер IPv6"
#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"Калі FPS перасягне гэтае значэнне, абмежаваць прастоем,\n"
+"каб не марнаваць дарма магутнасць працэсара."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"Калі выключана, то клавіша \"special\" выкарыстоўваецца для хуткага палёту, "
+"калі палёт і шпаркі рэжым уключаныя."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Калі ўключаны, то сервер будзе выконваць адсяканне блокаў кіруючыся пазіцыяй "
+"вачэй гульца. Гэта можа паменшыць колькасць адпраўляемых\n"
+"блокаў на 50–60 %. Кліент не будзе атрымоўваць большую частку нябачных\n"
+"блокаў, таму рэжым руху скрозь сцены стане менш карысным."
#: src/settings_translation_file.cpp
msgid ""
@@ -2225,32 +4256,64 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"Калі ўключана адначасова з рэжымам палёту, то гулец будзе мець магчымасць "
+"лятаць скрозь цвёрдыя блокі.\n"
+"На серверы патрабуецца прывілей \"noclip\"."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Калі ўключана, то для спускання і апускання будзе выкарыстоўвацца клавіша "
+"\"special\" замест \"sneak\"."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
+"Уключае пацвярджэнне рэгістрацыі пры злучэнні з серверам.\n"
+"Калі выключана, новы акаўнт будзе рэгістравацца аўтаматычна."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Калі ўключана, то дзеянні запісваюцца для адраблення.\n"
+"Гэты параметр чытаецца толькі падчас запуску сервера."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "Калі ўключана, то выключае абарону ад падману ў сумеснай гульні."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Калі ўключаны, то з’яўленне хібных даных у свеце не прывядзе да выключэння "
+"сервера.\n"
+"Уключайце гэта толькі, калі ведаеце, што робіце."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
msgstr ""
+"Калі ўключана, вызначае накірункі руху адносна нахілу гульца падчас палёту "
+"або плавання."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr "Калі ўключана, то гульцы не змогуць далучыцца з пустым паролем."
#: src/settings_translation_file.cpp
msgid ""
@@ -2258,139 +4321,249 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"Калі ўключана, то вы зможаце паставіць блокі на месцы гульца (ногі + "
+"узровень вачэй).\n"
+"Гэта спрашчае працу з блокамі ў вузкіх месцах."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 "
+"абмяжоўваюцца на гэтую адлегласць ад гульца да блока."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+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."
+msgstr "Калі вызначана, гульцы заўсёды адраджаюцца ў абраным месцы."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Не зважаць на памылкі свету"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
-msgstr ""
+msgstr "Празрыстасць фону гульнявой кансолі (непразрыстасць, паміж 0 і 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
-msgstr ""
+msgstr "Колер фону гульнявой кансолі (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "Вышыня гульнявой кансолі, паміж 0,1 (10 %) і 1,0 (100 %)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Клавіша павелічэння гучнасці"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Пачатковая вертыкальная хуткасць пры скоках у вызлах за секунду."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Убудаваныя інструменты.\n"
+"Звычайна патрабуюцца толькі распрацоўшчыкам ядра"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+#, fuzzy
+msgid "Instrument chat commands on registration."
+msgstr "Выконваць загады ў размове пры рэгістрацыі."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Інструмент функцый глабальных зваротных выклікаў пры рэгістрацыі.\n"
+"(усё, што перадаецца ў функцыю minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Інструмент функцыі дзеяння мадыфікатараў актыўных блокаў пры рэгістрацыі."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Інструмент функцыі дзеяння мадыфікатараў загружаемых блокаў пры рэгістрацыі."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Інструмент метадаў сутнасці пры рэгістрацыі."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
-msgstr ""
+msgstr "Інтэрвал захавання важных змен свету, вызначаны ў секундах."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Інтэрвал адпраўлення кліентам часу."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Анімацыя прадметаў інвентару"
#: src/settings_translation_file.cpp
msgid "Inventory key"
-msgstr ""
+msgstr "Клавіша інвентару"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Адвярнуць мыш"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "Змяняе вертыкальны рух мышы на адваротны."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Italic font path"
+msgstr "Шлях да монашырыннага шрыфту"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Italic monospace font path"
+msgstr "Шлях да монашырыннага шрыфту"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Час існавання выкінутай рэчы"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Ітэрацыі"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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"
+"Пры інтэрацыях 20 гэты генератар мапы будзе падобны да mapgen V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID джойсціка"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "Інтэрвал паўтору кнопкі джойсціка"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Joystick dead zone"
+msgstr "Тып джойсціка"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "Адчувальнасць джойсціка"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Тып джойсціка"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Толькі для мноства Жулія: кампанент W гіперкомплекснай канстанты,\n"
+"што вызначае форму фрактала Жулія.\n"
+"Не ўплывае на 3D-фракталы.\n"
+"Дыяпазон прыкладна ад −2 да 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Толькі для мноства Жулія: кампанент X гіперкомплекснай канстанты,\n"
+"што вызначае форму фрактала Жулія.\n"
+"Дыяпазон прыкладна ад −2 да 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Толькі для мноства Жулія: кампанент Y гіперкомплекснай канстанты,\n"
+"што вызначае форму фрактала Жулія.\n"
+"Не ўплывае на 3D-фракталы.\n"
+"Дыяпазон прыкладна ад −2 да 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Толькі для мноства Жулія: кампанент Z гіперкомплекснай канстанты, што "
+"вызначае форму фрактала Жулія.\n"
+"Не ўплывае на 3D-фракталы.\n"
+"Дыяпазон прыкладна ад −2 да 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Жулія W"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Жулія X"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Жулія у"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Жулія z"
#: src/settings_translation_file.cpp
msgid "Jump key"
-msgstr ""
+msgstr "Клавіша скока"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Хуткасць скокаў"
#: src/settings_translation_file.cpp
msgid ""
@@ -2398,6 +4571,30 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша памяншэння дыяпазону бачнасці.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Клавіша памяншэння гучнасці.\n"
+"Глядзіце 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 ""
+"Клавіша скока.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2405,6 +4602,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выкідання абранага прадмета.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2412,6 +4612,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша павелічэння дыяпазону бачнасці.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Кнопка павелічэння гучнасці.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2419,6 +4632,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша скока.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2426,13 +4642,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша паскарэння руху ў шпаркім рэжыме.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша для руху назад.\n"
+"Таксама выключае аўтабег, калі той актыўны.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2440,6 +4664,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша руху ўперад.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2447,6 +4674,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша руху ўлева.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2454,13 +4684,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша руху ўправа.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выключэння гуку.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2468,6 +4704,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша адкрыцця акна размовы для ўводу загадаў.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Кнопка адкрыцця акна размовы для ўводу лакальных загадаў.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2475,6 +4724,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша адкрыцця акна размовы.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2482,697 +4734,1088 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша адкрыцця інвентару.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша скока.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 11 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 12 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 13 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 14 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 15 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 16 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 17 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 18 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 19 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 20 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 21 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 22 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 23 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 24 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 25 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 26 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 27 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 28 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 29 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 30 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 31 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 32 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 8 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 5 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 1 прадмета панэлі хуткага доступу..\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 4 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару наступнага прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 9 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару папярэдняга прадмета панэлі хуткага доступу..\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 2 прадмета панэлі хуткага доступу..\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 7 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 6 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 10 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выбару 3 прадмета панэлі хуткага доступу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша \"красціся\".\n"
+"Таксама выкарыстоўваецца для спускання і апускання ў ваду, калі "
+"aux1_descends выключана.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння паміж камерамі ад першай асобы і ад трэцяй асобы.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша стварэння здымкаў экрана.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння аўтабегу.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння кінематаграфічнага рэжыму.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання мінімапы.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння шпаркага рэжыму.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння рэжыму палёту.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння рэжыму руху скрозь сцены.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша для пераключэння рэжыму нахілення руху.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння абнаўлення камеры. Выкарыстоўваецца толькі для "
+"распрацоўкі.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання размовы.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання адладачных даных.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання туману.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання HUD.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання буйной размовы.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння адлюстравання прафіліроўшчыка. Выкарыстоўваецца для "
+"распрацоўкі.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша пераключэння абмежавання дыяпазону бачнасці.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Клавіша выкарыстання набліжэння калі гэта магчыма.\n"
+"Глядзіце http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
+"Адлучаць гульцоў, што ўвялі гэтую колькасць паведамленняў цягам 10 секунд."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Крутасць азёр"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Парог азёр"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Мова"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr ""
+msgid "Large cave depth"
+msgstr "Глыбіня вялікіх пячор"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Клавіша буйной кансолі"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Стыль лісця"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Стыль лісця:\n"
+"- Fancy: бачныя ўсе бакі\n"
+"- Simple: бачныя вонкавыя бакі, калі выкарыстоўваюцца адмысловыя "
+"special_tiles\n"
+"- Opaque: вылючыць празрыстасць"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+msgid "Left key"
+msgstr "Клавіша ўлева"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"Працягласць цыкла сервера і інтэрвал, па якім аб'екты, як правіла, "
+"абнаўляюцца па сетцы."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+#, fuzzy
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Значэнне \"true\" уключае калыханне лісця.\n"
+"Патрабуюцца ўключаныя шэйдэры."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Інтэрвал часу паміж цыкламі выканання мадыфікатараў актыўных блокаў"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr ""
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Інтэрвал часу паміж цыкламі выканання таймераў блокаў"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Інтэрвал часу паміж цыкламі кіравання актыўнымі блокамі (ABM)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Узровень дэталізацыі журнала debug.txt:\n"
+"- <nothing> (не вядзецца)\n"
+"- none (паведамленні без ўзроўня)\n"
+"- error (памылкі)\n"
+"- warning (папярэджанні)\n"
+"- action (дзеянні)\n"
+"- info (інфармацыя)\n"
+"- verbose (падрабязнасці)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Light curve boost"
+msgstr "Сярэдні ўздым крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr ""
+#, fuzzy
+msgid "Light curve boost center"
+msgstr "Цэнтр сярэдняга ўздыму крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
-msgstr ""
+#, fuzzy
+msgid "Light curve boost spread"
+msgstr "Распаўсюджванне сярэдняга ўздыму крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Light curve gamma"
+msgstr "Сярэдні ўздым крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Light curve high gradient"
+msgstr "Сярэдні ўздым крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Light curve low gradient"
+msgstr "Цэнтр сярэдняга ўздыму крывой святла"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Мяккае асвятленне"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"Ліміт генерацыі мапы ў блоках ва ўсіх 6 напрамках ад (0, 0, 0).\n"
+"Генеруюцца толькі блокі, якія цалкам заходзяцца ў дадзеных межах.\n"
+"Значэнне захоўваецца для кожнага свету."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Абмяжоўвае колькасць паралельных HTTP-запытаў. Уплывае на:\n"
+"- Спампоўванне медыяданых калі сервер выкарыстоўвае параметр "
+"remote_media.\n"
+"- Спампоўванне спіса сервераў і аб'яў сервера.\n"
+"- Спампоўванні праз галоўнае меню (напрыклад кіраўнік мадыфікацый).\n"
+"Дзейнічае толькі пры кампіляцыі з cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Цякучасць вадкасці"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Згладжванне цякучасці вадкасці"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid loop max"
+msgstr "Максімум цыклічных вадкасцяў"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr ""
+msgid "Liquid queue purge time"
+msgstr "Час ачышчэння чаргі вадкасцяў"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "Сцяканне вадкасці"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid update interval in seconds."
+msgstr "Інтэрвал абнаўлення вадкасці ў секундах."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Інтэрвал абнаўлення вадкасці"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Load the game profiler"
+msgstr "Загружаць прафіліроўшчык гульні"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
+"Загружаць прафіліроўшчык гульні для збору даных.\n"
+"Падае загад /profiler для доступу да скампіляванага профілю.\n"
+"Карысна для распрацоўшчыкаў мадыфікацый і аператараў сервераў."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr ""
+msgid "Loading Block Modifiers"
+msgstr "Загрузка мадыфікатараў блокаў"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
-msgstr ""
+msgid "Lower Y limit of dungeons."
+msgstr "Ніжні ліміт Y для падзямелляў."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Lower Y limit of floatlands."
+msgstr "Ніжні ліміт Y для падзямелляў."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Скрыпт галоўнага меню"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Зрабіць колер туману і неба залежным ад часу сутак (світанак, захад) і "
+"напрамку погляду."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Робіць усе вадкасці непразрыстымі"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map directory"
+msgstr "Каталог мапаў"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Атрыбуты генерацыі для генератара Карпат."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+#, fuzzy
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Атрыбуты генерацыі мапы для генератара плоскасці.\n"
+"Часам азёры і пагоркі могуць дадавацца ў плоскі свет."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+#, fuzzy
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"Атрыбуты генерацыі для плоскага генератара.\n"
+"«terrain» уключае генерацыю не-фрактальнага рельефу:\n"
+"акіяны, выспы і падзямеллі."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"Атрыбуты генерацыі мапы для генератара далін.\n"
+"«altitude_chill»: памяншае цеплыню з ростам вышыні.\n"
+"«humid_rivers»: павялічвае вільготнасць абапал рэк.\n"
+"«vary_river_depth»: калі ўключана, то нізкая вільготнасць і высокая "
+"тэмпература ўплываюць на ўзровень вады ў рэках.\n"
+"«altitude_dry»: памяншае вільготнасць з ростам вышыні."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Атрыбуты генерацыі для генератара 5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
+"Атрыбуты генерацыі мапы для генератара мапы 6.\n"
+"Параметр «snowbiomes» (снежныя біёмы) ўключае новую сістэму з 5 біёмамі.\n"
+"Калі «snowbiomes» ўключаны, то аўтаматычна ўключаюцца «джунглі»,\n"
+"а параметр «jungles» ігнаруецца."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+#, 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 ""
+"Атрыбуты генерацыі для генератара 7.\n"
+"«ridges» уключае рэкі."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Ліміт генерацыі мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Інтэрвал захавання мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Map shadows update frames"
+msgstr "Інтэрвал абнаўлення вадкасці"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Ліміт блокаў мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Затрымка генерацыі сеткі блокаў мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Памер кэшу блокаў у генератары сетак у МБ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr ""
+msgid "Mapblock unload timeout"
+msgstr "Таймаут выгрузкі блокаў мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr ""
+msgid "Mapgen Carpathian"
+msgstr "Генератар мапы: Карпаты"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Адмысловыя параметры генератара \"Карпаты\""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Генератар мапы: плоскасць"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Адмысловыя параметры генератара плоскасці мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Генератар мапы: фракталы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Адмысловыя параметры фрактальнага генератара мапы"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Генератар мапы 5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Адмысловыя параметры генератара мапы 5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Генератар мапы 6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "Адмысловыя параметры генератара мапы 6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Генератар мапы 7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "Адмысловыя параметры генератара мапы 7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Генератар мапы: даліны"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Адмысловыя параметры генератара далін"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Генератар мапы: адладка"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Назва генератара мапы"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "Максімальная адлегласць генерацыі блокаў"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Максімальная адлегласць адпраўлення блокаў"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Максімальная колькасць вадкасці, якая апрацоўваецца за крок."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "Максімальная колькасць дадатковых блокаў clearobjects"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "Максімальная колькасць пакункаў за ітэрацыю"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
-msgstr ""
+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, калі гульня прыпыненая."
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "Максімальная колькасць прымусова загружаемых блокаў"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
+msgstr "Максімальная шырыня панэлі хуткага доступу"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+#, fuzzy
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
+"Максімальная ўстойлівасць вадкасці. Кантралюе запавольванне\n"
+"пры паступленні вадкасці з высокай хуткасцю."
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that can be queued for loading."
+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 ((# кліентаў + max_users) * per_client / 4)"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr "Максімальная колькасць блокаў, што можна дадаць у чаргу загрузкі."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Максімальная колькасць блокаў, што можна дадаць у чаргу генерацыі.\n"
+"Пакінце пустым для аўтаматычнага выбару неабходнага значэння."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Максімальная колькасць блокаў у чарзе на загрузку з файла.\n"
+"Пакінце пустым для аўтаматычнага выбару неабходнага значэння."
#: src/settings_translation_file.cpp
-msgid "Maximum number of forceloaded mapblocks."
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr "Максімальная колькасць прымусова загружаемых блокаў мапы."
+
+#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
+"Максімальная колькасць блокаў мапы для кліента, якія застануцца ў памяці.\n"
+"Значэнне -1 для неабмежаванай колькасці."
#: src/settings_translation_file.cpp
msgid ""
@@ -3180,126 +5823,212 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
+"Максімальная колькасць пакункаў, што адпраўляюцца за крок адпраўлення.\n"
+"Калі ў вас маруднае злучэнне, паспрабуйце паменшыць, але не памяншайце\n"
+"ніжэй за колькасць кліентаў памножаную на 2."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
-msgstr ""
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "Максімальная колькасць адначасова падлучаных гульцоў."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Максімальная колькасць адлюстроўваемых у размове паведамленняў"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr ""
+msgstr "Максімальная колькасць статычна захаваных аб'ектаў у блоку."
#: src/settings_translation_file.cpp
msgid "Maximum objects per block"
-msgstr ""
+msgstr "Максімальная колькасць аб'ектаў у блоку"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
+"Максімальная частка бягучага акна, што будзе выкарыстоўвацца для панэлі "
+"хуткага доступу.\n"
+"Карысна, калі ёсць што-небудзь, што будзе паказвацца справа ці злева ад "
+"панэлі."
#: src/settings_translation_file.cpp
msgid "Maximum simultaneous block sends per client"
-msgstr ""
+msgstr "Максімальная колькасць адначасова адпраўляемых блокаў на кліента"
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
-msgstr ""
+msgid "Maximum size of the out chat queue"
+msgstr "Максімальны памер чаргі размовы"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+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 users"
+#, fuzzy
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
+"Максімальны час у мілісекундах, які можа заняць спампоўванне файла\n"
+"(напрыклад спампоўванне мадыфікацыі)."
#: src/settings_translation_file.cpp
-msgid "Menus"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Максімальная колькасць карыстальнікаў"
+
+#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "Кэш сетак"
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "Паведамленне дня"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "Паведамленне, якое паказваецца для гульцоў, што падлучаюцца."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
+msgstr "Метад падсвятлення абранага аб'екта."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr ""
+msgstr "Мінімапа"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "Клавіша мінімапы"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr ""
+msgstr "Вышыня сканавання мінімапы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "3D-шум, што вызначае колькасць падзямелляў на кавалку мапы."
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Мінімальны памер тэкстуры"
+
+#: src/settings_translation_file.cpp
msgid "Mipmapping"
-msgstr ""
+msgstr "MIP-тэкстураванне"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Прафіліроўшчык"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Security"
+msgstr "Бяспека"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr "Каналы мадыфікацый"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Modifies the size of the HUD elements."
+msgstr "Змяняе памер элеметаў панэлі HUD."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "Шлях да монашырыннага шрыфту"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr ""
+msgstr "Памер монашырыннага шрыфту"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Monospace font size divisible by"
+msgstr "Памер монашырыннага шрыфту"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Шум вышыні гор"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Шум гор"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Шум вышыні гор"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Нулявы ўзровень гары"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr ""
+msgstr "Адчувальнасць мышы"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr ""
+msgstr "Множнік адчувальнасці мышы."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Шум бруду"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Множнік калыхання пры падзенні.\n"
+"Напрыклад: 0 — няма, 1.0 — звычайнае, 2.0 — падвойнае."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "Клавіша выключэння гуку"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Выключыць гук"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
+"Назва генератара мапы, што будзе выкарыстоўвацца для стварэння новага "
+"свету.\n"
+"Гэта можна змяніць пры стварэнні свету ў галоўным меню.\n"
+"Цяперашнія вельмі нестабільныя генератары:\n"
+"- Неабавясковыя плаваючыя выспы 7 (звычайна адключаны)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3307,178 +6036,283 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"Імя гульца.\n"
+"Падча запуску сервера, кліенты, што падлучаюцца з гэтым імем будуць "
+"адміністратарамі.\n"
+"Гэта можна перавызначыць у галоўным меню перад запускам."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
-msgstr ""
+msgstr "Назва сервера, што будзе паказвацца пры падлучэнні і ў спісе сервераў."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr ""
+#, fuzzy
+msgid "Near plane"
+msgstr "Блізкая плоскасць адсячэння"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"Сеткавы порт для праслухоўвання (UDP).\n"
+"Гэтае значэнне можна перавызначыць у галоўным меню падчас запуску."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Сетка"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "Новыя карыстальнікі мусяц ўвесці гэты пароль."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr ""
+msgstr "Рух скрозь сцены"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr ""
+msgstr "Клавіша руху скрозь сцены"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Падсвятленне вузла"
#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr ""
+msgstr "Падсвятленне блокаў"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "Інтэрвал абнаўлення блокаў"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "Шумы"
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
+msgstr "Колькасць узнікаючых патокаў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"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"
+"УВАГА: Цяпер можа ўзнікаць мноства хібаў, калі «num_emerge_threads» больш за "
+"1.\n"
+"Строга рэкамендуецца ўстанавіць гэтае значэнне ў 1, пакуль гэта папярэджанне "
+"не знікне.\n"
+"Значэнне 0:\n"
+"- аўтаматычны выбар. Колькасць узнікаючых патокаў будзе вызначацца\n"
+"як «колькасць працэсараў - 2» з ніжняй мяжой у 1.\n"
+"Любое іншае значэнне:\n"
+"- вызначае колькасць узнікаючых патокаў з ніжняй мяжой у 1.\n"
+"УВАГА: Майце на ўвазе, што павелічэнне колькасці патокаў павялічвае\n"
+"хуткасць рухавіка генератара мапы, але можа ўплываць на прадукцыйнасць "
+"гульні,\n"
+"замінаючы іншым працэсам, асабліва адзіночнай гульні і (альбо) запуску коду "
+"Lua у\n"
+"'On_generated. Для большасці карыстальнікаў найлепшым значэннем можа быць 1."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"Колькасць дадатковых блокаў, што могуць адначасова загружацца загадам /"
+"clearobjects.\n"
+"Гэта кампраміс паміж дадатковымі выдаткамі на транзакцыю sqlite\n"
+"і спажываннем памяці (4096 = 100 МБ, як правіла)."
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "Непразрыстыя вадкасці"
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"Адкрыць меню паўзы калі акно страціла фокус. Не будзе працаваць калі якое-"
+"небудзь меню ўжо адкрыта."
#: src/settings_translation_file.cpp
-msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"Шлях да каталога з шэйдэрамі. Калі не зададзены, то будзе выкарыстоўвацца "
+"прадвызначаны шлях."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
-msgstr ""
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "Шлях да каталога тэкстур. Усе тэкстуры ў першую чаргу шукаюцца тут."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr ""
+msgid "Pause on lost window focus"
+msgstr "Паўза пры страце фокусу"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr ""
+#, fuzzy
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Абмежаванне чэргаў на генерацыю"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr ""
+msgid "Physics"
+msgstr "Фізіка"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+msgid "Pitch move key"
+msgstr "Клавіша нахілення руху"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Pitch move mode"
+msgstr "Рэжым нахілення руху"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+#, fuzzy
+msgid "Place key"
+msgstr "Клавіша палёту"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr ""
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "Інтэрвал паўторнай пстрычкі правай кнопкі мышы"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"Гулец можа лётаць без ўплыву дзеяння сілы цяжару.\n"
+"Неабходны прывілей «noclip» на серверы."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr ""
+msgid "Player transfer distance"
+msgstr "Дыстанцыя перадачы даных гульца"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "Гулец супраць гульца"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Білінейная фільтрацыя"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"Порт для злучэння (UDP).\n"
+"Майце на ўвазе, што поле порта ў галоўным меню пераазначае гэтую наладу."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Забараняць мадыфікацыям выконваць небяспечныя дзеянні кшталту запуску "
+"кансольных загадаў."
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"Друкаваць даныя прафілявання рухавіка праз вызначаныя інтэрвалы часу (у "
+"секундах).\n"
+"0 для адключэння. Карысна для распрацоўшчыкаў."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "Прывілеі, якія маюць гульцы з basic_privs"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Прафіліроўшчык"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
+msgstr "Клавіша пераключэння прафіліроўшчыка"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3487,107 +6321,196 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"Радыус зоны аблокаў складаецца з 64 квадратаў з блокаў.\n"
+"Значэнне вышэй 26 прывядзе да рэзкіх зрэзаў вуглоў вобласці аблокаў."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Падымае мясцовасць, каб зрабіць поймы ўздоўж рэк."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "Выпадковы ўвод"
#: src/settings_translation_file.cpp
msgid "Range select key"
-msgstr ""
+msgstr "Клавіша выбару дыяпазону бачнасці"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Надаўнія паведамленні размовы"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Regular font path"
+msgstr "Шлях да справаздач"
#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "Адлеглы медыясервер"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "Адлеглы порт"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
+"Выдаляе коды колераў з уваходных паведамленняў размовы\n"
+"Выкарыстоўвайце, каб забараніць гульцам ужываць колеры ў сваіх паведамленнях"
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "Замяняе прадвызначанае галоўнае меню на карыстальніцкае."
#: src/settings_translation_file.cpp
msgid "Report path"
+msgstr "Шлях да справаздач"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
msgstr ""
+"Абмяжоўвае доступ да пэўных функцый з боку кліента на серверах.\n"
+"Спалучыце адзнакі байтаў ніжэй, каб абмежаваць функцыі, альбо ўвядзіце 0, "
+"каб нічога не абмяжоўваць:\n"
+"LOAD_CLIENT_MODS: 1 (выключыць загрузку карыстальніцкіх мадыфікацый)\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"
+msgstr "Шум распаўсюджвання горных хрыбтоў"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Шум хрыбтоў"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Шум падводных хрыбтоў"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Памер шуму падводных хрыбтоў"
#: src/settings_translation_file.cpp
msgid "Right key"
-msgstr ""
+msgstr "Клавіша ўправа"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr ""
+msgid "River channel depth"
+msgstr "Глыбіня рэчышча"
#: src/settings_translation_file.cpp
-msgid "River Depth"
-msgstr ""
+msgid "River channel width"
+msgstr "Шырыня рэчышча"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr ""
+msgid "River depth"
+msgstr "Глыбіня рэк"
#: src/settings_translation_file.cpp
-msgid "River Size"
-msgstr ""
+msgid "River noise"
+msgstr "Шум рэк"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "River size"
+msgstr "Памер рэк"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Шырыня поймы ракі"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
-msgstr ""
+msgstr "Запіс аднаўлення"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Памер шуму пагоркаў"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Шум распаўсюджвання пагоркаў"
#: src/settings_translation_file.cpp
msgid "Round minimap"
-msgstr ""
+msgstr "Круглая мінімапа"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Бяспечнае капанне і размяшчэнне блокаў"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Пясчаныя пляжы з'яўляюцца, калі np_beach перавышае гэта значэнне."
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr ""
+msgstr "Захоўваць мапу, атрыманую ад кліента, на дыск."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Аўтаматычна захоўваць памер акна пры змене."
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "Захаванне мапы, атрыманай з сервера"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
+"Маштабаваць графічны інтэрфейс да вызначанага значэння.\n"
+"Выкарыстоўваецца фільтр бліжэйшых суседзяў са згладжваннем.\n"
+"Гэта згладзіць некаторыя вострыя вуглы і змяшае пікселі\n"
+"пры маштабаванні ўніз за кошт размыцця некаторых крайніх пікселяў,\n"
+"калі выява маштабуецца не да цэлых памераў."
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Экран:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "Вышыня экрана"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr ""
+msgid "Screen width"
+msgstr "Шырыня экрана"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "Каталог здымкаў экрана"
#: src/settings_translation_file.cpp
msgid "Screenshot format"
-msgstr ""
+msgstr "Фармат здымкаў экрана"
#: src/settings_translation_file.cpp
msgid "Screenshot quality"
-msgstr ""
+msgstr "Якасць здымкаў экрана"
#: src/settings_translation_file.cpp
msgid ""
@@ -3595,141 +6518,395 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"Якасць здымкаў экрана. Выкарыстоўваецца толькі для фармату JPEG.\n"
+"1 азначае найгоршую якасць, а 100 — найлепшую. 0 - прадвызначаная якасць."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr ""
+#, fuzzy
+msgid "Screenshots"
+msgstr "Здымак экрана"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr "Шум марскога дна"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Другі з чатырох 2D-шумоў, што разам вызначаюць межы вышыні пагоркаў/гор."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Другі з двух 3D-шумоў, што разам вызначаюць тунэлі."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Глядзіце https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "Колер рамкі вобласці вылучэння (R,G,B)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "Колер вобласці вылучэння"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr ""
+msgstr "Шырыня вобласці вылучэння"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Выбірае адзін з 18 тыпаў фракталаў.\n"
+"1 = 4D-«круглае» мноства Мандэльброта.\n"
+"2 = 4D-«круглае» мноства Жулія.\n"
+"3 = 4D-«квадратнае» мноства Мандэльброта.\n"
+"4 = 4D-«квадратнае» мноства Жулія.\n"
+"5 = 4D-мноства Мандэльброта «Кузэна Мэндзі».\n"
+"6 = 4D-мноства Жулія «Кузэна Мэндзі».\n"
+"7 = 4D-мноства Мандэльброта «Варыяцыя».\n"
+"8 = 4D-мноства Жулія «Варыяцыя».\n"
+"9 = 3D-мноства Мандэльброта «Мандэльброт/Мандэльбар».\n"
+"10 = 3D-мноства Жулія «Мандэльброт/Мандэльбар».\n"
+"11 = 3D-мноства Мандэльброта «Калядная яліна».\n"
+"12 = 3D-мноства Жулія «Калядная яліна».\n"
+"13 = 3D-мноства Мандэльброта «Мандэльбульб».\n"
+"14 = 3D-мноства Жулія «Мандэльбульб».\n"
+"15 = 3D-мноства Мандэльброта «Кузэн Мандэльбульб».\n"
+"16 = 3D-мноства Жулія «Кузэн Мандэльбульб».\n"
+"17 = 4D-мноства Мандэльброта «Мандэльбульб».\n"
+"18 = 4D-мноства Жулія «Мандэльбульб»."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL сервера"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr ""
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Назва сервера"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Апісанне сервера"
#: src/settings_translation_file.cpp
msgid "Server URL"
-msgstr ""
+msgstr "URL сервера"
#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr ""
+msgstr "Адрас сервера"
#: src/settings_translation_file.cpp
msgid "Server description"
-msgstr ""
+msgstr "Апісанне сервера"
#: src/settings_translation_file.cpp
msgid "Server name"
-msgstr ""
+msgstr "Назва сервера"
#: src/settings_translation_file.cpp
msgid "Server port"
-msgstr ""
+msgstr "Порт сервера"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Адсячэнне аклюзіі на баку сервера"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Порт сервера"
#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr ""
+msgstr "URL спіса сервераў"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "URL спіса сервераў"
#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr ""
+msgstr "Файл спіса сервераў"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"Прызначыць мову. Пакіньце пустым, каб выкарыстаць мову сістэмы.\n"
+"Пасля змены мовы патрэбна перазапусціць гульню."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Вызначае максімальную колькасць сімвалаў у паведамленнях, што адпраўляюцца "
+"кліентамі ў размову."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Значэнне \"true\" уключае калыханне лісця.\n"
+"Патрабуюцца ўключаныя шэйдэры."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving leaves.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Значэнне \"true\" уключае калыханне лісця.\n"
+"Патрабуюцца ўключаныя шэйдэры."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"Значэнне \"true\" уключае хваляванне вады.\n"
+"Патрабуюцца ўключаныя шэйдэры."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
+"Значэнне \"true\" уключае калыханне раслін.\n"
+"Патрабуюцца ўключаныя шэйдэры."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Шлях да шэйдэраў"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"Шэйдэры дазваляюць выкарыстоўваць дадатковыя візуальныя эфекты і могуць "
+"павялічыць\n"
+"прадукцыйнасць на некаторых відэакартах.\n"
+"Працуюць толькі з OpenGL."
#: src/settings_translation_file.cpp
-msgid "Shape of the minimap. Enabled = round, disabled = square."
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Якасць здымкаў экрана"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Show debug info"
+msgid "Shadow map texture in 32 bits"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow map texture size"
+msgstr "Мінімальны памер тэкстуры"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "Зрух цені шрыфту. Калі 0, то цень не будзе паказвацца."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "Форма мінімапы. Уключана — круг, выключана — квадрат."
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr "Паказваць адладачную інфармацыю"
+
+#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
+msgstr "Паказваць вобласць вылучэння"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Прызначыць мову. Пакіньце пустым, каб выкарыстаць мову сістэмы.\n"
+"Пасля змены мовы патрэбна перазапусціць гульню."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Shutdown message"
+msgstr "Паведамленне аб выключэнні"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
+"Памер кавалкаў мапы, ствараемых генератарам мапы, падаецца ў блоках мапы (16 "
+"блокаў).\n"
+"УВАГА!: Ад змены гэтага значэння няма амаль ніякай карысці, а прызначэнне\n"
+"яму больш 5 можа выклікаць шкоду.\n"
+"З павелічэннем гэтага значэння павялічыцца шчыльнасць размяшчэння пячор і "
+"падзямелляў.\n"
+"Змяняць гэтае значэнне патрэбна толькі ў асаблівых сітуацыях, а ў звычайных "
+"рэкамендуецца пакінуць як ёсць."
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
+"Памер кэшу блокаў у генератары сетак. Павелічэнне гэтага значэння\n"
+"павялічыць адсотак пераносу ў кэш, прадухіляючы капіяванне даных\n"
+"з галоўнага патоку гульні, тым самым памяншаючы дрыжанне."
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Sky Body Orbit Tilt"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Smooth lighting"
+msgid "Slice w"
+msgstr "Частка W"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Нахіл і запаўненне выкарыстоўваюцца разам для змены вышыні."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr "Невялікія варыацыі вільготнасці для змешвання біёмаў на межах."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr "Невялікія варыацыі тэмпературы для змешвання біёмаў на межах."
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr "Мяккае асвятленне"
+
+#: src/settings_translation_file.cpp
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"Згладжваць камеру пры яе панарамным руху. Таксама завецца як згладжванне "
+"выгляду або мышы.\n"
+"Карысна для запісу відэа."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
msgstr ""
+"Плаўнае паварочванне камеры ў кінематаграфічным рэжыме. 0 для выключэння."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "Плаўнае паварочванне камеры. 0 для выключэння."
#: src/settings_translation_file.cpp
msgid "Sneak key"
-msgstr ""
+msgstr "Клавіша \"красціся\""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Хуткасць хады ўпотай"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Хуткасць крадкоў у вузлах за секунду."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "Празрыстасць цені шрыфту"
#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr ""
+msgstr "Гук"
#: src/settings_translation_file.cpp
msgid ""
@@ -3738,34 +6915,120 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
+"Вызначае URL, з якога кліент будзе спампоўваць медыяфайлы замест "
+"выкарыстання UDP.\n"
+"$filename мусіць быць даступным па адрасе з $remote_media$filename праз "
+"cURL\n"
+"(відавочна, што remote_media мусіць заканчвацца скосам).\n"
+"Недасяжныя файлы будуць спампоўвацца звычайным чынам."
#: src/settings_translation_file.cpp
-msgid "Static spawnpoint"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+#, 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"
+"Стандартнае адхіленне сярэдняга ўздыму па Гаўсу."
#: src/settings_translation_file.cpp
-msgid "Strict protocol checking"
+msgid "Static spawnpoint"
+msgstr "Статычная кропка адраджэння"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "Шум крутасці"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Крок шуму памеру гары"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Крок шуму распаўсюджвання гор"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Strength of 3D mode parallax."
+msgstr "Моц паралакса."
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strict protocol checking"
+msgstr "Строгая праверка пратакола"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Прыбіраць коды колераў"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
-msgstr ""
+msgstr "Сінхронны SQLite"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
-msgstr ""
+msgid "Temperature variation for biomes."
+msgstr "Варыяцыя тэмпературы ў біёмах."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Налады"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Альтэрнатыўны шум рэльефу"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Базавы шум рэльефу"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Вышыня рэльефу"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Шум высокага рэльефу"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Шум рэльефу"
#: src/settings_translation_file.cpp
msgid ""
@@ -3773,6 +7036,9 @@ msgid ""
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Парог шуму рэльефу пагоркаў.\n"
+"Рэгулюе прапорцыю плошчы свету, запоўненую пагоркамі.\n"
+"Наладжвайце ў бок 0.0 для павелічэння прапорцыю."
#: src/settings_translation_file.cpp
msgid ""
@@ -3780,50 +7046,140 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Парог шуму рэльефу азёр.\n"
+"Рэгулюе прапорцыю плошчы свету, запоўненую азёрамі.\n"
+"Наладжвайце ў бок 0.0 для павелічэння прапорцыю."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Сталы шум рэльефу"
#: src/settings_translation_file.cpp
msgid "Texture path"
+msgstr "Шлях да тэкстур"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"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"
+"рэжым лічыцца эксперыментальным і можа працаваць неналежным чынам."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "URL рэпазіторыя"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "The dead zone of the joystick"
+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 "Глыбіня глебы альбо іншага запаўняльніка."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"Шлях да файла адносна каталога свету, у якім будуць захоўвацца профілі."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The identifier of the joystick to use"
+msgstr "Ідэнтыфікатар джойсціка для выкарыстання"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
+"Адлегласць у пікселях, з якой пачынаецца ўзаемадзеянне з сэнсарных экранам."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr ""
+msgstr "Сеткавы інтэрфейс, які праслухоўвае сервер."
#: src/settings_translation_file.cpp
msgid ""
"The privileges that new users automatically get.\n"
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
+"Прывілеі, якія аўтаматычна атрымліваюць новыя карыстальнікі.\n"
+"Глядзіце поўны спіс прывілеяў у /privs."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+#, fuzzy
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
msgstr ""
+"Радыус аб'ёму блокаў вакол кожнага гульца, у якім дзейнічаюць\n"
+"актыўныя блокі, вызначаны ў блоках мапы (16 блокаў).\n"
+"У актыўных блоках загружаюцца аб'екты і працуе ABM.\n"
+"Таксама гэта мінімальны дыяпазон, у якім апрацоўваюцца актыўныя аб'екты "
+"(жывыя істоты).\n"
+"Неабходна наладжваць разам з active_object_range."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
+"Рухавік адмалёўкі для Irrlicht.\n"
+"Пасля змены гэтага параметра спатрэбіцца перазупуск.\n"
+"Заўвага: на Андроідзе, калі не ведаеце што выбраць, ужывайце OGLES1, інакш "
+"дадатак можа не запусціцца.\n"
+"На іншых платформах рэкамендуецца OpenGL, бо цяпер гэта адзіны драйвер\n"
+"з падтрымкай шэйдэраў."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr "Адчувальнасць восяў джойсціка пры азіранні."
#: src/settings_translation_file.cpp
msgid ""
@@ -3832,6 +7188,11 @@ 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 ""
@@ -3839,44 +7200,76 @@ 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 ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
+"Час у секундах паміж паўторамі падзей пры ўтрыманні камбінацыі кнопак "
+"джойсціка."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
+"Час у секундах паміж паўторамі падзей пры ўтрыманні правай кнопкі мышы."
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr "Тып джойсціка"
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
+"Вертыкальная адлегласць, на якой тэмпература падае на 20, калі\n"
+"«altitude_chill» уключаны. Таксама вертыкальная адлегласць,\n"
+"на якой вільготнасць падае на 10, калі «altitude_dry» уключаны."
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Трэці з чатырох 2D-шумоў, якія разам вызначаюць межы вышыні пагоркаў/гор."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
+"Час існавання выкінутай рэчы ў секундах.\n"
+"Прызначце −1 для выключэння гэтай асаблівасці."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "Час дня пры запуску новага свету ў мілігадзінах (0-23999)."
#: src/settings_translation_file.cpp
msgid "Time send interval"
-msgstr ""
+msgstr "Інтэрвал адпраўлення часу"
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Хуткасць часу"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
-msgstr ""
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr "Таймаут выдалення невыкарыстоўваемых даных з памяці кліента."
#: src/settings_translation_file.cpp
msgid ""
@@ -3885,183 +7278,331 @@ 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"
-msgstr ""
+msgstr "Клавіша пераключэння рэжыму камеры"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
+msgstr "Затрымка падказкі"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Парог сэнсарнага экрана"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Парог сэнсарнага экрана"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Trilinear filtering"
+msgid "Transparency Sorting Distance"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Шум дрэў"
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr "Трылінейная фільтрацыя"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"True = 256\n"
+"False = 128\n"
+"Карысна для згладжвання мінімапы на павольных машынах."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "Давераныя мадыфікацыі"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "URL спіса сервераў, які паказваецца ва ўкладцы сумеснай гульні."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Субдыскрэтызацыя"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
+"Субдыскрэтызацыя падобная на выкарыстанне нізкай раздзяляльнай здольнасці "
+"экрана,\n"
+"але ўжываецца толькі да гульнявога свету, не кранаючы інтэрфейс.\n"
+"Гэта значна павялічвае працаздольнасць за кошт вываду менш падрабязнай "
+"выявы.\n"
+"Высокія значэнні прыводзяць да менш дэталізаванай выявы."
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
-msgstr ""
+msgstr "Неабмежаваная дыстанцыя перадачы даных гульца"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr ""
+msgstr "Выгрузіць невыкарыстоўваемыя даныя сервера"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Верхні ліміт Y для падзямелляў."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Upper Y limit of floatlands."
+msgstr "Верхні ліміт Y для падзямелляў."
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr ""
+msgstr "Аб'ёмныя аблокі замест плоскіх."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+msgstr "Выкарыстоўваць анімацыю аблокаў для фона галоўнага меню."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
msgstr ""
+"Выкарыстоўваць анізатропную фільтрацыю пры праглядзе тэкстуры пад вуглом."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
-msgstr ""
+msgstr "Выкарыстоўваць білінейную фільтрацыю пры маштабаванні тэкстур."
#: src/settings_translation_file.cpp
-msgid "Use key"
+#, fuzzy
+msgid ""
+"Use mipmapping 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"
+"пакета тэкстур з высокай раздзяляльнай здольнасцю.\n"
+"Гама-карэкцыя пры памяншэнні маштабу не падтрымліваецца."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
-msgstr ""
+msgstr "Выкарыстоўваць трылінейную фільтрацыю пры маштабаванні тэкстур."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
-msgstr ""
+msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
-msgstr ""
+msgid "VSync"
+msgstr "Вертыкальная сінхранізацыя"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr ""
+msgid "Valley depth"
+msgstr "Глыбіня далін"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
-msgstr ""
+msgid "Valley fill"
+msgstr "Запаўненне далін"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "Профіль даліны"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
+msgstr "Схіл далін"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr "Варыяцыя глыбіні запаўняльніка біёму."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Варыяцыя максімальнай вышыні гор (у блоках)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+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 "Valleys C Flags"
+msgid "Varies depth of biome surface nodes."
+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"
+"Вызначае значэнне «persistence» для шумоў terrain_base і terrain_alt."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Кіруе крутасцю гор."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Хуткасць вертыкальнага караскання ў вузлах за секунду."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
-msgstr ""
+msgstr "Вертыкальная сінхранізацыя."
#: src/settings_translation_file.cpp
msgid "Video driver"
-msgstr ""
+msgstr "Відэадрайвер"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "Каэфіцыент калыхання прагляду"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
+msgid "View distance in nodes."
+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 "Клавіша прыбліжэння"
#: src/settings_translation_file.cpp
msgid "Viewing range"
-msgstr ""
+msgstr "Дыяпазон бачнасці"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Virtual joystick triggers Aux1 button"
+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."
msgstr ""
+"Уключае паралакснае аклюзіўнае тэкстураванне.\n"
+"Патрабуюцца ўключаныя шэйдэры."
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Каардыната W згенераванай 3D-часткі 4D-фрактала.\n"
+"Вызначае, якая 3D-частка 4D-формы згенеруецца.\n"
+"Змяняе форму фрактала.\n"
+"Не ўплывае на 3D-фракталы.\n"
+"Дыяпазон прыкладна ад −2 да 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Хуткасць хады і палёту ў вузлах за секунду."
#: src/settings_translation_file.cpp
msgid "Walking speed"
-msgstr ""
+msgstr "Хуткасць хады"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr ""
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+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"
-msgstr ""
+msgstr "Калыханне блокаў"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
-msgstr ""
+msgstr "Калыханне лісця"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Калыханне вадкасцяў"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Вышыня водных хваляў"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Хуткасць водных хваляў"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "Даўжыня водных хваляў"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr ""
+msgid "Waving plants"
+msgstr "Калыханне раслін"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Weblink color"
+msgstr "Колер вобласці вылучэння"
#: src/settings_translation_file.cpp
msgid ""
@@ -4069,6 +7610,9 @@ 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 усе выявы графічнага інтэрфейсу павінны "
+"быць адфільтраваныя праграмна, але некаторыя выявы генеруюцца апаратна "
+"(напрыклад, рэндэрынг у тэкстуру для элементаў інвентару)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4077,100 +7621,700 @@ 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 уключаны, выявы капіююцца\n"
+"з апаратуры ў праграмнае асяроддзе для маштабавання.\n"
+"Калі не, то вярнуцца да старога метаду маштабавання для відэадрайвераў,\n"
+"якія не падтрымліваюць перадачу тэкстур з апаратуры назад."
#: 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"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
+"Пры выкарыстанні білінейнага, трылінейнага або анізатропнага фільтра,\n"
+"тэкстуры малога памеру могуць быць расплывістыя, таму адбываецца\n"
+"аўтаматычнае маштабаванне іх з інтэрпаляцыяй па бліжэйшым суседзям,\n"
+"каб захаваць выразныя пікселі.\n"
+"Гэты параметр вызначае мінімальны памер для павялічаных тэкстур.\n"
+"Пры высокіх значэннях выглядае больш выразна, але патрабуе больш памяці.\n"
+"Рэкамендаванае значэнне - 2.\n"
+"Значэнне гэтага параметру вышэй за 1 можа не мець бачнага эфекту,\n"
+"калі не ўключаныя білінейная, трылінейная або анізатропная фільтрацыя.\n"
+"Таксама выкарыстоўваецца як памер тэкстуры базавага блока для\n"
+"сусветнага аўтамасштабавання тэкстур."
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag 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 ""
+"Ці павінна быць паміж блокамі мапы дэсінхранізацыя анімацыі тэкстур блокаў."
#: 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 ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
+"Ці пытацца кліентаў аб перазлучэнні пасля крушэння (Lua).\n"
+"Вызначце, калі ваш сервер наладжаны на аўтаматычны перазапуск."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
-msgstr ""
+msgstr "Ці размяшчаць туманы па-за зонай бачнасці."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr ""
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr "Паказваць адладачную інфармацыю (тое ж, што і F5)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "Шырыня кампанента пачатковага памеру акна."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width of the selection box lines around nodes."
+msgstr "Шырыня межаў вылучэння блокаў."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"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 ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
+"Каталог свету (усё ў свеце захоўваецца тут).\n"
+"Не патрабуецца, калі запускаецца з галоўнага меню."
#: src/settings_translation_file.cpp
-msgid "Y of flat ground."
-msgstr ""
+msgid "World start time"
+msgstr "Пачатковы час свету"
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"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 "cURL file download timeout"
+msgid "World-aligned textures mode"
+msgstr "Рэжым выроўнівання тэкстур па свеце"
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr "Каардыната Y плоскай паверхні."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
+"Y нулявога ўзроўня градыента шчыльнасці гор. Выкарыстоўваецца для "
+"вертыкальнага зруху гор."
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "Y of upper limit of large caves."
+msgstr "Y верхняга ліміту шырокіх пячор."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Y-адлегласць, на якой пячора пашырыцца да поўнага памеру."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "Y-level of average terrain surface."
+msgstr "Y-узровень сярэдняй паверхні рэльефу."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Y-узровень верхняга ліміту пячоры."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Y-узровень высокага рэльефу, што стварае горы."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Y-узровень нізкага рэльефу і марскога дна."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Y-узровень марскога дна."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "Таймаўт спампоўвання файла па cURL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
+msgstr "Таймаўт cURL"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "Ліміт адначасовых злучэнняў cURL"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Творчы рэжым: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Пашкоджанні: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = паралаксная аклюзія са звесткамі аб нахіле (хутка).\n"
+#~ "1 = рэльефнае тэкстураванне (павольней, але якасней)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Адрас / Порт"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Наладка гама-кадавання для светлавых табліц. Высокія значэнні — больш "
+#~ "ярчэйшыя.\n"
+#~ "Гэты параметр прызначаны толькі для кліента і ігнаруецца серверам."
+
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr "Кіруе звужэннем астравоў горнага тыпу ніжэй сярэдняй кропкі."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Вы ўпэўненыя, што хочаце скінуць свет адзіночнай гульні?"
+
+#~ msgid "Back"
+#~ msgstr "Назад"
+
+#~ msgid "Basic"
+#~ msgstr "Базавыя"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Біты на піксель (глыбіня колеру) у поўнаэкранным рэжыме."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Тэкстураванне маскамі"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Рэльефнае тэкстураванне"
+
+#~ msgid "Center of light curve mid-boost."
+#~ 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"
+#~ "- full: выбар свету для адзіночнай альбо сеткавай гульні, асобны спіс "
+#~ "чужых сервераў.\n"
+#~ "- simple: адзін свет для адзіночнай гульні ў меню, дзе спіс чужых "
+#~ "сервераў; можа быць карысна для невелічкіх экранаў.\n"
+#~ "Прадвызначана: simple для Android, full для ўсіх астатніх."
+
+#~ msgid "Config mods"
+#~ msgstr "Налады мадыфікацый"
+
+#~ msgid "Configure"
+#~ msgstr "Наладзіць"
+
+#~ msgid "Connect"
+#~ msgstr "Злучыцца"
+
+#~ msgid "Content Store"
+#~ msgstr "Крама дадаткаў"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Кантралюе хуткасць сцякання вадкасці."
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Кіруе шчыльнасцю горнага рэльефу лятучых астравоў.\n"
+#~ "Гэты зрух дадаецца да значэння 'np_mountain'."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Кіруе шырынёй тунэляў. Меншае значэнне стварае больш шырокія тунэлі."
+
+#~ msgid "Credits"
+#~ msgstr "Падзякі"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Колер перакрыжавання (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Пашкоджанні ўключаныя"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "Рэзкасць цемры"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Прадвызначаны таймаўт для cURL, зададзены ў мілісекундах.\n"
+#~ "Уплывае толькі пры кампіляцыі з cURL."
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Вызначае вобласці гладкага рэльефу лятучых астравоў.\n"
+#~ "Гладкая паверхня з'яўляецца, калі шум больш нуля."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Вызначае крок дыскрэтызацыі тэкстуры.\n"
+#~ "Больш высокае значэнне прыводзіць да больш гладкіх мапаў нармаляў."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Прыбраць з упадабанага"
+
+#~ msgid ""
+#~ "Deprecated, define and locate cave liquids using biome definitions "
+#~ "instead.\n"
+#~ "Y of upper limit of lava in large caves."
+#~ msgstr ""
+#~ "Састарэлы. Вызначае і размяшчае пячорныя вадкасці з выкарыстаннем "
+#~ "азначэнняў біёму.\n"
+#~ "Y верхняй мяжы лавы ў вялікіх пячорах."
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Спампоўвайце гульні кшталту «Minetest Game», з minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Спампаваць з minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Спампоўванне і ўсталёўка $1. Калі ласка, пачакайце…"
+
+#~ msgid "Enable VBO"
+#~ msgstr "Уключыць VBO"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Уключыць пацвярджэнне рэгістрацыі"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Уключае рэльефнае тэкстураванне. Мапы нармаляў мусяць быць пакункам "
+#~ "тэкстур ці створанымі аўтаматычна.\n"
+#~ "Патрабуюцца ўключаныя шэйдэры."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Уключае кінематаграфічнае танальнае адлюстраванне"
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "Уключае генерацыю мапаў нармаляў лётма (эфект Emboss).\n"
+#~ "Патрабуецца рэльефнае тэкстураванне."
+
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Уключае паралакснае аклюзіўнае тэкстураванне.\n"
+#~ "Патрабуюцца ўключаныя шэйдэры."
+
+#~ msgid "Enter "
+#~ msgstr "Увод "
+
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Эксперыментальны параметр, які можа прывесці да візуальных прагалаў\n"
+#~ "паміж блокамі пры значэнні большым за 0."
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS у меню паўзы"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "Цень рэзервовага шрыфту"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Празрыстасць цені рэзервовага шрыфту"
+
+#~ msgid "Fallback font size"
+#~ msgstr "Памер рэзервовага шрыфту"
+
+#~ msgid "Filtering"
+#~ msgstr "Фільтрацыя"
+
+#~ msgid "Floatland base height noise"
+#~ msgstr "Шум базавай вышыні лятучых астравоў"
+
+#~ msgid "Floatland mountain height"
+#~ msgstr "Вышыня гор на лятучых астравоў"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Празрыстасць цені шрыфту (ад 0 да 255)."
+
+#~ msgid "FreeType fonts"
+#~ msgstr "Шрыфты FreeType"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "Глыбіня колеру ў поўнаэкранным рэжыме (бітаў на піксель)"
+
+#~ msgid "Game"
+#~ msgstr "Гульня"
+
+#~ msgid "Gamma"
+#~ msgstr "Гама"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Генерацыя мапы нармаляў"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "Генерацыя мапы нармаляў"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "Каэфіцыент маштабавання HUD"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "Высокадакладны FPU"
+
+#~ msgid "IPv6 support."
+#~ msgstr "Падтрымка IPv6."
+
+#~ msgid ""
+#~ "If enabled together with fly mode, makes move directions relative to the "
+#~ "player's pitch."
+#~ msgstr ""
+#~ "Калі ўключана адначасова з рэжымам палёту, то вызначае напрамак руху "
+#~ "адносна кроку гульца."
+
+#~ msgid "In-Game"
+#~ msgstr "У гульні"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Усталёўка: файл: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Інструменты"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Прывязкі клавіш. (Калі меню сапсавана, выдаліце налады з minetest.conf)"
+
+#~ msgid "Lava depth"
+#~ msgstr "Глыбіня лавы"
+
+#~ msgid "Lightness sharpness"
+#~ msgstr "Рэзкасць паваротлівасці"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Абмежаванне чэргаў на дыску"
+
+#~ msgid "Main"
+#~ msgstr "Галоўнае меню"
+
+#~ msgid "Main menu style"
+#~ msgstr "Стыль галоўнага меню"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "Прымушае DirectX працаваць з LuaJIT. Выключыце, калі гэта выклікае "
+#~ "праблемы."
+
+#~ msgid ""
+#~ "Map generation attributes specific to Mapgen Carpathian.\n"
+#~ "Flags that are not enabled are not modified from the default.\n"
+#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ msgstr ""
+#~ "Атрыбуты генерацыі мапы для генератара мапы \"Карпаты\".\n"
+#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n"
+#~ "Атрыбуты, што пачынаюцца з \"no\", выкарыстоўваюцца для іх выключэння."
+
+#~ msgid ""
+#~ "Map generation attributes specific to Mapgen v5.\n"
+#~ "Flags that are not enabled are not modified from the default.\n"
+#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ msgstr ""
+#~ "Атрыбуты генерацыі мапы для генератара мапы 5.\n"
+#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n"
+#~ "Атрыбуты, што пачынаюцца з 'no' выкарыстоўваюцца для іх выключэння."
+
+#~ msgid ""
+#~ "Map generation attributes specific to Mapgen v7.\n"
+#~ "'ridges' enables the rivers.\n"
+#~ "Flags that are not enabled are not modified from the default.\n"
+#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ msgstr ""
+#~ "Атрыбуты генерацыі мапы для генератара мапы 7.\n"
+#~ "Параметр \"ridges\" (хрыбты) ўключае рэкі.\n"
+#~ "Нявызначаныя параметры прадвызначана не змяняюцца.\n"
+#~ "Параметры, што пачынаюцца з \"no\", выкарыстоўваюцца для выключэння."
+
+#~ msgid "Menus"
+#~ msgstr "Меню"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Мінімапа ў рэжыме радару, павелічэнне х2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Мінімапа ў рэжыме радару, павелічэнне х4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Мінімапа ў рэжыме паверхні, павелічэнне х2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Мінімапа ў рэжыме паверхні, павелічэнне х4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Імя / Пароль"
+
+#~ msgid "Name/Password"
+#~ msgstr "Імя/Пароль"
+
+#~ msgid "No"
+#~ msgstr "Не"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Дыскрэтызацыя мапы нармаляў"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Моц мапы нармаляў"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Колькасць ітэрацый паралакснай аклюзіі."
+
+#~ msgid "Ok"
+#~ msgstr "Добра"
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "Агульны зрух эфекту паралакснай аклюзіі. Звычайна маштаб/2."
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Агульны маштаб эфекту паралакснай аклюзіі."
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Паралаксная аклюзія"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Паралаксная аклюзія"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Зрух паралакснай аклюзіі"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Ітэрацыі паралакснай аклюзіі"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Рэжым паралакснай аклюзіі"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Маштаб паралакснай аклюзіі"
+
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Інтэнсіўнасць паралакснай аклюзіі"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Шлях да TrueTypeFont ці растравага шрыфту."
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Каталог для захоўвання здымкаў экрана."
+
+#~ msgid "Player name"
+#~ msgstr "Імя гульца"
+
+#~ msgid "Profiling"
+#~ msgstr "Прафіляванне"
+
+#~ msgid "Projecting dungeons"
+#~ msgstr "Праектаванне падзямелляў"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP уключаны"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Скінуць свет адзіночнай гульні"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Абраць файл пакунка:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Сервер / Адзіночная гульня"
+
+#~ msgid "Shadow limit"
+#~ msgstr "Ліміт ценяў"
+
+#, fuzzy
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr "Зрух цені шрыфту. Калі 0, то цень не будзе паказвацца."
+
+#~ msgid "Special"
+#~ msgstr "Адмысловая"
+
+#~ msgid "Special key"
+#~ msgstr "Адмысловая клавіша"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Пачаць адзіночную гульню"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Моц згенераваных мапаў нармаляў."
+
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "Моц сярэдняга ўздыму крывой святла."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Гэты шрыфт будзе выкарыстоўваецца для некаторых моў."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Для ўключэння шэйдэраў неабходна выкарыстоўваць OpenGL."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Кінематаграфічнасць"
+
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr ""
+#~ "Тыповая максімальная вышыня, вышэй і ніжэй сярэдняй кропкі гор лятучых "
+#~ "астравоў."
+
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Варыяцыя вышыні пагоркаў і глыбінь азёр на гладкай мясцовасці лятучых "
+#~ "астравоў."
+
+#~ msgid "Waving Water"
+#~ msgstr "Хваляванне вады"
+
+#~ msgid "Waving water"
+#~ msgstr "Хваляванне вады"
+
+#, 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 ""
+#~ "Выкарыстанне шрыфтоў FreeType. Падтрымка FreeType мусіць быць уключаная "
+#~ "падчас кампіляцыі."
+
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "Выступ падзямелляў па-над рэльефам."
+
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "Y верхняга ліміту лавы ў шырокіх пячорах."
+
+#~ msgid "Y-level of floatland midpoint and lake surface."
+#~ msgstr "Y-узровень сярэдняй кропкі і паверхні азёр лятучых астравоў."
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Y-узровень, да якога распаўсюджваюцца цені лятучых астравоў."
+
+#~ msgid "Yes"
+#~ msgstr "Так"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Вы хочаце першы раз увайсці на сервер з назвай «%s».\n"
+#~ "Калі вы працягнеце, то на серверы будзе створаны новы конт з вашамі "
+#~ "данымі.\n"
+#~ "Калі ласка, ўвядзіце пароль яшчэ раз і націсніце «Зарэгістравацца і "
+#~ "далучыцца», каб пацвердзіць стварэнне конта альбо \"Скасаваць\", каб "
+#~ "адмовіцца."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Вы загінулі"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/bg/minetest.po b/po/bg/minetest.po
new file mode 100644
index 000000000..ce95a8879
--- /dev/null
+++ b/po/bg/minetest.po
@@ -0,0 +1,6986 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-04-11 15:08+0000\n"
+"Last-Translator: 109247019824 <stoyan@gmx.com>\n"
+"Language-Team: Bulgarian <https://hosted.weblate.org/projects/minetest/"
+"minetest/bg/>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"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.12-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Изчистване на изходящата опашка на разговорите"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Празна команда."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Главно меню"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Недействителна команда: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Подадена команда: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Играчи на линия"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Играчи на линия: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Изходящата опашка на разговори е изпразнена."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Командата е забранена от сървъра."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Прераждане"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Умряхте"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Достъпни команди:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Достъпни команди: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Недостъпни команди: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Помощ за командите"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Въведете „.help <cmd>“ за повече информация или „.help all“ за списък с "
+"всички команди."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <команда>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Добре"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<няма достъпни>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Грешка в скрипт на Lua:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Възникна грешка:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Главно меню"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Повторно свързване"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Сървърът поиска повторно свързване:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Модификации"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Изданието на протокола не съвпада. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Сървърът налага издание $1 на протокола. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "Сървърът поддържа изданията на протокола между $1 и $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Поддържаме само издание $1 на протокола."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "Поддържаме само изданията на протокола между $1 и $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Отказ"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Зависимости:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Изключване всички"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Изкл. на пакета"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Включване всички"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Вкл. на пакета"
+
+#: 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 ""
+"Включването на модификацията „$1“ не е успешно, защото съдържа забранени "
+"символи. Разрешени са само символите [a-z0-9_]."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Още модификации"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Модификация:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Няма (незадължителни) зависимости"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Играта няма описание."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Няма задължителни зависимости"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Пакетът с модификации няма описание."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Няма незадължителни зависимости"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Незадължителни зависимости:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Запазване"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Свят:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "включен"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "„$1“ вече съществува. Да бъде ли презаписан?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "$1 и $2 зависимости ще бъдат инсталирани."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 от $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 се изтеглят,\n"
+"$2 изчакват"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 се изтеглят…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 задължителни зависимости не могат да бъдат намерени."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 ще бъдат инсталирани, а $2 зависимости ще бъдат пропуснати."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Всички пакети"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Вече инсталирано"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Главно меню"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Основна игра:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"Съдържанието от ContentDB не е налично, когато Minetest е компилиран без cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Изтегляне…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Грешка при изтеглянето на $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Игри"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Инсталиране"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Инсталиране $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Инсталиране на липсващи зависимости"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Инсталиране: Неподдържан вид на файл или повреден архив"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Модификации"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Пакетите не могат да бъдат получени"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Няма резултати"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Няма обновяване"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Не е намерено"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Презаписване"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Уверете се, че основната игра е правилна."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Изчакващи"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Пакети с текстури"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Премахване"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Обновяване"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Обновяване всички [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Вижте повече в браузъра"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Свят с името „$1“ вече съществува"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Допълнителен терен"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Застудяване във височина"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Засушаване във височина"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Смесване на биоми"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Биоми"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Големи пещери"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Пещери"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Създаване"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Декорации"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Внимание: Тестът за разработка е предназначен за разработчици."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Тъмници"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Равен терен"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Плаващи земни маси в небето"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Небесни острови (експериментално)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Създаване на нефрактален терен: Морета и подземен свят"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Хълмове"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Влажни реки"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Увеличава влажността около реките"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Инсталиране $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Езера"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Ниската влажност и горещините причиняват плитки или пресъхнали реки"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Генератор на карти"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Настройки на генератора"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Специфични за генератора настройки"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Планини"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Кален поток"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Мрежа от тунели и пещери"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Няма избрана игра"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Намалява топлината във височина"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Намалява влажността във височина"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Реки"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Реки на морското ниво"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Семе"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Плавен преход между биомите"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Структури, появяващи се върху терена (няма ефект върху дърветата и тревата в "
+"джунглата, създадени от v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Структури, появяващи се върху терена, обикновено дървета и растения"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Умерен климат, пустиня"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Умерен климат, пустиня, джунгла"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Умерен климат, пустиня, джунгла, тундра, тайга"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Ерозия на земната повърхност"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Трева в джунглата и дървета"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Промяна в дълбочината на реките"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Много големи пещери дълбоко под земята"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Име на света"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Няма инсталирани игри."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Сигурни ли сте, че искате да премахнете „$1“?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Премахване"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: грешка при премахване на „$1“"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: недействителен път „$1“"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Премахване на света „$1“?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Потвърж. на парола"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Име"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Парола"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Паролите не съвпадат!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Регистриране и вход"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Приемане"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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.conf, което ще "
+"отмени всяко преименуване."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(Настройката няма описание)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Двуизмерен шум"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "Главно меню"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Разглеждане"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Съдържание"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Съдържание"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Изключено"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Редактиране"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Включено"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr "Лакунарност"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Октави"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Отместване"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Persistence"
+msgstr "Устойчивост"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Въведете цяло число."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Въведете число."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "По подразбиране"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Мащаб"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Търсене"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Избор на папка"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Избор на файл"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Технически наименования"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Стойността трябва да е най-малко $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Стойността трябва да е най-много $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Разпределение по X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Разпределение по Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Разпределение по Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 "подразбирани"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (включено)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 модификации"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Грешка при инсталиране на $1 в $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+"Включете списъка на обществени сървъри и проверете връзката с интернет."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Относно"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Активни сътрудници"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Активен визуализатор:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Основни разработчици"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Папка с данни"
+
+#: builtin/mainmenu/tab_about.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_about.lua
+msgid "Previous Contributors"
+msgstr "Предишни сътрудници"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Предишни основни разработчици"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Преглед на съдържание онлайн"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Съдържание"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Изкл. на пакет с текстури"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Описание:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Инсталирани пакети:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Няма зависимости."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Пакетът е без описание"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Преименуване"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Премахване на пакет"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Вкл. на пакет с текстури"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Обявяване на сървъра"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Адрес за свързване"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Творчески режим"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Получаване на щети"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Създаване на игра"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Създаване на сървър"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Инсталиране на игри от ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Създаване"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Не е създаден или избран свят!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Започване на игра"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Порт"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Модификации"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Избор на свят:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Порт на сървъра"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Създаване на игра"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Адрес"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Изчистване"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Творчески режим"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Щети / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Любими"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Несъвместими сървъри"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Включване към игра"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Обществени сървъри"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Презареждане"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Отдалечен порт"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Описание на сървър"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "Тримерни облаци"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Всички настройки"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Сгласяне:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Авт. запазване на размера"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Промяна на клавиши"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "Свързано стъкло"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Динамични сенки"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Динамични сенки: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Луксозни листа"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Силни"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Слаби"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Нормални"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Mipmap"
+msgstr "Миникарта"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Mipmap + Aniso. Filter"
+msgstr "Миникарта + анизо. филтър"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Без филтър"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "No Mipmap"
+msgstr "Без миникарта"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Осветяване на възел"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Ограждане на възел"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Без"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Непрозрачни листа"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Непрозрачна вода"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Отломки"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Екран:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Настройки"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "Земни маси в небето (експериментално)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Обикновени листа"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Гладко осветление"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Текстуриране:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Праг на докосване: (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "Много силни"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "Много слаби"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Поклащащи се листа"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Поклащащи се течности"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Поклащащи се растения"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Грешка при свързване (изтекло време?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Времето за свързване изтече."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Готово!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Иницииране на възли"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Иницииране на възли…"
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Зареждане на текстури…"
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Грешка при свързване (изтекло време?)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "Играта не може да бъде намерена или заредена: "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Главно меню"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Няма избран свят, нито зададен адрес. Няма какво да бъде направено."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Името на играча е твърде дълго."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Изберете име!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Файлът с пароли не се отваря: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Зададеният път към света не съществува: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"Прегледайте debug.txt за повече информация."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Адрес: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Режим: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Порт: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Обществен: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Име на сървър: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Възникна грешка:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Достъпът е отказан. Причина: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Автоматичното движение напред е изключено"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Автоматичното движение напред е включено"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Контурите на блоковете са скрити"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Контурите на всички блокове са видими"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Контурите на текущия блок са видими"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Контурите на близките блокове са видими"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Опресняването на екрана при движение е изключено"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Опресняването на екрана при движение е включено"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Контурите на блоковете не могат да бъдат показани (заб.: липсва правото "
+"„basic_debug“)"
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Промяна на парола"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Кинематографичният режим е изключен"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Кинематографичният режим е включен"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Клиентът е изключен"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Изпълняване на скриптове от страната на клиента е изключено"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Свързване със сървър…"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Грешка във връзката поради неизвестна причина"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Продължаване"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Управление:\n"
+"- %s: движение напред\n"
+"- %s: движение назад\n"
+"- %s: движение наляво\n"
+"- %s: движение надясно\n"
+"- %s: скачане/катерене\n"
+"- %s: копаене/удар\n"
+"- %s: поставяне/използване\n"
+"- %s: промъкване/слизане\n"
+"- %s: пускане на предмет\n"
+"- %s: инвентар\n"
+"- мишка: завъртане/разглеждане\n"
+"- колелце на мишка: избор на предмет\n"
+"- %s: разговор\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Създаване на клиент…"
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Създаване на сървър…"
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Неограниченият обхват на видимост е изключен"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Неограниченият обхват на видимост е включен"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Създаване на клиент…"
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Изход към менюто"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Изход към ОС"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Режимът на бързо движение е изключен"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Режимът на бързо движение е включен"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Режимът на бързо движение е включен (заб.: липсва правото „fast“)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Режимът на летене е изключен"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Режимът на летене е включен"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Режимът на летене е включен (заб.: липсва правото „fly“)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Мъглата е изключена"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Мъглата е включена"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Информация за играта:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Играта е на пауза"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Домакин на играта"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Дефиниции на предмети…"
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Медия…"
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Картата е спряна или от играта, или от модификация"
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Множество играчи"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Режимът „без изрязване“ е изключен"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Режимът „без изрязване“ е включен"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Режимът „без изрязване“ е включен (заб.: липсва правото „noclip“)"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Дефиниции на възли…"
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Изключено"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "Включено"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Режимът „промяна на височината“ е изключен"
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Режимът „промяна на височината“ е включен"
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Графиката на профилатора е показана"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Отдалечен сървър"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Намиране на адрес…"
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Изключване…"
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Един играч"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Сила на звука"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Звукът е заглушен"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Системата за звук е изключена"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "В това издание не се поддържа звукова система"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Звукът е пуснат"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Сървърът вероятно използва друго издание на %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Обхватът на видимостта е променен на %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Обхватът на видимостта е на своя максимум: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Обхватът на видимостта е на своя минимум: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Силата на звука е променена на %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Показани са телените рамки"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Мащабирането е спряно или от играта, или от модификация"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "добре"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Разговорите са скрити"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Разговорите са видими"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD скрит"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD видим"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Профилаторът е скрит"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Профилаторът е видим (страница %d от %d)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Приложения"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Control"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Надолу"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Наляво"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "Ляв бутон"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Ляв Control"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "Ляв Menu"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "Ляв Shift"
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Ляв Windows"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "Среден бутон"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Дясно"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "Десен бутон"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "Десен Control"
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "Десен Menu"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "Десен Shift"
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "Десен Windows"
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "Shift"
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Sleep"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "Снимка на екрана"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Интервал"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "Табулатор"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Нагоре"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Мащабиране"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Картата е скрита"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Картата е в режим на радар, мащаб x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Картата е в режим на повърхност, мащаб x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Картата е в режим на текстура"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Грешка при отваряне на страница"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Отваряне на страница"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Напред"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "„Aux1“ = слизане"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Автоматично напред"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Автоматично скачане"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Назад"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Граници на блокове"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Промяна на камера"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Разговори"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Команда"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Конзола"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Намал. на обхвата"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Намал. на звука"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Двоен „скок“ превключва летене"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Пускане предмет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Напред"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Увелич. на обхвата"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Увелич. на звука"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Инвентар"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Скок"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Клавишът вече се ползва"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Местна команда"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Заглушаване"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "След. предмет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Пред. предмет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Обхват видимост"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Снимка на екрана"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Промъкване"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Превкл. HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Превкл. разговори"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Превкл. бързина"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Превкл. полет"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Превкл. мъгла"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Превкл. карта"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Превкл. изрязване"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Превкл. „pitchmove“"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "избор бутон"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Променяне"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Нова парола"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Стара парола"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Паролите не съвпадат!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Изход"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Без звук"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Сила на звука: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "bg"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Изберете име!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Добавят се отломки при копане на възел."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Име на света"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Автоматично прескача препятствия от единични възли."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Автоматично докладване в списъка на сървърите."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Автоматично запазване на размера на екрана"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr "Основни права"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr "Адрес за свързване"
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Промяна на камера"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Команда"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "Разговорите са видими"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr "Свързва стъкло, ако се поддържа от възела."
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr "Прозрачност на конзолата"
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr "Цвят на конзолата"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "Височина на конзолата"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 = ден/нощ/каквото е остава без "
+"промяна."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr "Творчески"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr "Подразбирани права"
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr "Формат на отчета по подразбиране"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Декорации"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Отломки при копане"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Задаване на творчески режим на всички играчи"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+"Бърздо движение чрез клавиш „Aux1“.\n"
+"Изисква правото „fast“ от сървъра."
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Сгласяне:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Игри"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "HUD видим"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+"Ако е включено заедно с режима на летене, играчът може да лети през плътни "
+"възли.\n"
+"Изисква правото „noclip“ от сървъра."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr "Голяма част от пещерите са наводнени"
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Гладко осветление"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Осветяване на възел"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+"Играчът може да лети без да се влияе от гравитацията.\n"
+"Изисква правото „fly“ от сървъра."
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr "Правата, които играчите с „basic_privs“ могат да получат"
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Съотношението на големи пещери, съдържащи течности."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr "Отдалечен порт"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Екран:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Снимка на екрана"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Създаване на сървър"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- Име на сървър: "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Описание на сървър"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr "Адрес на сървър"
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr "Порт на сървъра"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Порт на сървъра"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Настройки"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+"Правата, които получават новите играчи.\n"
+"В играта вижте „/privs“ за пълен списък от права за сървъра и модификациите."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Творчески режим: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Щети: "
+
+#~ msgid "Connect"
+#~ msgstr "Свързване"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Управлява скоростта на потъване в течности."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Премах. любим"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Изтегляне на игра, например Minetest Game, от minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Изтеглете от minetest.net"
+
+#~ msgid "Enter "
+#~ msgstr "Въведете "
+
+#~ msgid "Game"
+#~ msgstr "Игра"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Инсталиране: файл: „$1“"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Клавишни комбинации (Ако екранът изглежда счупен махнете нещата от "
+#~ "minetest.conf)"
+
+#~ msgid "Player name"
+#~ msgstr "Име на играча"
+
+#~ msgid "View"
+#~ msgstr "Гледане"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "На път сте да влезете в сървъра с име „%s“ за първи път.\n"
+#~ "Ако продължите нова сметка с тези данни ще бъде създадена на сървъра.\n"
+#~ "Въведете паролата отново и натиснете „Регистриране и вход“, за да "
+#~ "потвърдите или „Отказ“ за връщане обратно."
+
+#~ msgid "You died."
+#~ msgstr "Умряхте."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/ca/minetest.po b/po/ca/minetest.po
index 54451ca68..e58bc7fce 100644
--- a/po/ca/minetest.po
+++ b/po/ca/minetest.po
@@ -1,15 +1,10 @@
-# Catalan translations for minetest package.
-# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the minetest package.
-# Automatically generated, 2015.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Catalan (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-04-20 13:21+0000\n"
-"Last-Translator: Joan Ciprià Moreno Teodoro <joancipria@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
"minetest/ca/>\n"
"Language: ca\n"
@@ -17,24 +12,107 @@ 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 2.6-dev\n"
+"X-Generator: Weblate 3.9-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "Comands de xat"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Eixir al menú"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "Comands de xat"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Un jugador"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Un jugador"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Reaparèixer"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+#, fuzzy
+msgid "You died"
+msgstr "Has mort."
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "Comands de xat"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "Comands de xat"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "S'ha produït un error en un script Lua, com per exemple un mod :"
+msgid "<none available>"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+#, fuzzy
+msgid "An error occurred in a Lua script:"
+msgstr "S'ha produït un error en un script Lua, com per exemple un mod."
+
+#: builtin/fstk/ui.lua
+#, fuzzy
+msgid "An error occurred:"
msgstr "Ha ocorregut un error:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Menú principal"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "D'acord"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Torneu a connectar"
@@ -43,9 +121,30 @@ msgstr "Torneu a connectar"
msgid "The server has requested a reconnect:"
msgstr "El servidor ha sol·licitat una reconnexió:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Carregant ..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Seleccionar un món:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -61,10 +160,8 @@ msgstr ""
"El servidor es compatible amb les versions de protocol entre $ 1 i $ 2 . "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Intenta tornar a habilitar la llista de servidors públics i comprovi la seva "
-"connexió a Internet ."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -74,52 +171,95 @@ msgstr "Nosaltres sols suportem la versió $1 del protocol."
msgid "We support protocol versions between version $1 and $2."
msgstr "Nosaltres suportem versions del protocol entre la versió $1 i la $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Cancel·lar"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
msgstr "Dependències:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Desactivar MP"
+msgid "Disable all"
+msgstr "Desactivar tot"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Activar MP"
+#, fuzzy
+msgid "Disable modpack"
+msgstr "Desactivat"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Activar tot"
#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "Enable modpack"
+msgstr "Reanomenar el paquet de mods:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
"Error al habilitar el mod \"$1\" perquè conté caràcters no permesos. Només "
"estan permesos els caràcters [a-z0-9_]."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Ocultar Joc"
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Ocultar contingut MP"
+msgid "Find More Mods"
+msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "No (optional) dependencies"
+msgstr "Dependències opcionals:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No game description provided."
+msgstr "Cap descripció del mod disponible"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No hard dependencies"
+msgstr "Sense dependències."
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No modpack description provided."
+msgstr "Cap descripció del mod disponible"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No optional dependencies"
+msgstr "Dependències opcionals:"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dependències opcionals:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Guardar"
@@ -131,76 +271,411 @@ msgstr "Món:"
msgid "enabled"
msgstr "Activat"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Carregant ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Already installed"
+msgstr "La tecla s'està utilitzant"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Back to Main Menu"
+msgstr "Menú principal"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "Ocultar Joc"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "Carregant ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Failed to download $1"
+msgstr "Error al instal·lar $1 en $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Jocs"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instal·lar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Instal·lar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "Dependències opcionals:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"\n"
+"Instal·lar mod: Format de arxiu \"$1\" no suportat o arxiu corrupte"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Texture packs"
+msgstr "Textures"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Uninstall"
+msgstr "Instal·lar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
msgstr "Ja existeix un món anomenat \"$1\""
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Altitude chill"
+msgstr "Fred d'altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Altitude dry"
+msgstr "Fred d'altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caverns"
+msgstr "Soroll de cova #1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caves"
+msgstr "Soroll de cova #1"
+
+#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Crear"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
+#, fuzzy
+msgid "Decorations"
+msgstr "Informació del mod:"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
msgstr ""
-"Descarrega un subjoc, com per exemple minetest_game, des de minetest.net"
+"Advertència: El joc \"Minimal development test\" esta dissenyat per a "
+"desenvolupadors."
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Descarrega'n alguns des de minetest.net"
+#, fuzzy
+msgid "Dungeons"
+msgstr "Soroll de cova #1"
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Joc"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Instal·lar"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Generador de mapes"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "No s'ha donat un nom al món o no s'ha seleccionat ningun"
+#, fuzzy
+msgid "Mapgen-specific flags"
+msgstr "Generador de mapes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "No game selected"
+msgstr "Seleccionar distancia"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Rivers"
+msgstr "Soroll de cova #1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Llavor"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
msgstr ""
-"Advertència: El joc \"Minimal development test\" esta dissenyat per a "
-"desenvolupadors."
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Nom del món"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+#, fuzzy
+msgid "You have no games installed."
msgstr "No tens subjocs instal·lats."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "Realment desitja esborrar \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Esborrar"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: failed to delete \"$1\""
msgstr "Modmgr: Error al esborrar \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: invalid path \"$1\""
msgstr "Modmgr: Ruta del mod \"$1\" invàlida"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "Eliminar el món \"$1\"?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Confirma contrasenya"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Nova contrasenya"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Les contrasenyes no coincideixen!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Acceptar"
@@ -208,15 +683,22 @@ msgstr "Acceptar"
msgid "Rename Modpack:"
msgstr "Reanomenar el paquet de mods:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" no és un indicador vàlid."
+#: 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 ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(Cap descripció d'ajustament donada)"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "2D Noise"
+msgstr "Soroll de cova #1"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
msgstr "< Torna a la pàgina de configuració"
@@ -225,6 +707,16 @@ msgid "Browse"
msgstr "Navegar"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Continuar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Continuar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Desactivat"
@@ -237,33 +729,20 @@ msgid "Enabled"
msgstr "Activat"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
+msgid "Lacunarity"
msgstr ""
-"El format és 3 números separats per comes i aquests dins de parèntesis."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Octaves"
msgstr ""
-"Format: <offset> <escala> (<extensió X>, <extensió Y> , <extensión Z>), "
-"<llavor>, <octaves>, <persistència>"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Jocs"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mods"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Si us plau, introduïu una llista d'indicadors separada per comes."
+msgid "Persistence"
+msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -274,234 +753,368 @@ msgid "Please enter a valid number."
msgstr "Si us plau, introduïu un nombre vàlid."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Els possibles valors són: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "Restablir per defecte"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Buscar"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Seleccioneu la ruta"
+#, fuzzy
+msgid "Select directory"
+msgstr "Selecciona el fitxer del mod:"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Select file"
+msgstr "Selecciona el fitxer del mod:"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Mostrar els noms tècnics"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "The value must be at least $1."
msgstr "El valor ha de ser major que $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
+msgid "The value must not be larger than $1."
msgstr "El valor ha de ser menor que $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
msgstr ""
-"\n"
-"Instal·lar mod: Format de arxiu \"$1\" no suportat o arxiu corrupte"
-#: builtin/mainmenu/modmgr.lua
+#. ~ "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
+#, fuzzy
+msgid "defaults"
+msgstr "Joc per defecte"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 (Enabled)"
+msgstr "Activat"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 mods"
+msgstr "Mode 3D"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Error al instal·lar $1 en $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Instal·lar mod: Arxiu: \"$1\""
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr "Instal·lar mod: Impossible trobar el nom real del mod per a: $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
"Instal·lar mod: Impossible de trobar el nom de la carpeta adequat per al "
"paquet de mods $1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Tancar repositori"
-
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Descarregant $1, si us plau esperi ..."
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+"Instal·lar mod: Impossible de trobar el nom de la carpeta adequat per al "
+"paquet de mods $1"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Instal·lar"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Error al instal·lar $1 en $2"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Pàgina $1 de $2"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a game as a $1"
+msgstr "Error al instal·lar $1 en $2"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Classificació"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a mod as a $1"
+msgstr "Error al instal·lar $1 en $2"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Buscar"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a modpack as a $1"
+msgstr "Error al instal·lar $1 en $2"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Nom curt:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Carregant ..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Instal·lat amb èxit:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Sense ordenar"
+#: 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 "
+"connexió a Internet ."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Reinstal·lar"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Col·laboradors Actius"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Active renderer:"
+msgstr "Rang d'enviament de l'objecte actiu"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Desenvolupadors del nucli"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Crèdits"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "Selecciona el fitxer del mod:"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Antics Col·laboradors"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Antics Desenvolupadors del nucli"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Mods Instal·lats:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Informació del mod:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Cap descripció del mod disponible"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Reanomenar"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Selecciona el fitxer del mod:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Desinstal·lar el mod seleccionat"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Desinstal·lar el paquet de mods seleccionat"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Content"
+msgstr "Continuar"
-#: builtin/mainmenu/tab_multiplayer.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Address / Port"
-msgstr "Adreça / Port:"
+msgid "Disable Texture Pack"
+msgstr "Selecciona un paquet de textures:"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Client"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Information:"
+msgstr "Informació del mod:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Connectar"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Installed Packages:"
+msgstr "Mods Instal·lats:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Mode creatiu"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Sense dependències."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Dany activat"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "No package description available"
+msgstr "Cap descripció del mod disponible"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Reanomenar"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Uninstall Package"
+msgstr "Desinstal·lar el mod seleccionat"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Name / Password"
-msgstr "Nom / Contrasenya:"
+msgid "Use Texture Pack"
+msgstr "Textures"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP activat"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Anunciar servidor"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Adreça BIND"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Configurar"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Mode Creatiu"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Permetre Danys"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nom/Contrasenya"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Game"
+msgstr "Ocultar Joc"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Server"
+msgstr "Servidor"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nou"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "No s'ha creat ningun món o no s'ha seleccionat!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Jugar Joc"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Públic"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Seleccionar un món:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Seleccionar un món:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Servidor"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Port del Servidor"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
msgid "Start Game"
-msgstr "Començar Joc"
+msgstr "Ocultar Joc"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "Adreça BIND"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Netejar"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Mode creatiu"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Dany"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Preferit"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Join Game"
+msgstr "Ocultar Joc"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Anunciar servidor"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Esborra preferit"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "Port del Servidor"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
@@ -521,7 +1134,7 @@ msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Advanced Settings"
+msgid "All Settings"
msgstr "Configuració"
#: builtin/mainmenu/tab_settings.lua
@@ -529,32 +1142,47 @@ msgid "Antialiasing:"
msgstr "Suavitzat (Antialiasing):"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Esteu segur que voleu reiniciar el seu món d'un sol jugador?"
+#, fuzzy
+msgid "Autosave Screen Size"
+msgstr "Desar automàticament mesures de la pantalla"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Filtre Bilineal"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "Mapat de relleu"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Configurar Controls"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Configurar controls"
+msgid "Connected Glass"
+msgstr "Vidres connectats"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Connected Glass"
-msgstr "Connectar"
+msgid "Dynamic shadows:"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Fulles Boniques"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "Mipmap"
@@ -563,10 +1191,6 @@ msgid "Mipmap + Aniso. Filter"
msgstr "Mipmap + Aniso. Filtre"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "No"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr "Sense Filtre"
@@ -579,19 +1203,14 @@ msgid "Node Highlighting"
msgstr "Node ressaltat"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Outlining"
-msgstr "Node ressaltat"
+msgstr "Nodes ressaltats"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Ningun"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "Fulles opaques"
@@ -599,19 +1218,13 @@ msgstr "Fulles opaques"
msgid "Opaque Water"
msgstr "Aigua opaca"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Oclusió de paral·laxi"
-
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "Activar tot"
+msgstr "Partícules"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Esteu segur que voleu reiniciar el seu món d'un sol jugador?"
+msgid "Screen:"
+msgstr "Pantalla:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -622,6 +1235,14 @@ msgid "Shaders"
msgstr "Ombres"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "Fulles senzilles"
@@ -633,16 +1254,13 @@ msgstr "Il·luminació suau"
msgid "Texturing:"
msgstr "Texturització:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Per habilitar les ombres el controlador OpenGL ha ser utilitzat."
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
msgstr "Llindar tàctil (px)"
#: builtin/mainmenu/tab_settings.lua
@@ -650,74 +1268,52 @@ msgid "Trilinear Filter"
msgstr "Filtratge Trilineal"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Moviment de les Fulles"
+msgid "Very High"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Moviment de Plantes"
+msgid "Very Low"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Onatge"
+msgid "Waving Leaves"
+msgstr "Moviment de les Fulles"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Sí"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Configurar mods"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Principal"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Començar Un Jugador"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Jugar"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Un jugador"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Sense informació disponible"
+#, fuzzy
+msgid "Waving Liquids"
+msgstr "Moviment de les Fulles"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Selecciona un paquet de textures:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Moviment de Plantes"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Textures"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Error de connexió (¿temps esgotat?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Temps d'espera de la connexió esgotat."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Completat!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Inicialitzant nodes"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "Inicialitzant nodes ..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "Carregant textures ..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr "Reconstruint ombreig ..."
@@ -726,7 +1322,8 @@ msgid "Connection error (timed out?)"
msgstr "Error de connexió (¿temps esgotat?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr "No es pot trobar o carregar el joc \""
#: src/client/clientlauncher.cpp
@@ -746,14 +1343,18 @@ msgid "Player name too long."
msgstr "Nom del jugador massa llarg."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "La ruta del món especificat no existeix: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -761,43 +1362,136 @@ msgstr ""
"\n"
"Comprovi debug.txt per a detalls."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Configurar Controls"
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Address: "
+msgstr "Adreça BIND"
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Port: "
+msgstr "Port"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Public: "
+msgstr "Públic"
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Ha ocorregut un error:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward disabled"
+msgstr "Tecla Avançar"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "Tecla Avançar"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update disabled"
+msgstr "Tecla alternativa per a l'actualització de la càmera"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update enabled"
+msgstr "Tecla alternativa per a l'actualització de la càmera"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Canviar contrasenya"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode disabled"
+msgstr "Tecla mode cinematogràfic"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "Tecla mode cinematogràfic"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Client"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Connectant al servidor ..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Continuar"
-#: src/game.cpp
-msgid "Creating client..."
-msgstr "Creant client ..."
-
-#: src/game.cpp
-msgid "Creating server..."
-msgstr "Creant servidor ..."
-
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
+"- %s: chat\n"
msgstr ""
"Controls predeterminats:\n"
"- WASD: moure\n"
@@ -811,7 +1505,33 @@ msgstr ""
"- Roda ratolí: triar objecte\n"
"- T: xat\n"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Creant client ..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Creant servidor ..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Debug info shown"
+msgstr "Tecla alternativa per a la informació de la depuració"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -839,489 +1559,777 @@ msgstr ""
"- Toc i arrossegar, toc amb 2 dits:\n"
" -> col·locar només un objecte\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Creant client ..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Eixir al menú"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Eixir al S.O"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode enabled"
+msgstr "Dany activat"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode enabled"
+msgstr "Dany activat"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "Desactivat"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "Activat"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Game paused"
+msgstr "Jocs"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Hosting server"
+msgstr "Creant servidor ..."
+
+#: src/client/game.cpp
msgid "Item definitions..."
msgstr "Definicions d'objectes ..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
msgstr "Media ..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Definicions dels nodes ..."
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Resolent adreça ..."
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Un jugador"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Reaparèixer"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Tancant ..."
+#: src/client/game.cpp
+#, fuzzy
+msgid "Noclip mode enabled"
+msgstr "Dany activat"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Volum del so"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
-#: src/game.cpp
-msgid "You died."
-msgstr "Has mort."
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definicions dels nodes ..."
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "Acceptar"
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Introdueix "
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Continuar"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Utilitzar\" = Descendir"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Arrere"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Xat"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Remote server"
+msgstr "Anunciar servidor"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Comandament"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Resolent adreça ..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Consola"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Tancant ..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Dos tocs \"botar\" per volar"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Un jugador"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Amollar"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volum del so"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Avant"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound muted"
+msgstr "Volum del so"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventari"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Botar"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "La tecla s'està utilitzant"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound unmuted"
+msgstr "Volum del so"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-"Combinacions de tecles. (Si aquest menú espatlla, esborrar coses de minetest."
-"conf)"
-
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Esquerra"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Imprimir piles"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Seleccionar distancia"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Dreta"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Discreció"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Activar Cinematogràfic"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Activar ràpid"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Activar volar"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Activar noclip"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Utilitzar"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "Acceptar"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
+#: src/client/gameui.cpp
#, fuzzy
-msgid "Zoom"
-msgstr "Zoom"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "Premsa una tecla"
-
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Canviar"
-
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Confirma contrasenya"
+msgid "Chat hidden"
+msgstr "Tecla del xat"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nova contrasenya"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Contrasenya vella"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Les contrasenyes no coincideixen!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Tancar"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Volum de so: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Aplicacions"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Atentament"
-
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Backspace"
msgstr "Enrere"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Bloq Maj"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Netejar"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Coma"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convertir"
-
-#: src/keycode.cpp
-#, fuzzy
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Avall"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Fi"
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Erase EOF"
msgstr "Esborrar OEF"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Esc"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Executar"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Fi"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Ajuda"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Inici"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Introduir"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Accept"
+msgstr "Acceptar"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
#, fuzzy
-msgid "Junja"
-msgstr "Junja"
+msgid "IME Convert"
+msgstr "Convertir"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
#, fuzzy
-msgid "Kana"
-msgstr "Kana"
+msgid "IME Escape"
+msgstr "Esc"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Mode Change"
+msgstr "Canvi de mode"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
#, fuzzy
-msgid "Kanji"
-msgstr "Kanji"
+msgid "IME Nonconvert"
+msgstr "No convertir"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Introduir"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Esquerra"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Botó esquerre"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Control esq"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Menú esq"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Shift esq"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Windows esquerre"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menú"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Botó del mig"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Menys"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Canvi de mode"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Següent"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "No convertir"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Bloq Num"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Teclat Num. *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Teclat Num. +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Teclat Num. -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad ."
+msgstr "Teclat Num. *"
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Teclat Num. /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Teclat Num. 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Teclat Num. 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Teclat Num. 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Teclat Num. 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Teclat Num. 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Teclat Num. 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Teclat Num. 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Teclat Num. 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Teclat Num. 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Teclat Num. 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "Netejar OEM"
-#: src/keycode.cpp
-#, fuzzy
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pausa"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Període"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Més"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Jugar"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Imprimir"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Anterior"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Tornar"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Dreta"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Botó dret"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Control dta"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Menú dta"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Shift Dta"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Windows dret"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Bloq Despl"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Seleccionar"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Dormir"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Captura de pantalla"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Espai"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulador"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Amunt"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X Botó 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X Botó 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Error al instal·lar $1 en $2"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Continuar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "\"Utilitzar\" = Descendir"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Autoforward"
+msgstr "Avant"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Arrere"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "Configurar controls"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Xat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Comandament"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Consola"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Dos tocs \"botar\" per volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Amollar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Avant"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Inc. volume"
+msgstr "Volum del so"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventari"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Botar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "La tecla s'està utilitzant"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Local command"
+msgstr "Comands de xat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Next item"
+msgstr "Següent"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Seleccionar distancia"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Discreció"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle HUD"
+msgstr "Activar volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle chat log"
+msgstr "Activar ràpid"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Activar ràpid"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Activar volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fog"
+msgstr "Activar volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle minimap"
+msgstr "Activar noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Activar noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle pitchmove"
+msgstr "Activar ràpid"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Premsa una tecla"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Canviar"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nova contrasenya"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Contrasenya vella"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Les contrasenyes no coincideixen!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Tancar"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy
+msgid "Muted"
+msgstr "Utilitza la tecla"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volum de so: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "ca"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
#: src/settings_translation_file.cpp
#, fuzzy
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
"(X, Y, Z) compensar de fractal del món centre en unitats d \"escala\".\n"
@@ -1333,11 +2341,42 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
msgstr ""
-"0 = oclusió de la paral.laxi amb informació d'inclinació (més ràpid).\n"
-"1 = mapa de relleu (més lent, més precís)."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1348,6 +2387,45 @@ msgid "3D mode"
msgstr "Mode 3D"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1356,7 +2434,9 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Suport 3D.\n"
"Currently supported:\n"
@@ -1368,6 +2448,10 @@ msgstr ""
"- pageflip: quadbuffer based 3d."
#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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."
@@ -1386,7 +2470,16 @@ msgstr ""
"Un missatge que es mostrarà a tots els clients quan el servidor s'apaga."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Absolute limit of queued blocks to emerge"
msgstr "Límit absolut de cues emergents"
#: src/settings_translation_file.cpp
@@ -1394,18 +2487,17 @@ msgid "Acceleration in air"
msgstr "Acceleració en l'aire"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Management interval"
-msgstr "Rang del bloc actiu"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Active Block Modifier interval"
+msgid "Active Block Modifiers"
msgstr "Rang del bloc actiu"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Active Block Modifiers"
+msgid "Active block management interval"
msgstr "Rang del bloc actiu"
#: src/settings_translation_file.cpp
@@ -1428,6 +2520,10 @@ msgstr ""
"paràmetre."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
@@ -1436,21 +2532,40 @@ msgstr ""
"X11/Sols Android) Ex. per a pantalles amb 4K."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Nom del món"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Avançat"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Fred d'altitud"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+#, fuzzy
+msgid "Always fly fast"
msgstr "Sempre volar y ràpid"
#: src/settings_translation_file.cpp
@@ -1458,7 +2573,12 @@ msgid "Ambient occlusion gamma"
msgstr "Gamma d'oclusió d'ambient"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Amplifies the valleys."
msgstr "Amplifica les valls"
#: src/settings_translation_file.cpp
@@ -1470,49 +2590,114 @@ msgid "Announce server"
msgstr "Anunciar servidor"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+#, fuzzy
+msgid "Announce to this serverlist."
+msgstr "Anunciar servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
msgstr ""
-"Anunciar a aquesta llista de servidors.\n"
-"Si vols anunciar el teu direcció ipv6, fes servir serverlist_url = v6."
-"servers.minetest.net."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Aproximar (X, Y, Z) escala del fractal en els nodes."
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
msgstr "Preguntar per tornar a connectar després d'una caiguda"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Automatic forward key"
+msgstr "Tecla Avançar"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Automatically report to the serverlist."
msgstr "Automàticament informar a la llista del servidor."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Autosave screen size"
+msgstr "Desar automàticament mesures de la pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "Tecla botar"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "Utilitzar la tecla \"utilitzar\" per escalar/descendir"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Tecla de retrocés"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Alçada del terreny base"
+msgid "Base ground level"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Bàsic"
+#, fuzzy
+msgid "Base terrain height."
+msgstr "Alçada del terreny base"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Basic Privileges"
+msgid "Basic privileges"
msgstr "Privilegis per defecte"
#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
msgstr "Filtre bilineal"
@@ -1521,8 +2706,36 @@ msgid "Bind address"
msgstr "Adreça BIND"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bits per píxel (profunditat de color) en el mode de pantalla completa."
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1533,8 +2746,17 @@ msgid "Builtin"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Mapat de relleu"
+#, fuzzy
+msgid "Camera"
+msgstr "Configurar controls"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1549,6 +2771,11 @@ msgid "Camera update toggle key"
msgstr "Tecla alternativa per a l'actualització de la càmera"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr "Soroll de cova #1"
@@ -1558,66 +2785,94 @@ msgstr "Soroll de cova #2"
#: src/settings_translation_file.cpp
msgid "Cave width"
+msgstr "Amplada de les coves"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave1 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave2 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern limit"
+msgstr "Amplada de les coves"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Coves i túnels es formen en la intersecció dels dos sorolls"
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern upper limit"
+msgstr "Amplada de les coves"
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Comands de xat"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat font size"
+msgstr "Mida del chunk"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Tecla del xat"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Tecla alternativa per al xat"
+#, fuzzy
+msgid "Chat log level"
+msgstr "Nivell de registre de depuració"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Comandament"
+msgid "Chat message format"
+msgstr "Missatge d'error"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Tecla alternativa per al xat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
msgstr ""
-"Selecció de 18 fractals de 9 fórmules.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
#: src/settings_translation_file.cpp
msgid "Chunk size"
@@ -1636,16 +2891,41 @@ msgid "Clean transparent textures"
msgstr "Netejar textures transparents"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Client i Servidor"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Velocitat d'escalada"
+#, fuzzy
+msgid "Client modding"
+msgstr "Client"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Alçada del núvol"
+#, fuzzy
+msgid "Client side modding restrictions"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Velocitat d'escalada"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1669,6 +2949,21 @@ msgstr "Boira de color"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Colored shadows"
+msgstr "Boira de color"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
@@ -1692,6 +2987,22 @@ msgid "Command key"
msgstr "Tecla comandament"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr "Connectar vidre"
@@ -1713,26 +3024,47 @@ msgid "Console color"
msgstr "Color de la consola"
#: src/settings_translation_file.cpp
-msgid "Console key"
+#, fuzzy
+msgid "Console height"
msgstr "Tecla de la consola"
#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "ContentDB URL"
+msgstr "Continuar"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Avanç continu"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Avanç continu (sols utilitzat per a testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls"
msgstr "Controls"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
"Controla la duració del cicle dia/nit.\n"
"Exemples: 72 = 20min, 360 = 4min, 1 = 24hora, 0 = dia/nit/el que sigui es "
@@ -1740,11 +3072,9 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Controla la mida dels deserts i platges a Mapgen v6.\n"
-"Quan \"snowbiomes\" estan activats 'mgv6_freq_desert' és ignorat."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
@@ -1755,7 +3085,10 @@ msgid "Controls steepness/height of hills."
msgstr "Controla la pendent i alçada dels turons."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1763,27 +3096,18 @@ msgid "Crash message"
msgstr "Missatge d'error"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea característiques imprevisibles de la lava en coves.\n"
-"Aquestes poden fer difícil minar. Zero els inhabilita (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea característiques imprevisibles de l'aigua en coves.\n"
-"Aquestes poden fer difícil minar. Zero els inhabilita (0-10)"
+#, fuzzy
+msgid "Creative"
+msgstr "Crear"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr "Punt de mira Alpha"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1791,12 +3115,10 @@ msgid "Crosshair color"
msgstr "Color del punt de mira"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Color del punt de mira (R, G, B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Velocitat al ajupir-se"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "DPI"
@@ -1811,10 +3133,23 @@ msgid "Debug info toggle key"
msgstr "Tecla alternativa per a la informació de la depuració"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Debug log file size threshold"
+msgstr "Nivell de registre de depuració"
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "Nivell de registre de depuració"
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
msgstr "Pas de servidor dedicat"
@@ -1847,17 +3182,51 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Default stack size"
+msgstr "Joc per defecte"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Temporització per defecte per a cURL, manifestat en mil·lisegons.\n"
-"Només té un efecte si és compilat amb cURL."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1865,64 +3234,95 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay showing tooltips, stated in milliseconds."
+msgid "Defines the width of the river valley."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Deprecated Lua API handling"
+msgid "Defines tree areas and tree density."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid "Delay in sending blocks after building"
+msgstr "Retràs per enviar blocs després de col•locarlos"
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Deprecated Lua API handling"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Depth below which you'll find giant caverns."
+msgstr "Profunditat davall la qual trobaràs grans coves."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr "Profunditat davall la qual trobaràs grans coves."
+
+#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Informació del mod:"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "Tecla dreta"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Digging particles"
+msgstr "Partícules"
+
+#: src/settings_translation_file.cpp
msgid "Disable anticheat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1942,17 +3342,66 @@ msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Enable VBO"
-msgstr "Activar MP"
+msgid "Dungeon noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1973,6 +3422,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1991,29 +3444,37 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
+msgid "Enables caching of facedir rotated meshes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2022,56 +3483,62 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
+msgid "Engine profiling data print interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+msgid "Entity methods"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
+msgid "Fallback font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2091,8 +3558,9 @@ msgid "Fast movement"
msgstr "Moviment ràpid"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
"Moviment ràpid (via utilitzar clau).\n"
@@ -2103,30 +3571,22 @@ msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Moviment ràpid (via utilitzar clau).\n"
-"Això requereix el \"privilegi\" ràpid en el servidor."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2136,13 +3596,22 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Suavitzat (Antialiasing):"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+msgid "First of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2150,6 +3619,39 @@ msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2162,11 +3664,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2178,15 +3692,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2194,11 +3736,51 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Tecla Avançar"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2214,7 +3796,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2222,10 +3808,6 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr ""
@@ -2242,15 +3824,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Jocs"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2261,10 +3844,19 @@ msgstr ""
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2272,13 +3864,38 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "HTTP Mods"
-msgstr "Mods"
+msgid "Ground noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HTTP mods"
+msgstr "Mods HTTP"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
@@ -2286,9 +3903,9 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2302,52 +3919,260 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Heat noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Height noise"
+msgstr "Windows dret"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Hill steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hill threshold"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness1 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness2 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness3 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness4 noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "Humidity blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2358,12 +4183,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2371,8 +4205,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2392,7 +4233,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2403,15 +4252,32 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+msgid "Ignore world errors"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2423,13 +4289,26 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Inc. volume key"
+msgstr "Tecla de la consola"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2453,15 +4332,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2481,13 +4356,31 @@ msgid "Invert vertical mouse movement."
msgstr "Invertir moviment vertical del ratolí."
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2496,40 +4389,68 @@ msgid "Joystick button repetition interval"
msgstr "Interval de repetició del click dret"
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Joystick frustum sensitivity"
msgstr "Sensibilitat del ratolí"
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Jump key"
msgstr "Tecla botar"
@@ -2538,13 +4459,36 @@ msgid "Jumping speed"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Key for decreasing the viewing range.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tecla per obrir el inventari.\n"
+"Tecla per disminuir el rang de visió.\n"
+"Mira\n"
+"http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla per disminuir el rang de visió.\n"
+"Mira\n"
+"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 per botar.\n"
"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2556,14 +4500,26 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Key for increasing the viewing range.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tecla per obrir el inventari.\n"
-"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"Tecla per incrementar el rang de visió.\n"
+"Mira\n"
+"http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla per incrementar el rang de visió.\n"
+"Mira\n"
+"http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
@@ -2584,8 +4540,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2624,11 +4582,15 @@ msgstr ""
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per botar.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2638,6 +4600,17 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
@@ -2655,637 +4628,920 @@ msgstr ""
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per botar.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tecla per botar.\n"
+"Tecla per obrir el inventari.\n"
"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tecla per moure el jugador cap a l'esquerra.\n"
+"Tecla per obrir el inventari.\n"
"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "Utilitzar la tecla \"utilitzar\" per escalar/descendir"
-
-#: src/settings_translation_file.cpp
-msgid "Language"
+#, fuzzy
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+#, fuzzy
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+#, fuzzy
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+#, fuzzy
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Tecla esquerra"
-
-#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+#, fuzzy
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+#, fuzzy
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+#, fuzzy
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+#, fuzzy
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+#, fuzzy
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+#, fuzzy
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+#, fuzzy
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+#, fuzzy
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per obrir el inventari.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Rang del bloc actiu"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla per botar.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Menú principal del gestor de mods"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu script"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+#, fuzzy
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per botar.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per moure el jugador cap a l'esquerra.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: 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.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per moure el jugador cap a la dreta.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per moure el jugador cap a l'esquerra.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+#, fuzzy
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla per moure el jugador cap a la dreta.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Generador de mapes"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla per botar.\n"
+"Veure http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Language"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Generador de mapes"
+msgid "Large cave depth"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Generador de mapes"
+msgid "Large cave maximum number"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Large chat console key"
+msgstr "Tecla de la consola"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr ""
+msgid "Left key"
+msgstr "Tecla esquerra"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Generador de mapes"
+msgid "Light curve boost"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Il·luminació suau"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Loading Block Modifiers"
+msgstr "Rang del bloc actiu"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Lower Y limit of floatlands."
+msgstr "Límit absolut de cues emergents"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Main menu script"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Carpathian"
+msgstr "Generador de mapes plans"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Flat"
+msgstr "Generador de mapes plans"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal"
+msgstr "Generador de mapes plans"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal specific flags"
+msgstr "Generador de mapes"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V5"
+msgstr "Generador de mapes"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V6"
+msgstr "Generador de mapes"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V7"
+msgstr "Generador de mapes"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
+#, fuzzy
+msgid "Mapgen Valleys"
+msgstr "Generador de mapes"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen Valleys specific flags"
+msgstr "Generador de mapes"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3313,7 +5569,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3325,11 +5585,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3339,13 +5612,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3366,7 +5646,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3388,19 +5672,29 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Menus"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3420,6 +5714,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3432,7 +5730,15 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3440,15 +5746,23 @@ msgid "Mipmapping"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Security"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3460,6 +5774,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr "Sensibilitat del ratolí"
@@ -3468,21 +5802,30 @@ msgid "Mouse sensitivity multiplier."
msgstr "Multiplicador de sensibilitat del ratolí."
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+#, fuzzy
+msgid "Mute key"
+msgstr "Utilitza la tecla"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3498,7 +5841,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3508,6 +5851,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3520,6 +5867,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Node ressaltat"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3528,110 +5880,142 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+#, fuzzy
+msgid "Pitch move key"
+msgstr "Tecla mode cinematogràfic"
#: src/settings_translation_file.cpp
-msgid "Physics"
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place key"
+msgstr "Tecla mode cinematogràfic"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "Interval de repetició del click dret"
+
+#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Filtre bilineal"
#: src/settings_translation_file.cpp
msgid ""
@@ -3640,13 +6024,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3662,7 +6052,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3673,7 +6075,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3685,6 +6087,15 @@ msgid "Range select key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Regular font path"
+msgstr "Seleccioneu la ruta"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr ""
@@ -3693,6 +6104,12 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
@@ -3702,27 +6119,62 @@ msgid "Report path"
msgstr "Seleccioneu la ruta"
#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Right key"
msgstr "Tecla dreta"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr "Interval de repetició del click dret"
+msgid "River channel depth"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+#, fuzzy
+msgid "River noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3730,20 +6182,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3751,15 +6223,16 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Pantalla:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
+msgid "Screen height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screenshot"
+msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3782,11 +6255,25 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Pantalla:"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Seabed noise"
+msgstr "Soroll de cova #1"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3802,8 +6289,61 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
+#, fuzzy
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
msgstr ""
+"Selecció de 18 fractals de 9 fórmules.\n"
+"1 = 4D \"Roundy\" mandelbrot set.\n"
+"2 = 4D \"Roundy\" julia set.\n"
+"3 = 4D \"Squarry\" mandelbrot set.\n"
+"4 = 4D \"Squarry\" julia set.\n"
+"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" julia set.\n"
+"7 = 4D \"Variation\" mandelbrot set.\n"
+"8 = 4D \"Variation\" julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
+"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" julia set.\n"
+"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
+"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" julia set."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Port del Servidor"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3826,10 +6366,23 @@ msgid "Server port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Port del Servidor"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr ""
@@ -3841,27 +6394,98 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shader path"
+msgstr "Ombres"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3877,17 +6501,62 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3895,12 +6564,11 @@ msgid "Smooth lighting"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
-"Suavitza la càmera quan estiga movent-se i mirant al seu voltant.\n"
+"Suavitzat de càmara durant el seu moviment.\n"
"Útil per a la gravació de vídeos."
#: src/settings_translation_file.cpp
@@ -3917,6 +6585,20 @@ msgid "Sneak key"
msgstr "Tecla sigil"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Velocitat d'escalada"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "Radi del núvol"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr ""
@@ -3929,15 +6611,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3945,7 +6664,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3953,7 +6686,33 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Configuració"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain height"
+msgstr "Alçada del terreny base"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3971,11 +6730,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3985,13 +6769,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4005,13 +6805,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4030,6 +6847,12 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid ""
"The time in seconds it takes between repeated events\n"
@@ -4039,19 +6862,27 @@ msgstr ""
"s'està mantenint el botó dret del ratolí."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
"El temps en segons que es pren entre la repetició de clicks drets quan "
"s'està mantenint el botó dret del ratolí."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4061,6 +6892,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -4069,7 +6904,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4089,6 +6924,28 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touch screen threshold"
+msgstr "Llindar tàctil (px)"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Llindar tàctil (px)"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
msgstr ""
@@ -4096,7 +6953,7 @@ msgstr ""
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4108,6 +6965,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4116,6 +6986,15 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Upper Y limit of floatlands."
+msgstr "Límit absolut de cues emergents"
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4132,11 +7011,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Utilitza la tecla"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4144,7 +7033,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4152,23 +7041,60 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Varies steepness of cliffs."
+msgstr "Controla la pendent i alçada dels turons."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4180,13 +7106,11 @@ msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4198,29 +7122,47 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr "Textures de objectes ..."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4239,23 +7181,31 @@ msgid "Waving leaves"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Moviment de les Fulles"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Onatge"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Moviment de les Fulles"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "Onatge"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4277,26 +7227,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4325,23 +7267,39 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4349,13 +7307,77 @@ msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
+"Directori del món (totes les seves dades es guarden aquí).\n"
+"No necessari si s'inicia des de el menú principal."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "Nom del món"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Y of upper limit of large caves."
+msgstr "Límit absolut de cues emergents"
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4363,21 +7385,180 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "cURL interactive timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
-#~ msgid "No!!!"
-#~ msgstr "No!!!"
+#, fuzzy
+#~ msgid "- Creative Mode: "
+#~ msgstr "Mode Creatiu"
+
+#, fuzzy
+#~ msgid "- Damage: "
+#~ msgstr "Dany"
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = oclusió de la paral.laxi amb informació d'inclinació (més ràpid).\n"
+#~ "1 = mapa de relleu (més lent, més precís)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Adreça / Port"
+
+#, fuzzy
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Ajusta la codificació gamma per les taules de llum. Els nombrés nés "
+#~ "petits n'augmentaràn la brillantor.\n"
+#~ "Aquesta configuració només afecta al client, el servidor l'ignora."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Esteu segur que voleu reiniciar el seu món d'un sol jugador?"
+
+#~ msgid "Back"
+#~ msgstr "Enrere"
-#~ msgid "Generate Normalmaps"
+#~ msgid "Basic"
+#~ msgstr "Bàsic"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr ""
+#~ "Bits per píxel (profunditat de color) en el mode de pantalla completa."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Mapat de relleu"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Mapat de relleu"
+
+#~ msgid "Config mods"
+#~ msgstr "Configurar mods"
+
+#~ msgid "Configure"
+#~ msgstr "Configurar"
+
+#~ msgid "Connect"
+#~ msgstr "Connectar"
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Controla l'amplada dels túnels, un valor més petit crea túnels més amples."
+
+#~ msgid "Credits"
+#~ msgstr "Crèdits"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Color del punt de mira (R, G, B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Dany activat"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Temporització per defecte per a cURL, manifestat en mil·lisegons.\n"
+#~ "Només té un efecte si és compilat amb cURL."
+
+#, fuzzy
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr ""
+#~ "Descarrega un subjoc, com per exemple minetest_game, des de minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Descarrega'n alguns des de minetest.net"
+
+#, fuzzy
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Descarregant $1, si us plau esperi ..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "Activar VBO"
+
+#~ msgid "Enter "
+#~ msgstr "Introdueix "
+
+#~ msgid "Game"
+#~ msgstr "Joc"
+
+#, fuzzy
+#~ msgid "Generate Normal Maps"
#~ msgstr "Generar Mapes Normals"
-#~ msgid "Public Serverlist"
-#~ msgstr "Llista de servidors públics"
+#, fuzzy
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instal·lar mod: Arxiu: \"$1\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Combinacions de tecles. (Si aquest menú espatlla, esborrar coses de "
+#~ "minetest.conf)"
+
+#~ msgid "Main"
+#~ msgstr "Principal"
+
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "Menú principal"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nom / Contrasenya"
+
+#~ msgid "Name/Password"
+#~ msgstr "Nom/Contrasenya"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#~ msgid "Ok"
+#~ msgstr "D'acord"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Oclusió de paral·laxi"
+
+#, fuzzy
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Oclusió de paral·laxi"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP activat"
+
+#, fuzzy
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Reiniciar el mon individual"
+
+#, fuzzy
+#~ msgid "Select Package File:"
+#~ msgstr "Selecciona el fitxer del mod:"
+
+#, fuzzy
+#~ msgid "Special key"
+#~ msgstr "Tecla sigil"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Començar Un Jugador"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Per habilitar les ombres el controlador OpenGL ha ser utilitzat."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Activar Cinematogràfic"
+
+#~ msgid "Yes"
+#~ msgstr "Sí"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Has mort."
-#~ msgid "No of course not!"
-#~ msgstr "No, per descomptat que no!"
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/cs/minetest.po b/po/cs/minetest.po
index 17a223184..714fe7527 100644
--- a/po/cs/minetest.po
+++ b/po/cs/minetest.po
@@ -1,15 +1,10 @@
-# Czech translations for minetest.
-# Copyright (C) 2011 celeron
-# This file is distributed under the same license as the minetest.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Czech (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-03-04 04:45+0000\n"
-"Last-Translator: Jakub Vaněk <vanek.jakub4@seznam.cz>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-31 17:28+0000\n"
+"Last-Translator: Fjuro <fjuro@seznam.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/minetest/minetest/"
"cs/>\n"
"Language: cs\n"
@@ -17,35 +12,132 @@ 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 2.5-dev\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Vyprázdnit frontu odchozího chatu"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Prázdný příkaz."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Odejít do hlavní nabídky"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Neplatný příkaz: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Zadaný příkaz: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Vypsat připojené hráče"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Připojení hráči: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Fronta odchozího chatu je nyní prázdná."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Server zakázal tento příkaz."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Oživit"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Zemřel jsi"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Příkazy k dispozici:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Příkazy k dispozici: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Příkaz není k dispozici: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Získat nápovědu pro příkazy"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Použij \".help <příkaz>\" pro obdržení více informací, nebo \".help all\" "
+"pro celý výpis."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <příkaz>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Dobře"
+
+#: builtin/fstk/ui.lua
+#, fuzzy
+msgid "<none available>"
+msgstr "Příkaz není k dispozici: "
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Nastala chyba v Lua skriptu, což může být např. mod:"
+msgid "An error occurred in a Lua script:"
+msgstr "Nastala chyba v Lua skriptu:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred:"
msgstr "Nastala chyba:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Hlavní nabídka"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "OK"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Znovu se připojit"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "Server vyžaduje znovupřipojení se:"
+msgstr "Server vyžaduje opětovné připojení:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Nahrávám..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Vybrat mody"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -60,10 +152,8 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr "Server podporuje verze protokolů mezi $1 a $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Zkuste znovu povolit seznam veřejných serverů a zkontrolujte své internetové "
-"připojení."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -73,52 +163,87 @@ msgstr "Podporujeme pouze protokol verze $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Podporujeme verze protokolů mezi $1 a $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Zrušit"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
msgstr "Závislosti:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Zakázat balíček"
+msgid "Disable all"
+msgstr "Vypnout vše"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Povolit balíček"
+msgid "Disable modpack"
+msgstr "Zakázat balíček modifikací"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Povolit vše"
+msgstr "Zapnout vše"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Povolit balíček modifikací"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
"Nepodařilo se povolit mod \"$1\" protože obsahuje nepovolené znaky. Povoleny "
-"jsou pouze znaky a-z, 0-9."
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Skrýt vnitřní"
+"jsou pouze znaky [a-z0-9_]."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Skrýt obsahy balíčků"
+msgid "Find More Mods"
+msgstr "Najít více modů"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Žádné (volitelné) závislosti"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Není k dispozici žádný popis hry."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Žádné pevné závislosti"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Není k dispozici žádný popis balíčku modifikací."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Žádné volitelné závislosti"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Volitelné závislosti:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Uložit"
@@ -128,75 +253,394 @@ msgstr "Svět:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
-msgstr "povoleno"
+msgstr "zapnuto"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" již existuje. Chcete jej přepsat?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Budou nainstalovány závislosti $1 a $2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+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
+msgid "$1 downloading..."
+msgstr "$1 se stahuje..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 požadovaných závislostí nebylo nalezeno."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 závislostí bude nainstalováno a $2 bude vynecháno."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Všechny balíčky"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Již nainstalováno"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Zpět do hlavní nabídky"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Základní hra:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"ContentDB není přístupná pokud byl Minetest kompilován bez použití cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Stahuji..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Selhalo stažení $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Hry"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instalovat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Instalovat $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Instalovat chybějící závislosti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"Instalace rozšíření: poškozený archiv nebo nepodporovaný typ souboru \"$1\""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mody"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Nelze načíst žádný balíček"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Žádné výsledky"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Žádné aktualizace"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Nenalezeno"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Přepsat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Ověř prosím, zda je základní hra v pořádku."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Ve frontě"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Balíčky textur"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Odinstalovat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Aktualizovat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Aktualizovat vše [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Zobrazit více informací v prohlížeči"
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Svět s názvem \"$1\" už existuje"
+msgstr "Svět s názvem \"$1\" již existuje"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Další terén"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Teplota (výšková)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Vlhkost (výšková)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Prolínání biomů"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomy"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Jeskyně (velké)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Jeskyně (malé)"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Vytvořit"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Stáhněte si z minetest.net podhru, například minetest_game"
+msgid "Decorations"
+msgstr "Dekorace"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Stáhněte si jednu z minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Varování: Development Test je určen pro vývojáře."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Hra"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Žaláře"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Plochý terén"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Krajina vznášející se na nebi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Létající ostrovy (experimentální)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Generovat terén bez použití fraktálů: Oceány a podzemí"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Kopce"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Vodnost řek"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Zvyšuje vlhkost v okolí řek"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Instalovat $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Jezera"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Nízká vlhkost a vysoké teploty mají za následek mělké či vyschlé řeky"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Generátor mapy"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Nastavení pro Generátor mapy"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Nastavení pro Generátor mapy"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Hory"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Eroze"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Jeskynní systém"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Není vybrána žádná hra"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Snižuje teplotu a nadmořskou výšku"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Snižuje vlhkost s rostoucí nadmořskou výškou"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Řeky"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Nebyla vybrána podhra nebo název"
+msgid "Sea level rivers"
+msgstr "Řeky v úrovni mořské hladiny"
#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Seedové číslo"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Varování: \"Minimal development test\" je zamýšlen pouze pro vývojáře."
+msgid "Smooth transition between biomes"
+msgstr "Pozvolný přechod mezi biomy"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Povrchové struktury (nemá vliv na stromy a tropickou trávu vytvořené ve v6 a "
+"později)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Povrchové struktury, především stromy a rostliny"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Mírné, Poušť"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Mírné, Poušť, Džungle"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Mírné, Poušť, Džungle, Tundra, Tajga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Povrchová eroze"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Stromy a tropická tráva"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Proměnná hloubka řek"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Veliké jeskyně hluboko pod zemí"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Název světa"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Nemáte nainstalované žádné podhry."
+msgid "You have no games installed."
+msgstr "Nemáte nainstalované žádné hry."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "Skutečně chcete odstranit \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Smazat"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: Nepodařilo se odstranit \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: nepodařilo se odstranit \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: Neplatná cesta k modu \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: neplatná cesta \"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "Doopravdy chcete smazat svět \"$1\"?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Potvrdit heslo"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Jméno Generátoru mapy"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Jméno"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Heslo"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Hesla se neshodují!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Registrovat a Připojit se"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Přijmout"
@@ -204,25 +648,43 @@ msgstr "Přijmout"
msgid "Rename Modpack:"
msgstr "Přejmenovat balíček modů:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" není platný příznak."
+#: 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 ""
+"Tento balíček modů má uvedené jméno ve svém modpack.conf, které přepíše "
+"jakékoliv přejmenování zde."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr "(Nebyl zadán popis nastavení)"
+msgstr "(bez popisu)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D šum"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< Zpět do Nastavení"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
msgstr "Procházet"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Obsah"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Obsah"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr "Zakázáno"
+msgstr "Vypnuto"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
@@ -230,35 +692,24 @@ msgstr "Upravit"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
-msgstr "Povoleno"
+msgstr "Zapnuto"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr "Formát jsou tři čísla uvnitř závorek oddělená čárkami."
+msgid "Lacunarity"
+msgstr "Lakunarita"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Formát: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Hry"
+msgid "Octaves"
+msgstr "Oktávy"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mody"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr "Lakunarita může být specifikována spolu s předcházející čárkou."
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Odstup"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Prosím zadejte čárkami oddělený seznam vlajek."
+#, fuzzy
+msgid "Persistence"
+msgstr "Urputnost"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -269,327 +720,433 @@ msgid "Please enter a valid number."
msgstr "Zadejte prosím platné číslo."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Možné hodnoty jsou: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "Obnovit výchozí"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Přiblížení"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Hledat"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Vyberte cestu"
+msgid "Select directory"
+msgstr "Vyberte adresář"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Vybrat soubor"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Zobrazit technické názvy"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Hodnota musí být větší než $1."
+msgid "The value must be at least $1."
+msgstr "Hodnota musí být alespoň $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Hodnota musí být nižší než $1."
+msgid "The value must not be larger than $1."
+msgstr "Hodnota nesmí být větší než $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Instalace modu: špatný archiv nebo nepodporovaný typ souboru \"$1\""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Rozptyl X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Rozptyl Y"
-#: builtin/mainmenu/modmgr.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Rozptyl Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "absolutnihodnota"
+
+#. ~ "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 "Výchozí hodnoty"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "vyhlazení"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Povoleno)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 rozšíření"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Selhala instalace $1 do $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Instalace modu: ze souboru: \"$1\""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Instalace rozšíření: nenašel jsem skutečné jméno modu: $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Instalace modu: nenašel jsem skutečné jméno modu: $1"
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Instalace modu: nenalezen vhodný adresář s příslušným názvem pro balíček $1"
+"Instalace rozšíření: nenalezen vhodný adresář s příslušným názvem pro "
+"balíček $1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Zavřít obchod"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Platné rozšíření nebylo nalezeno"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Stahuji $1, prosím čekejte..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Selhala instalace $1 jako rozšíření textur"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Instalovat"
-
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Strana $1 z $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Selhala instalace hru jako $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Hodnocení"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Selhala instalace rozšíření $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Hledání"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Selhala instalace rozšíření $1"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Zkratka:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Nahrávám..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Úspěšně nainstalováno:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Seznam veřejných serverů je vypnut"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Neřazené"
+#: 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é "
+"připojení."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Přeinstalovat"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "O nás"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Aktivní přispěvatelé"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Aktivní renderer:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
-msgstr "Klíčoví vývojáři"
+msgstr "Hlavní vývojáři"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Autoři"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Otevřít uživatelský adresář"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Ve správci souborů otevře adresář obsahující uživatelské světy, hry,\n"
+"mody a balíčky textur."
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Bývalí přispěvatelé"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Bývalí klíčoví vývojáři"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Nainstalované mody:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Informace o modu:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Popis modu není dostupný"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Přejmenovat"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Vybrat soubor s modem:"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Zobrazit ladící informace"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Odinstalovat vybraný mod"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Procházet online obsah"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Odinstalovat označený balíček"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Obsah"
-#: builtin/mainmenu/tab_multiplayer.lua
-#, fuzzy
-msgid "Address / Port"
-msgstr "Adresa / Port :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Zakázat Rozšíření Textur"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Klient"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informace:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Připojit"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Instalované balíčky:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kreativní mód"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Žádné závislosti."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Poškození povoleno"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Balíček nemá žádný popis"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Del. Favorite"
-msgstr "Oblíbené:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Přejmenovat"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Favorite"
-msgstr "Oblíbené:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Odinstalovat balíček"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Name / Password"
-msgstr "Jméno / Heslo :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Použít Rozšíření Textur"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP povoleno"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Uveřejnit server"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr "Svázat adresu"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Nastavit"
+msgstr "Poslouchat na Adrese"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Kreativní mód"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "Povolit poškození"
+msgstr "Povolit zranění"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Jméno/Heslo"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Založit hru"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Založit server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Instalovat hry z ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nový"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "Žádný svět nebyl vytvořen ani vybrán!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Spustit hru"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Veřejný"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Vybrat mody"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
-msgstr "Vyber svět:"
+msgstr "Vyberte svět:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Server"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Port serveru"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "Spustit hru"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Adresa"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Vyčistit"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Kreativní mód"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Zranění / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Oblíbené"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Nekompatibilní server"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Připojit se ke hře"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Veřejné servery"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Obnovit"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Vzdálený port"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Popis serveru"
+
#: builtin/mainmenu/tab_settings.lua
-msgid "2x"
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
msgstr "3D mraky"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr ""
+msgstr "4x"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr ""
+msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Pokročilá nastavení"
+msgid "All Settings"
+msgstr "Všechna Nastavení"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "Antialiasing:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Jste si jisti, že chcete resetovat místní svět?"
+msgid "Autosave Screen Size"
+msgstr "Pamatovat si velikost obrazovky"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Bilinear Filter"
-msgstr "Bilineární filtrování"
+msgstr "Bilineární filtr"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "Bump mapování"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Změnit klávesy"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Změnit nastavení kláves"
+msgid "Connected Glass"
+msgstr "Propojené sklo"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dynamické stíny"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Connected Glass"
-msgstr "Propojené sklo"
+msgid "Dynamic shadows:"
+msgstr "Dynamické stíny: "
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Vícevrstevné listí"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
-msgstr "Mipmapa"
+msgid "High"
+msgstr "Vysoké"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
-msgstr "Mipmapa + Anizo. filtr"
+msgid "Low"
+msgstr "Nízké"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Ne"
+msgid "Medium"
+msgstr "Střední"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "Mipmapy"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmapy + anizotropní filtr"
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
-msgstr "Žádné filtr"
+msgstr "Filtrování vypnuto"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
-msgstr "Žádné Mipmapy"
+msgstr "Mipmapy vypnuté"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Highlighting"
-msgstr "Zvýraznění bloků"
+msgstr "Osvícení bloku"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Outlining"
-msgstr "Zvýraznění bloků"
+msgstr "Obrys bloku"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Žádný"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Normal Mapping"
-msgstr "Tone mapping"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "Neprůhledné listí"
@@ -597,18 +1154,13 @@ msgstr "Neprůhledné listí"
msgid "Opaque Water"
msgstr "Neprůhledná voda"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Parallax Occlusion"
-
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "Povolit částice"
+msgstr "Částice"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Reset místního světa"
+msgid "Screen:"
+msgstr "Obrazovka:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -619,11 +1171,18 @@ msgid "Shaders"
msgstr "Shadery"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Shader (experimentální)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Shadery (není dostupné)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "Jednoduché listí"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Smooth Lighting"
msgstr "Plynulé osvětlení"
@@ -631,95 +1190,66 @@ msgstr "Plynulé osvětlení"
msgid "Texturing:"
msgstr "Texturování:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Pro povolení shaderů musíte používat OpenGL ovladač."
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
msgstr "Tone mapping"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "Dosah dotyku (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Dosah dotyku: (px)"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Trilinear Filter"
-msgstr "Trilineární filtrování"
+msgstr "Trilineární filtr"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Waving Leaves"
-msgstr "Vlnění listů"
+msgid "Very High"
+msgstr "Velmi vysoké"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Plants"
-msgstr "Vlnění rostlin"
+msgid "Very Low"
+msgstr "Vylmi nízké"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Water"
-msgstr "Vlnění vody"
+msgid "Waving Leaves"
+msgstr "Vlnění listů"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Ano"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Nastavení modů"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Hlavní nabídka"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Start místní hry"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Hrát"
+msgid "Waving Liquids"
+msgstr "Vlnění Kapalin"
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Místní hra"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Informace nejsou dostupné"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Vyberte balíček textur:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Vlnění rostlin"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Balíčky textur"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Chyba spojení (vypršel čas?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Vypršel časový limit připojení."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Hotovo!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Inicializuji bloky"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "Vytvářím bloky..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "Načítám textury..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr "Sestavuji shadery..."
@@ -728,7 +1258,8 @@ msgid "Connection error (timed out?)"
msgstr "Chyba spojení (vypršel čas?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr "Hru nebylo možné nahrát nebo najít \""
#: src/client/clientlauncher.cpp
@@ -749,72 +1280,189 @@ msgid "Player name too long."
msgstr "Jméno hráče je příliš dlouhé."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Zvolte prosím název!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Soubor s heslem nebylo možné otevřít: "
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "Uvedená cesta ke světu neexistuje: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Pro detaily se podívejte do debug.txt."
+"Detaily naleznete v souboru debug.txt."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Změnit klávesy"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Adresa: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Mód: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Veřejný: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Název serveru: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Nastala chyba:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Automatický posun vpřed zakázán"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Automatický posun vpřed povolen"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Block bounds hidden"
+msgstr "Ohraničení bloku"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Aktualizace kamery (pohledu) zakázána"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Aktualizace kamery (pohledu) povolena"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Změnit heslo"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Filmový režim zakázán"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Filmový režim povolen"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Lokální mody"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Uživatelské skripty nejsou povoleny"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Připojuji se k serveru..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Pokračovat"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Ovládání:\n"
+"- %s: pohyb dopředu\n"
+"- %s: pohyb dozadu\n"
+"- %s: pohyb doleva\n"
+"- %s: pohyb doprava\n"
+"- %s: skok/výstup\n"
+"- %s: těžit/uhodit\n"
+"- %s: umístit/použít\n"
+"- %s: plížení/sestup\n"
+"- %s: zahození předmětu\n"
+"- %s: inventář\n"
+"- Myš: otáčení/rozhlížení\n"
+"- Kolečko myši: výběr předmětu\n"
+"- %s: chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Creating client..."
msgstr "Vytvářím klienta..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Vytvářím server..."
+msgstr "Spouštím server…"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Výchozí ovládání:\n"
-"- WASD: pohyb\n"
-"- Mezera: skákání/šplhání\n"
-"- Shift: plížení\n"
-"- Q: zahodit věc\n"
-"- I: inventář\n"
-"- Myš: otáčení,rozhlížení\n"
-"- Myš(levé tl.): kopat, štípat\n"
-"- Myš(pravé tl.): položit, použít\n"
-"- Myš(kolečko): vybrat přihrádku\n"
-"- T: chat\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Ladící informace a profilovací graf skryty"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Ladící informace zobrazeny"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Ladící informace, profilovací graf a obrysy skryty"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -842,492 +1490,806 @@ msgstr ""
"- stisk a přesun, klik druhým prstem\n"
" --> umístit samostatnou věc do přihrádky\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Neomezený pohled zakázán"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Neomezený pohled povolen"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Vytvářím klienta..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Odejít do nabídky"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Ukončit hru"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Rychlý režim zakázán"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Rychlý režim povolen"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Rychlý režim povolen (pozn.: nemáte oprávnění 'fast')"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Režim létání zakázán"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Režim létání povolen"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Režim létání povolen (pozn.: nemáte oprávnění 'fly')"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Mlha je zakázána"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Mlha je povolena"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Informace o hře:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Hra pozastavena"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Běží server"
+
+#: src/client/game.cpp
msgid "Item definitions..."
msgstr "Definice věcí..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
msgstr "Média..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Definice bloků..."
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Minimapa je aktuálně zakázána"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Překládám adresu..."
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multiplayer"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Znovu stvořit"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Režim bez ořezu zakázán"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Vypínání..."
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Režim bez ořezu povolen"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Hlasitost"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Režim bez ořezu povolen (pozn.: nemáte oprávnění 'noclip')"
-#: src/game.cpp
-msgid "You died."
-msgstr "Zemřel jsi."
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definice bloků..."
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "OK"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Vypnuto"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Zadejte "
+#: src/client/game.cpp
+msgid "On"
+msgstr "Zapnuto"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Pokračovat"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Posun v režimu Pitch zakázán"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Použít\" = slézt dolů"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Posun v režimu Pitch povolen"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Vzad"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profilovací graf zobrazen"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Chat"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Vzdálený server"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Příkaz"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Překládám adresu..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konzole"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Vypínání..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Dvojstisk klávesy \"skok\" zapne létání"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Singleplayer"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Zahodit"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Hlasitost"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Vpřed"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Zvuk vypnut"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventář"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Zvukový systém je vypnutý"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Skok"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Zvukový systém není v této verzi podporovaný"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Klávesa je již používána"
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Zvuk zapnut"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-"Nastavení kláves (Pokud tohle menu nebude v pořádku, odstraňte nastavení z "
-"minetest.conf)"
-
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Doleva"
-
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Vypsat hromádky"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Změna dohledu"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Doprava"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Plížit se"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Plynulý pohyb kamery"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Turbo"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Omezení dohlédnutí upraveno na %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Létání"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Omezení dohlédnutí na maximu: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Duch"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Omezení dohlédnutí na minimu: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Použít"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Hlasitost nastavena na %d%%"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Přiblížení"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Obrysy zobrazeny"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "stiskni klávesu"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Přiblížení je aktuálně zakázáno"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Změnit"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "OK"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Potvrdit heslo"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Chat skryt"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nové heslo"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Chat zobrazen"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Staré heslo"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Ovládací prvky skryty"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Hesla se neshodují!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Ovládací prvky zobrazeny"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Odejít"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profilování skryto"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Hlasitost: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profilování zobrazeno (strana %d z %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Aplikace"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
-
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Zpět"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Klávesa velkého písmene"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Vyčistit"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Čárka"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convert"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Dolů"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "End"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Smazat EOF"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Erase EOF"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Esc"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Spustit"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Pomoc"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insert"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Povolené IME"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME Convert"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME Mode Change"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME Nonconvert"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Doleva"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Levé tlačítko myši"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Levý Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Levá klávesa Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Levý Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Levá klávesa Windows"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Nabídka"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Prostřední tlačítko myši"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Mínus"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Změna režimu"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Další"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nonconvert"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Numerická klávesnice: *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Numerická klávesnice: +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Numerická klávesnice: -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Numerická klávesnice: ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Numerická klávesnice: /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Numerická klávesnice: 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Numerická klávesnice: 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Numerická klávesnice: 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Numerická klávesnice: 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Numerická klávesnice: 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Numerická klávesnice: 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Numerická klávesnice: 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Numerická klávesnice: 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Numerická klávesnice: 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Numerická klávesnice: 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Klávesa Page Down"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Klávesa Page Up"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pauza"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Tečka"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plus"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Hrát"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Print Screen"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Předchozí"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Vrátit"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Doprava"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Pravé tlačítko myši"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Pravý Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Pravá klávesa Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Pravý Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Pravá klávesa Windows"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Vybrat"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Spánek"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Snapshot"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Mezerník"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulátor"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Nahoru"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X Tlačítko 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X Tlačítko 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Přiblížení"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Minimapa je skryta"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimapa v režimu Radar, Přiblížení x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minimapa v režimu Povrch, Přiblížení x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Minimapa v režimu Textura"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Selhalo stažení $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Pokračovat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = sestoupit"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Automaticky vpřed"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Automaticky skákat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Vzad"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Ohraničení bloku"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Změnit nastavení kamery"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Příkaz"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konzole"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Snížit rozsah"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Snížit hlasitost"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "2× skok přepne létání"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Zahodit"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Vpřed"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Zvýšit rozsah"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Zvýšit hlasitost"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventář"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Skok"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Klávesa je již používána"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Místní příkaz"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Ztlumit"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Další věc"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Předchozí věc"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Změna dohledu"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Snímek obrazovky"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Plížit se"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Zapnout/Vypnout ovládací prvky"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Zapnout/Vypnout záznam chatu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Zapnout/Vypnout rychlost"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Zapnout/Vypnout létání"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Zapnout/Vypnout mlhu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Zapnout/Vypnout minimapu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Zapnout/Vypnout režim ořezu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Zapnout/Vypnout režim posunu Pitch"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "stiskni klávesu"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Změnit"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nové heslo"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Staré heslo"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Hesla se neshodují!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Odejít"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Ztlumeno"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Hlasitost: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "cs"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Zvolte prosím název!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Opravena pozice virtuálního joysticku.\n"
+"Pokud je zakázán, virtuální joystick se upraví podle umístění prvního dotyku."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Použít virtuální joystick pro stisk tlačítka \"Aux1\".\n"
+"Pokud je povoleno, virtuální joystick automaticky stiskne tlačítko \"Aux1\" "
+"pokud je mimo hlavní kruh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"(X,Y,Z) rozestup fraktálu od středu světa v jednotkách 'scale'.\n"
+"Může být použito k posunutí spawnu ze souřadnic (0,0),\n"
+"nebo k umožnění přiblížení 'zoom in' na konkrétní bod,\n"
+"zvýšením hodnoty 'scale'.\n"
+"Výchozí nastavení je vhodné pro Mandelbrotovu množinu,\n"
+"pro Juliovu a další množiny, může být potřeba speciálního\n"
+"nastavení.\n"
+"Rozsah je přibližně od -2 do 2. Násobte 'scale' pro posun v blocích."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = paralaxní okluze s informacemi o sklonu (rychlejší).\n"
-"1 = mapování reliéfu (pomalejší, ale přesnější)."
+"(X, Y, Z) měřítko fraktálu v uzlech.\n"
+"Skutečná fraktální velikost bude 2 až 3krát větší.\n"
+"Tato čísla mohou být velmi velká, fraktál se nemusí\n"
+"vejít do světa.\n"
+"Zvětšete tyto, abyste „přiblížili“ detail fraktálu.\n"
+"Výchozí je pro svisle stlačený tvar, vhodný například\n"
+"pro ostrov, nastavte všechna 3 čísla stejně pro ryzí tvar."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "2D šum, který definuje tvar/velikost horských útvarů."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2D šum, který definuje tvar/velikost postupných hor."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2D šum, který definuje tvar/velikost schodišťových hor."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "2D šum, který definuje velikost/četnost horských masivů."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2D šum, který definuje velikost/četnost postupných hor."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "2D šum, který definuje velikost/četnost schodišťových horských útvarů."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "2D šum, který umisťuje říční koryta a kanály."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1338,6 +2300,51 @@ msgid "3D mode"
msgstr "Režim 3D zobrazení"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Intezita Parallax ve 3D modu"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3D šum určující obří jeskynní dutiny."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"3D šum určující strukturu a výšku hor.\n"
+"Určuje také strukturu horského terénu na létajících ostrovech."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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 šum definující strukturu létajících ostrovů.\n"
+"Pokud je odlišný od výchozího, může být nutné upravit\n"
+"\"měřítko\" šumu (výchozí 0.7), jelikož zužování (obrácené hory)\n"
+"létajících ostrovů funguje nejlépe pokud je šum v rozmezí přibližně -2.0 až "
+"2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "3D šum určující strukturu stěn kaňonů řek."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3D šum určující terén."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr "3D šum definující horské převisy, atp. Typicky malé odchylky."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3D šum definující počet žalářů na kusu mapy."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1346,7 +2353,9 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Podpora 3D zobrazení.\n"
"V současné době podporovány:\n"
@@ -1354,7 +2363,14 @@ msgstr ""
"- anaglyph: azurové/purpurové barevné 3D.\n"
"- interlaced: pro polarizaci lichý/sudý řádek.\n"
"- topbottom: rozdělení obrazovky na horní a dolní část.\n"
-"- sidebyside: rozdělení obrazovky na levou a pravou část."
+"- sidebyside: rozdělení obrazovky na levou a pravou část.\n"
+"- crossview: Zkřížení očí 3d\n"
+"- pageflip: 3d se 4-násobným bufferem.\n"
+"Pozn.: Režim 'interlaced' vyžaduje podporu 'shaderů'."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1374,32 +2390,40 @@ msgid "A message to be displayed to all clients when the server shuts down."
msgstr "Zpráva, která se zobrazí všem klientům, když se server vypne."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "Interval Aktivní Blokové Modifikace (ABM)"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "ABM použitelný čas"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Maximální počet připravených bloků ve frontě"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Zrychlení ve vzduchu"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Gravitační zrychlení, v blocích za vteřinu za vteřinu."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Active Block Modifiers"
+msgstr "Active Block Modifiery"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifiers"
-msgstr ""
+msgid "Active block management interval"
+msgstr "Interval pro Active Block Management"
#: src/settings_translation_file.cpp
msgid "Active block range"
-msgstr ""
+msgstr "Rozsah aktivních bloků"
#: src/settings_translation_file.cpp
msgid "Active object send range"
-msgstr ""
+msgstr "Odesílací rozsah aktivních bloků"
#: src/settings_translation_file.cpp
msgid ""
@@ -1412,6 +2436,10 @@ msgstr ""
"Poznámka: pole adresy v hlavním menu přepisuje toto nastavení."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Aktivuje částicové efekty při těžení bloku."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
@@ -1420,30 +2448,63 @@ msgstr ""
"například s 4k obrazovkami."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
+"Upravit hustotu roviny létajících ostrovů.\n"
+"Zvýšením hodnoty se zvýší hustota. Hodnota může být kladná i záporná.\n"
+"Hodnota = 0.0: 50% světa tvoří létajících ostrovy.\n"
+"Hodnota = 2.0 (může být i vyšší v závislosti na “mgv7_np_floatland“,\n"
+"nutno vždy otestovat) vytvoří souvislou vrstvu létajících ostrovů."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Dodatkový název položky"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Pokročilé"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
+"Změní křivku světla použitím \"gamma korekce\".\n"
+"Vysoké hodnoty zesvětlí málo a středně osvětlené prostory.\n"
+"Hodnota \"1.0\" nastaví výchozí křivku.\n"
+"Tato úprava slouží především pro úpravu denního\n"
+"a umělého osvětlení a má pouze malý dopad na noční osvětlení."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+#, fuzzy
+msgid "Always fly fast"
msgstr "Vždy mít zapnuté létání a turbo"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "Gamma ambientní okluze"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr ""
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Množství zpráv, které může hráč odeslat za 10 vteřin."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Zvýrazní údolí."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
@@ -1451,47 +2512,118 @@ msgstr "Anizotropní filtrování"
#: src/settings_translation_file.cpp
msgid "Announce server"
-msgstr ""
+msgstr "Zveřejnit server"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
+msgid "Announce to this serverlist."
+msgstr "Oznámit tomuto seznamu serverů."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Append item name"
+msgstr "Dodatkový název položky"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Dodatkový název položky v popisku."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Použít stromový šum"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Setrvačnost ruky"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
+"Setrvačnost ruky, vytváří větší dojem opravdového pohybu\n"
+"ruky, výkyvem/pohybem kamery."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
msgstr "Zeptat se na znovupřipojení po havárii"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
-msgstr "Automaticky hlásit seznamu serverů."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"V této vzdálenosti bude server razantně optimalizovat výběr bloků,\n"
+"které pošle klientům.\n"
+"Malé hodnoty mohou zlepšit výkon, však mohou také způsobit chyby\n"
+"ve vykreslování (některé bloky, zvláště pod vodou, v jeskyních\n"
+"a někdy i na zemi, nebudou vykresleny).\n"
+"Nastavení této hodnoty vyšší než max_block_send_distance zakáže vypne\n"
+"tuto optimalizaci.\n"
+"Jednotkou je mapblok (16 bloků)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Automaticky vpřed klávesa"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Automaticky vyskočit na překážky vysoké 1 blok."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Automaticky nahlásit do seznamu serverů."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Ukládat velikost obr."
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Režim automatického přiblížení"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1 klávesa"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Aux1 klávesa pro výstup/sestup"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Vzad"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Základní výška terénu"
+msgid "Base ground level"
+msgstr "Základní úroveň povrchu"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Základní"
+msgid "Base terrain height."
+msgstr "Základní výška terénu."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Basic Privileges"
-msgstr "Výchozí práva"
+msgid "Basic privileges"
+msgstr "Základní práva"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Šum pláže"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Práh šumu pláže"
#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
@@ -1502,8 +2634,37 @@ msgid "Bind address"
msgstr "Svázat adresu"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bitová hloubka (bity na pixel) v celoobrazovkovém režimu."
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parametry tepelného a vlhkostního šumu pro Biome API"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Šum biomů"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Optimalizace vzdálenosti vysílání bloku"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Cesta k tučnému písmu s kurzívou"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Cesta k tučnému proporcionálnímu písmu s kurzívou"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Cesta k tučnému písmu"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Cesta k proporcionálnímu písmu"
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1511,84 +2672,138 @@ msgstr "Stavění uvnitř hráče"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Zabudované"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Bump mapování"
+#, fuzzy
+msgid "Camera"
+msgstr "Změnit nastavení kamery"
#: src/settings_translation_file.cpp
-msgid "Camera smoothing"
+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 ""
#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "Plynulost pohybu kamery"
+
+#: src/settings_translation_file.cpp
msgid "Camera smoothing in cinematic mode"
-msgstr ""
+msgstr "Plynulost pohybu kamery ve filmovém režimu"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
msgstr "Klávesa pro přepínání aktualizace pohledu"
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Šum v jeskynních"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr ""
+msgstr "Šum v jeskynních 1"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr ""
+msgstr "Šum v jeskynních 2"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cave width"
-msgstr "Šířka obrazovky"
+msgstr "Šířka jeskyní"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr "Šum jeskyní 1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Šum jeskyní 2"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cavern limit"
+msgstr "Limit jeskynních dutin"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Šum jeskynních dutin"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Zúžení jeskynních dutin"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Práh jeskynních dutin"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Horní hranice jeskynních dutin"
+
+#: 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 ""
+"Střed posílené křivky světla.\n"
+"0.0 odpovídá nejnižší úrovni, 1.0 odpovídá nejvyšší úrovni světla."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Doba do zobrazení času pro příkaz v chatu"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Příkazy"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Velikost písma v chatu"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Klávesa chatu"
#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Úroveň důležitosti ladících informací"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Omezení počtu zpráv v Chatu"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Formát zpráv v chatu"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Doba do vyhození zprávy z chatu"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Omezení velikosti jedné zprávy v Chatu"
+
+#: src/settings_translation_file.cpp
msgid "Chat toggle key"
msgstr "Klávesa zobrazení chatu"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Příkaz"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
+msgid "Chat weblinks"
+msgstr "Chat zobrazen"
#: src/settings_translation_file.cpp
msgid "Chunk size"
-msgstr ""
+msgstr "Velikost chunku"
#: src/settings_translation_file.cpp
msgid "Cinematic mode"
-msgstr "Plynulý pohyb kamery"
+msgstr "Plynulá kamera"
#: src/settings_translation_file.cpp
msgid "Cinematic mode key"
@@ -1599,16 +2814,39 @@ msgid "Clean transparent textures"
msgstr "Vynulovat průhledné textury"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Klient"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Klient a Server"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Rychlost šplhání"
+msgid "Client modding"
+msgstr "Lokální mody"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Omezení modování na straně klienta"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Výška mraků"
+msgid "Client side node lookup range restriction"
+msgstr "Omezení vyhledávání bloků z klientské aplikace"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Lokální mody"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Rychlost šplhání"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1631,24 +2869,63 @@ msgid "Colored fog"
msgstr "Barevná mlha"
#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "Zbarvené stíny"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Seznam nastavení ve formátu CSV sloužící k filtrování obsahu repozitáře.\n"
+"\"nesvobodné\" slouží pro skrytí balíčků, které se podle definice Free "
+"Software Foundation\n"
+"neřadí do \"svobodného softwaru\".\n"
+"Můžete také zadat hodnocení obsahu.\n"
+"Tato nastavení jsou nezávislá na versi Minetestu,\n"
+"kompletní seznam na: https://content.minetest.net/help/content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
+"Seznam modů, oddělených čárkami, které mohou přistupovat k HTTP API,\n"
+"které jim dovoluje nahrávat a stahovat data na/z internetu."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
-"Seznam důvěryhodných modů oddělených čárkami, které mohou používat "
-"potenciálně nebezpečné\n"
-"funkce ve chvílích, kdy je zapnuto zabezpečení modů (pomocí "
+"Seznam důvěryhodných modů, oddělených čárkami, které mohou používat\n"
+"nebezpečné funkce i když je zapnuto zabezpečení modů (pomocí "
"request_insecure_environment())."
#: src/settings_translation_file.cpp
msgid "Command key"
-msgstr "Příkazová klávesa"
+msgstr "CMD ⌘"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Connect glass"
@@ -1671,16 +2948,36 @@ msgid "Console color"
msgstr "Barva konzole"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Klávesa konzole"
+msgid "Console height"
+msgstr "Šírka konzole"
#: src/settings_translation_file.cpp
-msgid "Continuous forward"
+msgid "Content Repository"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid "ContentDB Flag Blacklist"
+msgstr "ContentDB: Černá listina"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "ContentDB Max. souběžných stahování"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "ContentDB-URL"
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr "Neustálý pohyb vpřed"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
+"Nepřetržitý pohyb vpřed zapnutý klávesou Automaticky vpřed.\n"
+"Stisk klávesy Automaticky vpřed nebo Dozadu, pohyb zruší."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1689,66 +2986,69 @@ msgstr "Ovládání"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
"Ovládání délky denního cyklu.\n"
-"Příklad: 72 = 20 minut, 360 = 4 minutý, 1 = 24 hodin, 0 = zůstává pouze noc "
-"nebo den."
+"Příklad:\n"
+"72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = zůstává pouze noc nebo den."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr ""
+msgstr "Stanovuje strmost/hloubku jezerních prohlubní."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr ""
+msgstr "Stanovuje strmost/výšku hor."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
+"Stanovuje šířku tunelů. Nižší hodnota vytváří širší tunely.\n"
+"Hodnota >= 10.0 úplně vypne generování tunelů, čímž se zruší\n"
+"náročné výpočty šumu."
#: src/settings_translation_file.cpp
msgid "Crash message"
msgstr "Zpráva o havárii"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgid "Creative"
+msgstr "Kreativní"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr ""
+msgstr "Průhlednost zaměřovače"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
+"Průhlednost zaměřovače (0 až 255).\n"
+"Také určuje barvu zaměřovače"
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr ""
+msgstr "Barva zaměřovače"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
+"Barva zaměřovače (R,G,B).\n"
+"Také určuje barvu zaměřovače"
#: src/settings_translation_file.cpp
msgid "DPI"
@@ -1763,14 +3063,26 @@ msgid "Debug info toggle key"
msgstr "Klávesa pro zobrazení ladících informací"
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Práh velikosti souboru s ladícími informacemi"
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "Úroveň minimální důležitosti ladících informací"
#: src/settings_translation_file.cpp
-msgid "Dedicated server step"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Klávesa snížení hlasitosti"
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr "Délka serverového kroku"
+
+#: src/settings_translation_file.cpp
msgid "Default acceleration"
msgstr "Výchozí zrychlení"
@@ -1796,27 +3108,89 @@ msgstr "Výchozí práva"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Výchozí formát reportů"
#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Výchozí velikost hromádky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
+"Určit kvalitu filtrování stínů\n"
+"Simuluje efekt měkkých stínů použitím PCF nebo Poissonova disku,\n"
+"za využívá většího výkonu."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Určuje oblasti, kde stromy nesou plody."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Určuje oblasti s písčitými plážemi."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "Určuje rozmístění vyššího terénu a strmých útesů."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Určuje rozmístění vyššího terénu."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Určuje celkovou velikost jeskynních dutin, menší hodnoty vytváří větší "
+"dutiny."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Určuje makroskopickou strukturu koryta řeky."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Určuje pozici a terén možných hor a jezer."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Určuje základní úroveň povrchu."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Určuje hloubku říčního koryta."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
-msgstr "Definuje maximální posun hráče v blocích (0 = bez limitu)."
+msgstr "Určuje maximální posun hráče v blocích (0 = neomezený)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Určuje šířku říčního koryta."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Určuje šířku údolí řeky."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Určuje lesní oblasti a hustotu stromového porostu."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Interval mezi aktualizacemi geom. sítí na klientovi (v milisekundách).\n"
+"Zvýšení této hodnoty sníží rychlost změn, tudíž omezí sekání u pomalejších "
+"klientů."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Zpoždění odeslání bloků po položení"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
@@ -1824,19 +3198,15 @@ msgstr "Prodleva před zobrazením bublinové nápovědy, uvádějte v milisekun
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
-msgstr ""
+msgstr "Zacházení se zastaralým Lua API"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
-msgstr ""
+msgid "Depth below which you'll find giant caverns."
+msgstr "Hloubka, pod kterou se nachází velké jeskynní dutiny."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Rychlost slézání"
+msgid "Depth below which you'll find large caves."
+msgstr "Hloubka, pod kterou se nachází velké jeskyně."
#: src/settings_translation_file.cpp
msgid ""
@@ -1847,71 +3217,148 @@ msgstr ""
"uveden v seznamu serverů."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Práh pouštního šumu"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
+"Pouště se objeví v místech, kde 'np_biome' přesahuje tuto hodnotu.\n"
+"Ignorováno, pokud je zapnuté nastavení \"snowbiomes\"."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Zakázat anticheat"
+msgid "Desynchronize block animation"
+msgstr "Nesynchronizovat animace bloků"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Dekorace"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Dig key"
+msgstr "Klávesa těžení"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Částicové efekty při těžení"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Vypnout anticheat"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Zakázat prázdná hesla"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr "Doménové jméno serveru, které bude zobrazené v seznamu serverů."
+msgstr "Doménové jméno serveru zobrazované na seznamu serverů."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr "Dvojstisk klávesy \"skok\" zapne létání"
+msgstr "Dvojstisk skoku zapne létání"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
-msgstr "Dvojstisk klávesy \"skok\" zapne létání."
+msgstr "Dvojstisk klávesy skoku zapne létání."
#: src/settings_translation_file.cpp
msgid "Drop item key"
-msgstr "Klávesa pro vyhození předmětu"
+msgstr "Klávesa vyhození předmětu"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Vypsat ladící informace z Generátoru mapy."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Horní hranice Y pro žaláře"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Dolní hranice Y pro žaláře"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Šum žalářů"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Zapnout podporu IPv6 (pro klienta i server).\n"
+"Požadováno pro IPv6 připojení."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Zapnout podporu Lua modů na straně klienta.\n"
+"Tato funkce je experimentální a její API se může změnit."
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+#, fuzzy
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
+"Zapnout filtrování Poissoným diskem.\n"
+"Pokud je zapnuto, využívá Poissonův disk pro generování \"měkkých stínů\". V "
+"opačném případě je využito filtrování PCF."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+#, fuzzy
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
+"Zanout zbarvené stíny.\n"
+"Po zapnutí vrhají průhledné předměty zbarvené stíny. Toto má velký vliv na "
+"výkon."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Povolit konzolové okno"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Zapnout kreativní mód pro všechny hráče"
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "Povolit VBO"
+msgid "Enable joysticks"
+msgstr "Zapnout joysticky"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr "Povolit zabezpečení módů"
+msgstr "Zapnout zabezpečení módů"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr "Povolit zranění a úmrtí hráčů."
+msgstr "Povolit zraňování a umírání hráčů."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
@@ -1922,6 +3369,12 @@ msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
+"Zapne plynulé osvětlení s jednoduchou ambientní okluzí.\n"
+"Vypněte pro zrychlení či jiný vzhled."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1931,7 +3384,7 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
-"Povolte pro zakázání připojení starých klientů.\n"
+"Zapněte pro zakázání připojení starých klientů.\n"
"Starší klienti jsou kompatibilní v takovém smyslu, že při připojení k novým "
"serverům\n"
"nehavarují, ale nemusí podporovat všechny vlastnosti, které byste očekával/a."
@@ -1943,94 +3396,129 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
-"Povolit použití vzdáleného media serveru (je-li poskytnut serverem).\n"
+"Umožnit použití vzdáleného media serveru (je-li poskytnut serverem).\n"
"Vzdálené servery nabízejí výrazně rychlejší způsob, jak stáhnout\n"
"média (např. textury) při připojování k serveru."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
+"Zapnout objekty vyrovnávací paměti vertexů.\n"
+"Toto by mělo výrazně zlepšit grafický výkon."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Nastavit pohupování pohledu a jeho výraznost.\n"
+"Např.: 0 pro žádné, 1.0 pro normální a 2.0 pro dvojité klepání."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"Povolit/zakázat spuštění IPv6 serveru.\n"
+"Ignorováno, pokud je 'bind_address' nastaveno.\n"
+"Je třeba mít povoleno enable_ipv6."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+"Zapíná Hableho \"Uncharted 2\" filmové mapování odstínů.\n"
+"Simuluje křivku odstínu fotografického filmu a tím přibližný vzhled\n"
+"obrázků s vysokým dynamickým rozsahem (HDR). Kontrast středních\n"
+"hodnot je lehce zvýšený, vysoké a nízké hodnoty jsou postupně komprimovány."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Povolit filmový tone mapping"
+msgid "Enables animation of inventory items."
+msgstr "Povolí animaci věcí v inventáři."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Zapnout cachování geom. sítí otočených pomocí facedir."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr "Povolit minimapu."
+msgstr "Zapne minimapu."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
+"Zapíná zvukový systém.\n"
+"Vypnutí má za náledek úplné ztlumení všech zvuků\n"
+"a zvukového ovládání ve hře.\n"
+"Změna tohoto nastavení vyžaduje restart."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr "Interval vypisování profilovacích dat enginu"
+
+#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Metody entit"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
+"Exponent pro zužování létajících ostrovů. Mění míru zúžení.\n"
+"Hodnota = 1.0 vytvoří rovnoměrné přímé zúžení.\n"
+"Hodnoty > 1.0 vytvoří hladké zúžení vhodné pro výchozí oddělené\n"
+"létající ostrovy.\n"
+"Hodnoty < 1.0 (např. 0.25) vytvoří výraznější úroveň povrchu\n"
+"s rovinatějšími nížinami, vhodné pro souvislou vrstvu létajících ostrovů."
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS v menu pauzy"
-
-#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr "FSAA"
+msgid "FPS"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr ""
+msgid "FPS when unfocused or paused"
+msgstr "Snímky za sekundu (FPS) při pauze či hře běžící na pozadí"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Záložní písmo"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Stín záložního písma"
+msgid "Factor noise"
+msgstr "Součinový šum"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Průhlednost stínu záložního písma"
+msgid "Fall bobbing factor"
+msgstr "Součinitel houpání pohledu při pádu"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Velikost záložního písma"
+msgid "Fallback font path"
+msgstr "Cesta k záložnímu písmu"
#: src/settings_translation_file.cpp
msgid "Fast key"
@@ -2050,64 +3538,103 @@ msgstr "Turbo režim pohybu"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Turbo režim pohybu (pomocí klávesy použít).\n"
+"Turbo režim pohybu (pomocí klávesy \"Aux1\").\n"
"Vyžaduje na serveru přidělené právo \"fast\"."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Úhel pohledu"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "Úhel pohledu ve stupních."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Turbo režim pohybu (pomocí klávesy použít).\n"
-"Vyžaduje na serveru přidělené právo \"fast\"."
+"Soubor v client/serverlist/, který obsahuje oblíbené servery zobrazené na "
+"záložce 'Multiplayer'."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+msgid "Filler depth"
+msgstr "Hloubka výplně"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+msgid "Filler depth noise"
+msgstr "Šum hloubky výplně"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Filmový tone mapping"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
+"Okraje filtrovaných textur se mohou mísit s průhlednými sousedními pixely,\n"
+"které PNG optimizery obvykle zahazují. To může vyústit v tmavé nebo světlé\n"
+"okraje hran. Zapnutí tohoto filtru problém řeší při načítání textur.\n"
+"Toto nastavení je automaticky zapnuto, pokud je povoleno Mip-Mapování."
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Filtrování"
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Antialiasing:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr "První ze 4 2D šumů, které dohromady definují rozsah výšek kopců/hor."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "První ze dvou 3D šumů, které dohromady definují tunely."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr "Fixované seedové čislo"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Nepohyblivý virtuální joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Hustota létajících ostrovů"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Létajících ostrovy: Max. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Létajících ostrovy: Min. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Šum létajících ostrovů"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Exponent zúžení létajících ostrovů"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Vzdálenost zužování létajících ostrovů"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Hladina vody na létajících ostrovech"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr "Klávesa létání"
@@ -2120,12 +3647,25 @@ msgid "Fog"
msgstr "Mlha"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Začátek mlhy"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr "Klávesa pro přepnutí mlhy"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Cesta k písmu"
+#, fuzzy
+msgid "Font"
+msgstr "Velikost písma"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Tučné písmo jako výchozí"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Kurzíva jako výchozí"
#: src/settings_translation_file.cpp
msgid "Font shadow"
@@ -2136,54 +3676,139 @@ msgid "Font shadow alpha"
msgstr "Průhlednost stínu písma"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
-msgstr "Neprůhlednost stínu písma (od 0 do 255)."
+msgid "Font size"
+msgstr "Velikost písma"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
-msgstr "Odsazení stínu písma, pokud je nastaveno na 0, stín nebude vykreslen."
+msgid "Font size divisible by"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Velikost písma"
+#, fuzzy
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Velikost výchozího písma v bodech (pt)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Velikost proporcionálního písma v bodech (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 ""
+"Velikost písma posledního textu a výzvy v chatu v bodech (pt).\n"
+"Výchozí velikost písma se nastaví hodnotou 0."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Formát hráčovy zprávy v chatu. Řetězec níže obsahuje platné zástupce:\n"
+"@name, @message, @timestamp (optional)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
+msgstr "Formát snímků obrazovky."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Konzole Výchozí barva pozadí"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Konzole Výchozí průhlednost pozadí"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Konzole Barva pozadí při zobrazení na celé obrazovce"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Konzole Průhlednost pozadí při zobrazení na celé obrazovce"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Konzole Výchozí barva pozadí (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Konzole Výchozí průhlednost pozadí (0 až 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Konzole Barva pozadí při zobrazení na celou obrazovku (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
msgstr ""
+"Konzole Průhlednost pozadí při zobrazení na celou obrazovku (0 až 255)."
#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Vpřed"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "Písma Freetype"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Čtvrtý ze čtyř 2D šumů, které dohromady definují rozsah výšek kopců/hor."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Typ fraktálu"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "Podíl viditelné vzdálenosti, na kterém začne být mlha vykreslována"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"Vzdálenost, ve které jsou klientům generovány bloky, určená v mapblocích (16 "
+"bloků)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"Vzdálenost, ze které jsou klientům odesílány bloky, určená v mapblocích (16 "
+"bloků)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"Vzdálenost, na kterou má klient inforamace o objektech,\n"
+"určená v mapblocích (16 bloků).\n"
+"Nastavení této hodnoty výše než active_block_range umožní serveru\n"
+"udržet v paměti aktivní objekty až do této vzdálenosti ve směru hráčova\n"
+"pohledu. (Toto může předejít náhlému mizení postav)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Celá obrazovka"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "Bitová hloubka v celoobrazovkovém režimu"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Celoobrazovkový režim."
@@ -2193,49 +3818,95 @@ msgstr "Měřítko GUI"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr "Měřítko GUI"
+msgstr "Filtrovat při škálování GUI"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr "Filtr měřítka GUI txr2img"
+msgstr "Filtrovat při škálování GUI (txr2img)"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Hry"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Generovat normálové mapy"
+msgid "General"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Globální callback funkce"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
+"Globální parametry generování mapy.\n"
+"V Generátoru mapy v6 ovládá nastavení \"decorations\" všechny dekorace\n"
+"kromě stromů a tropické trávy, ve všech ostatních verzích Generátoru mapy\n"
+"ovládá toto nastavení všechny dekorace."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Gradient křivky světla na nejvyšší úrovni světla.\n"
+"Určuje kontrast nejvyšších světelných hodnot."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Gradient křivky světla na nejnižší úrovni světla.\n"
+"Určuje kontrast nejnižších světelných hodnot."
#: src/settings_translation_file.cpp
msgid "Graphics"
msgstr "Grafika"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravitace"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
-msgstr "HTTP mody"
+msgid "Ground level"
+msgstr "Výška povrchu země"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Šum povrchu"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "HTTP režimy"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Měřítko GUI"
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
@@ -2243,11 +3914,16 @@ msgstr "Klávesa pro přepnutí HUD (Head-Up Display)"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
+"Zacházení s voláními zastaralého Lua API:\n"
+"- none: Nezaznamenávat zastaralá volání\n"
+"- log: pokusí se napodobit staré chování a zaznamená backtrace volání\n"
+" (výchozí pro debug).\n"
+"- error: při volání zastaralé funkce skončit (doporučeno vývojářům modů)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2257,43 +3933,268 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Nechat profiler instrumentovat sám sebe:\n"
+"* Instrumentovat prázdnou funkci.\n"
+"Tak se dá odhadnout zpomalení způsobené instrumentací (+1 volání funkce).\n"
+"* Instrumentovat vzorkovací funkci, která se používá k aktualizaci statistik."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr ""
+msgid "Heat blend noise"
+msgstr "Šum tepelných přechodů"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Tepelný šum"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
msgstr ""
+"Výškový parametr počáteční velikosti okna. Ignorováno v režimu na celé "
+"obrazovce."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Výškový šum"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Šum vybírání výšky"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Strmost kopců"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "Výpočty ve FPU s vysokou přesností"
+msgid "Hill threshold"
+msgstr "Práh kopců"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Šum kopcovitosti1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Šum kopcovitosti2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Šum kopcovitosti3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Šum kopcovitosti4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "Domácí stránka serveru. Bude zobrazena v seznamu serverů."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontální zrychlení ve vzduchu při skoku nebo pádu,\n"
+"určeno v blocích za sekundu za sekundu."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontální a vertikální zrychlení v rychlém režimu,\n"
+"určeno v blocích za sekundu za sekundu."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontální a vertikální zrychlení na zemi nebo při lezení,\n"
+"určeno v blocích za sekundu za sekundu."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Klávesa pro následující věc v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Klávesa pro předchozí věc v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Klávesa pro přihrádku 1 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Klávesa pro přihrádku 10 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Klávesa pro přihrádku 11 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Klávesa pro přihrádku 12 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Klávesa pro přihrádku 13 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Klávesa pro přihrádku 14 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Klávesa pro přihrádku 15 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Klávesa pro přihrádku 16 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Klávesa pro přihrádku 17 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Klávesa pro přihrádku 18 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Klávesa pro přihrádku 19 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Klávesa pro přihrádku 2 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Klávesa pro přihrádku 20 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Klávesa pro přihrádku 21 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Klávesa pro přihrádku 22 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Klávesa pro přihrádku 23 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Klávesa pro přihrádku 24 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Klávesa pro přihrádku 25 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Klávesa pro přihrádku 26 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Klávesa pro přihrádku 27 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Klávesa pro přihrádku 28 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Klávesa pro přihrádku 29 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Klávesa pro přihrádku 3 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Klávesa pro přihrádku 30 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Klávesa pro přihrádku 31 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Klávesa pro přihrádku 32 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Klávesa pro přihrádku 4 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Klávesa pro přihrádku 5 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Klávesa pro přihrádku 6 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Klávesa pro přihrádku 7 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Klávesa pro přihrádku 8 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Klávesa pro přihrádku 9 v liště předmětů"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Jak hluboké dělat řeky."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Rychlost pohybu vln v kapalinách. Vyšší = rychlejší.\n"
+"Záporné hodnoty vytvoří vlny jdoucí pozpátku.\n"
+"Vyžaduje zapnuté vlnění kapalin."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
+"Jak dlouho bude server čekat před uvolněním nepotřebných mapbloků.\n"
+"Vyšší hodnota zlepší rychlost programu, ale také způsobí větší spotřebu RAM."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Snižte toto pro zvýšení odporu kapalin vůči pohybu."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Jak široké dělat řeky."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Šum přechodu vlhkosti"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Šum vlhkosti"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Rozdílnost vlhkosti pro biomy."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2304,20 +4205,34 @@ msgid "IPv6 server"
msgstr "IPv6 server"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "Podpora IPv6."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"Pokud by snímková frekvence překročila tuto hodnotu,\n"
+"omezit ji vyčkáváním, aby se zbytečně neplýtvalo výkonem CPU."
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"Pokud je vypnuto, klávesa \"Aux1\" je , při zapnutém létání\n"
+"a rychlém režimu, použita k rychlému létání."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Když zapnuto, server bude provádět detekci zacloněných bloků na základě\n"
+"pozice očí hráče. Tím lze snížit počet klientům odesílaných bloků o 50-80 "
+"%.\n"
+"Klienti už nebudou dostávat většinu neviditelných bloků, tím pádem ale\n"
+"užitečnost režimu ducha bude omezená."
#: src/settings_translation_file.cpp
msgid ""
@@ -2325,32 +4240,61 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"Když zapnuto, můžou se hráči v režimu létání pohybovat skrz pevné bloky.\n"
+"K tomu je potřeba mít na serveru oprávnění \"noclip\"."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Pokud je zapnuto, je klávesa \"Aux1\" využita pro sestup\n"
+"namísto klávesy \"Plížení\"."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
+"Zapnout potvrzení registrace pro připojení na server.\n"
+"Pokud je toto vypnuto, je nový účet registrován automaticky."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Když zapnuto, akce hráčů se zaznamenávají pro funkci vracení změn.\n"
+"Toto nastavení je čteno pouze při startu serveru."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "Když zapnuto, vypne opatření proti podvádění."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Když zapnuto, nezpůsobí neplatná data světa vypnutí serveru.\n"
+"Zapínejte pouze pokud víte, co děláte."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
msgstr ""
+"Pokud je zapnuto, je směr pohybu, při létání nebo plavání, závislý na úhlu "
+"hráčova pohledu."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr "Když zapnuto, noví hráči se nemohou připojit s prázdným heslem."
#: src/settings_translation_file.cpp
msgid ""
@@ -2358,72 +4302,117 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"Pokud zapnuto, můžete stavět bloky na pozicích (nohy + výška očí), kde "
+"stojíte.\n"
+"Užitečné, pokud pracujete s \"nodeboxy\" ve stísněných prostorech."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
+"Pokud je omezení CSM pro vzdálenost bloků povoleno, jsou volání get_node\n"
+"omezena na tuto vzdálenost hráče od bloku."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Pokud je doba výkonu příkazu z chatu delší než zadaný čas v sekundách,\n"
+"přidej informaci o čase do příkazu v chatu"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Pokud velikost souboru debug.txt po otevření přesáhne počet megabytů určený\n"
+"tímto nastavením, bude soubor přesunut do debug.txt.1 (toto vymaže původní "
+"debug.txt.1,\n"
+"pokud existuje).\n"
+"debug.txt je přesunut pouze pokud je toto nastavení platné."
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "Jestliže je toto nastaveno, hráči se budou oživovat na uvedeném místě."
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "Ve hře"
+msgid "Ignore world errors"
+msgstr "Ignorovat chyby světa"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
-msgstr ""
+msgstr "Průhlednost pozadí herní chatovací konzole (neprůhlednost, 0 až 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
+msgstr "Barva (R,G,B) pozadí herní chatovací konzole."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
msgstr ""
+"Výška herní chatovací konzole, mezi 0.1 (10 %) a 1.0 (100 %).\n"
+"(Pozor, použijte anglickou desetinnou tečku, nikoliv čárku.)"
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Klávesa zvýšení hlasitosti"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Počáteční vertikální rychlost skoku v blocích za sekundu."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Instrumentovat \"builtin\".\n"
+"Obvykle využíváno jen vývojáři jádra/builtin"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+#, fuzzy
+msgid "Instrument chat commands on registration."
+msgstr "Instrumentovat chatovací přikazy při registraci."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Instrumentovat globální callback funkce při registraci.\n"
+"(jakákoliv, kterou můžete předat do funkcí minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
-msgstr ""
+msgstr "Instrumentovat funkci action u Active Block Modifierů při registraci."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
-msgstr ""
+msgstr "Instrumentovat funkci action u Loading Block Modifierů při registraci."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Instrumentovat metody entit při registraci."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
-msgstr ""
+msgstr "Časový interval ukládání důležitých změn ve světě, udaný v sekundách."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Časový interval, ve kterém se klientům posílá herní čas."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Animace předmětů v inventáři"
#: src/settings_translation_file.cpp
msgid "Inventory key"
@@ -2431,66 +4420,134 @@ msgstr "Klávesa inventáře"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Invertovat myš"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "Obrátit svislý pohyb myši."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Cesta k písmu s kurzívou"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Cesta k proporcionálnímu písmu s kurzívou"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Maximální stáří vyhozeného předmětu"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Iterace"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+"Opakování rekurzivní funkce.\n"
+"Zvýšení hodnoty vede ke zlepšení detailů, ale také zvyšuje nároky na výkon.\n"
+"Při opakování = 20 má tento Generátor mapy podobné nároky jako\n"
+"Generátor mapy v7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID joysticku"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "Interval opakování tlačítek joysticku"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Joystick dead zone"
+msgstr "Mrtvá zóna joysticku"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "Citlivost otáčení pohledu joystickem"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Typ joysticku"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Pouze pro set Julia.\n"
+"Komponenta W hyperkomplexní konstanty.\n"
+"Mění tvar fraktálu.\n"
+"Nemá žádný vliv na 3D fraktály.\n"
+"Rozmezí přibližně -2 až 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Pouze pro set Julia.\n"
+"Komponenta X hyperkomplexní konstanty.\n"
+"Mění tvar fraktálu.\n"
+"Rozmezí přibližně -2 až 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Pouze pro set Julia.\n"
+"Komponenta Y hyperkomplexní konstanty.\n"
+"Mění tvar fraktálu.\n"
+"Rozmezí přibližně -2 až 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Pouze pro set Julia.\n"
+"Komponenta Z hyperkomplexní konstanty.\n"
+"Mění tvar fraktálu.\n"
+"Rozmezí přibližně -2 až 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia z"
#: src/settings_translation_file.cpp
msgid "Jump key"
-msgstr "Skok"
+msgstr "Klávesa skoku"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Rychlost skákání"
#: src/settings_translation_file.cpp
msgid ""
@@ -2498,6 +4555,29 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro snížení dohledu.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klávesa pro těžení\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2505,6 +4585,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro odhození právě drženého předmětu.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2512,6 +4595,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro zvýšení dohledu.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klávesa pro zvýšení hlasitosti\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2519,6 +4615,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro skok.\n"
+"viz. See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2526,13 +4625,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro rychlý pohyb v rychlém režimu.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro pohyb hráče zpět.\n"
+"Také vypne automatický pohyb vpřed, pokud je zapnutý.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2540,6 +4647,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro pohyb hráče vpřed.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2547,6 +4657,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro pohyb hráče doleva.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2554,13 +4667,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro pohyb hráče doprava.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro ztlumení hry.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2568,6 +4687,16 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klávesa pro otevření okna chatu za účelem zadání příkazů.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -2584,641 +4713,956 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+#, fuzzy
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Jazyk"
+#, fuzzy
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+#, fuzzy
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+#, fuzzy
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+#, fuzzy
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Doleva"
+#, fuzzy
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+#, fuzzy
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+#, fuzzy
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+#, fuzzy
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+#, fuzzy
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+#, fuzzy
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+#, fuzzy
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Skript hlavní nabídky"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+#, fuzzy
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
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.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"klávesy pro snížení hlasitosti.\n"
+"viz. http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Mapgen údolí"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "Vyhodit hráče, který poslal více jak X zpráv během 10 sekund."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Strmost jezer"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Strmost jezer"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Jazyk"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Ladění generátoru mapy"
+msgid "Large cave depth"
+msgstr "Hloubka velkých jeskyní"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr ""
+msgid "Large cave maximum number"
+msgstr "Horní hranice velkých jeskyní"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "Mapgen plochy"
+msgid "Large cave minimum number"
+msgstr "Spodní hranice velkých jeskyní"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Mapgen plochy"
+msgid "Large cave proportion flooded"
+msgstr "Poměr zatopení velkých jeskyní"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Klávesa velkého chatu"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Styl listí"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Styl listí:\n"
+"- Vícevrstevné: všechny plochy jsou viditelné\n"
+"- Jednoduché: pouze vnější plochy, pokud je definováno special_tiles, jsou "
+"použity\n"
+"- Neprůhledné: vypne průhlednost"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+msgid "Left key"
+msgstr "Doleva"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"Frekvence aktualizece objektů na serveru.\n"
+"Určeno v délce jedné periody."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Délka vln v kapalinách.\n"
+"Vyžaduje zapnuté vlnění kapalin."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Frekvence vykonání cyklů Active Block Modifieru (ABM)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr ""
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Frekvence vykonání cyklů ČasovačeBloku"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Frekvence vykonání cyklů aktivní správy bloků"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Úroveň ladících informací zapsaných do debug.txt:\n"
+"- <nothing> (žádné ladící informace)\n"
+"- none (zprávy budou vypsány bez patřičné úrovně)\n"
+"- error (chyba)\n"
+"- warning (varování)\n"
+"- action (akce)\n"
+"- info (informace)\n"
+"- verbose (slovně)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr ""
+msgid "Light curve boost"
+msgstr "Posílení křivky světla"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr ""
+msgid "Light curve boost center"
+msgstr "Posílení křivky světla Středy"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Mapgen plochy"
+msgid "Light curve boost spread"
+msgstr "Posílení křivky světla Šíření"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "Křivka světla Gamma"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "Křivka světla Vysoký gradient"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve low gradient"
+msgstr "Křivka světla Nízký gradient"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Plynulé osvětlení"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"Limit generování mapy v blocích, ve všech 6 směrech od (0,0,0).\n"
+"Generují se pouze kusy nacházející se kompletně v zadaném limitu.\n"
+"Tato hodnota je unikátní pro každý svět."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Omezuje počet paralelních HTTP požadavků. Má vliv na:\n"
+"- Načítání multimédií, pokud server používá nastavení remote_media.\n"
+"- Stahování seznamu serverů a oznámení na serveru.\n"
+"- Stahování prováděná přes hlavní nabídku (např. Správce modů).\n"
+"Má vliv pouze v případě kompilace přes cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Tekutost kapalin"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Vyhlazení tekutosti kapalin"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid loop max"
+msgstr "Horní hranice kapalinového cyklu"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr ""
+msgid "Liquid queue purge time"
+msgstr "Doba vymazání fronty kapalin"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "Rychlost stékání kapalin"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid update interval in seconds."
+msgstr "Frekvence aktualizace kapalin v sekundách."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Jeden cyklus aktualizace kapalin"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Load the game profiler"
+msgstr "Načíst profilování hry"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Jméno generátoru mapy"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Načíst profilování hry pro sběr profilovacích dat.\n"
+"Umožňuje použít příkaz /profiler pro přístup ke zkopilovanému profilu.\n"
+"Užitečné pro vývojáře modů a provozovatele serverů."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "Mapgen v5"
+msgid "Loading Block Modifiers"
+msgstr "Loading Block Modifiery"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "Mapgen v5"
+msgid "Lower Y limit of dungeons."
+msgstr "Spodní hranice Y pro žaláře."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "Spodní hranice Y pro létající ostrovy."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Skript hlavní nabídky"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Barva mlhy a oblohy záleží na denní době (svítání/soumrak) a na směru "
+"pohledu."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Udělá všechny kapaliny neprůhledné"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Map Compression Level for Disk Storage"
+msgstr "Úroveň komprese mapy pro pevné úložiště"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
+msgstr "Úroveň komprese mapy pro přenost internetem"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map directory"
+msgstr "Směr mapy"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Parametry generování mapy pro Generátor mapy - Carpathian."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Parametry generování mapy pro Generátor mapy - Plocha.\n"
+"Do plochého světa je možné přidat občasná jezera a kopce."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"Parametry generování mapy pro Generátor mapy - Fraktál.\n"
+"\"terén\" umožňuje generování \"nefraktálového\" terénu:\n"
+"oceány, ostrovy a podzemí."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"Parametry generování mapy pro Generátor mapy - Údolí.\n"
+"„altitude_chill“: Snižuje teplotu s nadmořskou výškou.\n"
+"„humid_rivers“: Zvyšuje vlhkost podél řek.\n"
+"„vary_river_depth“: Pokud zapnuto, nízká vlhkost a vysoká teplota\n"
+"budou mít za následek mělčí nebo místy úplně vyschlé řeky.\n"
+"„altitude_dry“: Snižuje vlhkost s nadmořskou výškou."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Parametry generování mapy pro Generátor mapy v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
+"Parametry generování mapy pro Generátor mapy v6.\n"
+"Nastavení \"snowbiomes\" umožňuje systém 5 biomů.\n"
+"Pokud je nastavení \"snowbiomes\" zapnuto, džungle jsou automaticky\n"
+"zapnuty a nastavení \"jungles\" je ignorováno."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
+"Parametry generování mapy v Generátoru mapy v7.\n"
+"'hřebeny': Rivers.\n"
+"'létající ostrovy': Ostrovy vznášející se v prostoru.\n"
+"'jeskynní dutiny': Obrovské jeskyně hluboko v podzemí."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Limit generování mapy"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Interval ukládání mapy"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Map shadows update frames"
+msgstr "Doba aktualizace mapy"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Limit mapbloků"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Prodleva generování sítě mapbloků"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Velikost cache paměti v MB Generátoru mapy pro Mapbloky"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "Mapgen v7"
+msgid "Mapblock unload timeout"
+msgstr "Časový limit pro vymazání Mapbloku z paměti"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "Mapgen v7"
+msgid "Mapgen Carpathian"
+msgstr "Generátor mapy - Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Nastavení pro Generátor mapy - Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Generátor mapy - Plocha"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Nastavení Generátory mapy - Plocha"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Generátor mapy - Fraktál"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Nastavení pro Generátor mapy - Fraktál"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Generátor mapy V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Nastavení pro Generátor mapy v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Generátor mapy v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "Nastavení pro Generátor mapy v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Generátor mapy v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "Nastavení pro Generátor mapy v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Mapgen údolí"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Nastavení pro Generátor mapy - Údolí"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Ladění Generátoru mapy"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Jméno Generátoru mapy"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "Horní hranice vzdálenosti pro generování bloků"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Horní hranice vzdálenosti pro posílání bloků"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Horní hranice počtu kapalin zpracovaných za jeden krok."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
@@ -3230,10 +5674,14 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
+msgstr "Maximální FPS"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3245,11 +5693,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "Horní hranice pro náhodný počet velkých jeskyní na kus mapy."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "Horní hranice pro náhodný počet malých jeskyní na kus mapy."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+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 ""
#: src/settings_translation_file.cpp
@@ -3259,13 +5720,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3286,7 +5754,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3308,20 +5780,30 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Nabídky"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3329,7 +5811,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "Zpráva dne"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
@@ -3340,10 +5822,14 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimap"
+msgid "Minimal level of logging to be written to chat."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr "Minimapa"
+
+#: src/settings_translation_file.cpp
msgid "Minimap key"
msgstr ""
@@ -3352,57 +5838,105 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr ""
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Spodní hranice pro náhodný počet velkých jeskyní na kus mapy."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Spodní hranice pro náhodný počet malých jeskyní na kus mapy."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Minimum texture size"
+msgstr "Minimální velikost textury k filtrování"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
msgstr "Mip-mapování"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+#, fuzzy
+msgid "Mod Security"
+msgstr "Zabezpečení"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Monospace font path"
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr "Cesta k neproporcionálnímu písmu"
+
+#: src/settings_translation_file.cpp
msgid "Monospace font size"
+msgstr "Velikost neproporcionálního písma"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Monospace font size divisible by"
+msgstr "Velikost neproporcionálního písma"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mouse sensitivity"
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mountain zero level"
+msgstr "Hladina vody"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr "Citlivost myši"
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgid "Mute key"
+msgstr "Klávesa ztlumit"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3418,7 +5952,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3428,6 +5962,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Síť"
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3440,101 +5979,135 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Osvícení bloku"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr "Zvýraznění označených bloků"
+msgstr "Dekorace označených bloků"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "Paralaxní okluze"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion Scale"
-msgstr "Škála paralaxní okluze"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr "Náklon paralaxní okluze"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
-msgstr "Počet iterací paralaxní okluze"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "Režim paralaxní okluze"
+msgid "Pause on lost window focus"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr "Síla paralaxní okluze"
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Physics"
+msgstr "Fyzika"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+msgid "Pitch move key"
+msgstr "létání"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr "Fyzika"
+#, fuzzy
+msgid "Place key"
+msgstr "Klávesa létání"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "Interval opakování pravého kliknutí"
#: src/settings_translation_file.cpp
msgid ""
@@ -3543,31 +6116,39 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Jméno hráče"
-
-#: src/settings_translation_file.cpp
msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
+#, fuzzy
+msgid "Player versus player"
msgstr "Hráč proti hráči (PvP)"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Bilineární filtrování"
+
+#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3583,10 +6164,22 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Poměr velkých jeskyní s kapalinami."
+
+#: src/settings_translation_file.cpp
msgid ""
"Radius of cloud area stated in number of 64 node cloud squares.\n"
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
@@ -3594,7 +6187,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3606,6 +6199,15 @@ msgid "Range select key"
msgstr "Klávesa pro označení většího počtu věcí"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Regular font path"
+msgstr "Cesta pro reporty"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr "Vzdálená média"
@@ -3614,40 +6216,93 @@ msgid "Remote port"
msgstr "Vzdálený port"
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Cesta k písmu"
+msgstr "Cesta pro reporty"
#: src/settings_translation_file.cpp
-msgid "Right key"
-msgstr "Klávesa doprava"
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "Ridge mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "Ridge noise"
+msgstr "Šum hřbetů"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "Ridged mountain size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "Right key"
+msgstr "Klávesa doprava"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River channel depth"
+msgstr "Hloubka řeky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River channel width"
+msgstr "Hloubka řeky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River depth"
+msgstr "Hloubka řeky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River noise"
+msgstr "Hlučnost řeky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River size"
+msgstr "Velikost řeky"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River valley width"
+msgstr "Hloubka řeky"
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "Rolling hill size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rollback recording"
+msgid "Rolling hills spread noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3655,16 +6310,28 @@ msgid "Round minimap"
msgstr "Kulatá minimapa"
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3672,6 +6339,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Obrazovka:"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr "Výška obrazovky"
@@ -3680,22 +6352,16 @@ msgid "Screen width"
msgstr "Šířka obrazovky"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Snímek obrazovky"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr "Složka se snímky obrazovky"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "Složka se snímky obrazovky"
+msgstr "Formát snímků obrazovky"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "Snímek obrazovky"
+msgstr "Kvalita snímků obrazovky"
#: src/settings_translation_file.cpp
msgid ""
@@ -3703,13 +6369,30 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"Kvalita snímků obrazovky. Použito jen na formát JPEG.\n"
+"1 znamená nejhorší kvalita; 100 znamená nejlepší kvalita.\n"
+"Použijte 0 pro výchozí kvalitu."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "Zabezpečení"
+msgid "Screenshots"
+msgstr "Obrázky"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr "První ze dvou 3D šumů, které dohromady definují tunely."
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+#, fuzzy
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "První ze dvou 3D šumů, které dohromady definují tunely."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3718,15 +6401,69 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "Barva obrysu bloku"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr ""
+msgstr "Šířka obrysu bloku"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Server / Místní hra"
+#, fuzzy
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Výběr z 18 fraktálů z 9 rovnic.\n"
+"1 = 4D \"Roundy\" – Mandelbrotova množina.\n"
+"2 = 4D \"Roundy\" – Juliova množina.\n"
+"3 = 4D \"Squarry\" – Mandelbrotova množina.\n"
+"4 = 4D \"Squarry\" – Juliova množina.\n"
+"5 = 4D \"Mandy Cousin\" – Mandelbrotova množina.\n"
+"6 = 4D \"Mandy Cousin\" – Juliova množina.\n"
+"7 = 4D \"Variation\" – Mandelbrotova množina.\n"
+"8 = 4D \"Variation\" – Juliova množina.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" – Mandelbrotova množina.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" – Juliova množina.\n"
+"11 = 3D \"Christmas Tree\" – Mandelbrotova množina.\n"
+"12 = 3D \"Christmas Tree\" – Juliova množina.\n"
+"13 = 3D \"Mandelbulb\" – Mandelbrotova množina.\n"
+"14 = 3D \"Mandelbulb\" – Juliova množina.\n"
+"15 = 3D \"Cosine Mandelbulb\" – Mandelbrotova množina.\n"
+"16 = 3D \"Cosine Mandelbulb\" – Juliova množina.\n"
+"17 = 4D \"Mandelbulb\" – Mandelbrotova množina.\n"
+"18 = 4D \"Mandelbulb\" – Juliova množina."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL serveru"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Jméno serveru"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Popis serveru"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3749,10 +6486,24 @@ msgid "Server port"
msgstr "Port serveru"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Port serveru"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr "Adresa seznamu veřejných serverů"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Adresa seznamu veřejných serverů"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr "Soubor se seznamem veřejných serverů"
@@ -3764,27 +6515,112 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
+"Zapne parallax occlusion mapping.\n"
+"Nastavení vyžaduje zapnuté shadery."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Zapne parallax occlusion mapping.\n"
+"Nastavení vyžaduje zapnuté shadery."
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Zapne parallax occlusion mapping.\n"
+"Nastavení vyžaduje zapnuté shadery."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
+"Zapne parallax occlusion mapping.\n"
+"Nastavení vyžaduje zapnuté shadery."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Cesta k shaderům"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Kvalita snímků obrazovky"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow map texture size"
+msgstr "Minimální velikost textury k filtrování"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "Odsazení stínu písma, pokud je nastaveno na 0, stín nebude vykreslen."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3800,17 +6636,69 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Show name tag backgrounds by default"
+msgstr "Tučné písmo jako výchozí"
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
+msgstr "Zpráva o vypnutí"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
+"Velikost kusů mapy vytovřených Generátorem mapy v mapblocích (16 bloků).\n"
+"VAROVÁNÍ!: Hodnota vyšší než 5 nepřináší žádné zlepšení\n"
+"a zvyšuje riziko problémů.\n"
+"Snížení hodnoty zvýší husotou jeskyní a žalářů.\n"
+"Změna hodnoty je pro zvláštní případy, jinak je doporučeno\n"
+"nechat ji na výchozí hodnotě."
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Horní hranice počtu malých jeskyní"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Spodní hranice počtu malých jeskyní"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3836,6 +6724,20 @@ msgid "Sneak key"
msgstr "Klávesa plížení"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Rychlost chůze"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "Průhlednost stínu písma"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr "Zvuk"
@@ -3848,15 +6750,53 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
+msgstr "Stálé místo oživení"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Strength of 3D mode parallax."
msgstr "Síla vygenerovaných normálových map."
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 ""
#: src/settings_translation_file.cpp
@@ -3864,7 +6804,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3872,7 +6826,33 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Nastavení"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain height"
+msgstr "Základní výška terénu"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3890,11 +6870,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr "Cesta k texturám"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3904,13 +6909,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3924,13 +6945,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3950,40 +6988,58 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "První ze dvou 3D šumů, které dohromady definují tunely."
+
+#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Rychlost času"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4000,6 +7056,28 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
+msgstr "Zpoždění nápovědy"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touch screen threshold"
+msgstr "Práh šumu pláže"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Práh šumu pláže"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4010,18 +7088,31 @@ msgstr "Trilineární filtrování"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "Důvěryhodné mody"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Podvzorkování"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4030,6 +7121,15 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Upper Y limit of floatlands."
+msgstr "Maximální počet emerge front"
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4046,11 +7146,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Klávesa použít"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4058,31 +7168,69 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
-msgstr "Vertikální synchronizace"
+msgid "User Interfaces"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+#, fuzzy
+msgid "VSync"
+msgstr "Vertikální synchronizace"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Valley depth"
+msgstr "Hloubka výplně"
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Variation of number of caves."
+msgstr "Variace počtu jeskyní."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4094,13 +7242,11 @@ msgid "Video driver"
msgstr "Ovladač grafiky"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4112,7 +7258,15 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
+msgstr "Vzdálenost dohledu"
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4120,24 +7274,38 @@ msgid "Volume"
msgstr "Hlasitost"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Zapne parallax occlusion mapping.\n"
+"Nastavení vyžaduje zapnuté shadery."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr "Rychlost chůze"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Vlastnosti vody"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
-msgstr ""
+msgstr "Hladina vody"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
@@ -4152,24 +7320,33 @@ msgid "Waving leaves"
msgstr "Vlnění listů"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Vlnění rostlin"
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Vlnění bloků"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Vlnění vody"
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Výška vodních vln"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Výška vodních vln"
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Rychlost vodních vln"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+#, fuzzy
+msgid "Waving liquids wavelength"
msgstr "Délka vodních vln"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Rychlost vodních vln"
+msgid "Waving plants"
+msgstr "Vlnění rostlin"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Weblink color"
+msgstr "Barva obrysu bloku"
#: src/settings_translation_file.cpp
msgid ""
@@ -4190,26 +7367,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4224,7 +7393,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "Zda-li povolit hráčům vzájemně se napadat a zabíjet."
#: src/settings_translation_file.cpp
msgid ""
@@ -4238,23 +7407,40 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "Výšková část počáteční velikosti okna."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4264,11 +7450,73 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "Název světa"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Hodnota Y pro horní hranici velkých jeskyní."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+"Vzdálenost Y, přes kterou se jeskynní dutiny rozšíří do plné velikosti."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Úroveň Y horní hranice jeskynních dutin."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4276,127 +7524,356 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
+msgstr "cURL timeout"
+
+#: src/settings_translation_file.cpp
msgid "cURL parallel limit"
msgstr "cURL limit paralelních stahování"
-#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "cURL timeout"
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kreativní mód: "
-#~ msgid "Preload inventory textures"
-#~ msgstr "Přednačíst inventářové textury"
+#~ msgid "- Damage: "
+#~ msgstr "- Zranění: "
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Měřítko aplikované na prvky menu: "
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = parallax occlusion s informacemi o sklonu (rychlejší).\n"
+#~ "1 = mapování reliéfu (pomalejší, ale přesnější)."
-#~ msgid "Touch free target"
-#~ msgstr "Středový kurzor"
+#~ msgid "Address / Port"
+#~ msgstr "Adresa / Port"
-#~ msgid " KB/s"
-#~ msgstr " KB/s"
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Upraví gamma kódování světelných tabulek. Vyšší čísla znamenají světlejší "
+#~ "hodnoty.\n"
+#~ "Toto nastavení ovlivňuje pouze klienta a serverem není použito."
-#~ msgid " MB/s"
-#~ msgstr " MB/s"
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Jste si jisti, že chcete resetovat místní svět?"
-#~ msgid "Downloading"
-#~ msgstr "Stahuji"
+#~ msgid "Back"
+#~ msgstr "Zpět"
-#~ msgid "Game Name"
-#~ msgstr "Název hry"
+#~ msgid "Basic"
+#~ msgstr "Základní"
-#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
-#~ msgstr "Gamemgr: Nepovedlo se zkopírovat mod \"$1\" do hry \"$2\""
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bitová hloubka (bity na pixel) v celoobrazovkovém režimu."
-#~ msgid "GAMES"
-#~ msgstr "HRY"
+#~ msgid "Bump Mapping"
+#~ msgstr "Bump mapping"
-#~ msgid "Mods:"
-#~ msgstr "Mody:"
+#~ msgid "Bumpmapping"
+#~ msgstr "Bump mapování"
-#~ msgid "new game"
-#~ msgstr "nová hra"
+#~ msgid "Config mods"
+#~ msgstr "Nastavení modů"
-#~ msgid "EDIT GAME"
-#~ msgstr "UPRAVIT HRU"
+#~ msgid "Configure"
+#~ msgstr "Nastavit"
-#~ msgid "Remove selected mod"
-#~ msgstr "Odstranit vybraný mod"
+#~ msgid "Connect"
+#~ msgstr "Připojit"
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Přidat mod"
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Stanovuje rychlost potápění v kapalinách."
-#~ msgid "CLIENT"
-#~ msgstr "KLIENT"
+#, fuzzy
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Stanovuje hustotu horského terénu na létajících ostrovech.\n"
+#~ "Jedná se o posun přidaný k hodnotě šumu 'np_mountain'."
-#~ msgid "START SERVER"
-#~ msgstr "MÍSTNÍ SERVER"
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr "Ovládá šířku tunelů, menší hodnota vytváří širší tunely."
-#~ msgid "Name"
-#~ msgstr "Jméno"
+#~ msgid "Credits"
+#~ msgstr "Autoři"
-#~ msgid "Password"
-#~ msgstr "Heslo"
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Barva zaměřovače (R,G,B)."
-#~ msgid "SETTINGS"
-#~ msgstr "NASTAVENÍ"
+#~ msgid "Damage enabled"
+#~ msgstr "Zranění povoleno"
-#~ msgid "Preload item visuals"
-#~ msgstr "Přednačíst textury předmětů"
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Výchozí časový limit požadavku pro cURL, v milisekundách.\n"
+#~ "Má vliv, pouze pokud byl program sestaven s cURL."
-#~ msgid "Finite Liquid"
-#~ msgstr "Konečná voda"
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Určuje oblasti létajících ostrovů s rovinný terénem.\n"
+#~ "Terén bude rovný v místech, kde hodnota šumu bude větší než 0."
-#~ msgid "SINGLE PLAYER"
-#~ msgstr "HRA JEDNOHO HRÁČE"
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Určuje vyhlazovací krok textur.\n"
+#~ "Vyšší hodnota znamená vyhlazenější normálové mapy."
-#~ msgid "TEXTURE PACKS"
-#~ msgstr "BALÍČKY TEXTUR"
+#~ msgid "Del. Favorite"
+#~ msgstr "Smazat oblíbené"
-#~ msgid "MODS"
-#~ msgstr "MODY"
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Stáhněte si z minetest.net hru, například Minetest Game"
-#~ msgid "Add mod:"
-#~ msgstr "Přidat mod:"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Stáhněte si jednu z minetest.net"
-#~ msgid "Local install"
-#~ msgstr "Místní instalace"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Stahuji a instaluji $1, prosím čekejte..."
-#~ msgid "Left click: Move all items, Right click: Move single item"
+#~ msgid "Enable VBO"
+#~ msgstr "Zapnout VBO"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Zapnout potvrzení registrace"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Povolí bump mapping textur. Balík textur buď poskytne normálové mapy,\n"
+#~ "nebo musí být automaticky vytvořeny.\n"
+#~ "Nastavení vyžaduje zapnuté shadery."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Zapne filmový tone mapping"
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
#~ msgstr ""
-#~ "Levý klik: Přesunout všechny předměty, Pravý klik: Přesunout jeden předmět"
+#~ "Zapne generování normálových map za běhu (efekt protlačení).\n"
+#~ "Nastavení vyžaduje zapnutý bump mapping."
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Aby se změna ovladače projevila, restartujte Minetest"
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Zapne parallax occlusion mapping.\n"
+#~ "Nastavení vyžaduje zapnuté shadery."
+
+#~ msgid "Enter "
+#~ msgstr "Zadejte "
+
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Experimentální nastavení, může zapříčinit viditelné mezery mezi bloky,\n"
+#~ "je-li nastaveno na vyšší číslo než 0."
-#~ msgid "Rendering:"
-#~ msgstr "Renderování:"
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS v menu pauzy"
-#~ msgid "If enabled, "
-#~ msgstr "Je-li povoleno, "
+#~ msgid "Fallback font shadow"
+#~ msgstr "Stín záložního písma"
-#~ msgid "If disabled "
-#~ msgstr "Je-li zakázáno "
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Průhlednost stínu záložního písma"
-#~ msgid "\""
-#~ msgstr "\""
+#~ msgid "Fallback font size"
+#~ msgstr "Velikost záložního písma"
-#~ msgid "No!!!"
-#~ msgstr "Ne!!!"
+#~ msgid "Filtering"
+#~ msgstr "Filtrování"
-#~ msgid "Generate Normalmaps"
+#~ msgid "Floatland base height noise"
+#~ msgstr "Šum základní výšky létajících ostrovů"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Neprůhlednost stínu písma (od 0 do 255)."
+
+#~ msgid "FreeType fonts"
+#~ msgstr "Písma Freetype"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "Bitová hloubka v celoobrazovkovém režimu"
+
+#~ msgid "Game"
+#~ msgstr "Hra"
+
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Generovat Normální Mapy"
+
+#~ msgid "Generate normalmaps"
#~ msgstr "Generovat normálové mapy"
-#~ msgid "Public Serverlist"
-#~ msgstr "Seznam veřejných serverů"
+#~ msgid "HUD scale factor"
+#~ msgstr "Součinitel škálování HUD"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "Výpočty ve FPU s vysokou přesností"
+
+#~ msgid "IPv6 support."
+#~ msgstr ""
+#~ "Nastavuje reálnou délku dne.\n"
+#~ "Např.: 72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = čas zůstává stále "
+#~ "stejný."
+
+#~ msgid "In-Game"
+#~ msgstr "Ve hře"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instalace: soubor: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentace"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Nastavení kláves (pokud toto menu je špatně naformátované, upravte "
+#~ "nastavení v minetest.conf)"
+
+#, fuzzy
+#~ msgid "Lava depth"
+#~ msgstr "Hloubka velké jeskyně"
+
+#~ msgid "Main"
+#~ msgstr "Hlavní nabídka"
-#~ msgid "No of course not!"
-#~ msgstr "Jistě že ne!"
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "Skript hlavní nabídky"
+
+#~ msgid "Menus"
+#~ msgstr "Nabídky"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Minimapa v režimu radar, Přiblížení x2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Minimapa v režimu radar, Přiblížení x4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Minimapa v režimu povrch, Přiblížení x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Minimapa v režimu povrch, Přiblížení x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Jméno / Heslo"
+
+#~ msgid "Name/Password"
+#~ msgstr "Jméno/Heslo"
+
+#~ msgid "No"
+#~ msgstr "Ne"
+
+#~ msgid "Ok"
+#~ msgstr "OK"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax occlusion"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Parallax occlusion"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Náklon parallax occlusion"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Počet iterací parallax occlusion"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Režim parallax occlusion"
+
+#, fuzzy
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Škála parallax occlusion"
+
+#~ msgid "Player name"
+#~ msgstr "Jméno hráče"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP (hráč proti hráči) povoleno"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Užitečné pro vývojáře modů."
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Reset místního světa"
+
+#, fuzzy
+#~ msgid "Select Package File:"
+#~ msgstr "Vybrat soubor s modem:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Server / Místní hra"
+
+#, fuzzy
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Odsazení stínu písma, pokud je nastaveno na 0, stín nebude vykreslen."
+
+#~ msgid "Special"
+#~ msgstr "Speciální"
+
+#, fuzzy
+#~ msgid "Special key"
+#~ msgstr "Klávesa plížení"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Start místní hry"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Síla vygenerovaných normálových map."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Pro zapnutí shaderů musíte používat OpenGL ovladač."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Plynulá kamera"
+
+#~ msgid "Waving Water"
+#~ msgstr "Vlnění vody"
+
+#~ msgid "Waving water"
+#~ msgstr "Vlnění vody"
+
+#~ msgid "Yes"
+#~ msgstr "Ano"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Budete poprvé připojeni k serveru \"%s\".\n"
+#~ "Pokud budete pokračovat, nový uživatelský účet s vašimi údaji bude "
+#~ "vytvořen na tomto serveru.\n"
+#~ "Prosím znovu napište svoje aktuální heslo a klikněte na 'Registrovat a "
+#~ "Připojit se' pro potvrzení souhlasu, nebo vyberte 'Zrušit' pro návrat."
-#~ msgid "Detailed mod profiling"
-#~ msgstr "Detailní profilování modů"
+#~ msgid "You died."
+#~ msgstr "Zemřel jsi."
-#~ msgid "Detailed mod profile data. Useful for mod developers."
-#~ msgstr "Detailní profilovací data modů. Užitečné pro vývojáře modů."
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/da/minetest.po b/po/da/minetest.po
index d2d1c4eb5..645c052c2 100644
--- a/po/da/minetest.po
+++ b/po/da/minetest.po
@@ -1,15 +1,10 @@
-# German translations for minetest-c55 package.
-# Copyright (C) 2011 celeron
-# This file is distributed under the same license as the minetest-c55 package.
-# Frederik Helth <Guides@live.dk>, 2011.
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.0.0\n"
+"Project-Id-Version: Danish (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-08-30 04:09+0000\n"
-"Last-Translator: Rui <rui.minetest@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-01-26 12:17+0000\n"
+"Last-Translator: Thomas Wagner Nielsen <thomas@viawords.com>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/minetest/minetest/"
"da/>\n"
"Language: da\n"
@@ -17,24 +12,101 @@ 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 2.8-dev\n"
+"X-Generator: Weblate 4.11-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "Snakkekommandoer"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Afslut til menu"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Ugyldig kommando: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Enlig spiller"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Online-spillere: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Genopstå"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Du døde"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Tilgængelige kommandoer:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Tilgængelige kommandoer: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Der skete en fejt i Lua scriptet, så som et mod:"
+#, fuzzy
+msgid "An error occurred in a Lua script:"
+msgstr "Der skete en fejl i Lua scriptet, muligvis af et mod:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred:"
msgstr "Der skete en fejl:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Hovedmenu"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Ok"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Forbind igen"
@@ -43,9 +115,30 @@ msgstr "Forbind igen"
msgid "The server has requested a reconnect:"
msgstr "Serveren har anmodet om at forbinde igen:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Indlæser..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Vælg verden:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -60,10 +153,8 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr "Serveren understøtter protokol versioner mellem $1 og $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Prøv at slå den offentlige serverliste fra og til, og tjek din internet "
-"forbindelse."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -73,52 +164,90 @@ msgstr "Vi understøtter kun protokol version $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Vi understøtter protokol versioner mellem $1 og $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Anuller"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Afhænger af:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Afhængigheder:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Deaktivér MP"
+msgid "Disable all"
+msgstr "Deaktivér alle"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Aktivér MP"
+msgid "Disable modpack"
+msgstr "Deaktiver samlingen af mods"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Aktivér alle"
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Aktiver samlingen af mods"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
"Kunne ikke slå mod \"$1\" til, da den indeholder ugyldige tegn. Kun tegnene "
"[a-z0-9_] er tilladte."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Skjul spil"
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Skjul mp indhold"
+msgid "Find More Mods"
+msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Ingen (valgfrie) afhængigheder"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Der er ikke nogen beskrivelse af tilgængelig af det valgte spil."
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No hard dependencies"
+msgstr "Ingen afhængigheder."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr ""
+"Der er ikke nogen beskrivelse af tilgængelig af den valgte samling af mods."
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No optional dependencies"
+msgstr "Valgfrie afhængigheder:"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Valgfrie afhængigheder:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Gem"
@@ -130,75 +259,411 @@ msgstr "Verden:"
msgid "enabled"
msgstr "aktiveret"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Indlæser..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Alle pakker"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Already installed"
+msgstr "Tast allerede i brug"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Tilbage til hovedmenuen"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "Vær vært for spil"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "Indlæser..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Kunne ikke hente $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Spil"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Installer"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Installer"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "Valgfrie afhængigheder:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"Installer mod: Filtypen \"$1\" er enten ikke understøttet, ellers er arkivet "
+"korrupt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Der var ingen pakker at hente"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Der er ingen resultater at vise"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "Opdater"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Teksturpakker"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Afinstaller"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Opdater"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "En verden med navnet \"$1\" eksisterer allerede"
+msgstr "En verden med navnet »$1« findes allerede"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Altitude chill"
+msgstr "Højdekulde"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Altitude dry"
+msgstr "Højdekulde"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Biome blending"
+msgstr "Biom støj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Biomes"
+msgstr "Biom støj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caverns"
+msgstr "Hule støj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caves"
+msgstr "Oktaver"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Skab"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Hent et subgame, så som minetest_game fra minetest.net"
+#, fuzzy
+msgid "Decorations"
+msgstr "Gentagelser"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Advarsel: Den minimale udvikings test er kun lavet for udviklerne."
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Hent en fra minetest.net"
+#, fuzzy
+msgid "Dungeons"
+msgstr "Ridge støj"
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Spil"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Floatlands (experimental)"
+msgstr "Svævelandsniveau"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Humid rivers"
+msgstr "Luftfugtighedsstøj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Installer"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Mapgen"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Flag for Mapgen"
+
#: builtin/mainmenu/dlg_create_world.lua
#, fuzzy
-msgid "No worldname given or no game selected"
-msgstr "Intet navn på verden angivet eller intet spil valgt"
+msgid "Mapgen-specific flags"
+msgstr "Mapgen v5 særlige flag"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Intet spil valgt"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
#, fuzzy
+msgid "Rivers"
+msgstr "Flodstørrelse"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr "Kim"
+msgstr "Seed"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Advarsel: Den minimale udvikings test er kun lavet for udviklerne."
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Terrain surface erosion"
+msgstr "Terræn base støj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Vary river depth"
+msgstr "Floddybde"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Verdens navn"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Du har ikke installeret nogle subgames."
+msgid "You have no games installed."
+msgstr "Du har ikke installeret nogle spil."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "Er du sikker på du vil slette \"$1\"?"
+msgstr "Er du sikker på, at du vil slette »$1«?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Slet"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: failed to delete \"$1\""
msgstr "Modmgr: Kunne ikke slette \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: invalid path \"$1\""
msgstr "Modmgr: ugyldig mod-sti \"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "Slet verden \"$1\"?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Bekræft kodeord"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Mapgen-navn"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Nyt kodeord"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Kodeordene er ikke ens!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Accepter"
@@ -206,25 +671,41 @@ msgstr "Accepter"
msgid "Rename Modpack:"
msgstr "Omdøb Modpack:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" er ikke en gyldig indstilling."
+#: 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 ""
+"Denne samling af mods har et specifik navn defineret i sit modpack.conf "
+"hvilket vil overskrive enhver omdøbning her."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(Der er ikke nogen beskrivelse af denne indstilling)"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
+msgid "2D Noise"
+msgstr "Todimensionelle lyde"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
msgstr "< Tilbage til siden Indstillinger"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
msgid "Browse"
msgstr "Gennemse"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Indhold"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Indhold"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Deaktiveret"
@@ -237,33 +718,22 @@ msgid "Enabled"
msgstr "aktiveret"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr "Formatet er 3 tal, adskilt af kommaer, og omgivet af parenteser."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Format: <forskydning>, <skalering>, (<udbredelseX>, <udbredelseY>, "
-"<udbredelseZ>), <kim>, <oktaver>, <vedholdenhed>"
+msgid "Lacunarity"
+msgstr "Sikkerhed"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Spil"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mods"
+msgid "Octaves"
+msgstr "Oktaver"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Indtast venligst en liste af indstillinger som er adskilt med kommaer."
+#, fuzzy
+msgid "Persistence"
+msgstr "Persistens"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -274,239 +744,346 @@ msgid "Please enter a valid number."
msgstr "Indtast venligt et gyldigt nummer."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Mulige værdier er: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "Gendan standard"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Skala"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Søg"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Vælg sti"
+msgid "Select directory"
+msgstr "Vælg mappe"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Vælg fil"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Vis tekniske navne"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Værdien skal være større end $1."
+msgid "The value must be at least $1."
+msgstr "Værdien skal være mindst $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Værdien skal være mindre end $1."
+msgid "The value must not be larger than $1."
+msgstr "Værdien må ikke være større end $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "X spredning"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Y spredning"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z spredning"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Absolut værdi"
+
+#. ~ "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 "Standard"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
msgstr ""
-"\n"
-"Installer Mod: filtypen \"$1\" er enten ikke understøttet, ellers er arkivet "
-"korrupt"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "Kunne ikke installere $1 til $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (aktiveret)"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Installer Mod: Fil: \"$1\""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mods"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Installer Mod: kunne ikke finde det rigtige mod navn for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Kunne ikke installere $1 til $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr "Installer Mod: kunne ikke finde passende mappe navn for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Installer mod: Kunne ikke finde det rigtige mod-navn for: $1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Luk marked"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Installer mod: Kunne ikke finde passende mappe navn for samling af mods $1"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Henter $1, vent venligst..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Kan ikke finde en korrekt mod eller samling af mods"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Installer"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Kan ikke installere $1 som en teksturpakke"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Side $1 af $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Kan ikke installere $1 som et spil"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Bedømmelse"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Kan ikke installere $1 som et mod"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Søg"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Kan ikke installere $1 som en samling af mods"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Kort navn:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Indlæser..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Succesfuldt installeret:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Usorteret"
+#: 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 "
+"forbindelse."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "geninstaller"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Aktive bidragere"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Active renderer:"
+msgstr "Aktivt objektafsendelsesinterval"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
-msgstr "Hoved udviklere"
+msgstr "Primære udviklere"
+
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "Vælg mappe"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Skabt af"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Tidligere bidragere"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
-msgstr "Tidligere hoved udviklere"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Installerede mods:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Information om mod:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Der er ikke nogen beskrivelse af tilgængelig af det valgte mod"
+msgstr "Tidligere primære udviklere"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Omdøb"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Vælg mod fil:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Afinstaller det valgte mod"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Gennemse online indhold"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Afinstaller den valgte modpack"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Indhold"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Adresse/port"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Deaktiver teksturpakke"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Klient"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Information:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Forbind"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Installerede pakker:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kreativ tilstand"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Ingen afhængigheder."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Skade aktiveret"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Der er ikke nogen beskrivelse af tilgængelig af den valgte pakke"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Del. Favorite"
-msgstr "Vis favoritter"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Omdøb"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Favorite"
-msgstr "Vis favoritter"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Afinstaller den valgte pakke"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Name / Password"
-msgstr "Navn/kodeord:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Anvend teksturpakker"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "Spiller mod spiller aktiveret"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Meddelelsesserver"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr ""
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Konfigurér"
+msgstr "Bind adresse"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Kreativ tilstand"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Aktivér skade"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Navn/kodeord"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Vær vært for spil"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Host Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Ny"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#, fuzzy
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Ingen verden skabt eller valgt!"
+msgstr "Ingen verden oprettet eller valgt!"
-#: builtin/mainmenu/tab_server.lua
-#, fuzzy
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Start spil"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Offentlig"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Vælg verden:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Vælg verden:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Server"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Server port"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
msgid "Start Game"
-msgstr "Start spil / Forbind"
+msgstr "Vær vært for spil"
-#: builtin/mainmenu/tab_settings.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "Adresse"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Ryd"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Kreativ tilstand"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Skade"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Favorit"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Join Game"
+msgstr "Vær vært for spil"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Meddelelsesserver"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Fjernport"
+
+#: builtin/mainmenu/tab_online.lua
#, fuzzy
+msgid "Server Description"
+msgstr "Serverbeskrivelse"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
msgid "2x"
msgstr "2x"
@@ -515,113 +1092,109 @@ msgid "3D Clouds"
msgstr "3D-skyer"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "4x"
msgstr "4x"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Avancerede indstillinger"
+#, fuzzy
+msgid "All Settings"
+msgstr "Indstillinger"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "Udjævning:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Er du sikker på, at du vil nulstille din enkelt spiller-verden?"
+#, fuzzy
+msgid "Autosave Screen Size"
+msgstr "Autogem skærmstørrelse"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Bi-lineær filtréring"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "Mip-mapping"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Skift bindinger"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Skift tastatur-bindinger"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
msgstr "Forbundet glas"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dynamic shadows"
+msgstr "Fontskygge"
+
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Fontskygge"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr "Opakt (uigennemsigtigt) vand"
+msgstr "Smukke blade"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Mipmap"
-msgstr "Mip-mapping"
+msgid "High"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Nej"
+#, fuzzy
+msgid "Mipmap"
+msgstr "Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmap + Aniso-filter"
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr "Intet filter"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "No Mipmap"
-msgstr "Mip-mapping"
+msgstr "Ingen Mipmap"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Highlighting"
-msgstr "Glat belysning"
+msgstr "Knudepunktsfremhævelse"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Outlining"
-msgstr "Glat belysning"
+msgstr "Knudepunktsomrids"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Ingen"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Normal Mapping"
-msgstr "Mip-mapping"
-
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Opaque Leaves"
-msgstr "Opakt (uigennemsigtigt) vand"
+msgstr "Uuigennemsigtige blade"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Opaque Water"
-msgstr "Opakt (uigennemsigtigt) vand"
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
+msgstr "Uigennemsigtigt vand"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "Aktivér partikler"
+msgstr "Partikler"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Er du sikker på, at du vil nulstille din enkelt spiller-verden?"
+msgid "Screen:"
+msgstr "Skærm:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -629,7 +1202,16 @@ msgstr "Indstillinger"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr "Shadere"
+msgstr "Dybdeskabere"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "Svævelandsniveau"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
@@ -641,107 +1223,78 @@ msgstr "Glat belysning"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
+msgstr "Teksturering:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-#, fuzzy
msgid "Tone Mapping"
-msgstr "Mip-mapping"
+msgstr "Toneoversættelse"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr ""
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Føletærskel (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
msgstr "Tri-lineær filtréring"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Leaves"
-msgstr "\"Smarte\" træer"
+msgid "Very High"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Plants"
-msgstr "\"Smarte\" træer"
+msgid "Very Low"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Water"
-msgstr "\"Smarte\" træer"
+msgid "Waving Leaves"
+msgstr "Bølgende blade"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Ja"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Konfigurér mods"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Hovedmenu"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Enlig spiller"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Spil"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Enlig spiller"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Der er ikke nogen information tilgængelig"
+#, fuzzy
+msgid "Waving Liquids"
+msgstr "Bølgende blade"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Bølgende planter"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr ""
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Forbindelses fejl (tidsfristen udløb)."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Færdig!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Initialiserer noder"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "Initialiserer noder..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr ""
+msgstr "Indlæser teksturer..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr ""
+msgstr "Genbygger dybdeskabere ..."
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Kunne ikke finde eller indlæse spil \""
+msgid "Could not find or load game: "
+msgstr "Kunne ikke finde eller indlæse spillet: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
@@ -761,15 +1314,18 @@ msgid "Player name too long."
msgstr "Spillerens navn er for langt."
#: src/client/clientlauncher.cpp
-#, fuzzy
-msgid "Provided world path doesn't exist: "
-msgstr "Den angivne sti til verdenen findes ikke: "
+msgid "Please choose a name!"
+msgstr "Vælg venligst et navn!"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
msgstr ""
-#: src/game.cpp
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Angivne sti til verdenen findes ikke: "
+
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -777,61 +1333,176 @@ msgstr ""
"\n"
"Tjek debug.txt for detaljer."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Skift tastatur-bindinger"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Adresse: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Tilstand: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Offentlig: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- Spiller mod spiller (PvP): "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Servernavn: "
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Der skete en fejl:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward disabled"
+msgstr "Fremadtast"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "Fremadtast"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update disabled"
+msgstr "Tast til ændring af kameraopdatering"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update enabled"
+msgstr "Tast til ændring af kameraopdatering"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Skift kodeord"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode disabled"
+msgstr "Tast for filmisk tilstand"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "Tast for filmisk tilstand"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Klient modding"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Forbinder til server..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Fortsæt"
-#: src/game.cpp
-#, fuzzy
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Styring:\n"
+"- %s: bevæg dig fremad\n"
+"- %s: bevæg dig baglæns\n"
+"- %s: bevæg dig til venstre\n"
+"- %s: bevæg dig til højre\n"
+"- %s: hoppe/klatre\n"
+"- %s: snige/gå nedad\n"
+"- %s: smid genstand\n"
+"- %s: medbragt/lager\n"
+"- Mus: vende rundt/kigge\n"
+"- Mus venstre: grave/slå\n"
+"- Mus højre: placere/bruge\n"
+"- Musehjul: vælge genstand\n"
+"- %s: snakke (chat)\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr "Opretter klient..."
+msgstr "Opretter klient ..."
-#: src/game.cpp
-#, fuzzy
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Opretter server..."
+msgstr "Opretter server ..."
-#: src/game.cpp
-#, fuzzy
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
msgstr ""
-"Standard-styring:\n"
-"- WASD: Bevæge sig rundt\n"
-"- Mellemrumstast: Hoppe/klatre\n"
-"- Skift: Snige/gå nedad\n"
-"- Q: Smide genstand\n"
-"- I: Medbragt\n"
-"- Mus: Vende rundt/kigge\n"
-"- Mus venstre: Grave/slå\n"
-"- Mus højre: Placere/bruge\n"
-"- Musehjul: Vælge genstand\n"
-"- T: Chat\n"
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
+msgid "Debug info shown"
+msgstr "Tast til aktivering af fejlsøgningsinfo"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -846,7 +1517,7 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"Standard-styring:\n"
+"Standardstyring:\n"
"Ingen menu synlig:\n"
"- Enkelt tryk: Aktivér knap\n"
"- Dobbelt tryk: Placér/brug\n"
@@ -859,512 +1530,868 @@ msgstr ""
"- Rør ved og træk, tryk med 2. finger\n"
" --> Placér enkelt genstand på feltet\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Opretter klient ..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Afslut til menu"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Afslut til operativsystemet"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr ""
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode disabled"
+msgstr "Hurtig tilstandshastighed"
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "KiB/s"
-msgstr "KiB/s"
+msgid "Fast mode enabled"
+msgstr "Hurtig tilstandshastighed"
-#: src/game.cpp
-msgid "Media..."
-msgstr "Medier..."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "MiB/s"
-msgstr "MiB/s"
+msgid "Fly mode disabled"
+msgstr "Hurtig tilstandshastighed"
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "Node definitions..."
-msgstr "Blokdefinitioner..."
+msgid "Fly mode enabled"
+msgstr "Skade aktiveret"
-#: src/game.cpp
-msgid "Resolving address..."
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
msgstr ""
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Genopstå"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "Deaktivér alle"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Lukker ned..."
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "aktiveret"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Lydniveau"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Spilinfo:"
-#: src/game.cpp
-msgid "You died."
-msgstr "Du døde."
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Spil på pause"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "ok"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Hosting server"
+msgstr "Hosting server"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr " "
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Elementdefinitioner ..."
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Fortsæt"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Brug\" = klatre ned"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Medier..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Baglæns"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Snak"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Kommando"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Enlig spiller"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konsol"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Noclip mode enabled"
+msgstr "Skade aktiveret"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
msgstr ""
-"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
-"tilstand"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Slip"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Knudepunktsdefinitioner ..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Fremad"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Fra"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Beholdning"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Til"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Hop"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Tast allerede i brug"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
msgstr ""
-"Tastebindinger. (Hvis denne menu fucker op, fjern elementer fra minetest."
-"conf)"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Venstre"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Fjernserver"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Udskriv stakke"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Slår adresse op ..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Afstands vælg"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Lukker ned..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Højre"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Enlig spiller"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Snige"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Lydniveau"
-#: src/guiKeyChangeMenu.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "Toggle Cinematic"
-msgstr "Omstil hurtig"
+msgid "Sound muted"
+msgstr "Lydniveau"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Omstil hurtig"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Omstil flyvning"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Omstil fylde"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound unmuted"
+msgstr "Lydniveau"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Brug"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoom"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "Tryk på en tast"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Skift"
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Viewing range changed to %d"
+msgstr "Lydstyrke ændret til %d%%"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Bekræft kodeord"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nyt kodeord"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Gammelt kodeord"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Lydstyrke ændret til %d%%"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Kodeordene er ikke ens!"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
-#: src/guiVolumeChange.cpp
-#, fuzzy
-msgid "Exit"
-msgstr "Afslut"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ok"
-#: src/guiVolumeChange.cpp
+#: src/client/gameui.cpp
#, fuzzy
-msgid "Sound Volume: "
-msgstr "Lydstyrke: "
+msgid "Chat hidden"
+msgstr "Snakketast"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr "Apps"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Giv agt"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Tilbage"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
-#: src/keycode.cpp
-#, fuzzy
-msgid "Capital"
-msgstr "Store bogstaver"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Ryd"
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Komma"
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Prg."
-#: src/keycode.cpp
-msgid "Control"
-msgstr "Control"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Backspace"
+msgstr "Tilbage"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Konvertér"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Ned"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "End"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Udvisk Slut-På-Fil"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Slet slut-på-fil (EOF)"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Escape"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Eksekvér"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Endelig"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Hjælp"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insert"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME-accept"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME-konvertér"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME-tilstandsskift"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME-ikke-konvertér"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Venstre"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Venstre knap"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Venstre Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Venstre Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Venstre Skift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Venstre meta"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Midterste knap"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Minus"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Tilstandsskift"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Næste"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nonconvert"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Numpad *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Numpad +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Numpad -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Num. tast. ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Numpad /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Numpad 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Numpad 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Numpad 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Numpad 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Numpad 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Numpad 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Numpad 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Numpad 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Numpad 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Numpad 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Ryd"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punktum"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plus"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Spil"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Udskriv"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Foregående"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Enter"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Højre"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Højre knap"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Højre Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Højre Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Højre Skift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Højre meta"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Vælg"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Sov"
-#: src/keycode.cpp
-#, fuzzy
+#: src/client/keycode.cpp
msgid "Snapshot"
-msgstr "Tilstandsbillede"
+msgstr "Øjebliksbillede"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Mellemrum"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulator"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Op"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X knap 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X knap 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+#, fuzzy
+msgid "Minimap hidden"
+msgstr "Minikorttast"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Kunne ikke hente $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Fortsæt"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "\"Brug\" = klatre ned"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Autoforward"
+msgstr "Fremad"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Baglæns"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "Skift bindinger"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Snak"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Kommando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsol"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Sænk lydstyrken"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
+"tilstand"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Slip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Fremad"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Øg lydstyrken"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Beholdning"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Hop"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Tast allerede i brug"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Lokal kommando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Lydløs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Næste genst."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Forr. genstand"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Afstands vælg"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Skærmbillede"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Snige"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle HUD"
+msgstr "Omstil flyvning"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle chat log"
+msgstr "Omstil hurtig"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Omstil hurtig"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Omstil flyvning"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fog"
+msgstr "Omstil flyvning"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle minimap"
+msgstr "Omstil fylde"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Omstil fylde"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle pitchmove"
+msgstr "Omstil hurtig"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Tryk på en tast"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Skift"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nyt kodeord"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Gammelt kodeord"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Kodeordene er ikke ens!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Afslut"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy
+msgid "Muted"
+msgstr "Lydløs"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Lydstyrke: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "da"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Vælg venligst et navn!"
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
-"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+"(X,Y,Z)-forskydning for fraktal fra verdencentrum i enheder af »skala«.\n"
+"Brugt til at flytte en egnet udlægning af lavt land tæt på (0, 0).\n"
+"Standarden er egnet til mandelbrot-sæt, skal redigeres for julia-sæt.\n"
+"Interval cirka -2 til 2. Gang med »skala« i knudepunkter."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr "3D skyer"
+msgstr "3D-skyer"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "3D mode"
msgstr "3D-tilstand"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3D-støj, der definerer kæmpe grotter."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"3D-støj, der definerer bjergstruktur og -højde.\n"
+"Definerer også svævelandsbjergterrænstrukturen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "3D-støj, der definerer flodkløftvægstrukturen."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "3D noise defining terrain."
+msgstr "3D-støj, der definerer kæmpe grotter."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1373,7 +2400,22 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"Understøttelse af 3D.\n"
+"Understøttet på nuværende tidspunkt:\n"
+"- none: ingen 3d-udgang.\n"
+"- anaglyph: cyan/magenta farve 3d.\n"
+"- interlaced: ulige/lige linjebaseret polarisering for "
+"skærmunderstøttelsen\n"
+"- topbottom: opdel skærm top/bund.\n"
+"- sidebyside: opdel skærm side om side.\n"
+"- pageflip: quadbuffer baseret 3d."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1381,45 +2423,55 @@ 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 ""
+"En valgt kortfødning for et nyt kort, efterlad tom for vilkårlig.\n"
+"Vil blive overskrevet når en ny verden oprettes i hovedmenuen."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "A message to be displayed to all clients when the server crashes."
msgstr "Besked, som skal vises til alle klienter, når serveren går ned."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "A message to be displayed to all clients when the server shuts down."
msgstr "Besked, som skal vises til alle klienter, når serveren lukker ned."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
+#, fuzzy
+msgid "ABM interval"
+msgstr "Interval for kortlagring"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Absolut begrænsning af fremkomstkøer"
+
+#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Acceleration i luft"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
+msgid "Acceleration of gravity, in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Active Block Modifiers"
+msgstr "Aktive blokændringer"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifiers"
-msgstr ""
+#, fuzzy
+msgid "Active block management interval"
+msgstr "Aktiv blokhåndteringsinterval"
#: src/settings_translation_file.cpp
msgid "Active block range"
-msgstr ""
+msgstr "Aktiv blokinterval"
#: src/settings_translation_file.cpp
msgid "Active object send range"
-msgstr ""
+msgstr "Aktivt objektafsendelsesinterval"
#: src/settings_translation_file.cpp
msgid ""
@@ -1432,121 +2484,247 @@ msgstr ""
"Bemærk, at adressefeltet i hovedmenuen tilsidesætter denne indstilling."
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Adds particles when digging a node."
+msgstr "Tilføjer partikler, når man graver en blok."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
-"Justér DPI-konfigurationen til din skærm (ikke-X11 / kun Andorid) f.eks. til "
+"Justér DPI-konfigurationen til din skærm (ikke-X11 / kun Android) f.eks. til "
"4k-skærme."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-" Et mindre tal betyder lysere.\n"
-"Denne indstilling gælder kun for klienten og ignoreres af serveren."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Verdens navn"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Avanceret"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr "Flyv altid og hurtigt"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
+msgstr "Ambient okklusiongamma"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Amplifies the valleys"
+msgid "Amplifies the valleys."
msgstr "Forstærker dalene"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Anisotropic filtering"
-msgstr "Anisotropisk filtréring"
+msgstr "Anisotropisk filtrering"
#: src/settings_translation_file.cpp
msgid "Announce server"
+msgstr "Meddelelsesserver"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Announce to this serverlist."
+msgstr "Meddelelsesserver"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Æbletræsstøj"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Ask to reconnect after crash"
+msgstr "Spørg om at forbinde igen efter nedbrud"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Ask to reconnect after crash"
-msgstr "Spørg om at forbinde igen, efter den er gået ned."
+msgid "Automatic forward key"
+msgstr "Fremadtast"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Automaticaly report to the serverlist."
-msgstr "Rapportér automatisk til serverlisten."
+msgid "Automatically report to the serverlist."
+msgstr "Rapporter automatisk til serverlisten."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Autogem skærmstørrelse"
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Autoscaling mode"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Aux1 key"
+msgstr "Hop-tast"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "Tast brugt til at klatre op/ned"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr "Baglæns"
+msgstr "Tilbage-tast"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr ""
+#, fuzzy
+msgid "Base ground level"
+msgstr "Jordoverfladen"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Grundlæggende"
+#, fuzzy
+msgid "Base terrain height."
+msgstr "Baseterrænhøjde"
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+#, fuzzy
+msgid "Basic privileges"
msgstr "Grundlæggende privilegier"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Beach noise"
+msgstr "Strandstøj"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Strandstøjtærskel"
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
-msgstr "Bi-lineær filtréring"
+msgstr "Bilineær filtrering"
#: src/settings_translation_file.cpp
msgid "Bind address"
+msgstr "Bind adresse"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Biom API temperatur og luftfugtighed støj parametre"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome noise"
+msgstr "Biom støj"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Bold and italic monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Bold font path"
+msgstr "Sti til font"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Build inside player"
-msgstr "Flerspiller"
+msgstr "Byg intern spiller"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Indbygget"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Bumpmapping"
-msgstr "Mip-mapping"
+msgid "Camera"
+msgstr "Skift bindinger"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1554,95 +2732,171 @@ msgstr "Kameraudjævning"
#: src/settings_translation_file.cpp
msgid "Camera smoothing in cinematic mode"
-msgstr ""
+msgstr "Kameraudjævning i biograftilstand"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
-msgstr ""
+msgstr "Tast til ændring af kameraopdatering"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave noise"
+msgstr "Hulestøj"
#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr ""
+msgstr "Hulestøj #1"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr ""
+msgstr "Hulestøj #2"
#: src/settings_translation_file.cpp
msgid "Cave width"
+msgstr "Grottebredde"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave1 noise"
+msgstr "Cave1 støj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cave2 noise"
+msgstr "Cave2 støj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern limit"
+msgstr "Hule grænse"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern noise"
+msgstr "Hule støj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+#, fuzzy
+msgid "Cavern threshold"
+msgstr "Hule tærskel"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Cavern upper limit"
+msgstr "Hule grænse"
+
+#: 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 ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Chat command time message threshold"
+msgstr "Ørkenstøjtærskel"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Snakkekommandoer"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat font size"
+msgstr "Skriftstørrelse"
+
+#: src/settings_translation_file.cpp
msgid "Chat key"
-msgstr "Skift bindinger"
+msgstr "Snakketast"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chat toggle key"
-msgstr "Skift bindinger"
+msgid "Chat log level"
+msgstr "Logniveau for fejlsøgning"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Kommando"
+msgid "Chat message format"
+msgstr "Nedbrudsbesked"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+#, fuzzy
+msgid "Chat message kick threshold"
+msgstr "Ørkenstøjtærskel"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Chunk size"
+msgid "Chat toggle key"
+msgstr "Tast for snak (chat)"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Chunk size"
+msgstr "Klumpstørrelse"
+
+#: src/settings_translation_file.cpp
msgid "Cinematic mode"
-msgstr "Kreativ tilstand"
+msgstr "Filmisk tilstand"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cinematic mode key"
-msgstr "Kreativ tilstand"
+msgstr "Tast for filmisk tilstand"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
+msgstr "Rene gennemsigtige teksturer"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Klient"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Klient og server"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Klatringshastighed"
+#, fuzzy
+msgid "Client modding"
+msgstr "Klient modding"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client side modding restrictions"
+msgstr "Klient modding"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Klient modding"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Skyhøjde"
+msgid "Climbing speed"
+msgstr "Klatringshastighed"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1654,38 +2908,74 @@ msgstr "Skyer"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr ""
+msgstr "Skyer er en klientsideeffekt."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Clouds in menu"
-msgstr "Hovedmenu"
+msgstr "Skyer i menu"
#: src/settings_translation_file.cpp
msgid "Colored fog"
msgstr "Farvet tåge"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Colored shadows"
+msgstr "Farvet tåge"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
+"Kommaadskilt liste af mod'er som har tilladelse til at tilgå HTTP API'er, "
+"som\n"
+"tillader dem at hente og overføre data fra internettet."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
+"Kommaadskil liste over troværdige mod'er som har tilladelse til at tilgå "
+"usikre\n"
+"funktioner selv når mod-sikkerhed er aktiveret (via "
+"request_insecure_environment())."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Command key"
-msgstr "Kommando"
+msgstr "Kommandotast"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Connect glass"
-msgstr "Forbind"
+msgstr "Forbind glas"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
@@ -1693,41 +2983,57 @@ msgstr "Opret forbindelse til ekstern medieserver"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr ""
+msgstr "Forbinder glass hvis understøttet af knudepunkt."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Console alpha"
-msgstr "Konsol"
+msgstr "Konsolalfa"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Console color"
-msgstr "Konsol"
+msgstr "Konsolfarve"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "Konsolhøjde"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Console key"
-msgstr "Konsol"
+msgid "ContentDB URL"
+msgstr "Fortsæt"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Kontinuerlig fremad"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Kontinuerlig bevægelse fremad (bruges kun til test)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Controls"
-msgstr "Control"
+msgstr "Styring"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
"Styrer længden af dag-/natcyklussen.\n"
"Eksempler: 72 = 20 min, 360 = 4 min, 1 = 24 timer, 0 = dag/nat/hvad som "
@@ -1735,56 +3041,52 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr ""
+msgstr "Kontrollerer hældning/dybe for sødybder."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
msgstr "Styrer stejlheden/højden af bakkerne."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
-msgstr "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller."
+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 ""
#: src/settings_translation_file.cpp
msgid "Crash message"
msgstr "Nedbrudsbesked"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr " "
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgid "Creative"
+msgstr "Kreativ"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr ""
+msgstr "Crosshair alpha"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr ""
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr "Crosshair alpha (uigennemsigtighed, mellem 0 og 255)."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr ""
+msgstr "Crosshair-farve"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1792,21 +3094,34 @@ msgid "DPI"
msgstr "DPI"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Damage"
-msgstr "Aktivér skade"
+msgstr "Skade"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr ""
+msgstr "Tast til aktivering af fejlsøgningsinfo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Debug log file size threshold"
+msgstr "Ørkenstøjtærskel"
#: src/settings_translation_file.cpp
msgid "Debug log level"
+msgstr "Logniveau for fejlsøgning"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dec. volume key"
+msgstr "Dec. lydstyrketasten"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr ""
+msgstr "Dedikeret server-trin"
#: src/settings_translation_file.cpp
msgid "Default acceleration"
@@ -1823,9 +3138,8 @@ msgid ""
msgstr "Standard spil, når du skaber en ny verden."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Default password"
-msgstr "Nyt kodeord"
+msgstr "Standardadgangskode"
#: src/settings_translation_file.cpp
msgid "Default privileges"
@@ -1833,138 +3147,265 @@ msgstr "Standardprivilegier"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Standardformat for rapport"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Default stack size"
+msgstr "Standard spil"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Definerer områder, hvor træerne har æbler."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Definerer områder med sandstrande."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgid "Defines distribution of higher terrain."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Definerer fuld størrelse af grotter - mindre værdier genererer større "
+"grotter."
#: src/settings_translation_file.cpp
-msgid "Delay showing tooltips, stated in milliseconds."
+msgid "Defines large-scale river channel structure."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Deprecated Lua API handling"
+msgid "Defines location and terrain of optional hills and lakes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+#, fuzzy
+msgid "Defines the base ground level."
+msgstr "Definerer træområder og trætæthed."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Defines the depth of the river channel."
+msgstr "Definerer træområder og trætæthed."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
+"Definerer den maksimale spillerflytningsafstand i blokke (0 = ubegrænset)."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid "Defines the width of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+#, fuzzy
+msgid "Defines the width of the river valley."
+msgstr "Definerer områder, hvor træerne har æbler."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Definerer træområder og trætæthed."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Forsinkelse i afsendelse af blokke efter bygning"
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr "Forsinkelse ved visning af værktøjsfif, angivet i millisekunder."
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr "Forældet Lua API-håndtering"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Depth below which you'll find giant caverns."
+msgstr "Dybde hvorunder du kan finde store huler."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr "Dybde hvorunder du kan finde store huler."
+
+#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
+"Beskrivelse af server, som vises når spillere tilslutter sig og i "
+"serverlisten."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Ørkenstøjtærskel"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr "Afsynkroniser blokanimation"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Gentagelser"
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Dig key"
+msgstr "Højretast"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Gravepartikler"
+
+#: src/settings_translation_file.cpp
msgid "Disable anticheat"
-msgstr "Aktivér partikler"
+msgstr "Deaktiver antisnyd"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
+msgstr "Tillad ikke tomme adgangskoder"
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
-msgstr "Tillad ikke tomme adgangskoder"
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr "Domænenavn for server, til visning i serverlisten."
#: src/settings_translation_file.cpp
-msgid "Domain name of server, to be displayed in the serverlist."
+msgid "Double tap jump for fly"
+msgstr "Tryk to gange på »hop« for at flyve"
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
msgstr ""
+"Tryk på »hop« to gange for at skifte frem og tilbage fra flyvetilstand."
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr "Drop element-tast"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Double tap jump for fly"
+msgid "Dump the mapgen debug information."
+msgstr "Dump mapgen-fejlsøgningsinfo."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
msgstr ""
-"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
-"tilstand"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Double-tapping the jump key toggles fly mode."
+msgid "Dungeon noise"
+msgstr "Ridge støj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
msgstr ""
-"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
-"tilstand"
#: src/settings_translation_file.cpp
-msgid "Drop item key"
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Aktivér konsolvindue"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Enable creative mode for all players"
+msgstr "Aktivér kreativ tilstand for nyoprettede kort."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Enable joysticks"
msgstr "Aktivér joysticks"
#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Enable VBO"
-msgstr "Aktivér MP"
+msgid "Enable mod channels support."
+msgstr "Aktiver mod-sikkerhed"
#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr ""
+msgstr "Aktiver mod-sikkerhed"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr ""
+msgstr "Aktiver at spillere kan skades og dø."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
-msgstr ""
+msgstr "Aktiver vilkårlig brugerinddata (kun til test)."
#: src/settings_translation_file.cpp
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
+"Aktiver blød lyssætning med simpel ambient okklusion.\n"
+"Deaktiver for hastighed eller for anderledes udseender."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1974,6 +3415,10 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
+"Aktiver for at nægte gamle klienter i at forbinde.\n"
+"Ældre klienter er kompatible på den måde, at de ikke vil stoppe ved "
+"tilkobling\n"
+"til nye servere, men de understøtter ikke alle nye funktioner."
#: src/settings_translation_file.cpp
msgid ""
@@ -1982,216 +3427,386 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
+"Aktiver brug af ekstern medieserver (hvis tilbudt af server).\n"
+"Eksterne servere tilbyder en signifikant hurtigere måde at hente medier (f."
+"eks. teksturer\n"
+"ved forbindelse til serveren."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"Aktivere/deaktivere afvikling af en IPv6-server. En IPv6-server kan være "
+"begrænset\n"
+"til IPv6-klienter, afhængig af systemkonfiguration.\n"
+"Ignoreret hvis bind_address er angivet."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables filmic tone mapping"
-msgstr "Aktivér skade"
+msgid "Enables animation of inventory items."
+msgstr "Aktiverer animation af lagerelementer."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Aktiverer mellemlagring af facedir-roterede mesher."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enables minimap."
-msgstr "Aktivér skade"
+msgstr "Aktiverer minikort."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
-msgstr ""
+msgid "Engine profiling data print interval"
+msgstr "Udskrivningsinterval for motorprofileringsdata"
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
-msgstr ""
+msgid "Entity methods"
+msgstr "Entitetmetoder"
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr ""
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr ""
+msgid "Factor noise"
+msgstr "Faktorstøj"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr ""
+#, fuzzy
+msgid "Fall bobbing factor"
+msgstr "Fall bobbing faktor"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+#, fuzzy
+msgid "Fallback font path"
+msgstr "Reserveskrifttype"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr ""
+msgstr "Hurtigtast"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
-msgstr ""
+msgstr "Hurtig tilstandsacceleration"
#: src/settings_translation_file.cpp
msgid "Fast mode speed"
-msgstr ""
+msgstr "Hurtig tilstandshastighed"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr ""
+msgstr "Hurtig bevægelse"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
+"Hurtig bevægelse (via tast).\n"
+"Dette kræver privilegiet »fast« på serveren."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Visningsområde"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "Visningsområde i grader."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
+"Fil i client/serverlist/ som indeholder dine favoritservere vist i "
+"fanebladet for flere spillere."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+#, fuzzy
+msgid "Filler depth"
+msgstr "Fyldstofdybde"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+#, fuzzy
+msgid "Filler depth noise"
+msgstr "Fyldningsdybde støj"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Filmisk toneoversættelse"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
+"Filtrerede teksturer kan blande RGB-værdier med fuldt gennemsigtige naboer,\n"
+"som PNG-optimeringsprogrammer normalt fjerner, undertiden resulterende i "
+"en \n"
+"mørk eller lys kant for gennemsigtige teksturer. Anvend dette filter for at "
+"rydde\n"
+"op i dette på indlæsningstidspunktet for tekstur."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Udjævning:"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Filtering"
-msgstr "Anisotropisk filtréring"
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
+msgstr "Fast kortfødning"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fly key"
+#, fuzzy
+msgid "Floatland density"
+msgstr "Svævelandsniveau"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Flying"
+msgid "Floatland minimum Y"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland noise"
+msgstr "Svævelandsniveau"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland taper exponent"
+msgstr "Svævelandsgrundhøjdestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland tapering distance"
+msgstr "Svævelandsgrundhøjdestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland water level"
+msgstr "Svævelandsniveau"
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr "Flyvetast"
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr "Flyver"
+
+#: src/settings_translation_file.cpp
msgid "Fog"
-msgstr ""
+msgstr "Tåge"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Fog start"
+msgstr "Tågebegyndelse"
#: src/settings_translation_file.cpp
msgid "Fog toggle key"
+msgstr "Tast for tåge"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "Skriftstørrelse"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr ""
+msgstr "Fontskygge"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
+msgstr "Alfa for skrifttypeskygge"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Skriftstørrelse"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid ""
+"Font size of the recent chat text and chat prompt in point (pt).\n"
+"Value 0 will use the default font size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
+msgstr "Format for skærmbilleder."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Formspec default background color (R,G,B)."
+msgstr "Baggrundsfarve for snakkekonsollen i spillet (R,G,B)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+"Baggrundsalfa for snakkekonsollen i spillet (uigennemsigtighed, mellem 0 og "
+"255)."
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Baggrundsfarve for snakkekonsollen i spillet (R,G,B)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+"Baggrundsalfa for snakkekonsollen i spillet (uigennemsigtighed, mellem 0 og "
+"255)."
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
-msgstr "Fremad"
+msgstr "Fremadtast"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Fraktaltype"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2199,91 +3814,148 @@ msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"Fra hvor langt væk blokke oprettes for klienten, angivet i kortblokke (16 "
+"knudepunkter)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"Fra hvor langt væk blokke sendes til klienter, angivet i kortblokke (16 "
+"knudepunker)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
msgid "Full screen"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
+msgstr "Fuld skærm"
#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "Fuldskærmstilstand."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr ""
+msgstr "Skalering af grafisk brugerflade"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr ""
+msgstr "GUI-skaleringsfilter"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "GUI-skaleringsfilter txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Spil"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Globale tilbagekald"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
+"Globale kortoprettelsesattributter.\n"
+"I Mapgen v6 kontrollerer flaget »decorations« alle dekorationer undtagen "
+"træer\n"
+"og junglegræs, i alle andre mapgen'er kontrollerer dette flag alle "
+"dekorationer.\n"
+"Flag som ikke er angivet i flagstrengen ændres ikke fra standarden.\n"
+"Flag startende med »no« (nej) bruges til eksplicit at deaktivere dem."
#: src/settings_translation_file.cpp
-msgid "Graphics"
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr "Grafik"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafik"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafik"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
+msgstr "Tyngdekraft"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Ground level"
+msgstr "Jordoverfladen"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Ground noise"
+msgstr "Jordoverfladen"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HTTP mods"
+msgstr "HTTP-Mod'er"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "HTTP Mods"
-msgstr "Mods"
+msgid "HUD scaling"
+msgstr "Skalering af grafisk brugerflade"
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr ""
+msgstr "Tast for HUD"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
+"Håndtering for forældede lua api-kald:\n"
+"- legacy: (prøv at) efterligne gammel opførsel (standard for udgivelse).\n"
+"- log: efterlign og log tilbagesporing for forældede kald (standard for "
+"fejlsøgning).\n"
+"- error: afbryd ved brug af forældede kald (foreslået af mod-udviklere)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2293,67 +3965,300 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Få profilprogrammet til at instruere sig selv:\n"
+"* Instruer en tom funktion.\n"
+"Dette estimerer belastningen, som instrumenteringen tilføjer (+1 "
+"funktionkald).\n"
+"* Instruer sampleren i brug til at opdatere statistikken."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Heat blend noise"
+msgstr "Varme blanding støj"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Varmestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "Højdekomponent for den oprindelige vinduestørrelse."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Højdestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Height select noise"
+msgstr "Højde Vælg støj"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Bakkestejlhed"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Bakketærskel"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness1 noise"
+msgstr "Varmestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness2 noise"
+msgstr "Varmestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness3 noise"
+msgstr "Varmestøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Hilliness4 noise"
+msgstr "Varmestøj"
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "Hjemmeside for serveren, som vist i serverlisten."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hotbar next key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Homepage of server, to be displayed in the serverlist."
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid "Hotbar slot 29 key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "How deep to make rivers."
+msgstr "Dybde for floder"
+
+#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
+"Hvor lang tid serveren vil vente før ubrugt kortblokke fjernes.\n"
+"Højere værdier er længere tid, men vil bruge mere RAM."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
-msgstr ""
+#, fuzzy
+msgid "How wide to make rivers."
+msgstr "Hvor brede floder skal være"
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "Humidity noise"
+msgstr "Luftfugtighedsstøj"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "IPv6-server"
+
+#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"Hvis FPS skal være højere end dette, så begræns ved at sove\n"
+"for ikke at spilde CPU-kraft uden nogen fordel."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"Hvis deaktiveret bruges »brug«-tasten til at flyve hurtig hvis både flyvning "
+"og hurtig tilstand er aktiveret."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -2361,11 +4266,24 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"Hvis aktiveret sammen med fly-tilstand, kan spilleren flyve igennem faste "
+"knudepunkter.\n"
+"Dette kræver privilegiet »noclip« på serveren."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Hvis aktiveret bruges »brug«-tasten i stedet for »snig«-tasten til at klatre "
+"ned og aftagende."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2373,47 +4291,98 @@ msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Hvis aktiveret, optages handlinger for tilbagerulning.\n"
+"Dette tilvalg læses kun når serveren starter."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
msgstr ""
+"Hvis aktiveret så deaktiver forhindring af snyd i spil med flere deltagere."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Hvis aktiveret, så vil ugyldige data ikke medføre at serveren lukke ned.\n"
+"Aktiver kun hvis du ved hvad du gør."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+"Hvis aktiveret kan nye spillere ikke slutte sig til uden en tom adgangskode."
+
+#: src/settings_translation_file.cpp
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 ""
+"Hvis aktiveret så kan du placere blokke ved positionen (fod + øje niveau) "
+"hvor du står.\n"
+"Dette er nyttigt under arbejde med knudepunktbokse i små områder."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Spil"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+"Hvis aktiveret, så vil spillere altid (gen)starte ved den angivne position."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Ignorer verdensfejl"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
+"Baggrundsalfa for snakkekonsollen i spillet (uigennemsigtighed, mellem 0 og "
+"255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
+msgstr "Baggrundsfarve for snakkekonsollen i spillet (R,G,B)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "Spillechat konsol højde, mellem 0,1 (10%) og 1,0 (100%)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Inc. volume key"
+msgstr "Øg lydstyrketasten"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2421,115 +4390,182 @@ msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Instrumenteringsindbygning.\n"
+"Er normalt kun krævet af kerne/indbygningsbidragydere"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+#, fuzzy
+msgid "Instrument chat commands on registration."
+msgstr "Udstyr chatkommandoer ved registrering."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Udstyr globale tilbagekaldsfunktioner ved registrering.\n"
+"(alt du sender til en minetest.register_*()-funktion)"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
-msgstr ""
+msgstr "Udstyr handlingsfunktionen for Aktiv blokændringer ved registrering."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Udstyr handlingsfunktionen for Indlæsning af blokændringer ved registrering."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Udstyr metoderne for enheder ved registrering."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
+"Interval for lagring af vigtige ændringer i verden, angivet i sekunder."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Interval for afsendelse af tidspunkt på dagen til klienter."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Animationer for lagerelementer"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Inventory key"
-msgstr "Beholdning"
+msgstr "Lagertast"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Invertér mus"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
+msgstr "Vend lodret musebevægelse om."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Italic font path"
+msgstr "Sti til font"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Elemententitet TTL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Iterations"
+msgstr "Gentagelser"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
+msgstr "Joystick-knaps gentagelsesinterval"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
+msgstr "Joystick frustum-sensitivitet"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Kun Juliasæt: W-komponent for hyperkompleks konstant der bestemmer "
+"Juliaform.\n"
+"Har ingen effekt på 3D-fraktaler.\n"
+"Interval cirka -2 til 2."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Kun Juliasæt: X-komponent for hyperkompleks konstant der bestemmer "
+"Juliaform.\n"
+"Interval cirka -2 til 2."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Kun Juliasæt: Y-komponent for hyperkompleks konstant der bestemmer "
+"Juliaform.\n"
+"Interval cirka -2 til 2."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Kun Juliasæt: Z-komponent for hyperkompleks konstant der bestemmer "
+"Juliaform.\n"
+"Interval cirka -2 til 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Jump key"
-msgstr "Hop"
+msgstr "Hop-tast"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Hoppehastighed"
#: src/settings_translation_file.cpp
msgid ""
@@ -2537,6 +4573,31 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for mindskning af den sete afstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast for sænkning af lydstyrken.\n"
+"Se 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 ""
+"Tast for hop.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2544,6 +4605,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast som smider det nuværende valgte element.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2551,6 +4615,20 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for øgning af den sete afstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast for øgning af lydstyrken.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2558,6 +4636,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for hop.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2565,13 +4646,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at bevæge sig hurtigt i tilstanden hurtig.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at bevæge spilleren baglæns.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2579,6 +4668,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at bevæge spilleren fremad.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2586,6 +4678,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at bevæge spilleren mod venstre.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2593,13 +4688,20 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at bevæge spilleren mod højre.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for stum.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2607,6 +4709,20 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne snakkevinduet for at indtaste kommandoer.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast til at åbne snakkevinduet for at indtaste kommandoer.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2614,6 +4730,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne snakkevinduet (chat).\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2621,634 +4740,1025 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for hop.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+#, fuzzy
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
+#, fuzzy
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+#, fuzzy
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+#, fuzzy
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+#, fuzzy
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Left key"
-msgstr "Venstre Menu"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+#, fuzzy
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+#, fuzzy
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+#, fuzzy
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+#, fuzzy
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+#, fuzzy
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+#, fuzzy
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+#, fuzzy
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at åbne lageret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til snigning.\n"
+"Bruges også til at klatre ned og synke ned i vand hvis aux1_descends er "
+"deaktiveret.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte mellem første- og tredjepersons kamera.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at lave skærmbilleder.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+#, fuzzy
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til automatisk løb.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til biograftilstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast til at skifte til visning af minikort.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til hurtig tilstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til flyvning.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "Hovedmenu"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast til at skifte til noclip-tilstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Main menu script"
-msgstr "Hovedmenu"
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tast til at skifte til noclip-tilstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for at skifte kameraopdateringen. Bruges kun til udvikling\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#, fuzzy
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte visningen af snakken (chat).\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til visning af fejlsøgningsinformation.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte visningen af tåge.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til skift af visningen for HUD'en.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte visningen af snakken (chat).\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte visningen af profileringsprogrammet. Brugt til "
+"udvikling.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast til at skifte til ubegrænset se-afstand.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+#, fuzzy
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tast for hop.\n"
+"Se http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Mapgen"
+msgid "Lake steepness"
+msgstr "Søstejlhed"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Søtærskel"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Sprog"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Large cave depth"
+msgstr "Dybde for stor hule"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Mapgen"
+msgid "Large cave proportion flooded"
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Mapgen"
+msgid "Large chat console key"
+msgstr "Store chat konsol tast"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Bladstil"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Bladstil:\n"
+"- Fancy: alle sider synlige\n"
+"- Simple: kun ydre sider, hvis defineret special_tiles anvendes\n"
+"- Opaque: deaktiver gennemsigtighed"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr ""
+msgid "Left key"
+msgstr "Venstretast"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"Længde på serveraktivering og intervallet som objekter opdateres efter over "
+"netværket."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+#, fuzzy
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Sat til true (sand) aktiverer bølgende blade.\n"
+"Kræver at dybdeskabere er aktiveret."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Tidslængde mellem ABM-kørselscyklusser"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr ""
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Tidslængde mellem NodeTimer-kørselscyklusser"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Tidslængde mellem ABM-kørselscyklusser"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Niveau for logning der skrives til debug.txt:\n"
+"- <nothing> (ingen logning)\n"
+"- none (beskeder uden niveau)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Mapgen"
-
-#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Glat belysning"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Begrænser antallet af parallelle HTTP-forespørgsler. Påvirker:\n"
+"- Medioverførsel hvis serveren bruger indstillingen remote_media.\n"
+"- Serverlist-overførsel og serverbesked.\n"
+"- Overførsler udført af hovedmenuen (f.eks. mod-håndtering).\n"
+"Har kun en effekt hvis kompileret med cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Væskes evne til at flyde"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Blødgøring af væskes evne til at flyde"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid loop max"
+msgstr "Væskesløjfe maks."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr ""
+msgid "Liquid queue purge time"
+msgstr "Køfjernelsestid for væske"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr ""
+#, fuzzy
+msgid "Liquid sinking"
+msgstr "Synkehastighed for væske"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid update interval in seconds."
+msgstr "Væskeopdateringsinterval i sekunder."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Væskeopdateringsudløsning"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Load the game profiler"
+msgstr "Indlæs spilprofileringsprogrammet"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
+"Indlæs spilprofileringsprogrammet for at indsamle profileringsdata.\n"
+"Tilbyder en kommando /profiler til at tilgå den indsamlede profil.\n"
+"Nyttig for mod-udviklere og serveroperatører."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr ""
+msgid "Loading Block Modifiers"
+msgstr "Indlæser blokændringer"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Lower Y limit of floatlands."
+msgstr "Absolut begrænsning af fremkomstkøer"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Hovedmenuskript"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Tåge- og himmelfarver afhænger af tid på dagen (solopgang/solnedgang) og den "
+"sete retning."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map directory"
+msgstr "Kortmappe"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+#, fuzzy
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Kortoprettelsesattributter specifikke for Mapgen flat.\n"
+"Undtagelsesvis kan søer og bakker tilføjes til den flade verden.\n"
+"Flag som ikke er specificeret i flag-strengen ændres ikke fra standarden.\n"
+"Flag der starter med »no« bruges til eksplicit at deaktivere dem."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+#, fuzzy
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"Kortoprettelsesattributter specifikke for Mapgen flat.\n"
+"Undtagelsesvis kan søer og bakker tilføjes til den flade verden.\n"
+"Flag som ikke er specificeret i flag-strengen ændres ikke fra standarden.\n"
+"Flag der starter med »no« bruges til eksplicit at deaktivere dem."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+#, 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 ""
+"Tilknyttes Mapgen v6 generation attributter specifikke.\n"
+"'Snowbiomes' flag gør det muligt for det nye 5 biom system.\n"
+"Når den nye biom system aktiveres jungler er automatisk aktiveret og flaget "
+"'junglen' er ignoreret.\n"
+"Flag, der ikke er angivet i strengen flag er ikke ændret fra standarden.\n"
+"Flag starter med \"nej\" er brugt udtrykkeligt deaktivere dem."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+#, 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 ""
+"Kortoprettelsesattributter specifikke for Mapgen flat.\n"
+"Undtagelsesvis kan søer og bakker tilføjes til den flade verden.\n"
+"Flag som ikke er specificeret i flag-strengen ændres ikke fra standarden.\n"
+"Flag der starter med »no« bruges til eksplicit at deaktivere dem."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Kortoprettelsesbegrænsning"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Interval for kortlagring"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Map shadows update frames"
+msgstr "Væskeopdateringsudløsning"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Kortblokbegrænsning"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapblock mesh generation delay"
+msgstr "Mapblock mesh generation forsinkelse"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Mapblock mesh generation forsinkelse"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr ""
+msgid "Mapblock unload timeout"
+msgstr "Tidsudløb for kortblokfjernelse"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Carpathian"
+msgstr "Fraktral for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Carpathian specific flags"
+msgstr "Flade flag for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Flat"
+msgstr "Mapgen-flad"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Flat specific flags"
+msgstr "Flade flag for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal"
+msgstr "Fraktral for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal specific flags"
+msgstr "Flade flag for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V5"
+msgstr "Mapgen v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V5 specific flags"
+msgstr "Mapgen v5 særlige flag"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V6"
+msgstr "Mapgen v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V6 specific flags"
+msgstr "Mapgen v6 særlige flag"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V7"
+msgstr "Mapgen v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V7 specific flags"
+msgstr "Mapgen v7 særlige flag"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Mapgen-daler"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Valleys specific flags"
+msgstr "Flade flag for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Fejlsøgning for Mapgen"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Mapgen-navn"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3272,10 +5782,14 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
+msgstr "Maksimal FPS"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3287,11 +5801,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3301,13 +5828,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3328,7 +5862,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3350,21 +5888,30 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Menu"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Maksimum antal brugere"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3372,47 +5919,69 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "Dagens besked"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "Besked i dag vist til spillere, der forbinder."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimap"
+msgid "Minimal level of logging to be written to chat."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr "Minikort"
+
+#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "Minikorttast"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
msgid "Mipmapping"
-msgstr "Mip-mapping"
+msgstr "Mipmapping"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+#, fuzzy
+msgid "Mod Security"
+msgstr "Sikkerhed"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3424,6 +5993,27 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mountain zero level"
+msgstr "Vandstand"
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3432,21 +6022,30 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+#, fuzzy
+msgid "Mute key"
+msgstr "MUTE-tasten"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3462,7 +6061,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3472,6 +6071,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Netværk"
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3484,6 +6088,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Knudepunktsfremhævelse"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3492,110 +6101,143 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "Lyde"
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+#, fuzzy
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Begrænsning af fremkomsten af køer at oprette"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Physics"
+msgstr "Fysik"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+#, fuzzy
+msgid "Pitch move key"
+msgstr "Flyvetast"
#: src/settings_translation_file.cpp
-msgid "Physics"
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place key"
+msgstr "Flyvetast"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "Joystick-knaps gentagelsesinterval"
+
+#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Bilineær filtrering"
#: src/settings_translation_file.cpp
msgid ""
@@ -3604,13 +6246,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3626,7 +6274,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3637,7 +6297,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3647,7 +6307,16 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
msgid "Range select key"
-msgstr "Afstands vælg"
+msgstr "Range select tasten"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Regular font path"
+msgstr "Rapportsti"
#: src/settings_translation_file.cpp
msgid "Remote media"
@@ -3655,6 +6324,12 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "Fjernport"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3662,41 +6337,96 @@ msgid "Replaces the default main menu with a custom one."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Vælg sti"
+msgstr "Rapportsti"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Right key"
-msgstr "Højre Menu"
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "Ridge mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+#, fuzzy
+msgid "Ridge noise"
+msgstr "Ridge støj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "Ridged mountain size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "Right key"
+msgstr "Højretast"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River channel depth"
+msgstr "Floddybde"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River channel width"
+msgstr "Floddybde"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River depth"
+msgstr "Floddybde"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River noise"
+msgstr "Flodstøj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River size"
+msgstr "Flodstørrelse"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River valley width"
+msgstr "Floddybde"
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "Rolling hill size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rollback recording"
+msgid "Rolling hills spread noise"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Round minimap"
+msgstr "Rundt minikort"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3704,12 +6434,16 @@ msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3717,31 +6451,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Skærm:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "Skærmhøjde"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Screenshot"
-msgstr "Tilstandsbillede"
+msgid "Screen width"
+msgstr "Skærmbredde"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "Tilstandsbillede"
+msgstr "Skærmbilledformat"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "Tilstandsbillede"
+msgstr "Skærmbilledkvalitet"
#: src/settings_translation_file.cpp
msgid ""
@@ -3751,11 +6483,27 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr ""
+#, fuzzy
+msgid "Screenshots"
+msgstr "Skærmbillede"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Seabed noise"
+msgstr "Havbunden støj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3772,34 +6520,100 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
-msgstr "Enligspiller"
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Valg af 18 fraktaler fra 9 formler.\n"
+"1 = 4D »Roundy« mandelbrot-sæt.\n"
+"2 = 4D »Roundy« julia-sæt.\n"
+"3 = 4D »Squarry« mandelbrot-sæt.\n"
+"4 = 4D »Squarry\" julia-sæt.\n"
+"5 = 4D »Mandy Cousin« mandelbrot-sæt.\n"
+"6 = 4D »Mandy Cousin« julia-sæt.\n"
+"7 = 4D »Variation« mandelbrot-sæt.\n"
+"8 = 4D »Variation« julia-sæt.\n"
+"9 = 3D »Mandelbrot/Mandelbar« mandelbrot-sæt.\n"
+"10 = 3D »Mandelbrot/Mandelbar« julia-sæt.\n"
+"11 = 3D »Christmas Tree« mandelbrot-sæt.\n"
+"12 = 3D »Christmas Tree« julia-sæt.\n"
+"13 = 3D »Mandelbulb« mandelbrot-sæt.\n"
+"14 = 3D »Mandelbulb« julia-sæt.\n"
+"15 = 3D »Cosine Mandelbulb« mandelbrot-sæt.\n"
+"16 = 3D »Cosine Mandelbulb« julia-sæt.\n"
+"17 = 4D »Mandelbulb« mandelbrot-sæt.\n"
+"18 = 4D »Mandelbulb« julia-sæt."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Server-URL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Servernavn"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Serverbeskrivelse"
#: src/settings_translation_file.cpp
msgid "Server URL"
-msgstr ""
+msgstr "Server-URL"
#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr ""
+msgstr "Serveradresse"
#: src/settings_translation_file.cpp
msgid "Server description"
-msgstr ""
+msgstr "Serverbeskrivelse"
#: src/settings_translation_file.cpp
msgid "Server name"
-msgstr ""
+msgstr "Servernavn"
#: src/settings_translation_file.cpp
msgid "Server port"
+msgstr "Serverport"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Server port"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr ""
@@ -3811,27 +6625,117 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Sat til true (sand) aktiverer bølgende blade.\n"
+"Kræver at dybdeskabere er aktiveret."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Sat til true (sand) aktiverer bølgende blade.\n"
+"Kræver at dybdeskabere er aktiveret."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"Angivet til true (sand) aktiverer bølgende vand.\n"
+"Kræver at dybdeskabere er aktiveret."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
+"Angivet til true (sand) aktiverer bølgende planter.\n"
+"Kræver at dybdeskabere er aktiveret."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shader path"
+msgstr "Shader sti"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+"Dybdeskabere tillader avancerede visuelle effekter og kan forøge ydelsen på "
+"nogle videokort.\n"
+"De fungerer kun med OpenGL-videomotoren."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Skærmbilledkvalitet"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+"Forskydning for skrifttypeskygge, hvis 0 så vil skygge ikke blive tegnet."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3847,23 +6751,67 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
+msgstr "Nedlukningsbesked"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Smooth lighting"
-msgstr "Glat belysning"
+msgstr "Blød belysning"
#: src/settings_translation_file.cpp
msgid ""
@@ -3880,15 +6828,28 @@ msgid "Smooths rotation of camera. 0 to disable."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Sneak key"
-msgstr "Snige"
+msgstr "Snigetast"
#: src/settings_translation_file.cpp
-msgid "Sound"
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Ganghastighed"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "Alfa for skrifttypeskygge"
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr "Lyd"
+
+#: src/settings_translation_file.cpp
msgid ""
"Specifies URL from which client fetches media instead of using UDP.\n"
"$filename should be accessible from $remote_media$filename via cURL\n"
@@ -3897,15 +6858,53 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Step mountain size noise"
+msgstr "Terræn base støj"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 ""
#: src/settings_translation_file.cpp
@@ -3913,7 +6912,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3921,10 +6934,39 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Indstillinger"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain alternative noise"
+msgstr "Terræn base støj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain base noise"
+msgstr "Terræn base støj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain height"
+msgstr "Terrænhøjde"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Terrain higher noise"
+msgstr "Terræn højere støj"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Terrænstøj"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
@@ -3939,11 +6981,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3953,13 +7020,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+#, fuzzy
+msgid "The depth of dirt or other biome filler node."
+msgstr "Dybde for smuds eller andet fyldstof"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3973,13 +7057,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3999,40 +7100,58 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "Første af 2 3D-støj, der sammen definerer tunneler."
+
+#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Tidshastighed"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4053,14 +7172,35 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Touch screen threshold"
+msgstr "Strandstøjtærskel"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Strandstøjtærskel"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Tri-lineær filtréring"
+msgstr "Trilineær filtrering"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4072,6 +7212,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4080,6 +7233,15 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Upper Y limit of floatlands."
+msgstr "Absolut begrænsning af fremkomstkøer"
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4096,12 +7258,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Use key"
-msgstr "Tryk på en tast"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4109,31 +7280,70 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
+msgstr "VBO"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "VSync"
+msgstr "V-Sync"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Valley depth"
+msgstr "Fyldstofdybde"
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Varies steepness of cliffs."
+msgstr "Varierer stejlhed af klipper."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4145,13 +7355,11 @@ msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4163,32 +7371,54 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
+msgstr "Lydstyrke"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
msgstr ""
+"Aktiverer parallax-okklusionoversættelse.\n"
+"Kræver at dybdeskabere er aktiveret."
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Walking speed"
+msgid "Walking and flying speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Water Features"
+msgid "Walking speed"
+msgstr "Ganghastighed"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
-msgstr ""
+msgstr "Vandstand"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
@@ -4199,28 +7429,35 @@ msgid "Waving Nodes"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Waving leaves"
-msgstr "\"Smarte\" træer"
+msgstr "Bølgende blade"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Bølgende blade"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Bølgende vand"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Bølgende blade"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "Bølgende vand"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4242,26 +7479,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4290,23 +7519,40 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "Højdekomponent for den oprindelige vinduestørrelse."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4316,137 +7562,372 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "Verdens navn"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL file download timeout"
+#, fuzzy
+msgid "Y of upper limit of large caves."
+msgstr "Absolut begrænsning af fremkomstkøer"
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
+msgstr "cURL-tidsudløb"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
msgstr ""
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kreativ tilstand: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Skade: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = parallax-okklusion med kurveinformation (hurtigere).\n"
+#~ "1 = relief-oversættelse (langsommere, mere præcis)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Adresse/port"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Justér gammakodningen for lystabellerne. Et større tal betyder lysere.\n"
+#~ "Denne indstilling gælder kun for klienten og ignoreres af serveren."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Er du sikker på, at du vil nulstille din enkelt spiller-verden?"
+
+#~ msgid "Back"
+#~ msgstr "Tilbage"
+
+#~ msgid "Basic"
+#~ msgstr "Grundlæggende"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bit per billedpunkt (a.k.a. farvedybde) i fuldskærmtilstand."
+
#, fuzzy
-#~ msgid "Downloading"
-#~ msgstr "Ned"
+#~ msgid "Bump Mapping"
+#~ msgstr "Bump Mapping"
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed"
+#, fuzzy
+#~ msgid "Bumpmapping"
+#~ msgstr "Bumpmapping"
+
+#~ msgid "Config mods"
+#~ msgstr "Konfigurér mods"
-#~ msgid "is required by:"
-#~ msgstr "er påkrævet af:"
+#~ msgid "Configure"
+#~ msgstr "Konfigurér"
-#~ msgid "Configuration saved. "
-#~ msgstr "Konfiguration gemt. "
+#~ msgid "Connect"
+#~ msgstr "Forbind"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Advarsel: konfigurationen er ikke sammenhængende. "
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller."
-#~ msgid "Cannot create world: Name contains invalid characters"
-#~ msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver"
+#~ msgid "Credits"
+#~ msgstr "Skabt af"
-#~ msgid "Show Public"
-#~ msgstr "Vis offentlig"
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Crosshair-farve (R,G,B)."
-#~ msgid "Show Favorites"
-#~ msgstr "Vis favoritter"
+#~ msgid "Damage enabled"
+#~ msgstr "Skade aktiveret"
+
+#, fuzzy
+#~ msgid "Darkness sharpness"
+#~ msgstr "Søstejlhed"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Standardtidsudløb for cURL, angivet i millisekunder.\n"
+#~ "Har kun effekt hvis kompileret med cURL."
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Lad adresse-feltet være tomt for at starte en lokal server."
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Definerer sampling-trin for tekstur.\n"
+#~ "En højere værdi resulterer i en mere rullende normale kort."
-#~ msgid "Create world"
-#~ msgstr "Skab verden"
+#~ msgid "Del. Favorite"
+#~ msgstr "Slet favorit"
-#~ msgid "Address required."
-#~ msgstr "Adresse påkrævet."
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Hent et spil, såsom Minetest Game fra minetest.net"
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Kan ikke slette verden: ingenting valgt"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Hent en fra minetest.net"
-#~ msgid "Files to be deleted"
-#~ msgstr "Filer som slettes"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Henter og installerer $1, vent venligst..."
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Kan ikke skabe verden: ingen spil fundet"
+#~ msgid "Enable VBO"
+#~ msgstr "Aktiver VBO"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Kan ikke konfigurere verden: ingenting valgt"
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Aktiverer bumpmapping for teksturer. Normalmaps skal være angivet af "
+#~ "teksturpakken\n"
+#~ "eller skal være automatisk oprettet.\n"
+#~ "Kræver at dybdeskabere er aktiveret."
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Mislykkedes i at slette alle verdenens filer"
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Aktiverer filmisk toneoversættelse"
#~ msgid ""
-#~ "Default Controls:\n"
-#~ "- WASD: Walk\n"
-#~ "- Mouse left: dig/hit\n"
-#~ "- Mouse right: place/use\n"
-#~ "- Mouse wheel: select item\n"
-#~ "- 0...9: select item\n"
-#~ "- Shift: sneak\n"
-#~ "- R: Toggle viewing all loaded chunks\n"
-#~ "- I: Inventory menu\n"
-#~ "- ESC: This menu\n"
-#~ "- T: Chat\n"
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
#~ msgstr ""
-#~ "Standard bindinger:\n"
-#~ "- WASD: bevægelse\n"
-#~ "- Venstre musetast: grav/slå\n"
-#~ "- Højre musetast: anbring/brug\n"
-#~ "- Musehjul: vælg genstand\n"
-#~ "- 0...9: vælg genstand\n"
-#~ "- Shift: snige\n"
-#~ "- R: omstil se alle indlæste klumper\n"
-#~ "- I: beholdning\n"
-#~ "- ESC: denne menu\n"
-#~ "- T: snak\n"
-
-#~ msgid "Delete map"
-#~ msgstr "Slet mappen"
+#~ "Aktiverer løbende normalmap-oprettelse (Emboss-effekt).\n"
+#~ "Kræver bumpmapping for at være aktiveret."
#~ msgid ""
-#~ "Warning: Some configured mods are missing.\n"
-#~ "Their setting will be removed when you save the configuration. "
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Advarsel: nogle konfigurerede modifikationer mangler.\n"
-#~ "Deres indstillinger vil blive fjernet når du gemmer konfigurationen. "
+#~ "Aktiverer parallax-okklusionoversættelse.\n"
+#~ "Kræver at dybdeskabere er aktiveret."
+
+#~ msgid "Enter "
+#~ msgstr " "
#~ msgid ""
-#~ "Warning: Some mods are not configured yet.\n"
-#~ "They will be enabled by default when you save the configuration. "
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
#~ msgstr ""
-#~ "Advarsel: nogle modifikationer er endnu ikke konfigureret.\n"
-#~ "De vil blive aktiveret som standard når du gemmer konfigurationen. "
+#~ "Eksperimentelt tilvalg, kan medføre synlige mellemrum mellem blokke\n"
+#~ "når angivet til et højere nummer end 0."
-#~ msgid "Preload item visuals"
-#~ msgstr "For-indlæs elementernes grafik"
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS i pausemenu"
-#, fuzzy
-#~ msgid "Password"
-#~ msgstr "Gammelt kodeord"
+#~ msgid "Fallback font shadow"
+#~ msgstr "Skygge for reserveskrifttypen"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Skyggealfa for reserveskrifttypen"
+
+#~ msgid "Fallback font size"
+#~ msgstr "Størrelse for reserveskrifttypen"
+
+#~ msgid "Filtering"
+#~ msgstr "Filtrering"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Alfa for skrifttypeskygge (uigennemsigtighed, mellem 0 og 255)."
#, fuzzy
-#~ msgid "Game Name"
+#~ msgid "FreeType fonts"
+#~ msgstr "Freetype-skrifttyper"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "Fuldskærm BPP"
+
+#~ msgid "Game"
#~ msgstr "Spil"
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
+
+#, fuzzy
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Opret normalkort"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "Opret normalkort"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "HUD-skaleringsfaktor"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "Højpræcisions FPU"
+
+#~ msgid "IPv6 support."
+#~ msgstr "Understøttelse af IPv6."
+
+#~ msgid "In-Game"
+#~ msgstr "I-spil"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Installer mod: Fil: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentering"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Tastebindinger. (Hvis denne menu fucker op, fjern elementer fra minetest."
+#~ "conf)"
+
+#, fuzzy
+#~ msgid "Lava depth"
+#~ msgstr "Dybde for stor hule"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Begrænsning af fremkomsten af forespørgsler på disk"
+
+#~ msgid "Main"
+#~ msgstr "Hovedmenu"
+
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "Hovedmenuskript"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "Får DirectX til at fungere med LuaJIT. Deaktiver hvis det giver problemer."
+
+#~ msgid "Menus"
+#~ msgstr "Menuer"
+
+#~ msgid "Name / Password"
+#~ msgstr "Navn/adgangskode"
+
+#~ msgid "Name/Password"
+#~ msgstr "Navn/kodeord"
+
+#~ msgid "No"
+#~ msgstr "Nej"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax-okklusion"
+
+#, fuzzy
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Parallax-okklusion"
+
+#~ msgid "Player name"
+#~ msgstr "Spillerens navn"
+
+#~ msgid "PvP enabled"
+#~ msgstr "Spiller mod spiller aktiveret"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Nulstil spillerverden"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Vælg pakke fil:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Server/alene"
+
+#, fuzzy
+#~ msgid "Shadow limit"
+#~ msgstr "Skygge grænse"
+
#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "aktiveret"
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Forskydning for skrifttypeskygge, hvis 0 så vil skygge ikke blive tegnet."
#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Deaktivér alle"
+#~ msgid "Special key"
+#~ msgstr "Snigetast"
-#~ msgid "Public Serverlist"
-#~ msgstr "Offentlig serverliste"
+#~ msgid "Start Singleplayer"
+#~ msgstr "Enlig spiller"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "For at aktivere dybdeskabere skal OpenGL-driveren bruges."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Aktiver filmisk"
+
+#~ msgid "Yes"
+#~ msgstr "Ja"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Du døde"
-#~ msgid "No of course not!"
-#~ msgstr "Nej selvfølgelig ikke!"
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/de/minetest.po b/po/de/minetest.po
index b68f3c894..36d47a74a 100644
--- a/po/de/minetest.po
+++ b/po/de/minetest.po
@@ -1,15 +1,10 @@
-# German translations for minetest-c55 package.
-# Copyright (C) 2011 celeron
-# This file is distributed under the same license as the minetest-c55 package.
-# Constantin Wenger <constantin.wenger@googlemail.com>, 2011.
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.0.0\n"
+"Project-Id-Version: German (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-08-09 07:40+0000\n"
-"Last-Translator: bse666 <bse666@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-24 09:24+0000\n"
+"Last-Translator: Wuzzy <Wuzzy@disroot.org>\n"
"Language-Team: German <https://hosted.weblate.org/projects/minetest/minetest/"
"de/>\n"
"Language: de\n"
@@ -17,24 +12,99 @@ 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 2.8-dev\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Die ausgehende Chatwarteschlange leeren"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Leerer Befehl."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Zum Hauptmenü verlassen"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Ungültiger Befehl: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Befehl erteilt: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Online spielende Spieler auflisten"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Online-Spieler: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Die ausgehende Chatwarteschlange ist nun leer."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Dieser Befehl ist vom Server deaktiviert."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Wiederbeleben"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Sie sind gestorben"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Verfügbare Befehle:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Verfügbare Befehle: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Befehl nicht verfügbar: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Hilfe für Befehle erhalten"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"„.help <Befehl>“ benutzen, um mehr Informationen zu erhalten, oder „.help "
+"all“ benutzen, um alles aufzulisten."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <Befehl>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "OK"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Es ist ein Fehler in einem Lua-Skript aufgetreten, z.B. in einer Mod:"
+msgid "<none available>"
+msgstr "<keine verfügbar>"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "Es ist ein Fehler aufgetreten:"
+msgid "An error occurred in a Lua script:"
+msgstr "In einem Lua-Skript ist ein Fehler aufgetreten:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Ein Fehler ist aufgetreten:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Hauptmenü"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "OK"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Erneut verbinden"
@@ -43,27 +113,49 @@ msgstr "Erneut verbinden"
msgid "The server has requested a reconnect:"
msgstr "Der Server hat um eine Wiederverbindung gebeten:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Lädt …"
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr "Eine neue $1-Version ist verfügbar"
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr "Client-Mods"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+"Installierte Version: $1\n"
+"Neue Version: $2\n"
+"Besuchen Sie $3, um herauszufinden, wie man die neueste Version erhält und auf "
+"dem neuesten Stand mit Features und Fehlerbehebungen bleibt."
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr "Später"
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr "Niemals"
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
-msgstr "Protokollversionsfehler. "
+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 $1 bis $2. "
+msgstr "Der Server unterstützt die Protokollversionen von $1 bis $2. "
#: builtin/mainmenu/common.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 "
-"Internetverbindung."
+msgid "Visit website"
+msgstr "Webseite besuchen"
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -73,132 +165,480 @@ msgstr "Wir unterstützen nur Protokollversion $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Wir unterstützen Protokollversionen zwischen $1 und $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr "(Aktiviert, hat Fehler)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr "(Nicht erfüllt)"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Abbrechen"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Abhängig von:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Abhängigkeiten:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "MP deaktivieren"
+msgid "Disable all"
+msgstr "Alle deaktivieren"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "MP aktivieren"
+msgid "Disable modpack"
+msgstr "Modpack deaktivieren"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Alle an"
+msgstr "Alle aktivieren"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Modpack aktivieren"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Fehler beim Aktivieren der Mod „$1“: Ungültiger Name. Nur folgende Zeichen "
-"sind erlaubt: [a-z0-9_]."
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Spiel ausblenden"
+"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 "Hide mp content"
-msgstr "Modpacks verstecken"
+msgid "Find More Mods"
+msgstr "Mehr Mods finden"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Keine (optionalen) Abhängigkeiten"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Keine Spielbeschreibung verfügbar."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Keine notwendigen Abhängigkeiten"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Keine Beschreibung für das Modpack verfügbar."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Keine optionalen Abhängigkeiten"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Optionale Abhängigkeiten:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Speichern"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
-msgstr "Welt:"
+msgstr "Weltname:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
msgstr "Aktiviert"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "„$1“ existiert bereits. Wollen Sie es überschreiben?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "$1 und $2 Abhängigkeiten werden installiert."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+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
+msgid "$1 downloading..."
+msgstr "$1 laden herunter…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+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 "$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
+msgid "Already installed"
+msgstr "Bereits installiert"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Zurück zum Hauptmenü"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Basis-Spiel:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"ContentDB ist nicht verfügbar, wenn Minetest ohne cURL kompiliert wurde"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Herunterladen …"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Fehler beim Download von $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Spiele"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Installieren"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "$1 installieren"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Fehlende Abhängigkeiten installieren"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Installation: Nicht unterstützter Dateityp oder kaputtes Archiv"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Es konnten keine Pakete abgerufen werden"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Keine Treffer"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Keine Updates"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Überschreiben"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Bitte prüfen Sie, ob das Basis-Spiel korrekt ist."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Eingereiht"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Texturenpakete"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Deinstallieren"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Update"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Alle aktualisieren [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Mehr Informationen im Webbrowser anschauen"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Eine Welt mit dem Namen „$1“ existiert bereits"
+msgstr "Eine Welt namens „$1“ existiert bereits"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Zusätzliches Gelände"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Höhenabkühlung"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Höhenabtrocknung"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Biomübergänge"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biome"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Hohlräume"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Höhlen"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Erstellen"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr ""
-"Andere Spiele (wie minetest_game) können von minetest.net heruntergeladen "
-"werden"
+msgid "Decorations"
+msgstr "Dekorationen"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Spiele können von minetest.net heruntergeladen werden"
+msgid "Development Test is meant for developers."
+msgstr "Development Test ist für Entwickler gedacht."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Spiel"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Verliese"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Flaches Gelände"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Schwebende Landmassen im Himmel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Schwebeländer (experimentell)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Nicht-fraktales Gelände erzeugen: Ozeane und Untergrund"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Hügel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Feuchte Flüsse"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Erhöht die Luftfeuchte um Flüsse"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr "Ein Spiel installieren"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr "Ein anderes Spiel installieren"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Seen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"Niedrige Luftfeuchtigkeit und große Wärme erzeugen seichte oder "
+"ausgetrocknete Flüsse"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Kartengenerator"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Kartengenerator-Flags"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Kein Weltname gegeben oder kein Spiel ausgewählt"
+msgid "Mapgen-specific flags"
+msgstr "Kartengeneratorspezifische Flags"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Berge"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Erosion"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Netzwerk aus Tunneln und Höhlen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Kein Spiel ausgewählt"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Reduziert die Wärme mit der Höhe"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Reduziert Luftfeuchtigkeit mit der Höhe"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Flüsse"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+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"
+msgstr "Weicher Übergang zwischen Biomen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"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 ""
+"Strukturen, die auf dem Gelände auftauchen, üblicherweise Bäume und Pflanzen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Gemäßigt, Wüste"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Gemäßigt, Wüste, Dschungel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Gemäßigt, Wüste, Dschungel, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Geländeoberflächenerosion"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Bäume und Dschungelgras"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Flusstiefe variieren"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Warnung: Die minimale Testversion ist für Entwickler gedacht."
+msgid "Very large caverns deep in the underground"
+msgstr "Sehr große Hohlräume tief im Untergrund"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Weltname"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Keine Spiele installiert."
+msgid "You have no games installed."
+msgstr "Es sind keine Spiele installiert."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: 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_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
-msgstr "Entfernen"
+msgstr "Löschen"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: Fehler beim Löschen von „$1“"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: Fehler beim Entfernen von „$1“"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: Unzulässiger Modpfad „$1“"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+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_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Passw. bestätigen"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr "$1 beitreten"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr "Fehlender Name"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Name"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Passwort"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr "Passwörter stimmen nicht überein"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr "Registrieren"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Annehmen"
@@ -206,15 +646,23 @@ msgstr "Annehmen"
msgid "Rename Modpack:"
msgstr "Modpack umbenennen:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "„$1“ ist kein gültiger Bitschalter."
+#: 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 ""
+"Diesem Modpaket wurde in seiner modpack.conf ein expliziter Name vergeben, "
+"der jede Umbennenung hier überschreiben wird."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(Keine Beschreibung vorhanden)"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2-D-Rauschen"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
msgstr "< Einstellungsseite"
@@ -223,51 +671,40 @@ msgid "Browse"
msgstr "Durchsuchen"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr "Inhalt: Spiele"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr "Inhalt: Mods"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Deaktiviert"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr "Ändern"
+msgstr "Bearbeiten"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
msgstr "Aktiviert"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
-"Das Format besteht aus 3 mit Komma getrennten Zahlen, die sich\n"
-"in Klammern befinden."
+msgid "Lacunarity"
+msgstr "Lückenhaftigkeit"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Format: <Offset>, <Skalierung>, (<AusbreitungX>, <AusbreitungY>, "
-"<AusbreitungZ>), <Seed>,\n"
-"<Oktaven>, <Persistenz>"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Spiele"
+msgid "Octaves"
+msgstr "Oktaven"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mods"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-"Optional kann die Lacunarity, mit einem weiteren Komma abgetrennt, angehängt "
-"werden."
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Versatz"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
-"Bitte geben Sie eine mit Kommata getrennte Liste von\n"
-"Flags an."
+msgid "Persistence"
+msgstr "Persistenz"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -278,240 +715,344 @@ msgid "Please enter a valid number."
msgstr "Bitte geben Sie eine gültige Zahl ein."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Mögliche Werte sind: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
-msgstr "Standardwert"
+msgstr "Zurücksetzen"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Skalierung"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Suchen"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Pfad auswählen"
+msgid "Select directory"
+msgstr "Verzeichnis auswählen"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Datei auswählen"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
-msgstr "Technische Namen zeigen"
+msgstr "Techn. Bezeichnung zeigen"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Der Wert muss größer als $1 sein."
+msgid "The value must be at least $1."
+msgstr "Der Wert muss mindestens $1 sein."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Der Wert muss kleiner als $1 sein."
+msgid "The value must not be larger than $1."
+msgstr "Der Wert darf nicht größer als $1 sein."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Mod installieren: Nicht unterstützter Dateityp „$1“ oder fehlerhaftes Archiv"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "X-Ausbreitung"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Y-Ausbreitung"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z-Ausbreitung"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Absolutwert"
-#: builtin/mainmenu/modmgr.lua
+#. ~ "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 "Standardwerte"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "weich (eased)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Aktiviert)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "Mods von $1"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Fehler bei der Installation von $1 nach $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Mod installieren: Datei: „$1“"
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Mod installieren: Echter Modname für $1 konnte nicht gefunden werden"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Modinstallation: Richtiger Modname für $1 konnte nicht gefunden werden"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Mod installieren: Geeigneter Ordnername für Modpack $1 konnte nicht gefunden "
-"werden"
+"Modinstallation: Geeigneter Verzeichnisname für Modpack $1 konnte nicht "
+"gefunden werden"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Schließen"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Keine gültige Mod oder Modpack gefunden"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "$1 wird heruntergeladen, bitte warten ..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Fehler bei der Texturenpaket-Installation von $1"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Installieren"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Fehler bei der Spiel-Installation von $1"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Seite $1 von $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Fehler bei der Mod-Installation von $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Bewertung"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Fehler bei der Modpack-Installation von $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Suchen"
-
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Kurzname:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Lädt …"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Erfolgreich installiert:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Öffentliche Serverliste ist deaktiviert"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Unsortiert"
+#: 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 "
+"Internetverbindung."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Erneut installieren"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Über"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Aktive Mitwirkende"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Aktiver Renderer:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Hauptentwickler"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Mitwirkende"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Benutzerdatenverzeichnis öffnen"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.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_about.lua
msgid "Previous Contributors"
msgstr "Frühere Mitwirkende"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Ehemalige Hauptentwickler"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Installierte Mods:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr "Debug-Log teilen"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Modinformation:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Onlineinhalte durchsuchen"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Keine Modbeschreibung verfügbar"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Inhalt"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Umbenennen"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Mod-Datei auswählen:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Texturenpaket deaktivieren"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Ausgewählte Mod deinstallieren"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Information:"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Ausgewähltes Modpack deinstallieren"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Installierte Pakete:"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Adresse / Port"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Keine Abhängigkeiten."
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Client"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Keine Paketbeschreibung verfügbar"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Verbinden"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kreativmodus"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Schaden aktiviert"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Favorit löschen"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Umbenennen"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Favorit"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Paket deinstallieren"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Name / Passwort"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Texturenpaket benutzen"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "Spielerkampf aktiviert"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Server veröffentlichen"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Bind-Adresse"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Konfigurieren"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Kreativmodus"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Schaden einschalten"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Name/Passwort"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Spiel hosten"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Server hosten"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Spiele aus ContentDB installieren"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Neu"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "Keine Welt angegeben oder ausgewählt!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Spiel starten"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Öffentlich"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Mods auswählen"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Welt wählen:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Server"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Serverport"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "Spiel starten"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Adresse"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Clear"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Kreativmodus"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Schaden / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Favoriten"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Inkompatible Server"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Spiel beitreten"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr "Login"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Latenz"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Öffentliche Server"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Neu laden"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr "Favorit entfernen"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Serverbeschreibung"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr "(Spielunterstützung benötigt)"
+
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
msgstr "2x"
#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
-msgstr "3D-Wolken"
+msgstr "3-D-Wolken"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
@@ -522,38 +1063,54 @@ msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Erweiterte Einstellungen"
+msgid "All Settings"
+msgstr "Alle Einstellungen"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "Kantenglättung:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Sind Sie sicher, dass Sie die Einzelspielerwelt löschen wollen?"
+msgid "Autosave Screen Size"
+msgstr "Fenstergröße merken"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Bilinearer Filter"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Bumpmapping"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Tasten ändern"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Tastenbelegung"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
msgstr "Verbundenes Glas"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dynamische Schatten"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr "Dynamische Schatten:"
+
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Schöne Blätter"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Hoch"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Niedrig"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Mittel"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "Mipmap"
@@ -562,32 +1119,24 @@ msgid "Mipmap + Aniso. Filter"
msgstr "Mipmap u. Aniso. Filter"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Nein"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
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 hervorheben"
+msgstr "Blöcke aufhellen"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
msgstr "Blöcke umranden"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr "Keines"
-
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "Normalmapping"
+msgid "None"
+msgstr "Keine"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
@@ -597,17 +1146,13 @@ msgstr "Undurchs. Blätter"
msgid "Opaque Water"
msgstr "Undurchs. Wasser"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Parallax-Occlusion"
-
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Partikel"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Einzelspielerwelt zurücksetzen"
+msgid "Screen:"
+msgstr "Monitor:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -618,116 +1163,96 @@ msgid "Shaders"
msgstr "Shader"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Shader (experimentell)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Shader (nicht verfügbar)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "Einfache Blätter"
#: builtin/mainmenu/tab_settings.lua
msgid "Smooth Lighting"
-msgstr "Geglättetes Licht"
+msgstr "Weiches Licht"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
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."
-
#: 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)"
-msgstr "Berührungsempfindlichkeit (px)"
+msgid "Touch threshold (px):"
+msgstr "Berührungsempfindlichkeit (px):"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
msgstr "Trilinearer Filter"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Wehende Blätter"
+msgid "Very High"
+msgstr "Sehr hoch"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Wehende Pflanzen"
+msgid "Very Low"
+msgstr "Sehr niedrig"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Wasserwellen"
+msgid "Waving Leaves"
+msgstr "Wehende Blätter"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Ja"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Mods konfigurieren"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Hauptmenü"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Einzelspieler starten"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Spielen"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Einzelspieler"
+msgid "Waving Liquids"
+msgstr "Flüssigkeitswellen"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Keine Informationen vorhanden"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Texturenpaket auswählen:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Wehende Pflanzen"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Texturenpakete"
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr "Verbindung abgebrochen (Protokollfehler?)."
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr "Verbindungsfehler, Zeitüberschreitung."
+msgstr "Zeitüberschreitung."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Fertig!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr "Initialisiere Blöcke"
+msgstr "Blöcke initialisieren"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Initialisiere Blöcke..."
+msgstr "Initialisiere Blöcke …"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr "Lade Texturen..."
+msgstr "Lade Texturen …"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Shader wiederherstellen..."
+msgstr "Shader erneuern …"
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
msgstr "Verbindungsfehler (Zeitüberschreitung?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Kann Spiel nicht finden oder laden \""
+msgid "Could not find or load game: "
+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"
@@ -739,75 +1264,190 @@ 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!"
+msgstr "Bitte wählen Sie einen Namen!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Fehler beim Öffnen der angegebenen Passwortdatei: "
#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "Angegebener Weltpfad existiert nicht: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Siehe debug.txt für Details."
+"Für mehr Details siehe debug.txt."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Tasten ändern"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Adresse: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Modus: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Öffentlich: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- Spielerkampf: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Servername: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Ein Serialisierungsfehler ist aufgetreten:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Zugriff verweigert. Grund: %s"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Vorwärtsautomatik deaktiviert"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Vorwärtsautomatik aktiviert"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Blockgrenzen verborgen"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Blockgrenzen für alle Blöcke angezeigt"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Blockgrenzen für aktuellen Block angezeigt"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Blockgrenzen für Blöcke in Nähe angezeigt"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Kameraaktualisierung deaktiviert"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Kameraaktualisierung aktiviert"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Blockgrenzen können nicht gezeigt werden (von Mod oder Spiel deaktiviert)"
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Passwort ändern"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Filmmodus deaktiviert"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Filmmodus aktiviert"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Client getrennt"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Clientseitige Skripte sind deaktiviert"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "Verbinde mit Server..."
+msgstr "Mit Server verbinden …"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Verbindung aus unbekanntem Grund fehlgeschlagen"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "Weiter"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Steuerung:\n"
+"- %s: Vorwärts\n"
+"- %s: Rückwärts\n"
+"- %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"
+"- Mausrad: Gegenstand wählen\n"
+"- %s: Chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Adresse konnte nicht aufgelöst werden: %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr "Client erstellen ..."
+msgstr "Client erstellen …"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Erstelle Server..."
+msgstr "Erstelle Server …"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Standardsteuerung:\n"
-"- WASD: bewegen\n"
-"- Leertaste: springen/klettern\n"
-"- Umschalt: kriechen/herunterklettern\n"
-"- Q: Item fallen lassen\n"
-"- I: Inventar\n"
-"- Maus: drehen/umschauen\n"
-"- Maus links: graben/schlagen\n"
-"- Maus rechts: platzieren/benutzen\n"
-"- Mausrad: Gegenstand auswählen\n"
-"- T: Chat\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Debug-Infos und Profiler-Graph verborgen"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Debug-Infos angezeigt"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Debug-Infos, Profiler und Drahtgitter deaktiviert"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -835,507 +1475,872 @@ msgstr ""
"- berühren u. ziehen, mit 2. Finger antippen\n"
" --> 1 Gegenstand ins Feld platzieren\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Unbegrenzte Sichtweite deaktiviert"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Unbegrenzte Sichtweite aktiviert"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr "Fehler bei Erstellung des Clients: %s"
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Hauptmenü"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Programm beenden"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Schnellmodus deaktiviert"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Schnellmodus aktiviert"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Schnellmodus aktiviert (Hinweis: Kein „fast“-Privileg)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Flugmodus deaktiviert"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Flugmodus aktiviert"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Flugmodus aktiviert (Hinweis: Kein „fly“-Privileg)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Nebel deaktiviert"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Nebel aktiviert"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Spielinfo:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Spiel pausiert"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Gehosteter Server"
+
+#: src/client/game.cpp
msgid "Item definitions..."
-msgstr "Item-Definitionen..."
+msgstr "Gegenstandsdefinitionen …"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
-msgstr "Medien..."
+msgstr "Medien …"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Blockdefinitionen..."
-
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Löse Adresse auf..."
-
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Wiederbeleben"
-
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Herunterfahren..."
-
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Tonlautstärke"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Übersichtskarte momentan von Spiel oder Mod deaktiviert"
-#: src/game.cpp
-msgid "You died."
-msgstr "Sie sind gestorben."
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Mehrspieler"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "OK"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Geistmodus deaktiviert"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Enter "
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Geistmodus aktiviert"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Fortsetzen"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Geistmodus aktiviert (Hinweis: Kein „noclip“-Privileg)"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "Benutzen = runterklettern"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Blockdefinitionen …"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Rückwärts"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Aus"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Chat"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Ein"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Befehl"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Nick-Bewegungsmodus deaktiviert"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konsole"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Nick-Bewegungsmodus aktiviert"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "2×Sprungtaste zum Fliegen"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profiler-Graph angezeigt"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Wegwerfen"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Entfernter Server"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Vorwärts"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Adressauflösung …"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventar"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Herunterfahren …"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Springen"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Einzelspieler"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Taste bereits in Benutzung"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Tonlautstärke"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"Steuerung (Falls dieses Menü fehlerhaft formatiert ist, entfernen Sie "
-"Einstellungen aus minetest.conf)"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Ton stummgeschaltet"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Links"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Tonsystem ist deaktiviert"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Stack ausgeben"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Tonsystem ist in diesem Build nicht unterstützt"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Weite Sicht"
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Ton nicht mehr stumm"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Rechts"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Auf dem Server läuft möglicherweise eine andere Version von %s."
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Schleichen"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+"Verbindung konnte nicht zu %s aufgebaut werden, weil IPv6 deaktiviert ist"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Filmmodus umschalten"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Konnte nicht auf %s lauschen, weil IPv6 deaktiviert ist"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Schnellmodus"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Sichtweite geändert auf %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Flugmodus"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Maximale Sichtweite erreicht: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Geistmodus"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Minimale Sichtweite erreicht: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Benutzen"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Lautstärke auf %d%% gesetzt"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoom"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Drahtmodell aktiv"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "Taste drücken"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Zoom ist momentan von Spiel oder Mod deaktiviert"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Ändern"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "OK"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Passwort bestätigen"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Chat verborgen"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Neues Passwort"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Chat angezeigt"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Altes Passwort"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD verborgen"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Passwörter stimmen nicht überein!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD angezeigt"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Zurück"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profiler verborgen"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Tonlautstärke: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profiler angezeigt (Seite %d von %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Anwendungen"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
-
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+msgid "Backspace"
msgstr "Rücktaste"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Feststellen"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "sauber"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Komma"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Feststellt."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Strg"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convert"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Runter"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Ende"
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
msgstr "Erase OEF"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Escape"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Ausführen"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Hilfe"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Pos1"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Einfg"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME: Akzept."
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME: Konvert."
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME: Escape"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME: Moduswechsel"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME: Nonconvert"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Einfg"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Links"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Linke Taste"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Strg links"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Menü links"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Umsch. links"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr "Win links"
+msgstr "Win. links"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Mittlere Taste"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Minus"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Modus wechseln"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Bild runter"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nonconvert"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Ziffernblock *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Ziffernblock +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Ziffernblock -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Ziffernblock ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Ziffernblock /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Ziffernblock 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Ziffernblock 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Ziffernblock 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Ziffernblock 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Ziffernblock 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Ziffernblock 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Ziffernblock 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Ziffernblock 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Ziffernblock 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Ziffernblock 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Bild ab"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Bild auf"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punkt"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plus"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Spielen"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Druck"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Bild hoch"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Eingabe"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Rechts"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Rechte Taste"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Strg rechts"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Menü rechts"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Umsch. rechts"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr "Win rechts"
+msgstr "Win. rechts"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Rollen"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Auswählen"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Umsch."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Schlaf"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Druck"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Leertaste"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Hoch"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X-Knopf 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X-Knopf 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Übersichtskarte verborgen"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Übersichtskarte im Radarmodus, Zoom ×%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Übersichtskarte im Bodenmodus, Zoom ×%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Übersichtskarte im Texturmodus"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Fehler beim Öffnen der Webseite"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Öffne Webseite"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Fortsetzen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "„Aux1“ = runter"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Autovorwärts"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Auto-Springen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Rückwärts"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Blockgrenzen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Kamerawechsel"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Befehl"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsole"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Sicht verringern"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Leiser"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "2×Sprungtaste zum Fliegen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Wegwerfen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Vorwärts"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Sicht erhöhen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Lauter"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Springen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Taste bereits in Benutzung"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr "Tastenbelegung."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Lokaler Befehl"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Stumm"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Nächst. Ggnstd."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Vorh. Ggnstd."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Weite Sicht"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Bildschirmfoto"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Schleichen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD an/aus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Chat an/aus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Schnellmodus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Flugmodus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Nebel an/aus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Karte an/aus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Geistmodus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Nickbewegung"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Taste drücken"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Ändern"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Neues Passwort"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Altes Passwort"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Passwörter stimmen nicht überein!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Zurück"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Stumm"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Tonlautstärke: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "de"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+"Name ist nicht registriert. Um ein Konto auf diesem Server zu erstellen, "
+"klicken Sie auf „Registrieren“"
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr "Name ist belegt. Bitte einen anderen Namen wählen"
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Fixiert die Position des virtuellen Joysticks.\n"
+"Falls deaktiviert, wird der virtuelle Joystick zur ersten berührten Position "
+"zentriert."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Den virtuellen Joystick benutzen, um die „Aux1“-Taste zu "
+"betätigen.\n"
+"Falls aktiviert, wird der virtuelle Joystick außerdem die „Aux1“-Taste "
+"drücken, wenn er sich außerhalb des Hauptkreises befindet."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
"(X,Y,Z)-Versatz des Fraktals vom Weltmittelpunkt in Einheiten von „scale“.\n"
-"Benutzt, um einen passenden Einstiegsbereich aus niedriegem Gelände in die\n"
-"Nähe von (0, 0) zu verschieben. Die Standardeinstellung ist brauchbar für\n"
-"Mandelbrotmengen, für Juliamengen muss sie verändert werden. Die Reichweite\n"
-"liegt grob zwischen -2 und 2. Mit „scale“ multiplizieren, um einen Versatz "
-"in Blöcken\n"
-"zu erhalten."
+"Kann benutzt werden, um einen gewünschten Punkt nach (0, 0) zu\n"
+"verschieben, um einen geeigneten Einstiegspunkt zu erstellen, oder,\n"
+"um es zu ermöglichen, in einen gewünschten Punkt „hereinzuoomen“,\n"
+"indem man „scale“ erhöht.\n"
+"Die Standardeinstellung ist brauchbar für Mandelbrotmengen mit\n"
+"Standardparametern, sie könnte jedoch Anpassungen für andere\n"
+"Situationen benötigen.\n"
+"Die Reichweite liegt grob zwischen -2 und 2. Mit „scale“ multiplizieren,\n"
+"um einen Versatz in Blöcken zu erhalten."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = Parallax-Mapping mit Stufeninformation (schneller).\n"
-"1 = Relief-Mapping (langsamer, genauer)."
+"(X,Y,Z)-Skalierung des Fraktals in Blöcken.\n"
+"Die tatsächliche Fraktalgröße wird 2 bis 3 mal größer sein.\n"
+"Es können sehr große Zahlen gewählt werden, das\n"
+"Fraktal muss nicht in die ganze Welt passen.\n"
+"Erhöhen Sie diese Zahlen, um in die Details des Fraktals\n"
+"„hereinzuzoomen“.\n"
+"Der Standardwert ist eine vertikal zusammengestauchte Form,\n"
+"welche geeignet für eine Insel ist; setzen Sie alle 3 Zahlen\n"
+"gleich für die Reinform."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "2-D-Rauschen, welches die Form/Größe von gezahnten Bergen steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2-D-Rauschen, welches die Form/Größe von sanften Hügeln steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2-D-Rauschen, welches die Form/Größe von Stufenbergen steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+"2-D-Rauschen, welches die Größe/Vorkommen von gezahnten Bergketten steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2-D-Rauschen, welches die Größe/Vorkommen von sanften Hügeln steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+"2-D-Rauschen, welches die Größe/Vorkommen von Stufenbergketten steuert."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "2-D-Rauschen, welches den Ort der Flusstäler und -kanäle regelt."
#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr "3D-Wolken"
+msgstr "3-D-Wolken"
#: src/settings_translation_file.cpp
msgid "3D mode"
-msgstr "3D-Modus"
+msgstr "3-Dimensionaler-Modus"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "3-D-Modus-Parallaxstärke"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3-D-Rauschen, welches riesige Hohlräume definiert."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"3-D-Rauschen, welches Bergformationen- und Höhe\n"
+"definiert. Außerdem definiert dies die Formationen\n"
+"der Berge in den Schwebeländern."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"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"
+"einen Wert zwischen etwa -2.0 bis 2.0 hat."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+"3-D-Rauschen, welches die Form von Erdwällen von Flusscanyons definiert."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3-D-Rauschen, welches das Terrain definiert."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"3-D-Rauschen für Bergüberhänge, Klippen, usw. Üblicherweise kleine "
+"Variationen."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3-D-Rauschen, welches die Anzahl der Verliese je Mapchunk festlegt."
#: src/settings_translation_file.cpp
msgid ""
@@ -1346,17 +2351,26 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
-"3D-Unterstützung.\n"
+"3-D-Unterstützung.\n"
"Aktuell verfügbar:\n"
-"- none: Keine 3D-Ausgabe.\n"
-"- anaglyph: Türkises / magenta 3D.\n"
+"- none: Keine 3-D-Ausgabe.\n"
+"- anaglyph: Türkises / magenta 3-D.\n"
"- interlaced: Bildschirmunterstützung für gerade / ungerade "
"zeilenbasierte Polarisation.\n"
"- topbottom: Bildschirm horizontal teilen.\n"
"- sidebyside: Bildschirm vertikal teilen.\n"
-"- pageflip: Quadbuffer-basiertes 3D."
+"- crossview: Schieläugiges 3-D\n"
+"- pageflip: Quadbuffer-basiertes 3-D.\n"
+"Beachten Sie, dass der „interlaced“-Modus erfordert, dass Shader aktiviert "
+"sind."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr "3-D"
#: src/settings_translation_file.cpp
msgid ""
@@ -1377,28 +2391,36 @@ msgstr ""
msgid "A message to be displayed to all clients when the server shuts down."
msgstr ""
"Eine Nachricht, die an alle verbundene Clients gesendet wird, wenn der "
-"Server herunterfährt."
+"Server\n"
+"herunterfährt."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr "Absolute Grenze der Erzeugungswarteschlangen"
+msgid "ABM interval"
+msgstr "ABM-Intervall"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "ABM-Zeitbudget"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Absolute Grenze der zu erzeugenden Kartenblöcke in Warteschlange"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Beschleunigung in der Luft"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr "Active-Block-Management-Intervall"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Beschleunigung der Schwerkraft, in Blöcken pro Sekunde pro Sekunde."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr "Active-Block-Modifier-Intervall"
+msgid "Active Block Modifiers"
+msgstr "Active Block Modifiers"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Active-Block-Modifier-Intervall"
+msgid "Active block management interval"
+msgstr "Active-Block-Management-Intervall"
#: src/settings_translation_file.cpp
msgid "Active block range"
@@ -1419,29 +2441,63 @@ msgstr ""
"Die Adresse im Hauptmenü überschreibt diese Einstellung."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Zeigt Partikel, wenn man einen Block ausgräbt."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr "DPI des Bildschirms (nicht für X11/Android) z.B. für 4K-Bildschirme."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Die erfasste Anzeigendichte anpassen, benutzt für die Skalierung von UI-"
+"Elementen."
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n"
-"Diese Einstellung ist rein clientseitig und wird vom Server ignoriert."
+"Passt die Dichte der Schwebelandebene an.\n"
+"Wert erhöhen, um die Dichte zu erhöhen. Kann positiv oder negativ sein.\n"
+"Wert = 0.0: 50% des Volumens sind Schwebeländer.\n"
+"Wert = 2.0 (kann abhängig von „mgv7_np_floatland“ höher sein, solle man\n"
+"immer testen, um sicher zu sein) erzeugt eine durchgehende\n"
+"Schwebelandebene."
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr "Admin-Name"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Erweitert"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Höhenabkühlung"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Passt die Lichtkurve an, indem eine sog. Gammakorrektur\n"
+"an ihr vorgenommen wird. Höhere Werte können mittlere\n"
+"und niedrigere Lichtstufen heller machen. Der Wert „1.0“\n"
+"lässt die Lichtkurve unverändert.\n"
+"Das hat nur einen merkliche Wirkung auf das Tageslicht und\n"
+"dem künstlichem Licht, es hat sehr geringe Auswirkungen\n"
+"auf natürliches Licht bei Nacht."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr "Immer schnell fliegen"
#: src/settings_translation_file.cpp
@@ -1449,8 +2505,13 @@ msgid "Ambient occlusion gamma"
msgstr "Umgebungsverdeckungs-Gamma"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Verstärkt die Täler"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+"Anzahl der Nachrichten, die ein Spieler innerhalb 10 Sekunden senden darf."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Verstärkt die Täler."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
@@ -1461,48 +2522,119 @@ msgid "Announce server"
msgstr "Server ankündigen"
#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr "Zu dieser Serverliste ankündigen."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Gegenstandsnamen anhängen"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Gegenstandsnamen an Tooltip anhängen."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Apfelbaumrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Armträgheit"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
-"Meldet den Server in der Serverliste.\n"
-"Wenn ein IPv6-Server angemeldet werden soll, muss serverlist_url auf\n"
-"v6.servers.minetest.net gesetzt werden."
+"Armträgheit, ergibt eine realistischere Bewegung\n"
+"des Arms, wenn sich die Kamera bewegt."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Julia-Menge: Approximative (X,Y,Z)-Skalierungen in Blöcken."
+msgid "Ask to reconnect after crash"
+msgstr "Abfrage zum Neuverbinden nach Absturz"
#: src/settings_translation_file.cpp
-msgid "Ask to reconnect after crash"
-msgstr "Zum Neuverbinden nach Absturz auffordern"
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"In dieser Distanz wird der Server die zu den Clients gesendeten Blöcke "
+"aggressiv\n"
+"optimieren.\n"
+"Kleine Werte werden die Performanz möglicherweise stark erhöhen, auf\n"
+"Kosten von sichtbaren Renderfehlern (einige Blöcke werden nicht unter dem "
+"Wasser\n"
+"und in Höhlen gerendert, sowie manchmal auf dem Land).\n"
+"Wird dieser Wert auf eine Zahl größer als max_block_send_distance gesetzt,\n"
+"wird diese Optimierung deaktiviert.\n"
+"In Kartenblöcken (16 Blöcke) angegeben."
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr "Ton"
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Vorwärtsautomatiktaste"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid "Automatically jump up single-node obstacles."
+msgstr "Automatisch bei 1 Block hohen Hindernissen springen."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
msgstr "Automatisch bei der Serverliste melden."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
-msgstr ""
+msgid "Autosave screen size"
+msgstr "Monitorgröße merken"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Autoskalierungsmodus"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1-Taste"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Aux1-Taste zum Klettern/Sinken"
#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Rückwärtstaste"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Basisgeländehöhe"
+msgid "Base ground level"
+msgstr "Basisbodenhöhe"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Grundlegend"
+msgid "Base terrain height."
+msgstr "Basisgeländehöhe."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
msgstr "Grundprivilegien"
#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Strandrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Strandrauschschwellwert"
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
msgstr "Bilinearer Filter"
@@ -1511,8 +2643,36 @@ msgid "Bind address"
msgstr "Bind-Adresse"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bits pro Pixel (Farbtiefe) im Vollbildmodus."
+msgid "Biome API noise parameters"
+msgstr "Biom-API-Rauschparameter"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Biomrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Distanz für Sendeoptimierungen von Kartenblöcken"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr "Wackeln"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Pfad der Fett- und Kursivschrift"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Pfad der fetten und kursiven Festbreitenschrift"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Pfad der Fettschrift"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Pfad der fetten Festbreitenschrift"
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1520,11 +2680,25 @@ msgstr "Innerhalb des Spielers bauen"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Builtin"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Bumpmapping"
+msgid "Camera"
+msgstr "Kamera"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Distanz von der Kamera zur vorderen Clippingebene in Blöcken, zwischen 0 und "
+"0.25.\n"
+"Funktioniert nur auf GLES-Plattformen. Die meisten Benutzer müssen dies "
+"nicht ändern.\n"
+"Eine Erhöhung dieses Wertes kann Artefakte auf schwächeren GPUs reduzieren.\n"
+"0.1 = Standard, 0.25 = Guter Wert für schwächere Tablets."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1539,6 +2713,10 @@ msgid "Camera update toggle key"
msgstr "Taste zum Umschalten der Kameraaktualisierung"
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Höhlenrauschen"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr "Höhlenrauschen Nr. 1"
@@ -1551,63 +2729,84 @@ msgid "Cave width"
msgstr "Höhlenbreite"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Höhlen und Tunnel bilden sich am Schnittpunkt der zwei Rauschen"
+msgid "Cave1 noise"
+msgstr "Höhlenrauschen Nr. 1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Höhlenrauschen Nr. 2"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Hohlraumgrenze"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Hohlraumrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Hohlraumzuspitzung"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Hohlraumschwellwert"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Hohlraumobergrenze"
+
+#: 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 ""
+"Mittelpunkt des Lichtkurvenverstärkungsintervalls.\n"
+"Wobei 0.0 die minimale Lichtstufe und 1.0 die höchste Lichtstufe ist."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Chatbefehlzeitnachrichtenschwellwert"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Chatbefehle"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Chat-Schriftgröße"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Chattaste"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Taste zum Umschalten des Chatprotokolls"
+msgid "Chat log level"
+msgstr "Chatprotokollausgabelevel"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Befehl"
+msgid "Chat message count limit"
+msgstr "Max. Anzahl Chatnachrichten"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"Auswahl von 18 Fraktalen aus 9 Formeln.\n"
-"1 = 4D-Mangelbrotmenge, Typ „rund“.\n"
-"2 = 4D-Juliamenge, Typ „rund“.\n"
-"3 = 4D-Mangelbrotmenge, Typ „eckig“.\n"
-"4 = 4D-Juliamenge, Typ „eckig“.\n"
-"5 = 4D-Mangelbrotmenge, Typ „Mandel-Cousin“.\n"
-"6 = 4D-Juliamenge, Typ „Mandel-Cousin“.\n"
-"7 = 4D-Mangelbrotmenge, Typ „Variante“.\n"
-"8 = 4D-Juliamenge, Typ „Variante“.\n"
-"9 = 3D-Mangelbrotmenge, Typ „Madelbrot/Mandelbar“.\n"
-"10 = 3D-Juliamenge, Typ „Madelbrot/Mandelbar“.\n"
-"11 = 3D-Mangelbrotmenge, Typ „Weihnachtsbaum“.\n"
-"12 = 3D-Juliamenge, Typ „Weihnachtsbaum“.\n"
-"13 = 3D-Mangelbrotmenge, Typ „Mandelbulb“.\n"
-"14 = 3D-Juliamenge, Typ „Mandelbulb“.\n"
-"15 = 3D-Mangelbrotmenge, Typ „Kosinus-Mandelbulb“.\n"
-"16 = 3D-Juliamenge, Typ „Kosinus-Mandelbulb“.\n"
-"17 = 4D-Mangelbrotmenge, Typ „Mandelbulb“.\n"
-"18 = 4D-Juliamenge, Typ „Mandelbulb“."
+msgid "Chat message format"
+msgstr "Chatnachrichtenformat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Chatnachrichten-Kick-Schwellwert"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Max. Chatnachrichtenlänge"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Taste zum Umschalten des Chatprotokolls"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Chatweblinks"
#: src/settings_translation_file.cpp
msgid "Chunk size"
@@ -1626,16 +2825,40 @@ msgid "Clean transparent textures"
msgstr "Transparente Texturen säubern"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Anklickbare Weblinks (Mittelklick oder Strg+Linksklick) werden in der "
+"Chatkonsolenausgabe aktiviert."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Client und Server"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Klettergeschwindigkeit"
+msgid "Client modding"
+msgstr "Client-Modding"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Client-Modding-Einschränkungen"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Wolkenhöhe"
+msgid "Client side node lookup range restriction"
+msgstr "Distanzlimit für clientseitige Block-Definitionsabfrage"
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr "Clientseitiges Modding"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Klettergeschwindigkeit"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1658,12 +2881,35 @@ msgid "Colored fog"
msgstr "Gefärbter Nebel"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "Gefärbte Schatten"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Kommagetrennte Liste von Flags für Dinge, die im Inhaltespeicher verborgen "
+"werden sollten.\n"
+"„nonfree“ kann benutzt werden, um Pakete, die nicht als „freie Software“ "
+"nach\n"
+"der Definition der Free Software Foundation gelten, zu verbergen.\n"
+"Sie können auch Inhaltseinstufungen festlegen.\n"
+"Diese Flags sind von Minetestversionen unabhängig,\n"
+"für eine vollständige Liste gehen Sie auf:\n"
+"https://content.minetest.net/help/content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"Kommagetrente Liste von Mods, welche auf HTTP-APIs zugreifen dürfen, was\n"
+"Kommagetrennte Liste von Mods, welche auf HTTP-APIs zugreifen dürfen, was\n"
"es ihnen erlaubt, Daten aus und Daten zum Internet herunter- und hochzuladen."
#: src/settings_translation_file.cpp
@@ -1682,6 +2928,31 @@ msgid "Command key"
msgstr "Befehlstaste"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Zu verwendendes Kompressionsniveau, wenn Kartenblöcke auf den Datenträger "
+"gespeichert werden.\n"
+"-1 - Standard-Kompressionsniveau benutzen\n"
+"0 - geringste Kompression, am schnellsten\n"
+"9 - beste Kompression, am langsamsten"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Kompressionsniveau für Kartenblöcke, die zu Clients gesendet werden.\n"
+"-1 - Standard-Kompressionsniveau benutzen\n"
+"0 - keine Kompression, am schnellsten\n"
+"9 - beste Kompression, am langsamsten"
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr "Verbundenes Glas"
@@ -1702,16 +2973,37 @@ msgid "Console color"
msgstr "Konsolenfarbe"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Konsolentaste"
+msgid "Console height"
+msgstr "Konsolenhöhe"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr "Inhaltespeicher"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "ContentDB: Schwarze Liste"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "ContentDB Max. gleichzeitige Downloads"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "ContentDB-URL"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Kontinuierliche Vorwärtsbewegung"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Kontinuierliches Vorwärtsbewegen (nur zum Testen verwendet)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Beständige Vorwärtsbewegung, umgeschaltet von der Vorwärtsautomatiktaste.\n"
+"Drücken Sie die Vorwärtsautomatiktaste erneut, oder die Rückwärtstaste zum "
+"Deaktivieren."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1720,21 +3012,22 @@ msgstr "Steuerung"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
-"Verändert Länge des Tag-Nacht-Zyklus.\n"
-"Beispiele: 72 = 10 Minuten, 360 = 4 Minuten, 1 = 24 Stunden, 0 = Keine "
-"Veränderung."
+"Verändert die Länge des Tag-Nacht-Zyklus.\n"
+"Beispiele:\n"
+"72 = 20min, 360 = 4min, 1 = 24h, 0 = Tag/Nacht/was auch immer bleibt "
+"unverändert."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Verändert die Größe der Wüsten und Strände im\n"
-"Kartengenerator v6. Falls Schneebiome aktiviert sind, wird\n"
-"„mgv6_freq_desert“ ignoriert."
+"Beeinflusst die Sinkgeschwindigkeit in der Flüssigkeit, wenn man sich nicht "
+"bewegt.\n"
+"Negative Werte werden Sie stattdessen aufsteigen lassen."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
@@ -1745,49 +3038,46 @@ msgid "Controls steepness/height of hills."
msgstr "Steuert die Steilheit/Höhe von Hügeln."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
-"Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere Tunnel."
+"Passt die Breite von Tunneln an. Ein kleinerer Wert erzeugt breitere\n"
+"Tunnel. Ein Wert >= 10.0 deaktiviert die Erzeugung von Tunneln vollständig\n"
+"und verhindert rechenintensive Rauschberechnungen."
#: src/settings_translation_file.cpp
msgid "Crash message"
msgstr "Absturzmeldung"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Erstellt unvorhersehbare Lavakammern in Höhlen.\n"
-"Sie können das Graben erschweren. Null deaktiviert sie. (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Erstellt unvorhersehbare Wasserkammern in Höhlen.\n"
-"Sie können das Graben erschweren. Null deaktiviert sie. (0-10)"
+msgid "Creative"
+msgstr "Kreativ"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr "Fadenkreuzundurchsichtigkeit"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Fadenkreuzundurchsichtigkeit (Wert zwischen 0 und 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Fadenkreuz-Alpha (Undurchsichtigkeit, zwischen 0 und 255).\n"
+"Gilt auch für das Objektfadenkreuz."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
msgstr "Fadenkreuzfarbe"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Fadenkreuzfarbe (R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Schleichgeschwindigkeit"
+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"
@@ -1802,10 +3092,22 @@ msgid "Debug info toggle key"
msgstr "Taste zum Umschalten der Debug-Info"
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Debugprotokolldateigrößengrenze"
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "Debugausgabelevel"
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr "Debugging"
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Leiser-Taste"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
msgstr "Taktung dedizierter Server"
@@ -1836,33 +3138,93 @@ msgstr "Standardprivilegien"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Standard-Berichtsformat"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Standardstapelgröße"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Standardzeitlimit für cURL, in Millisekunden.\n"
-"Hat nur eine Wirkung, wenn mit cURL kompiliert wurde."
+"Definiert die Schattenfilterqualität.\n"
+"Dies simuliert den weichen Schatteneffekt, indem eine PCF- oder Poisson-"
+"Scheibe angewendet wird,\n"
+"aber dies verbraucht auch mehr Ressourcen."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Definiert Gebiete, in denen Bäume Äpfel tragen."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Definiert Gebiete mit Sandstränden."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+"Definiert die Verteilung von erhöhtem Gelände und die Steilheit von Klippen."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Definiert die Verteilung von erhöhtem Gelände."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
-"Definiert die Sampling-Schrittgröße der Textur.\n"
-"Ein höherer Wert resultiert in weichere Normal-Maps."
+"Definiert die volle Größe von Hohlräumen, kleinere Werte erzeugen\n"
+"größere Hohlräume."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Definiert große Flusskanalformationen."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Definiert Ort und Gelände der optionalen Hügel und Seen."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Definiert die Basisgeländehöhe."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Definiert die Tiefe des Flusskanals."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
-"Setzt die maximale Distanz, in der die Spieler übertragen werden, in "
-"Kartenblöcken (0 = unbegrenzt)."
+"Setzt die maximale Distanz, in der die Spieler übertragen werden,\n"
+"in Kartenblöcken (0 = unbegrenzt)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Definiert die Breite des Flusskanals."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Definiert die Breite des Flusstals."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Definiert Baumgebiete und Baumdichte."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Zeitabstand zwischen Mesh-Updates auf dem Client in ms. Wenn dieser Wert\n"
+"erhöht wird, wird die Rate der Mesh-Updates verringert, was das Stottern "
+"auf\n"
+"langsameren Clients reduziert."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Verzögerung beim Senden von Blöcken nach dem Bauen"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
@@ -1873,16 +3235,12 @@ msgid "Deprecated Lua API handling"
msgstr "Veraltete Lua-API-Handhabung"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid "Depth below which you'll find giant caverns."
msgstr "Tiefe, unter der man große Höhlen finden wird."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "Tiefe, unter der man gigantische Höhlen finden wird."
-
-#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Abstiegsgeschwindigkeit"
+msgid "Depth below which you'll find large caves."
+msgstr "Tiefe, unter der man große Höhlen finden wird."
#: src/settings_translation_file.cpp
msgid ""
@@ -1893,46 +3251,56 @@ msgstr ""
"angezeigt."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr "Blockanimationen desynchronisieren"
+msgid "Desert noise threshold"
+msgstr "Wüstenrauschschwellwert"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"Legt die Geländeform fest.\n"
-"Die 3 Zahlen in Klammern steuern die Skalierung des\n"
-"Geländes, die 3 Zahlen sollten gleich sein."
+"Wüsten treten auf, wenn np_biome diesen Wert überschreitet.\n"
+"Falls das „snowbiomes“-Flag aktiviert ist, wird dies ignoriert."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Anti-Cheat deaktivieren"
+msgid "Desynchronize block animation"
+msgstr "Blockanimationen desynchronisieren"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Disable escape sequences"
-msgstr "Escape-Sequenzen deaktivieren"
+msgid "Developer Options"
+msgstr "Entwickleroptionen"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
-"Escape-Sequenzen deaktivieren, z.B. Chat Farben.\n"
-"Bei einem Server der pre-0.4.14 Clients bedienen muss, sollte diese Option "
-"deaktiviert werden.\n"
-"Die Escape-Sequenzen werden von Mods generiert."
+msgid "Dig key"
+msgstr "Grabetaste"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Grabepartikel"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Anti-Cheat deaktivieren"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Leere Passwörter verbieten"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Anzeigendichtenskalierungsfaktor"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+"Entfernung in Nodes, bei welcher die Transparenztiefensortierung aktiviert "
+"ist.\n"
+"Dies benutzen, um die Performanzeinbußen der Transparenztiefensortierung zu "
+"begrenzen"
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
msgstr "Domainname des Servers. Wird in der Serverliste angezeigt."
@@ -1949,16 +3317,75 @@ msgid "Drop item key"
msgstr "Wegwerfen-Taste"
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr "Die Kartengenerator-Debuginformationen auf Konsole ausgeben."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
+msgstr "Verlies: Max. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Verlies: Min. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Verliesrauschen"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
msgstr ""
+"IPv6-Unterstützung aktivieren (sowohl für Client als auch Server).\n"
+"Benötigt, damit IPv6-Verbindungen funktionieren."
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "VBO aktivieren"
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Lua-Modding-Unterstützung auf dem Client aktivieren.\n"
+"Diese Unterstützung ist experimentell und die API kann sich ändern."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Aktiviert eine Poisson-Scheibenfilterung.\n"
+"Falls aktiv, werden Poisson-Scheiben verwendet, um „weiche Schatten“ zu "
+"erzeugen. Ansonsten wird die PCF-Filterung benutzt."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"Aktiviert gefärbte Schatten. \n"
+"Falls aktiv, werden transluzente Blöcke gefärbte Schatten werfen. Dies ist "
+"rechenintensiv."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Konsolenfenster aktivieren"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Kreativmodus für alle Spieler aktivieren"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Joysticks aktivieren"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr "Aktiviert Joysticks. Benötigt einen Neustart, um wirksam zu werden"
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Modkanäle-Unterstützung aktivieren."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1981,6 +3408,10 @@ msgstr ""
"Für bessere Performanz oder anderes Aussehen deaktivieren."
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr "Login und Registrierung trennen"
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -2010,40 +3441,53 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"Server als IPv6 laufen lassen. Ein IPv6-Server könnte,\n"
-"abhängig von der Systemkonfiguration, auf IPv6-Clients eingeschränkt sein.\n"
-"Wird ignoriert, falls bind_address gesetzt ist."
+"Aktiviert Vertex Buffer Objects.\n"
+"Dies sollte die Grafikperformanz beträchtlich verbessern."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Aktiviert die Animation von Inventaritems."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Hiermit aktiviert man die Auf- und Abbewegung\n"
+"der Ansicht und legt außerdem die Stärke des Effekts fest.\n"
+"Zum Beispiel: 0 für keine Auf- und Abbewegung,\n"
+"1.0 für den Standardwert, 2.0 für doppelte Geschwindigkeit."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"Aktiviert das Bump-Mapping für Texturen. Normal-Maps müssen im "
-"Texturenpaket\n"
-"vorhanden sein oder müssen automatisch erzeugt werden.\n"
-"Shader müssen aktiviert werden, bevor diese Einstellung aktiviert werden "
-"kann."
+"Server als IPv6 laufen lassen (oder nicht).\n"
+"Wird ignoriert, falls bind_address gesetzt ist.\n"
+"Dafür muss außerdem enable_ipv6 aktiviert sein."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
-"Aktiviert das Zwischenspeichern von 3D-Modellen, die mittels facedir rotiert "
-"werden."
+"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."
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr "Aktiviert die Animation von Inventargegenständen."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Aktiviert filmisches Tone-Mapping"
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+"Aktiviert das Zwischenspeichern von 3-D-Modellen, die mittels facedir "
+"rotiert werden."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
@@ -2051,64 +3495,80 @@ msgstr "Aktiviert die Übersichtskarte."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
-"Aktiviert die spontane Normalmap-Erzeugung (Prägungseffekt).\n"
-"Für diese Einstellung muss außerdem Bump-Mapping aktiviert sein."
+"Aktiviert das Tonsystem.\n"
+"Falls deaktiviert, wird es alle Geräusche überall abschalten und\n"
+"die Tonsteuerung im Spiel wird funktionslos sein.\n"
+"Die Änderung dieser Einstellung benötigt einen Neustart."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
-"Aktiviert Parralax-Occlusion-Mapping.\n"
-"Hierfür müssen Shader aktiviert sein."
+"Aktiviert Kompromisse, die die CPU-Last verringern oder die Rendering-"
+"Leistung erhöhen\n"
+"auf Kosten kleinerer visueller Fehler, die die Spielbarkeit nicht "
+"beeinträchtigen."
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr "Engine-Profiler"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Engine profiling data print interval"
-msgstr "Profiler-Ausgabeintervall"
+msgstr "Engine-Profiling-Datenausgabeintervall"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Entity-Methoden"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Experimentelle Einstellung, könnte sichtbare Leerräume zwischen\n"
-"Blöcken verursachen, wenn auf einen Wert größer 0 gesetzt."
+"Exponent der Schwebelandzuspitzung. Passt das Zuspitzungverhalten an.\n"
+"Wert = 1.0 erzeugt eine einheitliche lineare Zuspitzung.\n"
+"Werte > 1.0 erzeugen eine weiche Zuspitzung, die für die standardmäßig\n"
+"getrennten Schwebeländer geeignet sind.\n"
+"Werte < 1.0 (z.B. 0.25) erzeugen eine bestimmtere Oberflächenhöhe mit\n"
+"flacheren Tiefländern; dies ist für eine durchgehende Schwebelandebene\n"
+"geeignet."
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "Bildwiederholrate im Pausenmenü"
+msgid "FPS"
+msgstr "Bildwiederholrate"
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr "FSAA"
-
-#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr "Kameraschütteln beim Aufprallen"
+msgid "FPS when unfocused or paused"
+msgstr ""
+"Maximale Bildwiederholrate, während das Spiel pausiert oder nicht fokussiert "
+"ist"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Ersatzschriftart"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Ersatzschriftschatten"
+msgid "Factor noise"
+msgstr "Faktorrauschen"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Undurchsichtigkeit des Ersatzschriftschattens"
+msgid "Fall bobbing factor"
+msgstr "Kamerawackeln beim Sturz"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Ersatzschriftgröße"
+msgid "Fallback font path"
+msgstr "Ersatzschriftpfad"
#: src/settings_translation_file.cpp
msgid "Fast key"
@@ -2128,72 +3588,106 @@ msgstr "Schnell bewegen"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Schnelle Bewegung (mittels Benutzen-Taste).\n"
+"Schnelle Bewegung (mit der „Aux1“-Taste).\n"
"Dazu wird das „fast“-Privileg auf dem Server benötigt."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr "Gesichtsfeld"
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "Gesichtsfeld"
+msgstr "Sichtfeld"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr "Gesichtsfeld in Grad."
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
-msgstr ""
-"Schnelle Bewegung (mittels Benutzen-Taste).\n"
-"Dazu wird das „fast“-Privileg auf dem Server benötigt."
+msgstr "Sichtfeld in Grad."
#: src/settings_translation_file.cpp
msgid ""
"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Datei in client/serverlist/, die Ihre Serverfavoriten aus dem "
-"Mehrspielermenü beinhaltet."
+"Datei in client/serverlist/, die Ihre Serverfavoriten enthält, die im\n"
+"Registerkartenreiter „Mehrspieler“ angezeigt werden."
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth"
msgstr "Fülltiefe"
#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+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 ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
-"Gefilterte Texturen können RGB-Werte mit transparenten Nachbarn,\n"
+"Gefilterte Texturen können RGB-Werte mit voll transparenten Nachbarn,\n"
"die PNG-Optimierer üblicherweise verwerfen, mischen. Manchmal\n"
"resultiert dies in einer dunklen oder hellen Kante bei transparenten\n"
-"Texturen. Aktivieren Sie diesen Filter, um dies beim Laden der\n"
-"Texturen aufzuräumen."
+"Texturen. Aktivieren Sie einen Filter, um dies beim Laden der\n"
+"Texturen aufzuräumen. Dies wird automatisch aktiviert, falls Mipmapping "
+"aktiviert ist."
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Filter"
+msgid "Filtering and Antialiasing"
+msgstr "Filter und Antialiasing"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Das erste von vier 2-D-Rauschen, welche gemeinsam Hügel-/Bergkettenhöhe "
+"definieren."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Das erste von zwei 3-D-Rauschen, welche gemeinsam Tunnel definieren."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr "Fester Karten-Seed"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Fester virtueller Joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Schwebelanddichte"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Schwebeland: Max. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Schwebeland: Min. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Schwebelandrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Schwebelandzuspitzexponent"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Schwebelandzuspitzdistanz"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Schwebelandwasserhöhe"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr "Flugtaste"
@@ -2206,12 +3700,24 @@ msgid "Fog"
msgstr "Nebel"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Nebelbeginn"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr "Taste für Nebel umschalten"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Schriftpfad"
+msgid "Font"
+msgstr "Schrift"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Schrift standardmäßig fett"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Schrift standardmäßig kursiv"
#: src/settings_translation_file.cpp
msgid "Font shadow"
@@ -2222,31 +3728,120 @@ msgid "Font shadow alpha"
msgstr "Schriftschatten-Undurchsichtigkeit"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
+msgstr "Schriftgröße"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr "Schriftgröße teilbar durch"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Schriftgröße der Standardschrift, wobei 1 Einheit = 1 Pixel bei 96 DPI"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
-"Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)."
+"Schriftgröße der Festbreitenschrift, wobei 1 Einheit = 1 Pixel bei 96 DPI"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid ""
+"Font size of the recent chat text and chat prompt in point (pt).\n"
+"Value 0 will use the default font size."
msgstr ""
-"Abstand des Schattens hinter der Schrift. Wenn 0, wird der Schatten nicht "
-"gezeichnet."
+"Schriftgröße für den Chattext (für neue Chatnachrichten) und\n"
+"der Chateingabe in Punkt (pt).\n"
+"Der Wert 0 wird die Standardschriftgröße benutzen."
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Schriftgröße"
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"Bei Schriften im Pixelstil, die sich nicht gut skalieren lassen, stellt dies "
+"sicher,\n"
+"dass die mit dieser Schrift verwendeten Schriftgrößen immer durch diesen "
+"Wert\n"
+"in Pixeln teilbar ist. Zum Beispiel: Eine Pixelschrift mit einer Höhe von 16 "
+"Pixeln\n"
+"sollte auf 16 gesetzt werden, so dass sie immer nur die Größe 16, 32, 48 "
+"usw. hat,\n"
+"damit eine Mod, die eine Größe von 25 anfordert, 32 erhält."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Format der Spielerchatnachrichten. Die folgenden Zeichenketten sind gültige "
+"Platzhalter:\n"
+"@name, @message, @timestamp (optional)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr "Format von Bildschirmfotos."
+msgstr "Dateiformat von Bildschirmfotos."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Formspec-Standardhintergrundfarbe"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Formspec-Standardhintergrundundurchsichtigkeit"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Formspec-Vollbildhintergrundfarbe"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Formspec-Vollbildhintergrundundurchsichtigkeit"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Standardhintergrundfarbe (R,G,B) von Formspecs."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+"Standard-Undurchsichtigkeit des Hintergrundes von Formspecs (zwischen 0 und "
+"255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Hintergrundfarbe von Vollbild-Formspecs (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+"Undurchsichtigkeit des Hintergrundes von Vollbild-Formspecs (zwischen 0 und "
+"255)."
#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Vorwärtstaste"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "FreeType-Schriften"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Das vierte von vier 2-D-Rauschen, welche gemeinsam Hügel-/Bergkettenhöhe "
+"definieren."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Fraktaltyp"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+"Anteil der sichtbaren Entfernung, in welcher begonnen wird, den Nebel zu "
+"rendern"
#: src/settings_translation_file.cpp
msgid ""
@@ -2265,20 +3860,27 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
-"Maximale Entfernung, in der Clients über Objekte bescheid wissen, in\n"
-"Kartenblöcken (16 Blöcke) angegeben."
+"Von wie weit her Clients über Objekte wissen, in Kartenblöcken (16 Blöcke)\n"
+"angegeben.\n"
+"\n"
+"Wird dieser Wert größer als active_block_range angegeben, wird dies außer-\n"
+"dem den Server dazu veranlassen, aktive Objekte bis zu dieser Distanz in "
+"der\n"
+"Richtung, in die der Spieler blickt, zu verwalten. (Dies kann verhindern, "
+"dass\n"
+"Mobs plötzlich aus der Sicht verschwinden.)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Vollbild"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "Vollbildfarbtiefe"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Vollbildmodus."
@@ -2295,74 +3897,102 @@ msgid "GUI scaling filter txr2img"
msgstr "GUI-Skalierungsfilter txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr "GUIs"
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "Allgemein"
+msgid "Gamepads"
+msgstr "Gamepads"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Normalmaps generieren"
+msgid "General"
+msgstr "Allgemein"
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Globale Rückruffunktionen"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
"Globale Kartengenerierungsattribute.\n"
"Im Kartengenerator v6 wird das „decorations“-Flag alle Dekorationen außer\n"
-"Bäume und Dschungelgras aktivieren, in allen anderen Kartengeneratoren\n"
-"wird dieses Flag alle Dekorationen aktivieren.\n"
-"Die von der Engine standardmäßig gesetzten Flags lauten:\n"
-"„caves, light, decorations“.\n"
-"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n"
-"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-"werden von der Standardeinstellung unverändert gelassen.\n"
-"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-"zu deaktivieren."
+"Bäume und Dschungelgras beinflussen, in allen anderen Kartengeneratoren\n"
+"wird es alle Dekorationen beinflussen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Steigung der Lichtkurve an der maximalen Lichtstufe.\n"
+"Regelt den Kontrast der höchsten Lichtstufen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Steigung der Lichtkurve an der minimalen Lichtstufe.\n"
+"Regelt den Kontrast der niedrigsten Lichtstufen."
#: src/settings_translation_file.cpp
msgid "Graphics"
msgstr "Grafik"
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr "Grafikeffekte"
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr "Grafik und Ton"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravitation"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
+msgstr "Bodenhöhe"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Bodenrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
msgstr "HTTP-Mods"
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr "HUD"
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr "HUD-Skalierung"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr "Taste zum Umschalten des HUD"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
"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 "
-"protokollieren (Standard für\n"
-" Debug).\n"
-"- error: Bei Verwendung eines veralteten Funktionsaufrufs abbrechen "
-"(empfohlen für Mod-\n"
-" Entwickler)."
+"- none: Veraltete Aufrufe nicht protokollieren.\n"
+"- log: Imitieren und den Backtrace des veralteten Funktionsaufrufs "
+"protokollieren\n"
+" (Standard).\n"
+"- error: Bei Verwendung eines veralteten Funktionsaufrufs abbrechen\n"
+" (empfohlen für Mod-Entwickler)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2372,49 +4002,271 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Den Profiler sich selbst instrumentieren lassen:\n"
+"* Instrumentiert eine leere Funktion.\n"
+"Dies schätzt den Overhead, der von der Instrumentierung\n"
+"hinzugefügt wird, ab (+1 Funktionsaufruf).\n"
+"* Instrumentiert die Abtastfunktion, die zur Aktualisierung der Statistiken "
+"benutzt wird."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr "Höhenkomponente der anfänglichen Fenstergröße."
+msgid "Heat blend noise"
+msgstr "Hitzenübergangsrauschen"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr "Höhe, in der Wolken auftauchen."
+msgid "Heat noise"
+msgstr "Hitzenrauschen"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "Hochpräzisions-FPU"
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Höhenkomponente der anfänglichen Fenstergröße. Im Vollbildmodus ignoriert."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Höhenrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Höhenauswahlrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Hügelsteilheilt"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Hügelschwellwert"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Steilheitsrauschen 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Steilheitsrauschen 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Steilheitsrauschen 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Steilheitsrauschen 4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
msgstr "Homepage des Servers. Wird in der Serverliste angezeigt."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
-msgstr "Wie tief Flüsse sein sollen"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Horizontale Beschleunigung in der Luft beim Springen oder Fallen,\n"
+"in Blöcken pro Sekunde pro Sekunde."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+"Horizontale und vertikale Beschleunigung im Schnellmodus,\n"
+"in Blöcken pro Sekunde pro Sekunde."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+"Horizontale und vertikale Beschleunigung auf dem Boden oder beim Klettern,\n"
+"in Blöcken pro Sekunde pro Sekunde."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Taste für nächsten Ggnstd. in Schnellleiste"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Taste für vorherigen Ggnstd. in Schnellleiste"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Schnellleistentaste 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Schnellleistentaste 10"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Schnellleistentaste 11"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Schnellleistentaste 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Schnellleistentaste 13"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Schnellleistentaste 14"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Schnellleistentaste 15"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Schnellleistentaste 16"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Schnellleistentaste 17"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Schnellleistentaste 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Schnellleistentaste 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Schnellleistentaste 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Schnellleistentaste 20"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Schnellleistentaste 21"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Schnellleistentaste 22"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Schnellleistentaste 23"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Schnellleistentaste 24"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Schnellleistentaste 25"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Schnellleistentaste 26"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Schnellleistentaste 27"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Schnellleistentaste 28"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Schnellleistentaste 29"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Schnellleistentaste 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Schnellleistentaste 30"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Schnellleistentaste 31"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Schnellleistentaste 32"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Schnellleistentaste 4"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Schnellleistentaste 5"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Schnellleistentaste 6"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Schnellleistentaste 7"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Schnellleistentaste 8"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Schnellleistentaste 9"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Wie tief Flüsse gemacht werden sollen."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
-"Wie groß das Gebiet ist, in dem Kartenblöcke aktiv sind.\n"
-"In aktiven Blöcken werden Objekte geladen und ABMs ausgeführt.\n"
-"1 Kartenblock = 16×16×16 Blöcke."
+"Wie schnell sich Flüssigkeitswellen bewegen werden. Höher = schneller.\n"
+"Falls negativ, werden sich die Wellen rückwärts bewegen.\n"
+"Hierfür müssen Flüssigkeitswellen aktiviert sein."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
-"Wie lange der Server warten wird, bevor nicht mehr verwendete Kartenblöcke\n"
-"entladen werden. Ein höher Wert führt zu besserer Performanz, aber auch\n"
-"zur Benutzung von mehr Arbeitsspeicher."
+"Wie lange der Server warten wird, bevor nicht mehr verwendete Kartenblöcke "
+"entladen werden, in Sekunden.\n"
+"Ein höher Wert wird das Programm flüssiger laufen lassen, aber auch mehr "
+"Arbeitsspeicher benutzen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+"Wie stark man bei der Bewegung in einer Flüssigkeit verlangsamt wird.\n"
+"Dies verringern, um den Bewegungswiderstand in Flüssigkeiten zu erhöhen."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr "Wie breit Flüsse sein sollen"
+msgid "How wide to make rivers."
+msgstr "Wie breit Flüsse gemacht werden sollen."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Luftfeuchtigkeitsübergangsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Luftfeuchtigkeitsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Luftfeuchtigkeitsvariierung für Biome."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2425,10 +4277,6 @@ msgid "IPv6 server"
msgstr "IPv6-Server"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "IPv6-Unterstützung."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
@@ -2439,12 +4287,26 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
-"Falls deaktiviert, wird die „Benutzen“-Taste benutzt, um schnell zu "
-"fliegen,\n"
-"wenn sowohl der Flug- als auch der Schnellmodus aktiviert ist."
+"Falls deaktiviert, wird die „Aux1“-Taste benutzt, um schnell zu fliegen,\n"
+"wenn sowohl Flug- als auch Schnellmodus aktiviert sind."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Falls aktiviert, wird der Server Occlusion Culling für Kartenblöcke "
+"basierend\n"
+"auf der Augenposition des Spielers anwenden. Dadurch kann die Anzahl\n"
+"der Kartenblöcke, die zum Client gesendet werden, um 50-80% reduziert\n"
+"werden. Der Client wird nicht mehr die meisten unsichtbaren Kartenblöcke\n"
+"empfangen, was den Nutzen vom Geistmodus reduziert."
#: src/settings_translation_file.cpp
msgid ""
@@ -2458,14 +4320,24 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
-"Falls aktiviert, wird die „Benutzen“-Taste statt der „Schleichen“-Taste zum\n"
+"Falls aktiviert, wird die „Aux1“-Taste statt der „Schleichen“-Taste zum\n"
"Herunterklettern und Sinken benutzt."
#: src/settings_translation_file.cpp
msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Falls aktiviert, wird die Kontoregistrierung vom Einloggen in der "
+"Benutzeroberfläche getrennt behandelt.\n"
+"Falls deaktiviert, werden neue Konten beim Einloggen automatisch registriert."
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
@@ -2488,10 +4360,20 @@ msgstr ""
"Aktivieren Sie dies nur, wenn Sie wissen, was sie tun."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Falls aktiviert, werden Bewegungsrichtungen relativ zum Nick des Spielers "
+"beim Fliegen oder Schwimmen sein."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
-"Falls aktiviert, können neue Spieler nicht mit einem leeren Passwort\n"
-"beitreten."
+"Falls aktiviert, können neue Spieler nicht ohne ein Passwort beitreten oder "
+"ihr Passwort zu ein leeres Passwort ändern."
#: src/settings_translation_file.cpp
msgid ""
@@ -2505,6 +4387,37 @@ msgstr ""
"gearbeitet wird."
#: src/settings_translation_file.cpp
+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 ""
+"Falls die CSM-Einschränkung für Blockreichweite aktiviert ist, werden\n"
+"get_node-Aufrufe auf diese Distanz vom Spieler zum Block begrenzt sein."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Falls die Ausführung eines Chatbefehls länger als diese angegebene Zeit in\n"
+"Sekunden braucht, wird die Zeitinformation an die Chatbefehlsnachricht "
+"angehängt"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Falls die Dateigröße von debug.txt die Anzahl an in dieser Einstellung "
+"festgelegten Megabytes überschreitet, wenn die Datei geöffnet wird, wird sie "
+"nach debug.txt.1 verschoben, wobei eine ältere debug.txt.1 gelöscht wird, "
+"falls sie existiert.\n"
+"debug.txt wird nur verschoben, falls diese Einstellung positiv ist."
+
+#: src/settings_translation_file.cpp
msgid "If this is set, players will always (re)spawn at the given position."
msgstr ""
"Falls dies gesetzt ist, werden Spieler immer an der gegebenen\n"
@@ -2515,66 +4428,82 @@ msgid "Ignore world errors"
msgstr "Weltfehler ignorieren"
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "Spiel"
-
-#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
-"Undurchsichtigkeit des Hintergrundes der Chat-Konsole im Spiel\n"
-"(Wert zwischen 0 und 255)."
+"Undurchsichtigkeit des Hintergrundes der Chat-Konsole im Spiel (Wert "
+"zwischen 0 und 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
msgstr "Hintergrundfarbe (R,G,B) der Chat-Konsole im Spiel."
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+"Chatkonsolenhöhe im Spiel, zwischen 0.1 (10%) und 1.0 (100%).\n"
+"(Beachten Sie die englische Notation mit Punkt als Dezimaltrennzeichen.)"
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Lauter-Taste"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+"Anfängliche vertikale Geschwindigkeit beim Springen, in Blöcken pro Sekunde."
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"„builtin“ instrumentieren.\n"
+"Dies wird normalerweise nur von Haupt-/builtin-Entwicklern benötigt"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "Chatbefehle bei ihrer Registrierung instrumentieren."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Globale Rückruffunktionen bei ihrer Registrierung instrumentieren\n"
+"(alles, was man einer Funktion wie minetest.register_*() übergibt)."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Die action-Funktion von Active-Block-Modifiers bei ihrer Registrierung "
+"instrumentieren."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Die action-Funktion von Loading-Block-Modifiers bei ihrer Registrierung "
+"instrumentieren."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Die Methoden von Entitys bei ihrer Registrierung instrumentieren."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
-"Zeitintervall des Abspeicherns wichtiger Änderungen in der Welt,\n"
-"in Sekunden."
+"Zeitintervall des Abspeicherns wichtiger Änderungen in der Welt, in Sekunden."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr "Zeitintervall, in dem die Tageszeit an Clients gesendet wird."
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+"Zeitintervall, in dem die Tageszeit an Clients gesendet wird, in Sekunden "
+"angegeben."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr "Animierte Inventaritems"
+msgstr "Animierte Inventargegenstände"
#: src/settings_translation_file.cpp
msgid "Inventory key"
@@ -2589,70 +4518,121 @@ msgid "Invert vertical mouse movement."
msgstr "Kehrt die vertikale Mausbewegung um."
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Pfad der Kursivschrift"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Pfad der kursiven Festbreitenschrift"
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr "Item-Entity-TTL"
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Iterationen"
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
"Iterationen der rekursiven Funktion.\n"
-"Steuert die Skalierung mit einem sehr hohem Detailgrad."
+"Eine Erhöhung des Wertes wird die Menge an Details erhöhen,\n"
+"aber auch die Rechenlast erhöhen.\n"
+"Mit 20 Iterationen hat dieser Kartengenerator eine ähnliche\n"
+"Rechenlast wie der Kartengenerator V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "Joystick-ID"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick button repetition interval"
-msgstr "Rechtsklick-Wiederholungsrate"
+msgstr "Joystick-Button-Wiederholungsrate"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Joystick-Totbereich"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick frustum sensitivity"
-msgstr "Mausempfindlichkeit"
+msgstr "Joystick-Pyramidenstumpf-Empfindlichkeit"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Joystick-Typ"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
-"Nur für Juliamenge: W-Komponente der hyperkomplexen Konstanten, welche die "
-"Juliaform festlegt.\n"
-"Hat keine Wirkung auf 3D-Fraktale.\n"
+"Nur für Juliamenge.\n"
+"W-Komponente der hyperkomplexen Konstante.\n"
+"Beeinflusst die Form des Fraktals.\n"
+"Hat keine Wirkung auf 3-D-Fraktale.\n"
"Reichweite liegt grob zwischen -2 und 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Julia-Menge: X-Komponente der hyperkomplexen Konstanten, welche die "
-"Juliaform festlegt.\n"
+"Nur für Juliamenge.\n"
+"X-Komponente der hyperkomplexen Konstante.\n"
+"Ändert die Form des Fraktals.\n"
"Weite liegt grob zwischen -2 und 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Julia-Menge: Y-Komponente der hyperkomplexen Konstanten, welche die "
-"Juliaform festlegt.\n"
+"Nur für Juliamenge.\n"
+"Y-Komponente der hyperkomplexen Konstante.\n"
+"Ändert die Form des Fraktals.\n"
"Weite liegt grob zwischen -2 und 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Julia-Menge: Z-Komponente der hyperkomplexen Konstanten, welche die "
-"Juliaform festlegt.\n"
+"Nur für Juliamenge.\n"
+"Z-Komponente der hyperkomplexen Konstante.\n"
+"Ändert die Form des Fraktals.\n"
"Weite liegt grob zwischen -2 und 2."
#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia-w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia-x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia-y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia-z"
+
+#: src/settings_translation_file.cpp
msgid "Jump key"
msgstr "Sprungtaste"
@@ -2672,6 +4652,26 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zur Reduzierung der Lautstärke.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Graben.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2692,6 +4692,16 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zur Erhöhung der Lautstärke.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2713,10 +4723,12 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
"Taste, um den Spieler rückwärts zu bewegen.\n"
+"Wird, wenn aktiviert, auch die Vorwärtsautomatik deaktivieren.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2752,11 +4764,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste, um die Chat-Konsole im Spiel zu öffnen.\n"
+"Taste, um das Spiel stumm zu schalten.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2772,6 +4784,16 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste, um das Chat-Fenster zu öffnen, um lokale Befehle einzugeben.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2792,748 +4814,963 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste, um die Debug-Stacks auszugeben. Für die Entwicklung benutzt.\n"
+"Taste zum Bauen.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Schleichen.\n"
-"Wird auch zum Runterklettern und das Sinken im Wasser verwendet, falls "
-"aux1_descends deaktiviert ist.\n"
+"Taste zum Auswählen des 11. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Wechseln der Kamera (Ego- oder Dritte-Person-Perspektive).\n"
+"Taste zum Auswählen des 12. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zur Erzeugung von Bildschirmfotos.\n"
+"Taste zum Auswählen des 13. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Schnellmodus.\n"
+"Taste zum Auswählen des 14. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Filmmodus.\n"
+"Taste zum Auswählen des 15. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Wechseln der Anzeige der Übersichtskarte.\n"
+"Taste zum Auswählen des 16. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Schnellmodus.\n"
+"Taste zum Auswählen des 16. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Flugmodus.\n"
+"Taste zum Auswählen des 18. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Geistmodus.\n"
+"Taste zum Auswählen des 19. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten der Kameraaktualisierung. Nur für die Entwicklung "
-"benutzt.\n"
+"Taste zum Auswählen des 20. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten der Anzeige der Debug-Informationen.\n"
+"Taste zum Auswählen des 21. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste, um das HUD zu verbergen oder wieder anzuzeigen.\n"
+"Taste zum Auswählen des 22. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste, um das Chatprotokoll zu verbergen oder wieder anzuzeigen.\n"
+"Taste zum Auswählen des 23. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten des Nebels.\n"
+"Taste zum Auswählen des 24. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste zum Umschalten der Profiler-Anzeige. Für die Entwicklung benutzt.\n"
+"Taste zum Auswählen des 25. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Taste, um die unbegrenzte Sichtweite ein- oder auszuschalten.\n"
+"Taste zum Auswählen des 26. Gegenstands in der Schnellleiste.\n"
"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "„Benutzen“-Taste zum Runterklettern"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des 27. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Sprache"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des 28. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
-msgstr "Tiefe für große Höhlen"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des 29. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
-msgstr "Lavakammern"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des 30. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
-msgstr "Blätterstil"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des 31. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Blätterstil:\n"
-"- Fancy: Alle Seiten sind sichtbar\n"
-"- Simple: Nur die äußeren Seiten sind sichtbar, oder special_tiles werden "
-"benutzt\n"
-"- Opaque: Blätter sind undurchsichtig"
+"Taste zum Auswählen des 32. Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Linkstaste"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des achten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Länge eines Servertakts und dem Zeitintervall, in dem Objekte über das "
-"Netzwerk üblicherweise\n"
-"aktualisiert werden."
+"Taste zum Auswählen des fünften Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
-msgstr "Dauer der Zeit zwischen ABM-Ausführungszyklen"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des ersten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
-msgstr "Dauer der Zeit zwischen NodeTimer-Ausführungszyklen"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des vierten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Bis zu welcher Dringlichkeitsstufe Protokollmeldungen\n"
-"in debug.txt geschrieben werden sollen:\n"
-"- <nichts> (keine Protokollierung)\n"
-"- none (Meldungen ohne Einstufung)\n"
-"- error (Fehler)\n"
-"- warning (Warnungen)\n"
-"- action (Aktionen)\n"
-"- info (Informationen)\n"
-"- verbose (Ausführlich)"
+"Taste zum Auswählen des nächsten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
-msgstr "Erzeugungswarteschlangengrenze auf Festspeicher"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des neunten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des vorherigen Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
-msgstr "Limit der Erzeugungswarteschlangen"
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des zweiten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Begrenzt die Anzahl der parallelen HTTP-Anfragen. Betrifft:\n"
-"- Medienabholung, falls der Server die remote_media-Einstellung "
-"verwendet.\n"
-"- Herunterladen der Serverliste und Server-Ankündigungsdaten.\n"
-"- Downloads, die vom Hauptmenü aus getätigt werden (z.B. Mod-Manager).\n"
-"Hat nur eine Wirkung, wenn mit cURL-Unterstützung kompiliert wurde."
+"Taste zum Auswählen des siebten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
-msgstr "Flüssigkeitswiderstand"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des sechsten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
-msgstr "Flüssigkeitswiderstandsglättung"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des zehnten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
-msgstr "Max. Flüssigkeitsiterationen"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Auswählen des dritten Gegenstands in der Schnellleiste.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
-msgstr "Aufräumzeit für Flüssigkeitswarteschlange"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Schleichen.\n"
+"Wird auch zum Runterklettern und das Sinken im Wasser verwendet, falls "
+"aux1_descends deaktiviert ist.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
-msgstr "Sinkgeschwindigkeit in Flüssigkeiten"
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Wechseln der Kamera (Ego- oder Dritte-Person-Perspektive).\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
-msgstr "Flüssigkeitsaktualisierungsintervall in Sekunden."
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zur Erzeugung von Bildschirmfotos.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
-msgstr "Flüssigkeitsaktualisierungstakt"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten der automatischen Vorwärtsbewegung.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Taste zum Umschalten des Filmmodus.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Taste zum Wechseln der Anzeige der Übersichtskarte.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Active-Block-Modifier-Intervall"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten des Schnellmodus.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
-msgstr "Hauptmenü-Spiel-Manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten des Flugmodus.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Hauptmenü-Mod-Manager"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten des Geistmodus.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Hauptmenü-Skript"
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten des Nick-Bewegungsmodus.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Nebel- und Himmelsfarben von der Tageszeit (Sonnenaufgang/Sonnenuntergang)\n"
-"und Blickrichtung abhängig machen."
+"Taste zum Umschalten der Kameraaktualisierung. Nur für die Entwicklung "
+"benutzt.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"DirectX mit LuaJIT zusammenarbeiten lassen. Deaktivieren Sie dies,\n"
-"falls es Probleme verursacht."
+"Taste, um die Anzeige des Chats umzuschalten.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
-msgstr "Kartenordner"
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten der Anzeige der Debug-Informationen.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Kartengenerierungsattribute speziell für den Kartengenerator „Täler“.\n"
-"„altitude_chill“ macht höhere Höhen kälter, was ein paar Biomprobleme "
-"hervorrufen könnte.\n"
-"„humid_rivers“ modifiert die Luftfeuchtigkeit um Flüssen und in Gebieten, wo "
-"sich Wasser\n"
-"ansammeln würde; es könnte fein abgestimmte Biomen beeinträchtigen.\n"
-"Die von der Engine standardmäßig gesetzten Flags lauten:\n"
-"„altitude_chill, humid_rivers“.\n"
-"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n"
-"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-"werden von der Standardeinstellung unverändert gelassen.\n"
-"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-"zu deaktivieren."
-
-#: 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.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Kartengenerierungsattribute speziell für Kartengenerator v7.\n"
-"„ridges“ sind die Flüsse.\n"
-"Flags, welche in der Bitschalterzeichenkette nicht angegeben sind,\n"
-"werden von der Standardeinstellung unverändert gelassen.\n"
-"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-"zu deaktivieren."
-
-#: src/settings_translation_file.cpp
-#, fuzzy
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten der Anzeige des Nebels.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Kartengenerierungsattribute speziell für den Kartengenerator v6.\n"
-"Falls Schneebiome aktiviert, werden Dschungel aktiviert und das „jungles“-"
-"Flag\n"
-"wird ignoriert.\n"
-"Die von der Engine standardmäßig gesetzten Flags lauten:\n"
-"„biomeblend, mudflow“.\n"
-"Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n"
-"Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-"werden von der Standardeinstellung unverändert gelassen.\n"
-"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-"zu deaktivieren."
+"Taste, um das HUD zu verbergen oder wieder anzuzeigen.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Kartengenerierungsattribute speziell für Kartengenerator v7.\n"
-"„ridges“ sind die Flüsse.\n"
-"Flags, welche in der Bitschalterzeichenkette nicht angegeben sind,\n"
-"werden von der Standardeinstellung unverändert gelassen.\n"
-"Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-"zu deaktivieren."
+"Taste, um die Anzeige der großen Chatkonsole umzuschalten.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
-msgstr "Kartenerzeugungsgrenze"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste zum Umschalten der Profiler-Anzeige. Für die Entwicklung benutzt.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
-msgstr "Speicherintervall der Karte"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste, um die unbegrenzte Sichtweite ein- oder auszuschalten.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
-msgstr "Kartenblock-Grenze"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Taste, um die Zoom-Ansicht zu verwenden, falls möglich.\n"
+"Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
-msgstr "Timeout zum Entladen von Kartenblöcken"
+msgid "Keyboard and Mouse"
+msgstr "Tastatur und Maus"
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Täler-Kartengenerator"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+"Spieler, die mehr als X Nachrichten innerhalb von 10 Sekunden sendeten, "
+"hinauswerfen."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr "Biomhitzen-Rauschparameter"
+msgid "Lake steepness"
+msgstr "See-Steilheit"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr "Biomluftfeuchtigkeitsübergangs-Rauschparameter"
+msgid "Lake threshold"
+msgstr "See-Schwellwert"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr "Biomluftfeuchtigkeits-Rauschparameter"
+msgid "Language"
+msgstr "Sprache"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Kartengenerator-Debugging"
+msgid "Large cave depth"
+msgstr "Tiefe für große Höhlen"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr "Kartengenerator-Flags"
+msgid "Large cave maximum number"
+msgstr "Max. Anzahl großer Höhlen"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "Flacher Kartengenerator"
+msgid "Large cave minimum number"
+msgstr "Min. Anzahl großer Höhlen"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
-msgstr "Höhlenbreite für den flachen Kartengenerator"
+msgid "Large cave proportion flooded"
+msgstr "Anteil gefluteter großer Höhlen"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr "cave1-Rauschparameter für flachen Kartengenerator"
+msgid "Large chat console key"
+msgstr "Taste für große Chatkonsole"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr "cave2-Rauschparameter für flachen Kartengenerator"
+msgid "Leaves style"
+msgstr "Blätterstil"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr "Fülltiefenrauschparameter für flachen Kartengenerator"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+"Blätterstil:\n"
+"- Fancy: Alle Seiten sind sichtbar\n"
+"- Simple: Nur äußere Seiten, falls definierte special_tiles benutzt "
+"werden\n"
+"- Opaque: Transparenz deaktivieren"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr "Flags für flachen Kartengenerator"
+msgid "Left key"
+msgstr "Linkstaste"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
-msgstr "Basishöhe für flachen Kartengenerator"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"Länge eines Servertakts und dem Zeitintervall, in dem Objekte über das "
+"Netzwerk\n"
+"üblicherweise aktualisiert werden; in Sekunden angegeben."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr "Hügelsteilheilt für flachen Kartengenerator"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Länge von Flüssigkeitswellen.\n"
+"Dafür müssen Flüssigkeitswellen aktiviert sein."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr "Hügel-Schwellwert für flachen Kartengenerator"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+"Dauer zwischen Active-Block-Modifier-(ABM)-Ausführungszyklen, in Sekunden."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr "See-Steilheit für flachen Kartengenerator"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Dauer der Zeit zwischen NodeTimer-Ausführungszyklen, in Sekunden."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr "See-Schwellwert für flachen Kartengenerator"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Zeit zwischen Active-Block-Management-Zyklen, in Sekunden."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr "Tiefe für große Höhlen für den flachen Kartengenerator"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+"Bis zu welcher Stufe Protokollmeldungen in debug.txt geschrieben werden "
+"sollen:\n"
+"- <nichts> (keine Protokollierung)\n"
+"- none (Meldungen ohne Einstufung)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr "Gelände-Rauschparameter für flachen Kartengenerator"
+msgid "Light curve boost"
+msgstr "Lichtkurvenverstärkung"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "Fraktale-Kartengenerator"
+msgid "Light curve boost center"
+msgstr "Lichtkurvenverstärkung: Mitte"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
-msgstr "Höhlenbreite für den Fraktale-Kartengenerator"
+msgid "Light curve boost spread"
+msgstr "Lichtkurvenverstärkung: Ausbreitung"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr "cave1-Rauschparameter für Fraktale-Kartengenerator"
+msgid "Light curve gamma"
+msgstr "Lichtkurven-Gammawert"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr "cave2-Rauschparameter für Fraktale-Kartengenerator"
+msgid "Light curve high gradient"
+msgstr "Lichtkurve: Hoher Gradient"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr "Fülltiefenrauschparameter für Fraktale-Kartengenerator"
+msgid "Light curve low gradient"
+msgstr "Lichtkurve: Niedriger Gradient"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr "Fraktale-Kartengenerator-Fraktal"
+msgid "Lighting"
+msgstr "Licht"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
-msgstr "Iterationen für Fraktale-Kartengenerator"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Grenze der Kartengenerierung, in Blöcken, in alle 6 Richtungen von\n"
+"(0, 0, 0). Nur Mapchunks, die sich vollständig in der Kartengenerator-\n"
+"grenze befinden, werden generiert. Der Wert wird für jede Welt\n"
+"getrennt abgespeichert."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
-msgstr "w-Parameter für Fraktale-Kartengenerator"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+"Begrenzt die Anzahl der parallelen HTTP-Anfragen. Betrifft:\n"
+"- Medienabholung, falls der Server die remote_media-Einstellung "
+"verwendet.\n"
+"- Herunterladen der Serverliste und Server-Ankündigungsdaten.\n"
+"- Downloads, die vom Hauptmenü aus getätigt werden (z.B. Mod-Manager).\n"
+"Hat nur eine Wirkung, wenn mit cURL-Unterstützung kompiliert wurde."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr "x-Parameter für Fraktale-Kartengenerator"
+msgid "Liquid fluidity"
+msgstr "Flüssigkeitswiderstand"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr "y-Parameter für Fraktale-Kartengenerator"
+msgid "Liquid fluidity smoothing"
+msgstr "Flüssigkeitswiderstandsglättung"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr "z-Parameter für Fraktale-Kartengenerator"
+msgid "Liquid loop max"
+msgstr "Max. Flüssigkeitsiterationen"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr "Versatz für Fraktale-Kartengenerator"
+msgid "Liquid queue purge time"
+msgstr "Aufräumzeit für Flüssigkeitswarteschlange"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr "Skalierung für Fraktale-Kartengenerator"
+msgid "Liquid sinking"
+msgstr "Flüssigkeitsabsinken"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr "Meeresgrundrauschparameter für Fraktale-Kartengenerator"
+msgid "Liquid update interval in seconds."
+msgstr "Flüssigkeitsaktualisierungsintervall in Sekunden."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr "w-Ausschnitt für Fraktale-Kartengenerator"
+msgid "Liquid update tick"
+msgstr "Flüssigkeitsaktualisierungstakt"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr "Hitzenübergangs-Rauschparameter"
+msgid "Load the game profiler"
+msgstr "Spielprofiler laden"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Kartengeneratorname"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Den Spielprofiler laden, um Profilingdaten für das Spiel zu sammeln.\n"
+"Aktiviert den „/profiler“-Befehl, um auf das erzeugte Profil zuzugreifen.\n"
+"Nützlich für Modentwickler und Serverbetreiber."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "v5-Kartengenerator"
+msgid "Loading Block Modifiers"
+msgstr "Loading Block Modifiers"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
-msgstr "Höhlenbreite für v5-Kartengenerator"
+msgid "Lower Y limit of dungeons."
+msgstr "Y-Untergrenze von Verliesen."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr "cave1-Höhlen-Rauschparameter für v5-Kartengenerator"
+msgid "Lower Y limit of floatlands."
+msgstr "Y-Untergrenze von Schwebeländern."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr "cave2-Höhlen-Rauschparameter für v5-Kartengenerator"
+msgid "Main menu script"
+msgstr "Hauptmenü-Skript"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr "Faktor-Rauschparameter für v5-Kartengenerator"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+"Nebel- und Himmelsfarben von der Tageszeit (Sonnenaufgang/Sonnenuntergang) "
+"und Blickrichtung abhängig machen."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr "Fülltiefen-Rauschparameter für v5-Kartengenerator"
+msgid "Makes all liquids opaque"
+msgstr "Macht alle Flüssigkeiten undurchsichtig"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr "Höhen-Rauschparameter für v5-Kartengenerator"
+msgid "Map Compression Level for Disk Storage"
+msgstr "Kartenkompressionsstufe für Festspeicher"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "v6-Kartengenerator"
+msgid "Map Compression Level for Network Transfer"
+msgstr "Kartenkompressionsstufe für Netzwerkverkehr"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr "Apfelbaum-Rauschparameter für v6-Kartengenerator"
+msgid "Map directory"
+msgstr "Kartenverzeichnis"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr "Strandhäufigkeit für v6-Kartengenerator"
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+"Kartengenerierungsattribute speziell für den Carpathian-Kartengenerator."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
-msgstr "Strand-Rauschparameter für v6-Kartengenerator"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+"Kartengenerierungsattribute speziell für den flachen Kartengenerator.\n"
+"Zu einer flachen Welt können gelegentliche Seen und Hügel hinzugefügt werden."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
-msgstr "Biom-Rauschparameter für v6-Kartengenerator"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+"Kartengenerierungsattribute speziell für den Fraktale-Kartengenerator.\n"
+"„terrain“ aktiviert die Erzeugung von nicht-fraktalem Gelände:\n"
+"Ozean, Inseln und der Untergrund."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
-msgstr "Höhlen-Rauschparameter für v6-Kartengenerator"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+"Kartengenerierungsattribute speziell für den Täler-Kartengenerator.\n"
+"„altitude_chill“: Reduziert Hitze mit der Höhe.\n"
+"„humid_rivers“: Erhöht Luftfeuchte um Flüsse und Wasserbecken.\n"
+"„vary_river_depth“: Falls aktiviert, werden eine niedrige Luftfeuchte und\n"
+"hohe Hitze dafür sorgen, dass Flüsse seichter und gelegentlich trocken\n"
+"werden.\n"
+"„altitude_dry“: Reduziert Luftfeuchte mit der Höhe."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr "Wüsten-Rauschparameter für v6-Kartengenerator"
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Kartengenerierungsattribute speziell für den Kartengenerator v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
-msgstr "v6-Kartengenerator-Flags"
+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 ""
+"Kartengenerierungsattribute speziell für den Kartengenerator v6.\n"
+"Das Flag „snowbiomes“ aktiviert das neue 5-Biom-System.\n"
+"Falls das „snowbiomes“-Flag aktiviert ist, werden Dschungel automatisch "
+"aktiviert und das „jungles“-Flag wird ignoriert."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
-msgstr "Höhenauswahl-Rauschparameter für v6-Kartengenerator"
+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 ""
+"Kartengenerierungsattribute speziell für den Kartengenerator v7.\n"
+"„ridges”: Flüsse.\n"
+"„floatlands“: Schwebende Landmassen in der Atmosphäre.\n"
+"„caverns“: Gigantische Höhlen tief im Untergrund."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr "Luftfeuchtigkeits-Rauschparameter für v6-Kartengenerator"
+msgid "Map generation limit"
+msgstr "Kartenerzeugungsgrenze"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr "Schlamm-Rauschparameter für v6-Kartengenerator"
+msgid "Map save interval"
+msgstr "Speicherintervall der Karte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr "Steilheits-Rauschparameter für v6-Kartengenerator"
+msgid "Map shadows update frames"
+msgstr "Kartenschatten-Aktualisierungsframes"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr "Geländehöhen-Rauschparameter für v6-Kartengenerator"
+msgid "Mapblock limit"
+msgstr "Kartenblock-Grenze"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr "Basisgelände-Rauschparameter für v6-Kartengenerator"
+msgid "Mapblock mesh generation delay"
+msgstr "Kartenblockmesh-Generierungsverzögerung"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr "Baum-Rauschparameter für v6-Kartengenerator"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Cachegröße des Kartenblock-Meshgenerators in MB"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "v7-Kartengenerator"
+msgid "Mapblock unload timeout"
+msgstr "Timeout zum Entladen von Kartenblöcken"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr "Höhlenbreite für v7-Kartengenerator"
+msgid "Mapgen Carpathian"
+msgstr "Carpathian-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr "cave1-Höhlen-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen Carpathian specific flags"
+msgstr "Flags spezifisch für Carpathian-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr "cave2-Höhlen-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen Flat"
+msgstr "Flacher Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr "Fülltiefen-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen Flat specific flags"
+msgstr "Flags spezifisch für flachen Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr "v7-Kartengenerator-Flags"
+msgid "Mapgen Fractal"
+msgstr "Fraktale-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr "Höhenauswahl-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen Fractal specific flags"
+msgstr "Flags spezifisch für Fraktale-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr "Berghöhen-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V5"
+msgstr "V5-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr "Berg-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V5 specific flags"
+msgstr "Flags spezifisch für Kartengenerator V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr "Fluss-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V6"
+msgstr "V6-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr "Flusswasser-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V6 specific flags"
+msgstr "Flags spezifisch für Kartengenerator V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr "Geländehöhen-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V7"
+msgstr "V7-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr "Basisgelände-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen V7 specific flags"
+msgstr "Flags spezifisch für Kartengenerator V7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr "Geländepersistenz-Rauschparameter für v7-Kartengenerator"
+msgid "Mapgen Valleys"
+msgstr "Täler-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr "Tiefe für gigantische Höhlen"
+msgid "Mapgen Valleys specific flags"
+msgstr "Flags spezifisch für Täler-Kartengenerator"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr "Rauschen für gigantische Höhlen"
+msgid "Mapgen debug"
+msgstr "Kartengenerator-Debugging"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr "An dieser Tiefe und darunter bilden sich gigantische Höhlen."
+msgid "Mapgen name"
+msgstr "Kartengeneratorname"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3560,8 +5797,14 @@ msgid "Maximum FPS"
msgstr "Maximale Bildwiederholrate"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr "Maximale Bildwiederholrate, wenn das Spiel pausiert ist."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+"Maximale Bildwiederholrate, während das Fenster nicht fokussiert oder das "
+"Spiel pausiert ist."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Maximale Distanz zum Rendern von Schatten."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
@@ -3569,17 +5812,33 @@ msgstr "Maximal zwangsgeladene Kartenblöcke"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
-msgstr "Max. Breite der Schnellzugriffsleiste"
+msgstr "Maximale Breite der Schnellleiste"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent in total."
-msgstr "Maximale Anzahl der Spieler, die sich simultan verbinden können."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "Obergrenze der zufälligen Anzahl großer Höhlen je Mapchunk."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
-msgstr "Maximale Anzahl der Kartenblöcke in der Ladewarteschlange."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "Obergrenze Anzahl der zufälligen Anzahl kleiner Höhlen je Mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+"Maximaler Flüssigkeitswiderstand. Regelt die Abbremsung beim\n"
+"Eintauchen in eine Flüssigkeit bei hoher Geschwindigkeit."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Maximale Anzahl an Kartenblöcke, die simultan pro Client gesendet werden.\n"
+"Die maximale Gesamtanzahl wird dynamisch berechnet:\n"
+"max_Gesamt = aufrunden((#Clients + max_Benutzer) * je_Client / 4)"
#: src/settings_translation_file.cpp
msgid "Maximum number of blocks that can be queued for loading."
@@ -3588,20 +5847,30 @@ msgstr "Maximale Anzahl der Kartenblöcke in der Ladewarteschlange."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Maximale Anzahl der Kartenblöcke, die in die Erzeugungswarteschlage gesetzt "
-"werden.\n"
-"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen."
+"Maximale Anzahl der Kartenblöcke, die in die Warteschlange für\n"
+"die Erzeugung eingereiht werden sollen.\n"
+"Diese Grenze wird für jeden Spieler einzeln erzwungen."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus\n"
-"einer Datei gesetzt werden können.\n"
-"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen."
+"Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus "
+"einer Datei eingereiht werden.\n"
+"Diese Grenze wird für jeden Spieler einzeln erzwungen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"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."
@@ -3622,7 +5891,7 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
-"Maximale Anzahl der Pakete, die pro Sende-Schritt gesendet werden. Falls Sie "
+"Maximale Anzahl der Pakete, die pro Sendeschritt gesendet werden. Falls Sie "
"eine\n"
"langsame Verbindung haben, probieren Sie, diesen Wert zu reduzieren,\n"
"aber reduzieren Sie ihn nicht unter der doppelten Anzahl der Clients, die "
@@ -3630,18 +5899,21 @@ msgstr ""
"anstreben."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
msgstr "Maximale Anzahl der Spieler, die sich simultan verbinden können."
#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Maximale Anzahl der anzuzeigenden neuen Chatnachrichten"
+
+#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
msgstr ""
"Maximale Anzahl der statisch gespeicherten Objekte in einem Kartenblock."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum objects per block"
-msgstr "Maximale Objekte pro Kartenblock"
+msgstr "Maximale Objekte pro Block"
#: src/settings_translation_file.cpp
msgid ""
@@ -3649,36 +5921,49 @@ msgid ""
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
"Maximales Verhältnis zum aktuellen Fenster, das für die\n"
-"Schnellzugriffsleiste verwendet werden soll. Nützlich, wenn es\n"
+"Schnellleiste verwendet werden soll. Nützlich, wenn es\n"
"etwas gibt, was links oder rechts von ihr angezeigt werden soll."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum simultaneous block sends per client"
-msgstr "Max. gleichzeitig versendete Kartenblöcke pro Client"
+msgstr "Max. gleichzeitig versendete Blöcke pro Client"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum simultaneous block sends total"
-msgstr "Max. gleichzeitig versendete Kartenblöcke"
+msgid "Maximum size of the out chat queue"
+msgstr "Maximale Größe der ausgehenden Chatwarteschlange"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
-"Maximale Zeit in ms, die das Herunterladen einer Datei (z.B. einer Mod) "
-"dauern darf."
+"Maximale Größe der ausgehenden Chatwarteschlange.\n"
+"0, um Warteschlange zu deaktivieren, -1, um die Wartenschlangengröße nicht "
+"zu begrenzen."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr "Maximale Benutzerzahl"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+"Maximale Zeit in Millisekunden, die das Herunterladen einer Datei (z.B. "
+"einer Mod) dauern darf."
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Menüs"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Maximale Zeit in Millisekunden, die eine interaktive Anfrage (z.B. "
+"Serverlistenanfrage) brauchen darf."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Maximale Benutzerzahl"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr "3D-Modell-Zwischenspeicher"
+msgstr "3-D-Modell-Zwischenspeicher"
#: src/settings_translation_file.cpp
msgid "Message of the day"
@@ -3696,6 +5981,10 @@ msgid "Method used to highlight selected object."
msgstr "Verwendete Methode, um ein ausgewähltes Objekt hervorzuheben."
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Minimaler Level des Prokolls, die in den Chat geschrieben werden soll."
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr "Übersichtskarte"
@@ -3708,24 +5997,40 @@ msgid "Minimap scan height"
msgstr "Abtasthöhe der Übersichtskarte"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr "Minimale Texturengröße für Filter"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Untergrenze der zufälligen Anzahl großer Höhlen je Mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Untergrenze der zufälligen Anzahl kleiner Höhlen je Mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Minimale Texturengröße"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
msgstr "Mip-Mapping"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
-msgstr "Modspeicher: Details-URL"
+msgid "Misc"
+msgstr "Sonstiges"
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr "Mod-Profiler"
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr "Mod-Sicherheit"
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr "Modspeicher: Download-URL"
+msgid "Mod channels"
+msgstr "Mod-Kanäle"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr "Modspeicher: Listen-URL"
+msgid "Modifies the size of the HUD elements."
+msgstr "Modifiziert die Größe der HUD-Elemente."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
@@ -3736,6 +6041,26 @@ msgid "Monospace font size"
msgstr "Größe der Festbreitenschrift"
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Festbreitenschriftgröße teilbar durch"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Berghöhenrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Bergrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Bergvariationsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Bergnullhöhe"
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr "Mausempfindlichkeit"
@@ -3744,31 +6069,37 @@ msgid "Mouse sensitivity multiplier."
msgstr "Faktor für die Mausempfindlichkeit."
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Schlammrauschen"
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
-"Faktor für Kameraschütteln beim Sturz.\n"
-"Zum Beispiel: 0 für kein Schütteln, 1.0 für den Standardwert, 2.0 für "
-"doppelte Geschwindigkeit."
+"Faktor für Kamerawackeln beim Sturz.\n"
+"Zum Beispiel: 0 für kein Wackeln, 1.0 für den Standardwert, 2.0 für doppelte "
+"Geschwindigkeit."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
-"Faktor für Auf- und Abbewegung (grafischer Effekt).\n"
-"Zum Beispiel: 0 für keine Auf- und Abbewegung, 1.0 für den Standardwert, 2.0 "
-"für doppelte Geschwindigkeit."
+msgid "Mute key"
+msgstr "Stummtaste"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Ton verstummen"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
-"Name des Kartengenerators, der für die Erstellung neuer Welten\n"
-"verwendet werden soll. Mit der Erstellung einer Welt im Hauptmenü\n"
-"wird diese Einstellung überschrieben."
+"Name des Kartengenerators, der für neue Welten benutzt werden soll.\n"
+"Wird eine Welt im Hauptmenü erstellt, wird diese Einstellung überschrieben.\n"
+"Aktuelle Kartengeneratoren in einem sehr instabilem Zustand:\n"
+"- Die optionalen Schwebeländer von v7 (standardmäßig deaktiviert)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3786,12 +6117,11 @@ msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
msgstr ""
"Name des Servers. Er wird in der Serverliste angezeigt und für frisch "
-"verbundene\n"
-"Spieler angezeigt."
+"verbundene Spieler angezeigt."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr "Netzwerk"
+msgid "Near plane"
+msgstr "Vordere Ebene"
#: src/settings_translation_file.cpp
msgid ""
@@ -3799,8 +6129,11 @@ msgid ""
"This value will be overridden when starting from the main menu."
msgstr ""
"Netzwerkport (UDP), auf dem gelauscht werden soll.\n"
-"Dieser Wert wird überschrieben, wenn vom Hauptmenü\n"
-"aus gestartet wird."
+"Dieser Wert wird überschrieben, wenn vom Hauptmenü aus gestartet wird."
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr "Netzwerk"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
@@ -3815,55 +6148,55 @@ msgid "Noclip key"
msgstr "Geistmodustaste"
#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr "Block- und Entityhervorhebung"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr "Blöcke hervorheben"
+msgstr "Blockhervorhebung"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
msgstr "NodeTimer-Intervall"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
-"Rauschparameter für Temperatur-, Luftfeuchtigkeits- und Biomübergänge\n"
-"in der Biom-API."
-
-#: src/settings_translation_file.cpp
msgid "Noises"
msgstr "Rauschen"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
-msgstr "Normalmaps-Sampling"
-
-#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
-msgstr "Normalmaps-Stärke"
-
-#: src/settings_translation_file.cpp
msgid "Number of emerge threads"
msgstr "Anzahl der Erzeugerthreads"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
-"Anzahl der zu benutzenden Erzeugerthreads. Lassen Sie dieses Feld frei, oder "
-"erhöhen Sie\n"
-"diese Zahl, um mehrere Threads zu verwenden. Auf Mehrprozessorsystemen wird "
-"dies die\n"
-"Geschwindigkeit der Kartengenerierung auf Kosten von leicht fehlerhaften "
-"Höhlen stark\n"
-"erhöhen."
+"Anzahl der zu verwendeten Erzeugerthreads.\n"
+"Wert 0:\n"
+"- Automatische Wahl. Die Anzahl der Erzeugerthreads wird\n"
+"- „Anzahl der Prozessoren - 2“ sein, mit einer Untergrenze von 1.\n"
+"Jeder andere Wert:\n"
+"- Legt die Anzahl der Erzeugerthreads fest, mit einer Untergrenze von 1.\n"
+"ACHTUNG: Das Erhöhen der Anzahl der Erzeugerthreads erhöht die\n"
+"Geschwindigkeit des Engine-Kartengenerators, aber dies könnte die Spiel-\n"
+"performanz beeinträchtigen, da mit anderen Prozessen konkurriert wird;\n"
+"das ist besonders im Einzelspielermodus der Fall und/oder, wenn Lua-Code\n"
+"in „on_generated“ ausgeführt wird.\n"
+"Für viele Benutzer wird die optimale Einstellung wohl die „1“ sein."
#: src/settings_translation_file.cpp
msgid ""
"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
+"This is a trade-off between SQLite transaction overhead and\n"
"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
"Anzahl der zusätzlichen Kartenblöcke, welche mit /clearobjects gleichzeitig\n"
@@ -3871,59 +6204,111 @@ msgstr ""
"Transaktions-Overhead und Speicherverbrauch (Faustregel: 4096=100MB)."
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
-msgstr "Anzahl der Parallax-Occlusion-Iterationen."
+msgid "Opaque liquids"
+msgstr "Undurchsichtige Flüssigkeiten"
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
-msgstr "Startwert des Parallax-Occlusion-Effektes, üblicherweise Skalierung/2."
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+"Undurchsichtigkeit (Alpha) des Schattens hinter der Standardschrift, "
+"zwischen 0 und 255."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
-msgstr "Gesamtskalierung des Parallax-Occlusion-Effektes."
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+"Das Pausemenü öffnen, wenn der Fokus des Fensters verloren geht.\n"
+"Wird nicht pausieren, wenn ein Formspec geöffnet ist."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "Parallax-Occlusion"
+msgid "Optional override for chat weblink color."
+msgstr "Optionaler manueller Wert für die Farbe von Chat-Weblinks."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr "Parallax-Occlusion-Skalierung"
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+"Pfad der Ersatzschrift. Muss eine TrueType-Schrift sein.\n"
+"Diese Schrift wird für bestimmte Sprachen benutzt, oder, wenn die "
+"Standardschrift nicht verfügbar ist."
+
+#: 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 ""
+"Pfad, in dem Bildschirmfotos gespeichert werden sollen. Kann ein absoluter "
+"oder relativer Pfad sein.\n"
+"Dieses Verzeichnis wird erstellt, wenn es nicht bereits existiert."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr "Parallax-Occlusion-Startwert"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+"Pfad zum Shader-Verzeichnis. Falls kein Pfad definiert ist, wird der "
+"Standardpfad benutzt."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
-msgstr "Parallax-Occlusion-Iterationen"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+"Pfad der Texturenverzeichnisse. Alle Texturen werden von dort zuerst gesucht."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "Parallax-Occlusion-Modus"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Pfad der Standardschrift. Muss eine TrueType-Schrift sein.\n"
+"Die Ersatzschrift wird benutzt, falls diese Schrift nicht geladen werden "
+"kann."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr "Parallax-Occlusion-Stärke"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Pfad der Festbreitenschrift. Muss eine TrueType-Schrift sein.\n"
+"Diese Schrift wird z.B. für die Konsole und die Profiler-Anzeige benutzt."
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift."
+msgid "Pause on lost window focus"
+msgstr "Pausieren bei Fensterfokusverlust"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr "Pfad, in dem Bildschirmfotos abgespeichert werden."
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Je-Spieler-Grenze der Ladewarteschlange für Kartenblöcke"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
-"Pfad der Texturenverzeichnisse. Alle Texturen werden von dort zuerst gesucht."
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Je-Spieler-Grenze der Kartenblöcke in Erzeugungswarteschlange"
#: src/settings_translation_file.cpp
msgid "Physics"
msgstr "Physik"
#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr "Nick-Bewegungstaste"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "Nick-Bewegungsmodus"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr "Bautaste"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Bauen-Wiederholungsrate"
+
+#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
@@ -3932,57 +6317,80 @@ msgstr ""
"Dafür wird das „fly“-Privileg auf dem Server benötigt."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Spielername"
-
-#: src/settings_translation_file.cpp
msgid "Player transfer distance"
msgstr "Spieler-Übertragungsdistanz"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
+msgid "Player versus player"
msgstr "Spielerkampf"
#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr "Poissonfilter"
+
+#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
"UDP-Port, zu dem sich verbunden werden soll.\n"
-"Beachten Sie, dass das Port-Feld im Hauptmenü diese Einstellung\n"
-"überschreibt."
+"Beachten Sie, dass das Port-Feld im Hauptmenü diese Einstellung überschreibt."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Verhindert wiederholtes Graben und Bauen, wenn man die Maustasten gedrückt "
+"hält.\n"
+"Aktivieren Sie dies, wenn sie zu oft aus Versehen graben oder bauen."
#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
-"Verhindert, dass Mods unsichere Funktionen, wie das Ausführen von\n"
-"Shell-Kommandos, benutzen können."
+"Verhindert, dass Mods unsichere Funktionen, wie das Ausführen von Shell-"
+"Kommandos, benutzen können."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
-"Profiler-Datenausgabeintervall. 0 = deaktivieren. Nützlich für Entwickler."
+"Gibt die Profiling-Daten der Engine in regelmäßigen Abständen aus (in "
+"Sekunden).\n"
+"„0“ deaktiviert das Profiling. Nützlich für Entwickler."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
msgstr "Privilegien, die Spieler mit basic_privs gewähren können"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Profiler"
-msgstr "Talprofil"
+msgstr "Profiler"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
msgstr "Profiler-Umschalten-Taste"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Profiling"
-msgstr "Mod-Profiling"
+msgid "Prometheus listener address"
+msgstr "Prometheus-Lauschadresse"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+"Prometheus-Lauschadresse.\n"
+"Falls Minetest mit der ENABLE_PROMETEUS-Option kompiliert wurde,\n"
+"wird dies den Metriklauscher für Prometheus auf dieser Adresse aktivieren.\n"
+"Metriken können von http://127.0.0.1:30000/metrics abgegriffen werden."
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Anteil der großen Höhlen, die eine Flüssigkeit enthalten."
#: src/settings_translation_file.cpp
msgid ""
@@ -3990,13 +6398,13 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
-"Radius des Wolkenbereichs; In Einheiten von 64 Blöcken.\n"
-"Werte größer als 26 werden scharfe Schnittkanten an den Ecken des Wolken-\n"
-"bereichs erzeugen."
+"Radius des Wolkenbereichs; In Einheiten von 64 Wolkenquadraten.\n"
+"Werte größer als 26 werden scharfe Schnittkanten an den Ecken des "
+"Wolkenbereichs erzeugen."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr "Erhöht das Gelände, um Täler um den Flüssen zu erzeugen"
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Erhöht das Gelände, um Täler um den Flüssen zu erzeugen."
#: src/settings_translation_file.cpp
msgid "Random input"
@@ -4007,6 +6415,14 @@ msgid "Range select key"
msgstr "Sichtweitentaste"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Letzte Chatnachrichten"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Normalschriftpfad"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr "Externer Medienserver"
@@ -4015,57 +6431,129 @@ msgid "Remote port"
msgstr "Serverport"
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+"Farbcodes aus eingehenden Chatnachrichten entfernen.\n"
+"Benutzen Sie dies, um Spieler daran zu hindern, Farbe in ihren Nachrichten "
+"zu verwenden"
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr "Ersetzt das Standardhauptmenü mit einem benutzerdefinierten Hauptmenü."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Schriftpfad"
+msgstr "Berichtspfad"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Schränkt den Zugriff auf bestimmte clientseitige Funktionen auf\n"
+"Servern ein. Kombinieren Sie diese Byteflags unten, um client-\n"
+"seitige Funktionen einzuschränken:\n"
+"LOAD_CLIENT_MODS: 1 (deaktiviert das Laden von Clientmods)\n"
+"CHAT_MESSAGES: 2 (deaktiviert clientseitigen Aufruf von send_chat_message)\n"
+"READ_ITEMDEFS: 4 (deaktiviert clientseitigen Aufruf von get_item_def)\n"
+"READ_NODEDEFS: 8 (deaktiviert clientseitigen Aufruf von get_node_def)\n"
+"LOOKUP_NODES_LIMIT: 16 (begrenzt clientseitigen Aufruf von\n"
+"get_node auf csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (deaktiviert clientseitigen Aufruf von get_player_names)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Flusskanalbergausbreitungsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Flusskanalrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Flusskanal-Unterwasserrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Rauschen für Größe gezahnter Berge"
#: src/settings_translation_file.cpp
msgid "Right key"
msgstr "Rechtstaste"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr "Rechtsklick-Wiederholungsrate"
+msgid "River channel depth"
+msgstr "Flusskanaltiefe"
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr "Flusskanalbreite"
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River depth"
msgstr "Flusstiefe"
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River noise"
msgstr "Flussrauschen"
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River size"
msgstr "Flussgröße"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr "Flussrauschen – Flüsse erscheinen in der Nähe von null"
+msgid "River valley width"
+msgstr "Flusstalbreite"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
msgstr "Rollback-Aufzeichnung"
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Rauschen für Größe sanfter Hügel"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Rauschen für Ausbreitung sanfter Hügel"
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr "Runde Übersichtskarte"
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Sicheres Graben und Bauen"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Sandstrände treten auf, wenn np_beach diesen Wert überschreitet."
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr "Speichert die vom Client empfangene Karte auf dem Datenträger."
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Fenstergröße automatisch speichern, wenn sie geändert wird."
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr "Karte vom Server speichern"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -4079,6 +6567,10 @@ msgstr ""
"ganzzahligen Größen skaliert werden."
#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr "Monitor"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr "Bildschirmhöhe"
@@ -4087,10 +6579,6 @@ msgid "Screen width"
msgstr "Bildschirmbreite"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Bildschirmfoto"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr "Bildschirmfotoverzeichnis"
@@ -4113,12 +6601,26 @@ msgstr ""
"Benutzen Sie 0 für die Standardqualität."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "Sicherheit"
+msgid "Screenshots"
+msgstr "Bildschirmfotos"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr "Meeresgrundrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Das zweite von vier 2-D-Rauschen, welche gemeinsam Hügel-/Bergkettenhöhe "
+"definieren."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Das zweite von zwei 3-D-Rauschen, welche gemeinsam Tunnel definieren."
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
-msgstr "Siehe http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Siehe https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
@@ -4133,8 +6635,58 @@ msgid "Selection box width"
msgstr "Auswahlboxbreite"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Server / Einzelspieler"
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Wählt einen von 18 Fraktaltypen aus.\n"
+"1 = 4-D-Mandelbrotmenge, Typ „rund“.\n"
+"2 = 4-D-Juliamenge, Typ „rund“.\n"
+"3 = 4-D-Mandelbrotmenge, Typ „eckig“.\n"
+"4 = 4-D-Juliamenge, Typ „eckig“.\n"
+"5 = 4-D-Mandelbrotmenge, Typ „Mandel-Cousin“.\n"
+"6 = 4-D-Juliamenge, Typ „Mandel-Cousin“.\n"
+"7 = 4-D-Mandelbrotmenge, Typ „Variante“.\n"
+"8 = 4-D-Juliamenge, Typ „Variante“.\n"
+"9 = 3-D-Mandelbrotmenge, Typ „Madelbrot/Mandelbar“.\n"
+"10 = 3-D-Juliamenge, Typ „Madelbrot/Mandelbar“.\n"
+"11 = 3-D-Mandelbrotmenge, Typ „Weihnachtsbaum“.\n"
+"12 = 3-D-Juliamenge, Typ „Weihnachtsbaum“.\n"
+"13 = 3-D-Mandelbrotmenge, Typ „Mandelbulb“.\n"
+"14 = 3-D-Juliamenge, Typ „Mandelbulb“.\n"
+"15 = 3-D-Mandelbrotmenge, Typ „Kosinus-Mandelbulb“.\n"
+"16 = 3-D-Juliamenge, Typ „Kosinus-Mandelbulb“.\n"
+"17 = 4-D-Mandelbrotmenge, Typ „Mandelbulb“.\n"
+"18 = 4-D-Juliamenge, Typ „Mandelbulb“."
+
+#: src/settings_translation_file.cpp
+msgid "Server"
+msgstr "Server"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr "Server-Gameplay"
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr "Serversicherheit"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -4157,10 +6709,22 @@ msgid "Server port"
msgstr "Serverport"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Serverseitiges Occlusion Culling"
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr "Server-/Umgebungsperformanz"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr "Serverlisten-URL"
#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr "Serverliste und MOTD"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr "Serverlistendatei"
@@ -4174,39 +6738,128 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Setzt die maximale Zeichenlänge einer Chatnachricht (in Zeichen), die von "
+"Clients gesendet wird."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Setzt den Schattenstärkegammawert.\n"
+"Passt die Intensität der dynamischen Schatten im Spiel an.\n"
+"Ein niedrigerer Wert führt zu schwächeren Schatten, ein höherer Wert führt "
+"zu dunkleren Schatten."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Setzt den Radius von weichen Schatten.\n"
+"Niedrigere Werte führen zu schärferen Schatten, größere Werte führen zu "
+"weicheren Schatten.\n"
+"Minimalwert: 1.0; Maximalwert: 15.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Setzt die Neigung vom Sonnen-/Mondorbit in Grad.\n"
+"0 = keine Neigung / vertikaler Orbit.\n"
+"Minimalwert: 0.0; Maximalwert: 60.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
-"Auf „wahr“ setzen, um sich im Wind wehende Blätter zu aktivieren.\n"
+"Auf „wahr“ setzen, um Shadow-Mapping zu aktivieren.\n"
"Dafür müssen Shader aktiviert sein."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
-"Auf „wahr“ setzen, um sich im Wind wehende Pflanzen zu aktivieren.\n"
+"Auf „wahr“ setzen, um wehende Blätter zu aktivieren.\n"
"Dafür müssen Shader aktiviert sein."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
-"Auf „wahr“ setzen, um Wasserwogen zu aktivieren.\n"
+"Auf „wahr“ setzen, um Flüssigkeitswellen (wie bei Wasser) zu aktivieren.\n"
"Dafür müssen Shader aktiviert sein."
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Auf „wahr“ setzen, um wehende Pflanzen zu aktivieren.\n"
+"Dafür müssen Shader aktiviert sein."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Setzt die Schattentexturqualität auf 32 Bits.\n"
+"Falls aktiviert, werden 16-Bit-Texturen benutzt.\n"
+"Dies kann zu viel mehr Artefakten im Schatten führen."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Shader-Pfad"
+
+#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
-"Shader werden für fortgeschrittene visuelle Effekte benötigt und können die "
-"Performanz\n"
-"auf einigen Grafikkarten erhöhen.\n"
-"Funktioniert nur mit dem OpenGL-Backend."
+"Shader ermöglichen fortgeschrittene visuelle Effekte und können die "
+"Performanz auf\n"
+"einigen Grafikkarten erhöhen.\n"
+"Das funktioniert nur mit dem OpenGL-Grafik-Backend."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Schattenfilterqualität"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr "Maximale Schattenrenderdistanz von Schattenkarten in Blöcken"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "Schattenkartentextur in 32 Bits"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Schattenkartentexturengröße"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+"Versatz des Schattens hinter der Standardschrift (in Pixeln). Falls 0, wird "
+"der Schatten nicht gezeichnet."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr "Schattenstärkengammawert"
#: src/settings_translation_file.cpp
msgid "Shape of the minimap. Enabled = round, disabled = square."
@@ -4218,7 +6871,19 @@ msgstr "Debug-Info zeigen"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
-msgstr "Entitiy-Auswahlboxen zeigen"
+msgstr "Entity-Auswahlboxen zeigen"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Entityauswahlboxen zeigen\n"
+"Nach Änderung ist ein Neustart erforderlich."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Standardmäßig Hintergründe für Namensschilder anzeigen"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
@@ -4226,28 +6891,74 @@ msgstr "Herunterfahrnachricht"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+"Größe der Mapchunks, die vom Kartengenerator generiert werden, in Karten-\n"
+"blöcken (16 Blöcke) angegeben.\n"
+"ACHTUNG! Es bringt nichts und es birgt viele Gefahren, diesen Wert über\n"
+"5 zu erhöhen.\n"
+"Die Höhlen- und Verliesdichte wird erhöht, wenn dieser Wert verringert "
+"wird.\n"
+"Die Änderung dieses Wertes ist für besondere Verwendungszwecke, es\n"
+"wird empfohlen, ihn unverändert zu lassen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
-"Größe der Stücke, die gleichzeitig vom Kartengenerator erzeugt werden,\n"
-"in Kartenblöcken (16×16×16 Blöcke)."
+"Größe vom Kartenblock-Cache des Meshgenerators. Wird sie\n"
+"erhöht, wird die Cache-Trefferrate erhöht, was die Anzahl der Daten,\n"
+"die vom Hauptthread kopiert werden, reduziert und somit das Stottern "
+"reduziert."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Himmelskörperorbitneigung"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "w-Ausschnitt"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Hänge und Füllungen arbeiten zusammen, um die Höhen zu verändern."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Max. Anzahl kleiner Höhlen"
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
-msgstr "Hänge und Füllungen arbeiten zusammen, um die Höhen zu verändern"
+msgid "Small cave minimum number"
+msgstr "Min. Anzahl kleiner Höhlen"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+"Kleinräumige Luftfeuchtigkeitsvarriierung für Biomübergänge an Grenzen."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr "Kleinräumige Temperaturvariierung für Biomübergänge an Grenzen."
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
-msgstr "Geglättetes Licht"
+msgstr "Weiches Licht"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
-"Glättet Kamerabewegungen bei der Fortbewegung und\n"
-"beim Umsehen. Nützlich zum Aufnehmen von Videos."
+"Glättet Kamerabewegungen bei der Fortbewegung und beim Umsehen. Auch bekannt "
+"als „Look Smoothing“ oder „Mouse Smoothing“.\n"
+"Nützlich zum Aufnehmen von Videos."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
@@ -4262,8 +6973,20 @@ msgid "Sneak key"
msgstr "Schleichtaste"
#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Schleichgeschwindigkeit"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Schleichgeschwindigkeit, in Blöcken pro Sekunde."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Weicher-Schatten-Radius"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr "Sound"
+msgstr "Ton"
#: src/settings_translation_file.cpp
msgid ""
@@ -4272,43 +6995,144 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
-"Spezifiziert die URL, von der die Clients die Medien (Texturen, Sounds, …) "
+"Spezifiziert die URL, von der die Clients die Medien (Texturen, Töne, …) "
"herunterladen.\n"
"$Dateiname sollte von $remote_media$Dateiname mittels cURL erreichbar sein\n"
"(diese Einstellung sollte also mit einem Schrägstrich enden).\n"
"Dateien, die nicht über diesen Server erreichbar sind, werden auf dem "
-"üblichen\n"
-"Weg heruntergeladen (UDP)."
+"üblichen Weg heruntergeladen (UDP)."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Legt die Standardstapelgröße von Blöcken, Gegenständen und Werkzeugen fest.\n"
+"Beachten Sie, dass Mods oder Spiele eine explizite Stapelgröße für "
+"bestimmte\n"
+"(oder alle) Gegenstände setzen kann."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Eine vollständige Aktualisierung der Schattenkarte über der angegebenen\n"
+"Anzahl Frames ausbreiten. Höhere Werte können dazu führen, dass\n"
+"Schatten langsamer reagieren,\n"
+"niedrigere Werte sind rechenintensiver.\n"
+"Minimalwert: 1; Maximalwert: 16"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ausbreitung des Lichtkurvenverstärkungsintervalls.\n"
+"Regelt die Breite des Intervalls, das verstärkt werden soll.\n"
+"Standardabweichung der Lichtkurvenverstärkungs-Gaußfunktion."
#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr "Statische Einstiegsposition"
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
-msgstr "Stärke der generierten Normalmaps."
+msgid "Steepness noise"
+msgstr "Steilheitsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Stufenberggrößenrauschen"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
-msgstr "Stärke von Parallax."
+msgid "Step mountain spread noise"
+msgstr "Stufenbergsausbreitungsrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Stärke von 3-D-Modus-Parallax."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Stärke der Lichtkurvenverstärkung.\n"
+"Die 3 Verstärkungsparameter („boost“) definieren ein Intervall der\n"
+"Lichtkurve, die in ihrer Helligkeit verstärkt wird."
#: src/settings_translation_file.cpp
msgid "Strict protocol checking"
msgstr "Strikte Protokollversionsprüfung"
#: src/settings_translation_file.cpp
-msgid "Support older servers"
-msgstr "Ältere Server unterstützen"
+msgid "Strip color codes"
+msgstr "Farbcodes entfernen"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Oberfläche mit optionalem Wasser, das auf einer durchgehenden\n"
+"Schwebelandebene platziert wird. Wasser ist standardmäßig deaktiviert\n"
+"und wird nur platziert, wenn dieser Wert auf einem Wert größer als\n"
+"„mgv7_floatland_ymax” minus „mgv7_floatland_taper” (dem Start\n"
+"der oberen Zuspitzung) gesetzt wurde.\n"
+"***ACHTUNG, MÖGLICHE GEFAHR FÜR WELTEN UND SERVERPERFORMANZ***:\n"
+"Wenn die Wasserplatzierung aktiviert wird, müssen die Schwebeländer\n"
+"konfiguriert und darauf abgeklopft werden, dass sie eine durchgehende\n"
+"Ebene sind, indem „mgv7_floatland_density“ auf 2.0 (oder einem anderen\n"
+"erforderlichen Wert, abhängig von „mgv7_np_floatland“) gesetzt wird,\n"
+"um ein serverbelastendes extremes Wasserfließen und einer gewaltigen\n"
+"Überflutung der Weltoberfläche unten zu vermeiden."
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
msgstr "Synchrones SQLite"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr "Temperaturvariierung für Biome."
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr "Temporäre Einstellungen"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Geländealternativrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Geländebasisrauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
msgstr "Geländehöhe"
#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Höheres-Gelände-Rauschen"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Geländerauschen"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
@@ -4329,28 +7153,91 @@ msgstr ""
"Passen Sie diesen Wert in Richtung 0.0 für ein größeres Verhältnis an."
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Geländepersistenzrauschen"
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
-msgstr "Texturpfad"
+msgstr "Texturenpfad"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
-msgstr "Die Höhe, ab der die Temperatur um 20 °C fällt"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Texturengröße zum Rendern der Schattenkarte.\n"
+"Dies muss eine Zweierpotenz sein.\n"
+"Größere Werte erzeugen bessere Schatten, aber dies ist auch rechenintensiver."
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"Texturen auf einem Block können entweder auf dem Block oder zur Welt\n"
+"ausgerichtet sein. Der erste Modus eignet sich besser für Dinge wie\n"
+"Maschinen, Möbel, usw., während der zweite Modus besser zu Treppen\n"
+"und Mikroblöcken passt.\n"
+"Allerdings, da diese Möglichkeit neu ist, könnte sie von älteren Servern\n"
+"nicht unterstützt werden. Diese Einstellung ermöglicht es, dies für "
+"bestimmte\n"
+"Blocktypen zu erzwingen. Bitte beachten Sie, dass diese Option als\n"
+"EXPERIMENTELL eingestuft wird und nicht richtig funktionieren könnte."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "Die URL für den Inhaltespeicher"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "Der Totbereich des Joysticks"
#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"Das Standardformat, in dem Profile gespeichert werden,\n"
+"wenn „/profiler save [Format]“ ohne Format aufgerufen wird."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr "Die Tiefe der Erde oder eines anderen Biomfüllerblocks."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"Der Dateipfad relativ zu Ihrem Weltpfad, in dem Profile abgespeichert werden."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
-msgstr "Die Tiefe von Erde oder einem anderem Füller"
+msgid "The identifier of the joystick to use"
+msgstr "Die Kennung des zu verwendeten Joysticks"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+"Die Länge in Pixeln, die benötigt wird, damit die Touchscreen-Interaktion "
+"beginnt."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Die maximale Höhe der Oberfläche von Flüssigkeitswellen.\n"
+"4.0 = Wellenhöhe ist zwei Blöcke.\n"
+"0.0 = Wellen bewegen sich gar nicht.\n"
+"Standard ist 1.0 (1/2 Block).\n"
+"Dafür müssen Flüssigkeitswellen aktiviert sein."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
@@ -4363,18 +7250,51 @@ msgid ""
msgstr ""
"Die Privilegien, die neue Benutzer automatisch erhalten.\n"
"Siehe /privs im Spiel für eine vollständige Liste aller möglichen "
-"Privilegien\n"
-"auf Ihrem Server und die Modkonfiguration."
+"Privilegien auf Ihrem Server und die Modkonfiguration."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
-msgstr "Das Render-Backend für Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+"Der Radius des Volumens von Blöcken um jeden Spieler, der dem\n"
+"Active-Block-Zeugs unterliegt, in Kartenblöcken angegeben (16 Blöcke).\n"
+"In aktiven Kartenblöcken werden Objekte geladen und ABMs ausgeführt.\n"
+"Dies ist außerdem die minimale Reichweite, in der aktive Objekte (Mobs) "
+"verwaltet\n"
+"werden. Dies sollte zusammen mit active_object_send_range_blocks\n"
+"konfiguriert werden."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"Das Renderer-Backend.\n"
+"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 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 ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
+"Die Empfindlichkeit der Joystick-Achsen, um den\n"
+"Pyramidenstumpf der Spielansicht herumzubewegen."
#: src/settings_translation_file.cpp
msgid ""
@@ -4398,36 +7318,54 @@ msgstr ""
"Die Zeit (in Sekunden), die die Flüssigkeitswarteschlange über die "
"Verarbeitungs-\n"
"kapazität hinauswachsen darf, bevor versucht wird, ihre Größe durch das\n"
-"Verwerfen alter Warteschlangeneinträge zu reduzieren. Der Wert 0 "
-"deaktiviert\n"
+"Verwerfen alter Warteschlangeneinträge zu reduzieren. Der Wert 0 deaktiviert "
"diese Funktion."
#: src/settings_translation_file.cpp
-#, fuzzy
+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 ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
-"Das Intervall in Sekunden, in dem Rechtsklicks wiederholt werden, wenn die "
-"rechte\n"
-"Maustaste gedrückt gehalten wird."
+"Das Intervall in Sekunden, in dem Ereignisse wiederholt werden,\n"
+"wenn eine Joystick-Tastenkombination gedrückt gehalten wird."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
-"Das Intervall 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 "This font will be used for certain languages."
-msgstr "Diese Schrift wird von bestimmten Sprachen benutzt."
+msgid "The type of joystick"
+msgstr "Der Typ des Joysticks"
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
-msgstr "Zeit zwischen Active-Block-Management-Zyklen"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+"Die vertikale Distanz, über die die Hitze um 20 abfällt, falls "
+"„altitude_chill“\n"
+"aktiviert ist. Außerdem ist dies die vertikale Distanz, über die die "
+"Luftfeuchte\n"
+"um 10 abfällt, wenn „altitude_dry“ aktiviert ist."
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Das dritte von vier 2-D-Rauschen, welche gemeinsam Hügel-/Bergkettenhöhe "
+"definieren."
#: src/settings_translation_file.cpp
msgid ""
@@ -4438,6 +7376,12 @@ msgstr ""
"existieren dürfen. Der Wert -1 deaktiviert diese Funktion."
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+"Tageszeit, wenn eine neue Welt gestartet wird, in Millistunden (0-23999) "
+"angegeben."
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr "Zeit-Sendeintervall"
@@ -4446,10 +7390,10 @@ msgid "Time speed"
msgstr "Zeitgeschwindigkeit"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
-"Zeit, nach der der Client nicht benutzte Kartendaten aus\n"
-"dem Speicher löscht."
+"Zeit, nach dem Clients nicht benutzte Kartendaten aus dem Speicher löschen, "
+"in Sekunden."
#: src/settings_translation_file.cpp
msgid ""
@@ -4458,11 +7402,10 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
-"Um Verzögerungen zu reduzieren, werden Kartenblockübertragungen verlangsamt, "
-"während\n"
-"ein Spieler etwas baut. Diese Einstellung bestimmt, wie lange sie "
-"verlangsamt sind,\n"
-"nachdem ein Block platziert oder entfernt wurde."
+"Um Verzögerungen zu reduzieren, werden Kartenblockübertragungen "
+"verlangsamt,\n"
+"wenn ein Spieler etwas baut. Diese Einstellung bestimmt, wie lange sie\n"
+"verlangsamt werden, nachdem ein Block platziert oder entfernt wurde."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
@@ -4473,6 +7416,26 @@ msgid "Tooltip delay"
msgstr "Tooltip-Verzögerung"
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Touchscreenschwellwert"
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr "Touchscreen"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Kompromisse für Performanz"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr "Transparenzsortierungsdistanz"
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Bäumerauschen"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
msgstr "Trilinearer Filter"
@@ -4480,11 +7443,11 @@ msgstr "Trilinearer Filter"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
"Wahr = 256\n"
"Falsch = 128\n"
-"Nützlich, um die Übersichtskarte performanter auf langsamen Maschinen zu "
+"Nützlich, um die Übersichtskarte ruckelfrei auf langsamen Maschinen zu "
"machen."
#: src/settings_translation_file.cpp
@@ -4497,6 +7460,25 @@ msgstr ""
"URL der Serverliste, die in der Mehrspieler-Registerkarte angezeigt wird."
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Unterabtastung"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+"Unterabtastung ist ähnlich der Verwendung einer niedrigeren "
+"Bildschirmauflösung, aber sie wird nur auf die Spielwelt angewandt, während "
+"die GUI intakt bleibt.\n"
+"Dies sollte einen beträchtlichen Performanzschub auf Kosten einer weniger "
+"detaillierten Grafik geben.\n"
+"Hohe Werte führen zu einer weniger detaillierten Grafik."
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr "Unbegrenzte Spielerübertragungsdistanz"
@@ -4505,6 +7487,14 @@ msgid "Unload unused server data"
msgstr "Nicht benutzte Serverdaten entladen"
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Y-Obergrenze von Verliesen."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Y-Obergrenze von Schwebeländern."
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr "Wolken blockförmig statt flach aussehen lassen."
@@ -4515,54 +7505,117 @@ msgstr "Eine Wolkenanimation für den Hintergrund im Hauptmenü benutzen."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
msgstr ""
-"Anisotrope Filterung verwenden, wenn auf Texturen aus einem\n"
-"gewissen Blickwinkel heraus geschaut wird."
+"Anisotrope Filterung verwenden, wenn auf Texturen aus einem gewissen "
+"Blickwinkel heraus geschaut wird."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
msgstr "Bilineare Filterung bei der Skalierung von Texturen benutzen."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Benutztaste"
+msgid ""
+"Use mipmapping 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-Mapping benutzen, um Texturen zu skalieren. Könnte die Performanz\n"
+"leicht erhöhen, besonders, wenn ein hochauflösendes Texturenpaket benutzt "
+"wird.\n"
+"Eine gammakorrigierte Herunterskalierung wird nicht unterstützt."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
-"Mip-Mapping benutzen, um Texturen zu skalieren. Kann die Performanz\n"
-"leicht erhöhen."
+"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."
msgstr "Trilineare Filterung bei der Skalierung von Texturen benutzen."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
-msgstr "Vertikale Synchronisation"
+msgid "User Interfaces"
+msgstr "Benutzeroberflächen"
#: src/settings_translation_file.cpp
msgid "VBO"
msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr "VSync"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
msgstr "Taltiefe"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley fill"
msgstr "Talfüllung"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley profile"
msgstr "Talprofil"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
msgstr "Talhang"
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
-msgstr "C-Täler-Flags"
+msgid "Variation of biome filler depth."
+msgstr "Variierung der Biomfülltiefe."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Varriierung der maximalen Berghöhe (in Blöcken)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variierung der Anzahl von Höhlen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+"Variierung der vertikalen Skalierung des Geländes.\n"
+"Falls das Rauschen < -0.55 ist, ist das Gelände nahezu flach.\n"
+"(Beachten Sie die englische Notation mit Punkt als Dezimaltrennzeichen.)"
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "Variiert die Tiefe der Blöcke an der Oberfläche von Biomen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+"Variiert die Rauheit des Geländes.\n"
+"Definiert den „persistence“-Wert für „terrain_base“- und „terrain_alt“-"
+"Rauschen."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Varriiert die Steilheit von Klippen."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Vertikale Klettergeschwindigkeit, in Blöcken pro Sekunde."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
@@ -4573,16 +7626,12 @@ msgid "Video driver"
msgstr "Grafiktreiber"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr "Auf- und Abbewegung der Ansicht"
+msgid "View bobbing factor"
+msgstr "Faktor für Wackeln der Ansicht"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
-"Sichtweite in Blöcken.\n"
-"Minimum = 20"
+msgid "View distance in nodes."
+msgstr "Sichtweite in Blöcken."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
@@ -4593,32 +7642,56 @@ msgid "View range increase key"
msgstr "Taste „Sichtweite erhöhen“"
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Zoomansichtstaste"
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr "Sichtweite"
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "Virtueller Joystick löst Aux1-Taste aus"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr "Tonlautstärke"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Lautstärke aller Töne.\n"
+"Dafür muss das Tonsystem aktiviert sein."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
-"W-Koordinate des generierten 3D-Ausschnitts eines 4D-Fraktals.\n"
-"Bestimmt, welcher 3D-Ausschnitt der 4D-Form generiert wird.\n"
-"Hat keine Auswirkung auf 3D-Fraktale.\n"
+"W-Koordinate des generierten 3-D-Ausschnitts eines 4-D-Fraktals.\n"
+"Bestimmt, welcher 3-D-Ausschnitt der 4-D-Form generiert wird.\n"
+"Beeinflusst die Form des Fraktals.\n"
+"Hat keine Auswirkung auf 3-D-Fraktale.\n"
"Die Weite liegt grob zwischen -2 und 2."
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Geh- und Fluggeschwindigkeit, in Blöcken pro Sekunde."
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr "Gehgeschwindigkeit"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Wasserkammern"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Geh-, Flug- und Klettergeschwindigkeit im Schnellmodus, in Blöcken pro "
+"Sekunde."
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4637,24 +7710,28 @@ msgid "Waving leaves"
msgstr "Wehende Blätter"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Wehende Pflanzen"
+msgid "Waving liquids"
+msgstr "Flüssigkeitswellen"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Wasserwellen"
+msgid "Waving liquids wave height"
+msgstr "Flüssigkeitswellen: Wellenhöhe"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Wasserwellenhöhe"
+msgid "Waving liquids wave speed"
+msgstr "Flüssigkeitswellen: Wellengeschwindigkeit"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "Wasserwellenlänge"
+msgid "Waving liquids wavelength"
+msgstr "Flüssigkeitswellen: Wellenlänge"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Wasserwellengeschwindigkeit"
+msgid "Waving plants"
+msgstr "Wehende Pflanzen"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "Weblinkfarbe"
#: src/settings_translation_file.cpp
msgid ""
@@ -4668,7 +7745,6 @@ msgstr ""
"die Inventarbilder von Blöcken)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"When gui_scaling_filter_txr2img is true, copy those images\n"
"from hardware to software for scaling. When false, fall back\n"
@@ -4677,19 +7753,21 @@ msgid ""
msgstr ""
"Falls gui_scaling_filter_txr2img auf „wahr“ gesetzt ist, werden\n"
"diese Bilder von der Hardware zur Software für die Skalierung\n"
-"kopiert. Falls es auf „falsch“ gesetzt ist, wird für alte Videotreiber,\n"
-"die das Herunterladen von Texturen zurück von der Hardware\n"
-"nicht vernünftig unterstützen."
+"kopiert. Falls es auf „falsch“ gesetzt ist, wird die alte Skalierungs-\n"
+"methode angewandt, für Grafiktreiber, welche das\n"
+"Herunterladen von Texturen zurück von der Hardware nicht\n"
+"korrekt unterstützen."
#: src/settings_translation_file.cpp
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
"Wenn bilineare, trilineare oder anisotrope Filter benutzt werden, können\n"
"niedrigauflösende Texturen verschwommen sein, also werden sie automatisch\n"
@@ -4697,36 +7775,18 @@ msgstr ""
"die\n"
"minimale Texturengröße für die vergrößerten Texturen; höhere Werte führen\n"
"zu einem schärferen Aussehen, aber erfordern mehr Speicher. Zweierpotenzen\n"
-"werden empfohlen. Ein Wert größer als 1 könnte keinen sichtbaren Effekt\n"
-"hervorbringen, es sei denn, die bilineare, trilineare oder anisotropische "
-"Filterung\n"
-"ist aktiviert."
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-"Wo der Kartengenerator aufhört.\n"
-"Bitte beachten Sie:\n"
-"- Begrenzt auf 31000 (größere Werte sind wirkungslos).\n"
-"- Der Kartengenerator arbeitet in Gruppen von 80×80×80 Blöcken (5×5×5 "
-"Kartenblöcke).\n"
-"- Diese Gruppen haben einen Abstand von [-32, -32] Blöcken vom Ursprung.\n"
-"- Nur Gruppen, welche innerhalb der von map_generation_limit definierten "
-"Grenze liegen,\n"
-" werden erzeugt."
+"werden empfohlen. Diese Einstellung trifft NUR dann in Kraft, falls\n"
+"der bilineare/trilineare/anisotrope Filter aktiviert ist.\n"
+"Dies wird außerdem verwendet als die Basisblocktexturengröße für\n"
+"welt-ausgerichtete automatische Texturenskalierung."
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
-"Ob FreeType-Schriften benutzt werden.\n"
-"Dafür muss Minetest mit FreeType-Unterstüzung kompiliert worden sein."
+"Ob Namensschildhintergründe standardmäßig angezeigt werden sollen.\n"
+"Mods können immer noch einen Hintergrund setzen."
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
@@ -4751,9 +7811,10 @@ msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
-"Ob Clients gefragt werden sollen, sich nach einem (Lua-)Absturz\n"
-"neu zu verbinden. Auf „wahr“ setzen, falls Ihr Server für auto-\n"
-"matische Neustarts eingerichtet ist."
+"Ob Clients gefragt werden sollen, sich nach einem (Lua-)Absturz neu zu "
+"verbinden.\n"
+"Auf „wahr“ setzen, falls Ihr Server für automatische Neustarts eingerichtet "
+"ist."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
@@ -4761,31 +7822,55 @@ msgstr "Ob das Ende des sichtbaren Gebietes im Nebel verschwinden soll."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
-"Ob der Client Debug-Informationen zeigen soll (hat die selbe Wirkung\n"
-"wie das Drücken von F5)."
+"Ob die Töne stummgeschaltet werden. Man kann die Töne jederzeit "
+"stummschalten,\n"
+"außer, wenn das Tonsystem ausgeschaltet wurde (enable_sound=false).\n"
+"Im Spiel können die Töne mit der Stummtaste oder mit Hilfe des\n"
+"Pausemenüs stummgeschaltet werden."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
-"Ob ältere Server vor Protokollversion 25 unterstützt werden sollen.\n"
-"Aktivieren Sie dies, falls Sie sich mit Servern der Version 0.4.12 und\n"
-"davor verbinden möchten. Server ab 0.4.13 werden funktionieren,\n"
-"Server der Version 0.4.12-dev könnten funktionieren.\n"
-"Die Deaktivierung dieser Einstellung wird Ihr Passwort besser schützen."
+"Ob technische Namen angezeigt werden sollen.\n"
+"Betrifft Mods und Texturenpakete in den Inhalte- und Modauswahlmenüs,\n"
+"als auch die Einstellungsnamen in Alle Einstellungen.\n"
+"Wird vom Kontrollkästchen im „Alle Einstellungen“-Menü beeinflusst."
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr "Breiten-Komponente der anfänglichen Fenstergröße."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+"Ob der Client Debug-Informationen zeigen soll (hat die selbe Wirkung wie das "
+"Drücken von F5)."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
-msgstr "Breite der Linien der Auswahlbox um Blöcken."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Breiten-Komponente der anfänglichen Fenstergröße. Im Vollbildmodus ignoriert."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr "Breite der Auswahlboxlinien um Blöcke."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Nur für Windows-Systeme: Startet Minetest mit dem Kommandozeilenfenster im\n"
+"Hintergrund. Enthält die selbe Information wie die Datei debug.txt "
+"(Standardname)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4796,469 +7881,593 @@ msgstr ""
"Nicht benötigt, wenn vom Hauptmenü aus gestartet wird."
#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Weltstartzeit"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"Welt-ausgerichtete Texturen können skaliert werden, um über mehrere\n"
+"Blöcke zu reichen. Allerdings könnte der Server nicht die Skalierung\n"
+"senden, die Sie gerne hätten, besonders dann, wenn Sie ein besonders\n"
+"gestaltetes Texturenparket benutzen; mit dieser Einstellung versucht\n"
+"der Client, die Skalierung automatisch basierend auf der Texturengröße\n"
+"zu ermitteln.\n"
+"Sie auch: texture_min_size.\n"
+"Achtung: Diese Einstellung ist EXPERIMENTELL!"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "Welt-ausgerichtete-Texturen-Modus"
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr "Y-Höhe des flachen Bodens."
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
-msgstr "Y-Wert der Obergrenze von großen pseudozufälligen Höhlen."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"Y der Bergdichtenverlaufsnullhöhe. Benutzt, um Berge vertikal zu verschieben."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Y-Wert der Obergrenze von großen Höhlen."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Y-Entfernung, über welche Hohlräume zu voller Größe expandieren."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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-Distanz, über welche die Schwebeländer sich von voller Dichte\n"
+"zu nichts zuspitzen. Die Zuspitzung beginnt an dieser Distanz vom\n"
+"Y-Limit.\n"
+"Für eine durchgehende Schwebelandebene regelt dies die Höhe von\n"
+"Hügeln/Bergen.\n"
+"Muss kleiner als oder gleich der Hälfte der Distanz zwischen den\n"
+"Y-Limits sein."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Y-Höhe der durchschnittlichen Geländeoberfläche."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Y-Höhe der Obergrenze von Hohlräumen."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Y-Höhe von erhöhtem Gelände, welches Klippen erzeugt."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Y-Höhe von niedrigerem Gelände und dem Meeresgrund."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Y-Höhe vom Meeresgrund."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr "cURL"
#: src/settings_translation_file.cpp
msgid "cURL file download timeout"
msgstr "cURL-Dateidownload-Zeitüberschreitung"
#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "cURL-Interaktiv-Zeitüberschreitung"
+
+#: src/settings_translation_file.cpp
msgid "cURL parallel limit"
msgstr "cURL-Parallel-Begrenzung"
-#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "cURL-Zeitüberschreitung"
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kreativmodus: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Schaden: "
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen flat.\n"
-#~ "Occasional lakes and hills can be added to the flat world.\n"
-#~ "The default flags set in the engine are: none\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
#~ msgstr ""
-#~ "Kartengenerierungsattribute speziell für den flachen Kartengenerator.\n"
-#~ "Gelegentlich werden Seen und Hügel zur flachen Welt hinzugefügt.\n"
-#~ "Die von der Engine standardmäßig gesetzten Flags sind: keine.\n"
-#~ "Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n"
-#~ "Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-#~ "werden von der Standardeinstellung unverändert gelassen.\n"
-#~ "Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-#~ "zu deaktivieren."
+#~ "0 = Parallax-Mapping mit Stufeninformation (schneller).\n"
+#~ "1 = Relief-Mapping (langsamer, genauer)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Adresse / Port"
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen v7.\n"
-#~ "The 'ridges' flag controls the rivers.\n"
-#~ "The default flags set in the engine are: mountains, ridges\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
#~ msgstr ""
-#~ "Kartengenerierungsattribute speziell für den Kartengenerator v7.\n"
-#~ "Das „ridges“-Flag steuert die Flüsse.\n"
-#~ "Die von der Engine standardmäßig gesetzten Flags lauten:\n"
-#~ "„mountains, ridges“.\n"
-#~ "Die Flags-Zeichenkette modifiert den Standardwert der Engine.\n"
-#~ "Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-#~ "werden von der Standardeinstellung unverändert gelassen.\n"
-#~ "Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-#~ "zu deaktivieren."
-
-#~ msgid "Item textures..."
-#~ msgstr "Inventarbilder ..."
+#~ "Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n"
+#~ "Diese Einstellung ist rein clientseitig und wird vom Server ignoriert."
-#~ msgid ""
-#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node "
-#~ "completely.\n"
-#~ "Note that this is not quite optimized and that smooth lighting on the\n"
-#~ "water surface doesn't work with this."
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
#~ msgstr ""
-#~ "Eine etwas niedrigere Wasseroberfläche aktivieren, damit der Node\n"
-#~ "nicht vollständig „gefüllt“ wird. Beachten Sie, dass dies nicht wirklich\n"
-#~ "optimiert wurde, und dass weiches Licht auf der Wasseroberfläche\n"
-#~ "nicht mit dieser Einstellung funktioniert."
+#~ "Verändert, wie Schwebeländer des Bergtyps sich über und unter dem "
+#~ "Mittelpunkt zuspitzen."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Sind Sie sicher, dass Sie die Einzelspielerwelt löschen wollen?"
+
+#~ msgid "Back"
+#~ msgstr "Rücktaste"
+
+#~ msgid "Basic"
+#~ msgstr "Grundlegend"
-#~ msgid "Enable selection highlighting for nodes (disables selectionbox)."
-#~ msgstr "Blöcke bei Auswahl aufleuchten lassen (Deaktiviert die Auswahlbox)."
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bits pro Pixel (Farbtiefe) im Vollbildmodus."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Bumpmapping"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Bumpmapping"
+
+#~ msgid "Center of light curve mid-boost."
+#~ msgstr "Mitte der Lichtkurven-Mittenverstärkung."
#~ msgid ""
-#~ "Julia set: (X,Y,Z) offsets from world centre.\n"
-#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes."
+#~ "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 ""
-#~ "Julia-Menge: (X,Y,Z)-Versatz vom Mittelpunkt der Welt.\n"
-#~ "Reichweite liegt grob von -2 bis 2, wird mit j_scale für Versätze in\n"
-#~ "Nodes multipliziert."
+#~ "Ändert die Hauptmenü-UI:\n"
+#~ "- Full: Mehrere Einzelspielerwelten, Spiel- und Texturenpaketauswahl, "
+#~ "usw.\n"
+#~ "- Simple: Eine Einzelspielerwelt, keine Spiel- oder "
+#~ "Texturenpaketauswahl. Könnte\n"
+#~ "für kleinere Bildschirme nötig sein."
+
+#~ msgid "Config mods"
+#~ msgstr "Mods konfigurieren"
+
+#~ msgid "Configure"
+#~ msgstr "Konfigurieren"
+
+#~ msgid "Connect"
+#~ msgstr "Verbinden"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Regelt die Sinkgeschwindigkeit in Flüssigkeiten."
#~ msgid ""
-#~ "Julia set: W value determining the 4D shape.\n"
-#~ "Range roughly -2 to 2."
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
#~ msgstr ""
-#~ "Julia-Menge: W-Wert, der die 4D-Form festlegt.\n"
-#~ "Weite liegt grob zwischen -2 und 2."
+#~ "Legt die Dichte von Gebirgen in den Schwebeländern fest.\n"
+#~ "Dies ist ein Versatz, der zum Rauschwert „mgv7_np_mountain“ addiert wird."
-#~ msgid ""
-#~ "Key for decreasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
#~ msgstr ""
-#~ "Taste zur Reduzierung der Sichtweite. Verändert die minimale Sichtweite.\n"
-#~ "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere "
+#~ "Tunnel."
+
+#~ msgid "Credits"
+#~ msgstr "Mitwirkende"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Fadenkreuzfarbe (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Schaden aktiviert"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "Dunkelheits-Steilheit"
#~ msgid ""
-#~ "Key for increasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
#~ msgstr ""
-#~ "Taste zur Erhöhung der Sichtweite. Verändert die minimale Sichtweite.\n"
-#~ "Siehe http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Standardzeitlimit für cURL, in Millisekunden.\n"
+#~ "Hat nur eine Wirkung, wenn mit cURL kompiliert wurde."
#~ msgid ""
-#~ "Mandelbrot set: (X,Y,Z) offsets from world centre.\n"
-#~ "Range roughly -2 to 2, multiply by m_scale for offsets in nodes."
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
#~ msgstr ""
-#~ "Mandelbrotmenge: (X,Y,Z)-Versatz vom Mittelpunkt der Welt.\n"
-#~ "Reichweite liegt grob von -2 bis 2, wird mit m_scale für\n"
-#~ "Versätze in Nodes multipliziert."
-
-#~ msgid "Mandelbrot set: Approximate (X,Y,Z) scales in nodes."
-#~ msgstr "Mandelbrotmenge: Approximative (X,Y,Z)-Skalierungen in Nodes."
+#~ "Definiert Gebiete von ruhig verlaufendem\n"
+#~ "Gelände in den Schwebeländern. Weiche\n"
+#~ "Schwebeländer treten auf, wenn der\n"
+#~ "Rauschwert > 0 ist."
#~ msgid ""
-#~ "Mandelbrot set: Iterations of the recursive function.\n"
-#~ "Controls scale of finest detail."
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
#~ msgstr ""
-#~ "Mandelbrotmenge: Iterationen der rekursiven Funktion.\n"
-#~ "Steuert die Skalierung mit einem sehr hohem Detailgrad."
+#~ "Definiert die Sampling-Schrittgröße der Textur.\n"
+#~ "Ein höherer Wert resultiert in weichere Normal-Maps."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Favorit löschen"
#~ msgid ""
-#~ "Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape.\n"
-#~ "Range roughly -2 to 2."
+#~ "Deprecated, define and locate cave liquids using biome definitions "
+#~ "instead.\n"
+#~ "Y of upper limit of lava in large caves."
#~ msgstr ""
-#~ "Madnelbrotmenge: W-Koordinate des generierten 3D-Ausschnitts der 4D-"
-#~ "Form.\n"
-#~ "Die Weite liegt grob zwischen -2 und 2."
+#~ "Misbilligte Einstellung. Definieren/Finden Sie statdessen "
+#~ "Höhlenflüssigkeiten in Biomdefinitionen.\n"
+#~ "Y der Obergrenze von Lava in großen Höhlen."
-#~ msgid ""
-#~ "Map generation attributes specific to Mapgen fractal.\n"
-#~ "'julia' selects a julia set to be generated instead of a mandelbrot set.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them."
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
#~ msgstr ""
-#~ "Kartengenerierungsattribute, die speziell für den Fraktale-\n"
-#~ "Kartenerzeuger sind.\n"
-#~ "„julia“ wählt für die Erzeugung eine Julia-Menge statt einer\n"
-#~ "Mandelbrotmenge aus.\n"
-#~ "Bitschalter, welche in der Bitschalterzeichenkette nicht angegeben sind,\n"
-#~ "werden von der Standardeinstellung unverändert gelassen.\n"
-#~ "Bitschalter, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-#~ "zu deaktivieren."
+#~ "Laden Sie sich ein Spiel (wie Minetest Game) von minetest.net herunter"
-#~ msgid "Mapgen fractal mandelbrot iterations"
-#~ msgstr "Mandelbrotiterationen für Fraktale-Kartenerzeuger"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Spiele können von minetest.net heruntergeladen werden"
-#~ msgid "Mapgen fractal mandelbrot offset"
-#~ msgstr "Mandelbrotversatz für Fraktale-Kartenerzeuger"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 wird heruntergeladen und installiert, bitte warten …"
-#~ msgid "Mapgen fractal mandelbrot scale"
-#~ msgstr "Mandelbrotskalierung für Fraktale-Kartenerzeuger"
+#~ msgid "Enable VBO"
+#~ msgstr "VBO aktivieren"
-#~ msgid "Mapgen fractal mandelbrot slice w"
-#~ msgstr "Mandelbrot-w-Ausschnitt für Fraktale-Kartenerzeuger"
+#~ msgid "Enable register confirmation"
+#~ msgstr "Registrierungsbestätigung aktivieren"
#~ msgid ""
-#~ "Maximum distance above water level for player spawn.\n"
-#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n"
-#~ "Smaller values may result in a suitable spawn point not being found,\n"
-#~ "resulting in a spawn at (0, 0, 0) possibly buried underground."
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Höchstabstand über dem Meeresspiegel für den Spieler-\n"
-#~ "startpunkt. Größere Werte führen zu Startpunkten näher an\n"
-#~ "(x = 0, z = 0). Kleinere Werte können dazu führen, dass kein\n"
-#~ "brauchbarer Startpunkt gefunden wird, was wiederum zu einem\n"
-#~ "Startpunkt bei (0, 0, 0) führt, der möglicherweise im Untergrund\n"
-#~ "eingegraben ist."
+#~ "Aktiviert das Bump-Mapping für Texturen. Normal-Maps müssen im "
+#~ "Texturenpaket\n"
+#~ "vorhanden sein oder müssen automatisch erzeugt werden.\n"
+#~ "Shader müssen aktiviert werden, bevor diese Einstellung aktiviert werden "
+#~ "kann."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Aktiviert filmisches Tone-Mapping"
#~ msgid ""
-#~ "Minimum wanted FPS.\n"
-#~ "The amount of rendered stuff is dynamically set according to this. and "
-#~ "viewing range min and max."
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
#~ msgstr ""
-#~ "Minimal gewünschte Bildwiederholrate.\n"
-#~ "Die Anzahl der berechneten Dinge wird anhand dieses Werts dynamisch "
-#~ "angepasst; auch\n"
-#~ "die minimale und maximale Sichtweite werden angepasst."
-
-#~ msgid "New style water"
-#~ msgstr "Wasser im neuen Stil"
+#~ "Aktiviert die spontane Normalmap-Erzeugung (Prägungseffekt).\n"
+#~ "Für diese Einstellung muss außerdem Bump-Mapping aktiviert sein."
#~ msgid ""
-#~ "Pre-generate all item visuals used in the inventory.\n"
-#~ "This increases startup time, but runs smoother in-game.\n"
-#~ "The generated textures can easily exceed your VRAM, causing artifacts in "
-#~ "the inventory."
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Alle Itembilder im Inventar vor dem Spielstart erzeugen.\n"
-#~ "Dies erhöht die Vorbereitungszeit, wird aber zu einem flüssigerem Spiel "
-#~ "führen.\n"
-#~ "Die erzeugten Texturen können Ihr VRAM leicht überlasten, was Artefakte "
-#~ "im Inventar\n"
-#~ "verursachen kann."
+#~ "Aktiviert Parralax-Occlusion-Mapping.\n"
+#~ "Hierfür müssen Shader aktiviert sein."
-#~ msgid "Preload inventory textures"
-#~ msgstr "Texturen vorgenerieren"
+#~ msgid "Enter "
+#~ msgstr "Eingabe "
#~ msgid ""
-#~ "The allowed adjustment range for the automatic rendering range "
-#~ "adjustment.\n"
-#~ "Set this to be equal to viewing range minimum to disable the auto-"
-#~ "adjustment algorithm."
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
#~ msgstr ""
-#~ "Die erlaubte Anpassungsreichweite für die automatische Render-"
-#~ "Reichweitenanpassung.\n"
-#~ "Setzen Sie den Wert auf den gleichen Wert wie die minimale Sichtweite, um "
-#~ "den automatischen\n"
-#~ "Anpassungsalgorithmus zu deaktivieren."
+#~ "Experimentelle Einstellung, könnte sichtbare Leerräume zwischen\n"
+#~ "Blöcken verursachen, wenn auf einen Wert größer 0 gesetzt."
-#~ msgid "Vertical initial window size."
-#~ msgstr "Anfängliche Fensterhöhe."
+#~ msgid "FPS in pause menu"
+#~ msgstr "Bildwiederholrate im Pausenmenü"
-#~ msgid "Vertical spawn range"
-#~ msgstr "Vertikaler Startpunktbereich"
+#~ msgid "Fallback font shadow"
+#~ msgstr "Ersatzschriftschatten"
-#~ msgid "Viewing range minimum"
-#~ msgstr "Minimale Sichtweite"
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Undurchsichtigkeit des Ersatzschriftschattens"
-#~ msgid "Wanted FPS"
-#~ msgstr "Gewünschte Bildwiederholrate"
+#~ msgid "Fallback font size"
+#~ msgstr "Ersatzschriftgröße"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Auf Menüelemente angewandter Skalierfaktor: "
+#~ msgid "Filtering"
+#~ msgstr "Filter"
-#~ msgid "Touch free target"
-#~ msgstr "Berührungsfreies Ziel"
+#~ msgid "Floatland base height noise"
+#~ msgstr "Schwebeland-Basishöhenrauschen"
-#~ msgid " KB/s"
-#~ msgstr " KB/s"
+#~ msgid "Floatland mountain height"
+#~ msgstr "Schwebelandberghöhe"
-#~ msgid " MB/s"
-#~ msgstr " MB/s"
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr ""
+#~ "Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)."
-#~ msgid "Game Name"
-#~ msgstr "Spielname"
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Schriftgröße der Ersatzschrift in Punkt (pt)."
-#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
-#~ msgstr "Gamemgr: Kann mod \"$1\" nicht in Spiel \"$2\" kopieren"
+#~ msgid "FreeType fonts"
+#~ msgstr "FreeType-Schriften"
-#~ msgid "GAMES"
-#~ msgstr "SPIELE"
+#~ msgid "Full screen BPP"
+#~ msgstr "Vollbildfarbtiefe"
-#~ msgid "Mods:"
-#~ msgstr "Mods:"
+#~ msgid "Game"
+#~ msgstr "Spiel"
-#~ msgid "new game"
-#~ msgstr "neues Spiel"
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
-#~ msgid "EDIT GAME"
-#~ msgstr "SPIEL ÄNDERN"
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Normalmaps generieren"
-#~ msgid "Remove selected mod"
-#~ msgstr "Ausgewählte Mod löschen"
+#~ msgid "Generate normalmaps"
+#~ msgstr "Normalmaps generieren"
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Mod hinzufügen"
+#~ msgid "HUD scale factor"
+#~ msgstr "HUD-Skalierungsfaktor"
-#~ msgid "CLIENT"
-#~ msgstr "CLIENT"
+#~ msgid "High-precision FPU"
+#~ msgstr "Hochpräzisions-FPU"
-#~ msgid "START SERVER"
-#~ msgstr "SERVER STARTEN"
+#~ msgid "IPv6 support."
+#~ msgstr "IPv6-Unterstützung."
-#~ msgid "Name"
-#~ msgstr "Name"
+#~ msgid "In-Game"
+#~ msgstr "Spiel"
-#~ msgid "Password"
-#~ msgstr "Passwort"
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Installation: Datei: „$1“"
-#~ msgid "SETTINGS"
-#~ msgstr "EINSTELLUNGEN"
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentierung"
-#~ msgid "Preload item visuals"
-#~ msgstr "Lade Inventarbilder vor"
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Steuerung (Falls dieses Menü defekt ist, entfernen Sie Zeugs aus minetest."
+#~ "conf)"
+
+#~ msgid "Lava depth"
+#~ msgstr "Lavatiefe"
+
+#~ msgid "Lightness sharpness"
+#~ msgstr "Helligkeitsschärfe"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Erzeugungswarteschlangengrenze auf Festspeicher"
+
+#~ msgid "Main"
+#~ msgstr "Hauptmenü"
+
+#~ msgid "Main menu style"
+#~ msgstr "Hauptmenü-Stil"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "DirectX mit LuaJIT zusammenarbeiten lassen. Deaktivieren Sie dies, falls "
+#~ "es Probleme verursacht."
+
+#~ msgid "Menus"
+#~ msgstr "Menüs"
-#~ msgid "Finite Liquid"
-#~ msgstr "Endliches Wasser"
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Übersichtskarte im Radarmodus, Zoom ×2"
-#~ msgid "SINGLE PLAYER"
-#~ msgstr "EINZELSPIELER"
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Übersichtskarte im Radarmodus, Zoom ×4"
-#~ msgid "TEXTURE PACKS"
-#~ msgstr "TEXTUREN PAKETE"
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Übersichtskarte im Bodenmodus, Zoom ×2"
-#~ msgid "MODS"
-#~ msgstr "MODS"
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Übersichtskarte im Bodenmodus, Zoom ×4"
-#~ msgid "Add mod:"
-#~ msgstr "Modifikation hinzufügen:"
+#~ msgid "Name / Password"
+#~ msgstr "Name / Passwort"
-#~ msgid "Local install"
-#~ msgstr "Lokale Install."
+#~ msgid "Name/Password"
+#~ msgstr "Name/Passwort"
+
+#~ msgid "No"
+#~ msgstr "Nein"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Normalmaps-Sampling"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Normalmap-Stärke"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Anzahl der Parallax-Occlusion-Iterationen."
+
+#~ msgid "Ok"
+#~ msgstr "OK"
#~ msgid ""
-#~ "Warning: Some mods are not configured yet.\n"
-#~ "They will be enabled by default when you save the configuration. "
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
#~ msgstr ""
-#~ "Warnung: Einige Mods sind noch nicht konfiguriert.\n"
-#~ "Sie werden aktiviert wenn die Konfiguration gespeichert wird. "
+#~ "Undurchsichtigkeit (Alpha) des Schattens hinter der Ersatzschrift, "
+#~ "zwischen 0 und 255."
-#~ msgid ""
-#~ "Warning: Some configured mods are missing.\n"
-#~ "Their setting will be removed when you save the configuration. "
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
#~ msgstr ""
-#~ "Warnung: Einige konfigurierte Mods fehlen.\n"
-#~ "Mod Einstellungen werden gelöscht wenn die Konfiguration gespeichert "
-#~ "wird. "
+#~ "Startwert des Parallax-Occlusion-Effektes, üblicherweise Skalierung "
+#~ "geteilt durch 2."
-#~ msgid "KEYBINDINGS"
-#~ msgstr "TASTEN EINST."
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Gesamtskalierung des Parallax-Occlusion-Effektes."
-#~ msgid "Delete map"
-#~ msgstr "Karte löschen"
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax-Occlusion"
-#~ msgid ""
-#~ "Default Controls:\n"
-#~ "- WASD: Walk\n"
-#~ "- Mouse left: dig/hit\n"
-#~ "- Mouse right: place/use\n"
-#~ "- Mouse wheel: select item\n"
-#~ "- 0...9: select item\n"
-#~ "- Shift: sneak\n"
-#~ "- R: Toggle viewing all loaded chunks\n"
-#~ "- I: Inventory menu\n"
-#~ "- ESC: This menu\n"
-#~ "- T: Chat\n"
-#~ msgstr ""
-#~ "Steuerung:\n"
-#~ "- WASD: Gehen\n"
-#~ "- Linksklick: Graben/Schlagen\n"
-#~ "- Rechtsklick: Platzieren\n"
-#~ "- Mausrad: Item auswählen\n"
-#~ "- 0...9: Item auswählen\n"
-#~ "- Shift: Schleichen\n"
-#~ "- R: alle geladenen Blöcke anzeigen (wechseln)\n"
-#~ "- I: Inventar\n"
-#~ "- T: Chat\n"
+#~ msgid "Parallax occlusion"
+#~ msgstr "Parallax-Occlusion"
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Parallax-Occlusion-Startwert"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt"
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Parallax-Occlusion-Iterationen"
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden"
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Parallax-Occlusion-Modus"
-#~ msgid "Files to be deleted"
-#~ msgstr "Zu löschende Dateien"
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Parallax-Occlusion-Skalierung"
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Kann Welt nicht löchen: Nichts ausgewählt"
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Parallax-Occlusion-Stärke"
-#~ msgid "Address required."
-#~ msgstr "Adresse benötigt."
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift."
-#~ msgid "Create world"
-#~ msgstr "Welt erstellen"
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Pfad, in dem Bildschirmfotos abgespeichert werden."
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Lasse die Adresse frei um einen eigenen Server zu starten."
+#~ msgid "Player name"
+#~ msgstr "Spielername"
-#~ msgid "Show Favorites"
-#~ msgstr "Zeige Favoriten"
+#~ msgid "Profiling"
+#~ msgstr "Profiling"
-#~ msgid "Show Public"
-#~ msgstr "Zeige öffentliche"
+#~ msgid "Projecting dungeons"
+#~ msgstr "Herausragende Verliese"
-#~ msgid "Cannot create world: Name contains invalid characters"
-#~ msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen"
+#~ msgid "PvP enabled"
+#~ msgstr "Spielerkampf aktiviert"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Warnung: Konfiguration nicht konsistent. "
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Einzelspielerwelt zurücksetzen"
-#~ msgid "Configuration saved. "
-#~ msgstr "Konfiguration gespeichert. "
+#~ msgid "Select Package File:"
+#~ msgstr "Paket-Datei auswählen:"
-#~ msgid "is required by:"
-#~ msgstr "wird benötigt von:"
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Server / Einzelspieler"
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen"
+#~ msgid ""
+#~ "Set the shadow update time.\n"
+#~ "Lower value means shadows and map updates faster, but it consume more "
+#~ "resources.\n"
+#~ "Minimun value 0.001 seconds max value 0.2 seconds"
+#~ msgstr ""
+#~ "Setzt die Schattenupdatezeit.\n"
+#~ "Ein niedrigerer Wert bedeutet, dass Schatten und die Karte schneller "
+#~ "aktualisiert werden, aber dies verbraucht mehr Ressourcen.\n"
+#~ "Minimalwert: 0.001 Sekunden. Maximalwert: 0.2 Sekunden.\n"
+#~ "(Beachten Sie die englische Notation mit Punkt als Dezimaltrennzeichen.)"
+
+#~ msgid "Shadow limit"
+#~ msgstr "Schattenbegrenzung"
-#~ msgid "Downloading"
-#~ msgstr "Lade herunter"
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Versatz des Schattens hinter der Ersatzschrift (in Pixeln). Falls 0, wird "
+#~ "der Schatten nicht gezeichnet."
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Neustart nach Ändern des Treibers erforderlich"
+#~ msgid "Special"
+#~ msgstr "Spezial"
-#~ msgid "Rendering:"
-#~ msgstr "Rendering:"
+#~ msgid "Special key"
+#~ msgstr "Spezialtaste"
-#~ msgid "If enabled, "
-#~ msgstr "Wenn aktiviert, "
+#~ msgid "Start Singleplayer"
+#~ msgstr "Einzelspieler starten"
-#~ msgid "If disabled "
-#~ msgstr "Wenn deaktiviert "
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Stärke der generierten Normalmaps."
-#~ msgid "Enable a bit lower water surface, so it doesn't "
-#~ msgstr "Senkt ein bisschen den Wasserspiegel, so tut es nicht "
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "Stärke der Lichtkurven-Mittenverstärkung."
-#, fuzzy
-#~ msgid "\""
-#~ msgstr "”"
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Diese Schrift wird von bestimmten Sprachen benutzt."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Um Shader zu aktivieren, muss der OpenGL-Treiber genutzt werden."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Filmmodus umschalten"
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen Valleys.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them.\n"
-#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome "
-#~ "issues.\n"
-#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where "
-#~ "water would tend to pool. It may interfere with delicately adjusted "
-#~ "biomes."
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
#~ msgstr ""
-#~ "Kartengenerierungsattribute speziell für den Täler-Kartengenerator.\n"
-#~ "Flags, welche in der Flags-Zeichenkette nicht angegeben sind,\n"
-#~ "werden von der Standardeinstellung unverändert gelassen.\n"
-#~ "Flags, welche mit „no“ beginnen, werden benutzt, um sie explizit\n"
-#~ "zu deaktivieren.\n"
-#~ "„altitude_chill“ macht höhere Höhen kälter, was zu einigen Biomproblemen "
-#~ "führen könnte.\n"
-#~ "„humid_rivers“ modifiziert die Luftfeuchtigkeit um Flüssen und in "
-#~ "Gebieten, in denen das Wasser sich in Pfützen ansammeln würde.\n"
-#~ "Dies könnte mit fein abgestimmten Biomen zu Konflikten führen."
-
-#~ msgid "No!!!"
-#~ msgstr "Nein!!!"
-
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Normalmaps generieren"
+#~ "Typische Maximalhöhe, über und unter dem Mittelpunkt von Gebirgen in den\n"
+#~ "Schwebeländern."
-#~ msgid "Public Serverlist"
-#~ msgstr "Öffentliche Serverliste"
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Variierung der Hügelhöhe und Seetiefe in den ruhig verlaufenden\n"
+#~ "Regionen der Schwebeländer."
-#~ msgid "No of course not!"
-#~ msgstr "Nein, natürlich nicht!"
+#~ msgid "View"
+#~ msgstr "Ansehen"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Nützlich für Mod-Entwickler."
+#~ msgid "Waving Water"
+#~ msgstr "Wasserwellen"
-#~ msgid "How many blocks are flying in the wire simultaneously per client."
-#~ msgstr ""
-#~ "Wie viele Kartenblöcke gleichzeitig pro Client auf der Leitung unterwegs "
-#~ "sind."
+#~ msgid "Waving water"
+#~ msgstr "Wasserwellen"
#~ msgid ""
-#~ "How many blocks are flying in the wire simultaneously for the whole "
-#~ "server."
+#~ "Whether FreeType fonts are used, requires FreeType support to be compiled "
+#~ "in.\n"
+#~ "If disabled, bitmap and XML vectors fonts are used instead."
+#~ msgstr ""
+#~ "Ob FreeType-Schriften benutzt werden. Dafür muss FreeType-Unterstüzung "
+#~ "einkompiliert worden sein.\n"
+#~ "Falls deaktiviert, werden stattdessen Bitmap- und XML-Vektor-Schriften "
+#~ "benutzt."
+
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "Ob Verliese manchmal aus dem Gelände herausragen."
+
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "Y-Wert der Obergrenze von Lava in großen Höhlen."
+
+#~ msgid "Y-level of floatland midpoint and lake surface."
#~ msgstr ""
-#~ "Wie viele Kartenblöcke gleichzeitig für den gesamten Server auf der "
-#~ "Leitung unterwegs sind."
+#~ "Y-Höhe vom Mittelpunkt der Schwebeländer sowie\n"
+#~ "des Wasserspiegels von Seen."
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Y-Höhe, bis zu der sich die Schatten der Schwebeländer ausbreiten."
-#~ msgid "Detailed mod profiling"
-#~ msgstr "Detailliertes Mod-Profiling"
+#~ msgid "Yes"
+#~ msgstr "Ja"
-#~ msgid "Detailed mod profile data. Useful for mod developers."
-#~ msgstr "Detaillierte Mod-Profildaten. Nützlich für Mod-Entwickler."
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Sie sind im Begriff, dem Server mit dem Namen „%s“ für das erste Mal "
+#~ "beizutreten.\n"
+#~ "Falls Sie fortfahren, wird ein neues Benutzerkonto mit Ihren Anmeldedaten "
+#~ "auf diesem Server erstellt.\n"
+#~ "Bitte geben Sie Ihr Passwort erneut ein und klicken Sie auf „Registrieren "
+#~ "und beitreten“, um die Erstellung des Benutzerkontos zu bestätigen oder "
+#~ "klicken Sie auf „Abbrechen“ zum Abbrechen."
+
+#~ msgid "You died."
+#~ msgstr "Sie sind gestorben."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/dv/minetest.po b/po/dv/minetest.po
new file mode 100644
index 000000000..6626fd9f2
--- /dev/null
+++ b/po/dv/minetest.po
@@ -0,0 +1,6986 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Dhivehi (Minetest)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"minetest/dv/>\n"
+"Language: dv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.10-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "މެއިން މެނޫ"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "އަލުން ސްޕައުންވޭ"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "މަރުވީ"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+#, fuzzy
+msgid "An error occurred in a Lua script:"
+msgstr "މޮޑެއްފަދަ ލުއޭ ސްކްރިޕްޓެއްގައި މައްސަލައެއް ޖެހިއްޖެ:"
+
+#: builtin/fstk/ui.lua
+#, fuzzy
+msgid "An error occurred:"
+msgstr "މޮޑެއްފަދަ ލުއޭ ސްކްރިޕްޓެއްގައި މައްސަލައެއް ދިމާވެއްޖެ:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "maigandu menu"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "aa gulhumeh"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "ސަާވަރ އިން ރިކަނެކްޓަކަށް އެދެފި:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "ޕްރޮޓޮކޯލް ވާޝަން ފުށުއެރުމެއް. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "ސާވަރ އިން ޕްރޮޓޮކޯލް ވާޝަން 1$ ތަންފީޒުކުރޭ. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "$1 އާއި 2$ ދެމެދުގެ ޕްރޮޓޮކޯލް ވާޝަންތައް ސާވަރ ސަިޕޯޓް ކުރޭ. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "އަޅުގަނޑުމެން ހަމައެކަނި ސަޕޯޓްކުރަނީ ޕްރޮޓޮކޯލް ވާޝަން 1$."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "އަޅުގަނޑުމެން 1$ އާއި 2$ އާއި ދެމެދުގެ ޕޮރޮޓޮކޯލް ވާޝަންތައް ސަޕޯޓް ކުރަން."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "ކެންސަލް"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "ބަރޯސާވާ(ޑިޕެންޑެންސީޒް):"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "ހުރިހާ އެއްޗެއް އޮފްކޮށްލާ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "މޮޑްޕެކް އޮފްކުރޭ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "ހުރިހާއެއްޗެއް ޖައްސާ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+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$' ނުޖެއްސުނު. ހަމައެކަނި ހުއްދައީ [Z-A0-9] މި އަކުރުތައް."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "މޮޑް:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No (optional) dependencies"
+msgstr "ލާޒިމުނޫން ޑިޕެންޑެންސީތައް:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No hard dependencies"
+msgstr "އެއްވެސް ޑިޕެންޑެންސީއެއް ނެތް."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No optional dependencies"
+msgstr "ލާޒިމުނޫން ޑިޕެންޑެންސީތައް:"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "ލާޒިމުނޫން ޑިޕެންޑެންސީތައް:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "ސޭވްކުރޭ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "ދުނިޔެ:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "ޖައްސާފަ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "ލޯޑްވަނީ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "އެނބުރި މެއިން މެނޫއަށް"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "ގޭމް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "ލޯޑްވަނީ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1 ނޭޅުނު"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "ގޭމްތައް"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "އަޅާ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "އަޅާ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "ލާޒިމުނޫން ޑިޕެންޑެންސީތައް:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "މޮޑްތައް"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "ފުހެލާ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "\"$1\" ކޔާ ދިުނިޔެއެއް އެބައިން"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "ހަދާ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Decorations"
+msgstr "މޮޑްގެ މައުލޫލާތު:"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "އިންޒާރު: މިނިމަލް ޑިވެލޮޕްމަންޓް ހާއްސަކުރެވިފައިވަނީ ޑިވެލޮޕަރުންނަށް."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "އަޅާ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "މެޕްޖެން"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mapgen-specific flags"
+msgstr "މެޕްޖެން"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "އެއްވެސް ގޭމެއް އިހްތިޔާރުވެފައެއް ނެޠް"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "ސީޑް"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "ދުނިޔޭގެ ނަން"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "އެއްވެސް ސަބްގޭމެއް އެޅިފައެއް ނެތް."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "\"$1\" ޑިލީޓްކުރައްވަން ބޭނުންފުޅުކަން ޔަގީންތޯ؟"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "ޑިލީޓްކުރޭ"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "މޮޑްއެމް.ޖީ.އާރް: \"1$\" ޑިލީޓެއް ނުކުރެވުނު"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "މޮޑްއެމް.ޖީ.އާރް: ޕާތު \"1$\" ބާތިލް"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "ދުނިޔެ \"1$\" ޑިލީޓްކުރަންވީތޯ؟"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "ޕާސްވޯޑް / ނަން"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "ގަބޫލުކުރޭ"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(ސެޓިންގްގެ ތައާރަފެއް ދީފައެއް ނެތް)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "އަނބުރާ ސެޓިންގްސް ސަފުހާއަށް>"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "ފުންކޮށް ހޯދާ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "ގޭމް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "ސޮޓޯރ ކުލޯޒްކޮށްލާ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "އޮފްކޮށްފަ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "ބަދަލުކުރޭ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "ޖައްސާފަ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "ސައްހަ އިންޓީޖަރއެއް ލިޔުއްވާ."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "ސައްހަ އަދަދެއް ލިޔުއްވާ."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "ޑިފޯލްޓައަށް ރައްދުކުރޭ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "ހޯދާ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Select directory"
+msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Select file"
+msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "ޓެކްނިކަލް ނަންތައް ދައްކާ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "އަދަދު އެންމެ ކުޑަވެގެން 1$އަށް ވާން ޖެހޭ."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "އަދަދު 1$އަށްވުރެއް ބޮޑުވާންޖެހޭ."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 (Enabled)"
+msgstr "ޖައްސާފަ"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "$1 $2އަށް ނޭޅުނު"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1 $2އަށް ނޭޅުނު"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a game as a $1"
+msgstr "$1 $2އަށް ނޭޅުނު"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a mod as a $1"
+msgstr "$1 $2އަށް ނޭޅުނު"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a modpack as a $1"
+msgstr "$1 $2އަށް ނޭޅުނު"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 "ޕަބްލިކް ސާވަރ ލިސްޓު އަލުން ޖައްސަވާ.އަދި އިންޓަނެޓް ކަނެކްޝަން ޗެކްކުރައްވާ."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Disable Texture Pack"
+msgstr "އެމް.ޕީ އޮފްކޮށްލާ"
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Information:"
+msgstr "މޮޑްގެ މައުލޫލާތު:"
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Installed Packages:"
+msgstr "އެޅިފައިވާ މޮޑްތައް:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "އެއްވެސް ޑިޕެންޑެންސީއެއް ނެތް."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "ނަންބަދަލުކުރޭ"
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Uninstall Package"
+msgstr "އިހްތިޔާރުކުރެވިފައިވާ މޮޑް ޑިލީޓްކުރޭ"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "ސާވަރ އިއުލާންކުރޭ"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "ކްރިއޭޓިވް މޯޑް"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "ގެއްލުން ޖައްސާ"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "ގޭމް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "ސާވަރއެއް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "އައު"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "އެއްވެސް ދުނިޔެއެއް އުފެދިފައެއް ނުވަތަ އިހްތިޔާރުވެފައެއް ނެޠް!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "ގޭމް ކުޅޭ"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "ޕޯޓް"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "ދުނިޔެ އިހްތިޔާރު ކުރޭ:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "ސާވަރ ޕޯޓް"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Start Game"
+msgstr "ގޭމް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "އެޑްރެސް / ޕޯޓް"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "ކްރިއޭޓިވް މޯޑް"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "އެންމެ ގަޔާވޭ"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Join Game"
+msgstr "ގޭމް ހޮސްޓްކުރޭ"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "ސާވަރ އިއުލާންކުރޭ"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "އެންމެ ގަޔާނުވޭ"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "ސާވަރ ޕޯޓް"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "ނެތް"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "ސްކްރީން:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr ""
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "މެއިން މެނޫ"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "މޮޑެއްފަދަ ލުއޭ ސްކްރިޕްޓެއްގައި މައްސަލައެއް ދިމާވެއްޖެ:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- 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 ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "މެއިން މެނޫ"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "އޮފްކޮށްފަ"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "ޖައްސާފަ"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Noclip mode enabled"
+msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "ވާތު މެނޫ"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "މެނޫ"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "ކަނާތު މެނޫ"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "އިހްތިޔާރުކުރޭ"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "$1 ނޭޅުނު"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "ފިތްތައް ބަދަލުކުރޭ"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "dv"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "ދުނިޔޭގެ ނަން"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Announce to this serverlist."
+msgstr "ސާވަރ އިއުލާންކުރޭ"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "ފިތްތައް ބަދަލުކުރޭ"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr "މެނޫގައި ވިލާތައް"
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "ContentDB URL"
+msgstr "ސޮޓޯރ ކުލޯޒްކޮށްލާ"
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr "ކްރިއޭޓިވް"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+"އާ ދުނިޔެއެއް އުފައްދާއިރު ޑިފޯލްޓްކޮށް ބޭނުންކުރާ ގޭމް.\n"
+"މެއިން މެނޫއިން ދުނިޔެއެއް ހަދާއިރު މީގެ މައްޗަށް ބާރު ހިނގާނެ."
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "މޮޑްގެ މައުލޫލާތު:"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "ގޭމްތައް"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr "މެއިން މެނޫ ސްކްރިޕްޓް"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen Flat"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen Fractal"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen Fractal specific flags"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen V5"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen V6"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen V7"
+msgstr "މެޕްޖެން"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+"ކުޅުންތެރިޔާގެ ނަން.\n"
+"ސާވަރއެއް ހިންގަވާއރު މިނަމުގައި ކަނެކްޓްވާ ކްލައެންޓުންނަކީ އެޑްމިނުން.\n"
+"މެއިން މެނޫއިން ފައްޓަވާއިރު މީގެ މައްޗަށް ބާރު ހިނގާނެ ވާހަކަ ދަންނަވަން."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "ސްކްރީން:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "ސްކްރީން:"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "ސާވަރއެއް ހޮސްޓްކުރޭ"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "ސާވަރ ޕޯޓް"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "ސާވަރ ޕޯޓް"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "ދުނިޔޭގެ ނަން"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "Configure"
+#~ msgstr "ބަދަލުގެނޭ"
+
+#~ msgid "Connect"
+#~ msgstr "ކަނެކްޓްކުރޭ"
+
+#~ msgid "Damage enabled"
+#~ msgstr "އަނިޔާވުން ޖައްސާފައި"
+
+#, fuzzy
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "މައިންޓެސްޓް_ގޭމް ފަދަ ސަބްގޭމެއް މައިންޓެސްޓް.ނެޓް އިން ޑައުންލޯޑްކުރައްވާ"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "މައިންޓެސްޓް.ނެޓް އިން އެކަތި ޑައުންލޯޑްކުރައްވާ"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 ޑައުންލޯޑޮކޮށް އިންސްޓޯލްކުރަނީ، މަޑުކުރައްވާ..."
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "ޕޯސް މެނޫގައި އެފް.ޕީ.އެސް"
+
+#~ msgid "Game"
+#~ msgstr "ގޭމް"
+
+#, fuzzy
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "މޮޑް އަޚާ: ފައިލް:\"1$\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr "ފިތްތައް. (މި މެނޫ މައްސަލަ ޖެހިއްޖެނަމަ minetest.confއިން ތަކެތި ފުހެލައްވާ)"
+
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "މެއިން މެނޫ ސްކްރިޕްޓް"
+
+#~ msgid "Name / Password"
+#~ msgstr "ޕާސްވޯޑް / ނަން"
+
+#~ msgid "No"
+#~ msgstr "ނޫން"
+
+#~ msgid "Ok"
+#~ msgstr "emme rangalhu"
+
+#~ msgid "PvP enabled"
+#~ msgstr "ޕީ.ވީ.ޕީ ޖައްސާ"
+
+#, fuzzy
+#~ msgid "Select Package File:"
+#~ msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "މަރުވީ"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/el/minetest.po b/po/el/minetest.po
new file mode 100644
index 000000000..154b81e2a
--- /dev/null
+++ b/po/el/minetest.po
@@ -0,0 +1,6965 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Greek (Minetest)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-03-24 18:55+0000\n"
+"Last-Translator: Elnaz javadi <elnazjavadii1369@gmail.com>\n"
+"Language-Team: Greek <https://hosted.weblate.org/projects/minetest/minetest/"
+"el/>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"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.12-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Διαγραφή της ουράς συνομιλίας"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Κενή εντολή."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Έξοδος στο κεντρικό μενού"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Άκυρη εντολή: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Λίστα συνδεδεμένων παικτών"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Συνδεδεμένοι παίκτες: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Η ουρά συνομιλίας είναι τώρα κενή."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Αυτή η εντολή είναι απενεργοποιημένη από τον διακομιστή."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+#, fuzzy
+msgid "Respawn"
+msgstr "Επανεμφάνηση"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Πέθανες"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Διαθέσιμες εντολές:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Διαθέσιμες εντολές: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Η εντολή δεν είναι διαθέσιμη: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Βοήθεια για τις εντολές"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Χρησιμοποιήστε το '.help <cmd>' για να λάβετε περισσότερες πληροφορίες ή το "
+"'.help all' για την λίστα των εντολών."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <εντολή>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Εντάξει"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<κανένα διαθέσιμο>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Ένα σφάλμα προέκυψε σε ένα σενάριο Lua:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Παρουσιάστηκε σφάλμα:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Κύριο μενού"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Επανασύνδεση"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Ο διακομιστής ζήτησε επανασύνδεση:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Επιλογή Τροποποιήσεων"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Ασυμφωνία έκδοσης πρωτοκόλλου. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Ο διακομιστής επιβάλλει το πρωτόκολλο έκδοσης $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "Ο διακομιστής υποστηρίζει εκδόσεις πρωτοκόλλων μεταξύ $1 και $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Υποστηρίζουμε μόνο το πρωτόκολλο έκδοσης $1."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "Υποστηρίζουμε τις εκδόσεις πρωτοκόλλων μεταξύ της έκδοσης $1 και $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Άκυρο"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Εξαρτήσεις:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Απενεργοποίηση όλων"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Απενεργοποίηση πακέτου τροποποιήσεων"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Ενεργοποίηση όλων"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Ενεργοποίηση πακέτου τροποποιήσεων"
+
+#: 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 ""
+"Η ενεργοποίηση του mod \"$1\" απέτυχε καθώς περιέχει μη επιτρεπόμενους "
+"χαρακτήρες. Επιτρέπονται μόνο χαρακτήρες [a-z0-9_]."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Εύρεση Περισσότερων Τροποποιήσεων"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Τροποποίηση:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Δεν υπάρχουν (προαιρετικές) εξαρτήσεις"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Δεν παρέχεται περιγραφή παιχνιδιού."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Δεν υπάρχουν απαραίτητες εξαρτήσεις"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Δεν παρέχεται περιγραφή για το πακέτο τροποποιήσεων."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Δεν υπάρχουν προαιρετικές εξαρτήσεις"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Προαιρετικές εξαρτήσεις:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Αποθήκευση"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Κόσμος:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "ενεργοποιήθηκε"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "Το \"$1\" ήδη υπάρχει. Θέλετε να το αντικαταστήσετε;"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Οι εξαρτήσεις $1 και $2 θα εγκατασταθούν."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 με $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 σε λήψη,\n"
+"$2 σε αναμονή"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "Λήψη ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "Δεν ήταν δυνατή η εύρεση των απαιτούμενων εξαρτήσεων $1."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "Θα εγκατασταθεί το $1 και οι εξαρτήσεις $2 θα παραβλεφθούν."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Όλα τα Πακέτα"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Ήδη εγκαταστημένο"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Πίσω στο Κύριο Μενού"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Βασικό παιχνίδι:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"Το ContentDB δεν είναι διαθέσιμο όταν το Minetest μεταγλωττίστηκε χωρίς cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Λήψη ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Η λήψη του $1 απέτυχε"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Παιχνίδια"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Εγκατάσταση"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Εγκατάσταση $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Εγκατάσταση των εξαρτήσεων που λείπουν"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Εγκατάσταση: Μη υποστηριζόμενος τύπος αρχείου ή κατεστραμμένο αρχείο"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Τροποποιήσεις"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Δεν ήταν δυνατή η ανάκτηση πακέτων"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Χωρίς αποτελέσματα"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Δεν υπάρχουν ενημερώσεις"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Δε βρέθηκε"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Αντικατάσταση"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Ελέγξτε ότι το βασικό παιχνίδι είναι σωστό."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Σε αναμονή"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Πακέτα υφής"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Απεγκατάσταση"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Αναβάθμιση"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Ενημέρωση Όλων [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Δείτε περισσότερες πληροφορίες σε ένα πρόγραμμα περιήγησης ιστού"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Υπάρχει ήδη ένας κόσμος με το όνομα \"$1\""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Πρόσθετο έδαφος"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Κρύο υψομέτρου"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Ξηρασία υψομέτρου"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Σπήλαια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Σπηλιές"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Δημιουργία"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Διακοσμήσεις"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Προειδοποίηση: Τα Development Test προορίζονται για προγραμματιστές."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Μπουντρούμια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Επίπεδο έδαφος"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Αιωρούμενες μάζες γης στον ουρανό"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Αιωρούμενες μάζες γης (πειραματικό)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Δημιουργία non-fractal εδάφους: ωκεανοί και υπόγεια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Λόφοι"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Υγρά ποτάμια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Αύξηση της υγρασίας γύρω από τα ποτάμια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Εγκατάσταση $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Λίμνες"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Η χαμηλή υγρασία και η υψηλή ζέστη προκαλούν ρηχά ή ξηρά ποτάμια"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Δημιουργία χάρτη"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Ρυθμίσεις δημιουργίας χάρτη"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Ειδικές ρυθμίσεις δημιουργίας χάρτη"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Βουνά"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Ροή λάσπης"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Δίκτυο σηράγγων και σπηλαίων"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Κανένα παιχνίδι επιλεγμένο"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Μείωση της θερμότητας με το υψόμετρο"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Μείωση της υγρασίας με το υψόμετρο"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Ποτάμια"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Ποτάμια στο επίπεδο της θάλασσας"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Σπόρος"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Κατασκευές που εμφανίζονται στο έδαφος (καμία επίδραση στα δέντρα και το "
+"γρασίδι της ζούγκλας που δημιουργήθηκε από v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Δομές που εμφανίζονται στο έδαφος, συνήθως δέντρα και φυτά"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Εύκρατο, Έρημος"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Εύκρατο, Έρημος, Ζούγκλα"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Εύκρατο, Έρημος, Ζούγκλα, Τούντρα, Τάιγκα"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Διάβρωση επιφάνειας εδάφους"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Δέντρα και γρασίδι ζούγκλας"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Μεταβολή βάθους ποταμού"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Πολύ μεγάλα σπήλαια βαθιά στο υπέδαφος"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Όνομα κόσμου"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Δεν έχετε εγκαταστήσει παιχνίδια."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε το \\\"$1\\\";"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Διαγραφή"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: απέτυχε η διαγραφή του \\\"$1\\\""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: μη έγκυρη διαδρομή \\\"$1\\\""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Διαγραφή Κόσμου \\\"$1\\\";"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Επιβεβαίωση Κωδικού"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Όνομα"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Κωδικός"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Αποδοχή"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "Μετονομασία Modpack:"
+
+#: 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)"
+msgstr "(Δεν δόθηκε περιγραφή της ρύθμισης)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D θόρυβος"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< Επιστροφή στη σελίδα Ρυθμίσεις"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Περιήγηση"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Περιεχόμενο"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Περιεχόμενο"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Απενεργοποιημένο"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Επεξεργασία"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Ενεργοποιημένο"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Οκτάβες"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Αντιστάθμιση"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Εισαγάγετε έναν έγκυρο ακέραιο αριθμό."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Εισαγάγετε έναν έγκυρο αριθμό."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "Επαναφορά προεπιλογής"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Κλίμακα"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Αναζήτηση"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Επιλογή φακέλου"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Επιλογή αρχείου"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Εμφάνιση τεχνικών ονομάτων"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Η τιμή πρέπει να είναι τουλάχιστον $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Η τιμή δεν πρέπει να είναι μεγαλύτερη από $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Χ εξάπλωση"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Υ εξάπλωση"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Ζ εξάπλωση"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 "προεπιλογή"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "Ομαλός Χάρτης"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Ενεργοποιημένο)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 Τροποποιήσεις"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Αποτυχία εγκατάστασης $1 έως $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+"Εγκατάσταση Τροποποίησης: Δεν είναι δυνατή η εύρεση του πραγματικού ονόματος "
+"τροποποίησης για: $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Εγκατάσταση Τροποποίησης: Δεν είναι δυνατή η εύρεση του κατάλληλου ονόματος "
+"φακέλου για την τροποποίηση $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Δεν είναι δυνατή η εύρεση έγκυρης τροποποίησης ή πακέτου τροποποίησης"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Δεν είναι δυνατή η εγκατάσταση $1 ως πακέτου υφής"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Δεν είναι δυνατή η εγκατάσταση ενός παιχνιδιού ως $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Δεν είναι δυνατή η εγκατάσταση τροποποίησης ως $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Δεν είναι δυνατή η εγκατάσταση πακέτου τροποποίησης ως $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+"Δοκιμάστε να ενεργοποιήσετε ξανά τη δημόσια λίστα διακομιστών και ελέγξτε τη "
+"σύνδεσή σας στο διαδίκτυο."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Σχετικά"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Ενεργοί Συντελεστές"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Βασικοί Προγραμματιστές"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Άνοιγμα Καταλόγου Δεδομένων Χρήστη"
+
+#: builtin/mainmenu/tab_about.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_about.lua
+msgid "Previous Contributors"
+msgstr "Προηγούμενοι Συντελεστές"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Προηγούμενοι Βασικοί Προγραμματιστές"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Περιήγηση διαδικτυακού περιεχομένου"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Περιεχόμενο"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Απενεργοποίηση πακέτου υφής"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Πληροφορίες:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Εγκαταστημένα Πακέτα:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Χωρίς εξαρτήσεις."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Δεν υπάρχει διαθέσιμη περιγραφή πακέτου"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Μετονομασία"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Απεγκατάσταση πακέτου"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Χρήση Πακέτου Υφής"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Ανακοίνωση Διακομιστή"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Δεσμευμένη διεύθυνση"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Λειτουργία Δημιουργίας"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Ενεργοποίηση Ζημίας"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Φιλοξενία Παιχνιδιού"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Διακομιστής Φιλοξενίας"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Εγκατάσταση παιχνιδιών από το ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Νέο"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Κανένας κόσμος δεν δημιουργήθηκε ούτε επιλέχθηκε!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Εκκίνηση Παιχνιδιού"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Θήρα"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Επιλογή Τροποποιήσεων"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Επιλογή Κόσμου:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Θήρα Διακομιστή"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Εκκίνηση Παιχνιδιού"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Διεύθυνση"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Εκκαθάριση"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Λειτουργία Δημιουργίας"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Μάχες μεταξύ παιχτών"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Αγαπημένα"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Μη συμβατοί διακομιστές"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Συμμετοχή στο Παιχνίδι"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Δημόσιοι Διακομιστές"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Ανανέωση"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Περιγραφή Διακομιστή"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D Σύννεφα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Όλες οι ρυθμίσεις"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Αυτόματη αποθήκευση Μεγέθους Οθόνης"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Διγραμμικό Φίλτρο"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Αλλαγή πλήκτρων"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Δυναμικές σκιές"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Δυναμικές σκιές: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Φανταχτερά Φύλλα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Υψηλό"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Χαμηλό"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Μεσαίο"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Χωρίς Φίλτρο"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Επισήμανση Στοιχείων"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Περίγραμμα Στοιχείων"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Κανένα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Αδιαφανή Φύλλα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Αδιαφανές Νερό"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Σωματίδια"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Οθόνη:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Απλά Φύλλα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Απαλός Φωτισμός"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Υφή:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr "Χαρτογράφηση Τόνου"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Όριο αφής: (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Τριγραμμικό Φίλτρο"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "Εξαιρετικά Υψηλό"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "Πολύ Χαμηλό"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Κινούμενα Φύλλα"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Κυματιζόμενα Υγρά"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Κυματιζόμενα Φυτά"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Σφάλμα σύνδεσης (λήξη χρόνου;)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Λήξη χρονικού ορίου σύνδεσης."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Έτοιμο!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Εκκίνηση στοιχείων"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Εκκίνηση στοιχείων..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Φόρτωση υφών..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Ανακατασκευή σκίαστρων..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Σφάλμα σύνδεσης (λήξη χρόνου;)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "Δεν ήταν δυνατή η εύρεση ή η φόρτωση του παιχνιδιού: "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "Μη έγκυρη προδιαγραφή παιχνιδιού."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Κύριο μενού"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Δεν έχει επιλεγεί κόσμος και δεν παρέχεται διεύθυνση."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Το όνομα παίκτη είναι πολύ μεγάλο."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Παρακαλώ επιλέξτε ένα όνομα!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Απέτυχε το άνοιγμα του παρεχόμενου αρχείου κωδικού πρόσβασης: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Το αρχείο του Κόσμου δεν υπάρχει: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"Ελέγξτε το debug.txt για λεπτομέρειες."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Διεύθυνση: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Λειτουργία: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Θήρα: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Δημόσιο: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Όνομα Διακομιστή: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Παρουσιάστηκε σφάλμα:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Δεν επιτρέπεται η πρόσβαση. Αιτία: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Η αυτόματη προώθηση είναι απενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Η αυτόματη προώθηση είναι ενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Αποκλεισμός ορίων κρυφά"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Τα όρια μπλοκ εμφανίζονται για όλα τα μπλοκ"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Εμφανίζονται όρια αποκλεισμού για το τρέχον μπλοκ"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Εμφανίζονται όρια αποκλεισμού για κοντινά μπλοκ"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Η ενημέρωση κάμερας απενεργοποιήθηκε"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Η ενημέρωση κάμερας ενεργοποιήθηκε"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Δεν είναι δυνατή η εμφάνιση ορίων μπλοκ (χρειάζεται το δικαίωμα "
+"\"basic_debug\")"
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Αλλαγή Κωδικού"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Η κινηματογραφική λειτουργία απενεργοποιήθηκε"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Η κινηματογραφική λειτουργία ενεργοποιήθηκε"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Ο πελάτης αποσυνδέθηκε"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Η δέσμη ενεργειών από την πλευρά του πελάτη είναι απενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Σύνδεση με διακομιστή..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Η σύνδεση απέτυχε για άγνωστο λόγο"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Συνέχεια"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Στοιχεία ελέγχου:\n"
+"- %s: κίνηση προς τα εμπρός\n"
+"- %s: κίνηση προς τα πίσω\n"
+"- %s: κίνηση αριστερά\n"
+"- %s: κίνηση δεξιά\n"
+"- %s: άλμα/σκαρφάλωμα\n"
+"- %s: σκάψιμο/διάτρηση\n"
+"- %s: τοποθέτηση/χρήση\n"
+"- %s: ολίσθηση/κατέβασμα\n"
+"- %s: απόθεση αντικειμένου\n"
+"- %s: αποθέματα\n"
+"- Ποντίκι: στροφή/παρακολούθηση\n"
+"- Τροχός ποντικιού: επιλογή στοιχείου\n"
+"- %s: συνομιλία\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Δεν ήταν δυνατή η επίλυση της διεύθυνσης: %s"
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Δημιουργία πελάτη..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Δημιουργία διακομιστή..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Κρυφές πληροφορίες εντοπισμού σφαλμάτων και γράφημα προφίλ"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Εμφάνιση πληροφοριών εντοπισμού σφαλμάτων"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+"Απόκρυψη πληροφοριών εντοπισμού σφαλμάτων, γραφήματος προφίλ και wireframe"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+"Προεπιλεγμένα στοιχεία ελέγχου:\n"
+"Δεν εμφανίζεται μενού:\n"
+"- ένα πάτημα: κουμπί ενεργοποίησης\n"
+"- διπλό πάτημα: θέση/χρήση\n"
+"- σύρσιμο δαχτύλου: παρακολούθηση γύρω\n"
+"Ορατό μενού/απόθεμα:\n"
+"- διπλό πάτημα (εξωτερικό):\n"
+" -->κλείσιμο\n"
+"- στοίβα αφής, υποδοχή αφής:\n"
+" --> μετακίνηση στοίβας\n"
+"- άγγιγμα & σύρσιμο, πάτημα του 2ου δαχτύλου\n"
+" --> τοποθέτηση μεμονωμένου αντικειμένου στην υποδοχή\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Απενεργοποιημένο το απεριόριστο εύρος προβολής"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Ενεργοποιημένο το απεριόριστο εύρος προβολής"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Δημιουργία πελάτη..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Έξοδος στο Μενού"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Έξοδος στο ΛΣ"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Γρήγορη λειτουργία απενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Γρήγορη λειτουργία ενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+"Γρήγορη λειτουργία ενεργοποιημένη (σημείωση: δεν υπάρχει προνόμιο \"fast\")"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Λειτουργία πτήσης απενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Λειτουργία πτήσης ενεργοποιημένη"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+"Λειτουργία πτήσης ενεργοποιημένη (σημείωση: δεν υπάρχει προνόμιο \"fly\")"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Η ομίχλη απενεργοποιήθηκε"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Η ομίχλη ενεργοποιήθηκε"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Πληροφορίες Παιχνιδιού:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Το παιχνίδι διακόπηκε"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Διακομιστής Φιλοξενίας"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Ορισμοί στοιχείων..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Πολλοί παίκτες"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Απομακρυσμένος διακομιστής"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Επίλυση διεύθυνσης..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Τερματισμός Λειτουργίας..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Ένταση Ήχου"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Σίγαση Ήχου"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Το Σύστημα Ήχου είναι απενεργοποιημένο"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Το Σύστημα Ήχου δεν υποστηρίζεται σε αυτή την έκδοση"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Ο διακομιστής πιθανότατα εκτελεί διαφορετική έκδοση του %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+"Δεν είναι δυνατή η σύνδεση στο %s επειδή το IPv6 είναι απενεργοποιημένο"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+"Δεν είναι δυνατή η ακρόαση στο %s επειδή το IPv6 είναι απενεργοποιημένο"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Το εύρος προβολής άλλαξε σε %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Το εύρος προβολής πρέπει να είναι έως: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Το εύρος προβολής πρέπει να είναι τουλάχιστον: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Η ένταση άλλαξε σε %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Το ζουμ είναι απενεργοποιημένο από το παιχνίδι ή την τροποποίηση"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Συνομιλία κρυφή"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Συνομιλία εμφανής"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Εφαρμογές"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Κάτω"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "Τέλος"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "Βοήθεια"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "Σπίτι"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Εισαγωγή"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Αριστερά"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "Μενού"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr "Αριθμητικό Πληκτρολόγιο *"
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr "Αριθμητικό Πληκτρολόγιο +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr "Αριθμητικό Πληκτρολόγιο -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Αριθμητικό Πληκτρολόγιο ."
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr "Αριθμητικό Πληκτρολόγιο /"
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr "Αριθμητικό Πληκτρολόγιο 0"
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr "Αριθμητικό Πληκτρολόγιο 1"
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr "Αριθμητικό Πληκτρολόγιο 2"
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr "Αριθμητικό Πληκτρολόγιο 3"
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "Αριθμητικό Πληκτρολόγιο 4"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr "Αριθμητικό Πληκτρολόγιο 5"
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr "Αριθμητικό Πληκτρολόγιο 6"
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr "Αριθμητικό Πληκτρολόγιο 7"
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "Αριθμητικό Πληκτρολόγιο 8"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr "Αριθμητικό Πληκτρολόγιο 9"
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Παύση"
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Αναπαραγωγή"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "Εκτύπωση"
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "Επιστροφή"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Δεξιά"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "Επιλογή"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Ύπνος"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Πάνω"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Μεγέθυνση"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Εντολή"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Το πλήκτρο ήδη χρησιμοποιείται"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Σίγαση"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Επόμενο αντικείμενο"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Στιγμιότυπο οθόνης"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Αλλαγή"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Νέος Κωδικός"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Παλιός Κωδικός"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Έξοδος"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Σε σίγαση"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Sound Volume: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "el"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Παρακαλώ επιλέξτε ένα όνομα!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "3D σύννεφα"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Όνομα κόσμου"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr "Για προχωρημένους"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Εντολές Συνομιλίας"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr "Σύννεφα"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Διακοσμήσεις"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr "Ομίχλη"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "Μέγεθος γραμματοσειράς"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Μέγεθος γραμματοσειράς"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr "Πλήρης οθόνη"
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Παιχνίδια"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr "Βαρύτητα"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr "Γλώσσα"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Απαλός Φωτισμός"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Security"
+msgstr "Ασφάλεια"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Σίγαση ήχου"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Δίκτυο"
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Επισήμανση Στοιχείων"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Οθόνη:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Στιγμιότυπο οθόνης"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL διακομιστή"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Όνομα διακομιστή"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Περιγραφή Διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr "URL διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr "Διεύθυνση διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr "Περιγραφή διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr "Όνομα διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr "Θύρα διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Θήρα Διακομιστή"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr "Ήχος"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Ρυθμίσεις"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Πλήρης οθόνη"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr "Ένταση"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "Παράλληλο όριο cURL"
+
+#~ msgid "Address / Port"
+#~ msgstr "Διεύθυνση / Θήρα"
+
+#~ msgid "Basic"
+#~ msgstr "Βασικό"
+
+#~ msgid "Connect"
+#~ msgstr "Σύνδεση"
+
+#~ msgid "Credits"
+#~ msgstr "Μνείες"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Κατέβασε ένα παιχνίδι, όπως το Minetest Game, από το minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Κατέβασε ένα από το minetest.net"
+
+#~ msgid "Game"
+#~ msgstr "Παιχνίδι"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Εγκατάσταση: αρχείο: \"$1\""
+
+#~ msgid "Name / Password"
+#~ msgstr "Όνομα / Κωδικός"
+
+#~ msgid "Ok"
+#~ msgstr "Οκ"
+
+#~ msgid "Player name"
+#~ msgstr "Όνομα παίκτη"
+
+#~ msgid "Special key"
+#~ msgstr "Ειδικό πλήκτρο"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Πέθανες"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "needs_fallback_font"
diff --git a/po/eo/minetest.po b/po/eo/minetest.po
index 254b686ff..73de3a5f1 100644
--- a/po/eo/minetest.po
+++ b/po/eo/minetest.po
@@ -1,15 +1,10 @@
-# Esperanto translations for minetest package.
-# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the minetest package.
-# Automatically generated, 2015.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Esperanto (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-06-04 13:18+0000\n"
-"Last-Translator: Tim <t4im@openmailbox.org>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2021-10-05 08:09+0000\n"
+"Last-Translator: phlostically <phlostically@mailinator.com>\n"
"Language-Team: Esperanto <https://hosted.weblate.org/projects/minetest/"
"minetest/eo/>\n"
"Language: eo\n"
@@ -17,106 +12,237 @@ 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 2.7-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Clear the out chat queue"
+msgstr "Maksimumo da atendantaj elaj mesaĝoj"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Malplena komando."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Eliri al ĉefmenuo"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Nevalida komando: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Donita komando: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Listigi enretajn ludantojn"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Enretaj ludantoj: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Ĉi tiun komandon malŝaltis servilo."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Renaskiĝi"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Vi mortis"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Uzeblaj komandoj:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Uzeblaj komandoj: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Komando ne uzeblas: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Trovu helpon pri komandoj"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <komando>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Bone"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Eraro okazis en Lua skripto, kiel modifo:"
+#, fuzzy
+msgid "<none available>"
+msgstr "Komando ne uzeblas: "
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred in a Lua script:"
+msgstr "Eraris Lua-skripto:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
msgstr "Eraro okazis:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Ĉefmenuo"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Bone"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Rekonekti"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "Servilo petis rekonekton:"
+msgstr "La servilo petis rekonekton:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Ŝargas…"
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Protocol version mismatch. "
+#, fuzzy
+msgid "Client Mods"
+msgstr "Elektu Modifaĵojn"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Server enforces protocol version $1. "
+msgid "Later"
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Server supports protocol versions between $1 and $2. "
+msgid "Never"
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
-msgstr "Provu reŝalti la publikan serviloliston kaj kontrolu vian retkonekton."
+msgid "Protocol version mismatch. "
+msgstr "Protokola versia miskongruo. "
#: builtin/mainmenu/common.lua
-msgid "We only support protocol version $1."
+msgid "Server enforces protocol version $1. "
+msgstr "La servilo postulas protokolan version $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "La servilo subtenas protokolajn versiojn inter $1 kaj $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
msgstr ""
#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Ni nur subtenas protokolan version $1."
+
+#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
+msgstr "Ni subtenas protokolajn versiojn inter versioj $1 kaj $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Nuligi"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Dependas:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Dependas de:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Malŝaltu modifaron"
+msgid "Disable all"
+msgstr "Malŝalti ĉiujn"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Ŝaltu modifaron"
+msgid "Disable modpack"
+msgstr "Malŝalti modifaĵaron"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Ŝaltu ĉiujn"
+msgstr "Ŝalti ĉiujn"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Ŝalti modifaĵaron"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Fiaskis aktivigi modifon \"$1\", ĉar ĝi enhavas malpermesajn signojn. Nur "
-"literciferaj signoj [a-z0-9_] estas permesaj."
+"Malsukcesis ŝalti modifaĵon «$1», ĉar ĝi enhavas malpermesatajn signojn. Nur "
+"signoj a–z kaj 0–9 estas permesataj."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Kaŝu ludon"
+msgid "Find More Mods"
+msgstr "Trovu pliajn modifaĵojn"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Kaŝu modifarojn"
+msgid "Mod:"
+msgstr "Modifaĵo:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr "Modifo:"
+msgid "No (optional) dependencies"
+msgstr "Neniuj (malnepraj) dependaĵoj"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Neniu priskribo de ludo estas donita."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Sen dependaĵoj"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No modpack description provided."
+msgstr "Neniu priskribo de modifaĵaro estas donita."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Neniuj malnepraj dependaĵoj"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Malnepraj dependaĵoj:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Konservi"
@@ -128,98 +254,433 @@ msgstr "Mondo:"
msgid "enabled"
msgstr "ŝaltita"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "«$ 1» jam ekzistas. Ĉu superskribi ĝin?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Dependaĵoj $1 kaj $2 estos instalitaj."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 de $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"elŝutante $1,\n"
+"atendante $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "Elŝutante $1…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 nepraj dependaĵoj ne estis troveblaj."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$ 1 estos instalita, ignorante $2 dependaĵojn."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Ĉiuj pakaĵoj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Jam instalita"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Reen al ĉefmenuo"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Baza Ludo:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB ne estas disponebla per Minetest kodotradukita sen cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Elŝutante…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Malsukcesis elŝuti $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Ludoj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instali"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Instali $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Instali mankantajn dependaĵojn"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Instalo: Nesubtenata dosierspeco «$1» aŭ rompita arĥivo"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Modifaĵoj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Neniujn pakaĵojn eblis ricevi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Neniuj rezultoj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Neniuj ĝisdatigoj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Ne trovita"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Superskribi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Bonvolu kontroli, ke la baza ludo estas ĝusta."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Atendata"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Teksturaroj"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Malinstali"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Ĝisdatigi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Ĝisdatigi Ĉiujn [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Vidi pli da informoj per TTT-legilo"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Mondo nomata \"$1\" jam ekzistas"
+msgstr "Mondo kun nomo «$1» jam ekzistas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Aldona tereno"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Alteca malvarmiĝo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Alteca sekeco"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Klimata miksado"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Klimatoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Kavernegoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Kavernoj"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Krei"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Elŝutu subludon, kiel minetest_game, el minetest.net"
+msgid "Decorations"
+msgstr "Ornamoj"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Elŝutu ludon el minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Averto: La programista testo estas intencita por programistoj."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Ludo"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Forgeskeloj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Plata tereno"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Flugantaj teramasoj en la ĉielo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Fluginsuloj (eksperimentaj)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Estigi nefraktalan terenon: oceano kaj subtero"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Montetoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Malsekaj riveroj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Plialtigas malsekecon ĉirkaŭ riveroj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Instali $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Lagoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"Malalta malsekeco kaj alta varmeco kaŭzas malprofundajn aŭ sekajn riverojn"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
-msgstr "Mondogenerilo"
+msgstr "Mondestigilo"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Parametroj de mondestigilo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Parametroj specialaj por Mondestigilo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Montoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Fluo de koto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Reto de tuneloj kaj kavernoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Neniu ludo estas elektita"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Malpliigas varmecon kun alteco"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Neniu mondonomo donitas aŭ neniu ludon elektitas"
+msgid "Reduces humidity with altitude"
+msgstr "Malpliigas malsekecon kun alteco"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Riveroj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Marnivelaj riveroj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Fontnombro"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Smooth transition between biomes"
+msgstr "Glatigi transiron inter klimatoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
msgstr ""
-"Averto: La minimuma programista testo estas intencita por programistoj."
+"Konstruaĵoj aperantaj sur la tereno (neniu efiko sur arboj kaj ĝangala herbo "
+"kreitaj de v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Konstruaĵoj aperantaj sur la tereno, ofte arboj kaj kreskaĵoj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Milda, Dezerto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Milda, Dezerto, Ĝangalo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Milda, Dezerto, Ĝangalo, Tundro, Tajgo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Terensurfaca forfrotiĝo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Arboj kaj ĝangala herbo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Variigi profundecon de riveroj"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Tre grandaj kavernoj profunde subtere"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
-msgstr "Monda nomo"
+msgstr "Nomo de mondo"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Neniu instalantaj subludoj."
+msgid "You have no games installed."
+msgstr "Vi havas neniujn instalitajn ludojn."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "Ĉu vi certas forigi \"$1\"?"
+msgstr "Ĉu vi certe volas forigi «$1»?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Forigi"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: fiaskis forigi \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: malskucesis forigi «$1»"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: malvalida modifo-dosierindiko \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: malvalida dosiervojo «$1»"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "Ĉu forigi mondon \"$1\"?"
+msgstr "Ĉu forigi mondon «$1»?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Konfirmi pasvorton"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Nomo de mondestigilo"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nomo"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Pasvorto"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Pasvortoj ne kongruas!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Registriĝi kaj aliĝi"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Akcepti"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr "Alinomi modifaron:"
+msgstr "Alinomi modifaĵaron:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
+"Ĉi tiu modifaĵaro havas malimplican nomon en sia dosiero modpack.conf, kiu "
+"transpasos ĉiun alinomon ĉi tiean."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr ""
+msgstr "(Neniu priskribo de agordo estas donita)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2d-a bruo"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< Reiri al agorda paĝo"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "Foliumi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Enhavo"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Enhavo"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Malŝaltita"
@@ -232,270 +693,367 @@ msgid "Enabled"
msgstr "Ŝaltita"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
+msgid "Lacunarity"
+msgstr "Interspacoj"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "Oktavoj"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Deŝovo"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Ludoj"
+#, fuzzy
+msgid "Persistence"
+msgstr "Persisteco"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Modifoj"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Bonvolu enigi validan entjeron."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+msgid "Please enter a valid number."
+msgstr "Bonvolu enigi validan nombron."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Restore Default"
+msgstr "Restarigi pravaloron"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Skalo"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Serĉi"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr ""
+msgid "Select directory"
+msgstr "Elekti dosierujon"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr ""
+msgid "Select file"
+msgstr "Elekti dosieron"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Montri teĥnikajn nomojn"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr ""
+msgid "The value must be at least $1."
+msgstr "La valoro devas esti almenaŭ $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr ""
+msgid "The value must not be larger than $1."
+msgstr "La valoro devas esti pli ol $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Select path"
-msgstr "Selekto"
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr ""
+msgid "X spread"
+msgstr "X-disiĝo"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr ""
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr ""
+msgid "Y spread"
+msgstr "Y-disiĝo"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Instali Modifon: malsubtenata dosiertipo \"$1\" aŭ rompiĝata arkivo"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "Fiaskis instali $1 al $2"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z-disiĝo"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Instali modifon: dosiero \"$1\""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "absoluta valoro"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Instali modifon: Ne povis trovi veran modifonomon por $1"
+#. ~ "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 "normoj"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
-"Instali modifon: Ne povis trovi ĝustan dosierujan nomon por modifaro $1"
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "faciligita"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Fermi"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Ŝaltita)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Elŝutas $1, bonvolu atendi…"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 modifaĵoj"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Instali"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Malsukcesis instali $1 al $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Instali modifaĵon: Ne povas trovi veran nomon de modifaĵo por: $1"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Paĝo $1 de $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Instali modifaĵon: Ne povas trovi ĝustan dosierujan nomon por modifaĵaro $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Takso"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Ne povas trovi validan modifaĵon aŭ modifaĵaron"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Serĉi"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Malsukcesis instali $1 kiel teksturaron"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Konciza nomo:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Malsukcesis instali ludon kiel $1"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Instalis sukcese:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Malsukcesis instali modifaĵon kiel $1"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Neordigita"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Malsukcesis instali modifaĵaron kiel $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Enlegante…"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Instali denove"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Listo de publikaj serviloj estas malŝaltita"
-#: builtin/mainmenu/tab_credits.lua
+#: 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."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Pri"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
-msgstr "Aktivaj kontribuistoj"
+msgstr "Aktivaj kontribuantoj"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Aktiva bildigilo:"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Kernprogramistoj"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Kontribuantaro"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Malfermi dosierujon de datenoj de uzanto"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Malfermi per dosieradministrilo la dosierujon, kiu enhavas la mondojn,\n"
+"ludojn, modifaĵojn, kaj teksturojn provizitajn de la uzanto."
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Eksaj kontribuistoj"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Eksaj kernprogramistoj"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Instalantaj modifoj:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Modifaj informoj:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Neniu modifa priskribo disponeblas"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Alinomi"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Selekti modifan dosieron:"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Montri erarserĉajn informojn"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Malinstali selektan modifo"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Foliumi enretan enhavon"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Malinstali selektan modifaron"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Enhavo"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Adreso / Pordo"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Malŝalti teksturaron"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Kliento"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informoj:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Konekti"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Instalantaj pakaĵoj:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kreiva reĝimo"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Sen dependaĵoj."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Damaĝo ŝaltitas"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Neniu priskribo de pakaĵo disponeblas"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Alinomi"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Malinstali pakaĵon"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Nomo / Pasvorto"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Uzi teksturaron"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "Dueloj ŝaltitas"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Enlistigi servilon"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr "Asocianta adreso"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Agordi"
+msgstr "Asocii adreso"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr "Kreiva reĝimo"
+msgstr "Krea reĝimo"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "Ŝalti damaĝon"
+msgstr "Ŝalti difektadon"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nomo/Pasvorto"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Gastigi ludon"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Gastigi servilon"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Instali ludojn de ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nova"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Neniu mondo kreintas aŭ selektantas!"
+msgstr "Neniu mondo estas kreita aŭ elektita!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Ludi"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Pordo"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Publika"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Elektu Modifaĵojn"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Elektu mondon:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Servilo"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Servila pordo"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
-msgstr "Startigi ludon"
+msgstr "Ekigi ludon"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Adreso"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Vakigo"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Krea reĝimo"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Difekto"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Ŝati"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Neakordaj serviloj"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Aliĝi al ludo"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Retprokrasto"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Publikaj serviloj"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Reŝargi"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Fora pordo"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Priskribo pri servilo"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
-msgstr "2x"
+msgstr "2×"
#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
@@ -503,55 +1061,68 @@ msgstr "3D nuboj"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr "4x"
+msgstr "4×"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr "8x"
+msgstr "8×"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Pliaj Agordoj"
+msgid "All Settings"
+msgstr "Ĉiuj agordoj"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "Glatigo:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Ĉu vi certas, ke vi volas nuligi vian solludantan mondon?"
+msgid "Autosave Screen Size"
+msgstr "Memori grandecon de ekrano"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr "Bilineara filtrilo"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Protuberancmapado"
+msgstr "Dulineara filtrilo"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr "Ŝanĝi klavojn"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
-msgstr "Ligata glaco"
+msgstr "Ligata vitro"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dinamikaj ombroj"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Dinamikaj ombroj: "
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr "Ŝikaj foliaĵoj"
+msgstr "Ŝikaj folioj"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
-msgstr "Mipmapo"
+msgid "High"
+msgstr "Alta"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
-msgstr "Mipmapo + Malizotropa filtrilo"
+msgid "Low"
+msgstr "Malalta"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Ne"
+msgid "Medium"
+msgstr "Mezalta"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "Etmapo"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Etmapo + Neizotropa filtrilo"
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
@@ -559,44 +1130,35 @@ msgstr "Neniu filtrilo"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
-msgstr "Neniu Mipmapo"
+msgstr "Neniu Etmapo"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Highlighting"
-msgstr "Nodaĵa emfazado"
+msgstr "Emfazado de monderoj"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
-msgstr "Nodaĵa kadrado"
+msgstr "Kadrado de monderoj"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Neniu"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "Normalmapado"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr "Opakaj foliaĵoj"
+msgstr "Netravideblaj folioj"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr "Opaka akvo"
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Paralaksa Okludo"
+msgstr "Netravidebla akvo"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "Ŝaltu ĉiujn"
+msgstr "Partikloj"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Nuligi solludantan mondon"
+msgid "Screen:"
+msgstr "Ekrano:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -607,114 +1169,96 @@ msgid "Shaders"
msgstr "Ombrigiloj"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Ombrigiloj (eksperimentaj)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Ombrigiloj (nehaveblaj)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
-msgstr "Simplaj foliaĵoj"
+msgstr "Simplaj folioj"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Smooth Lighting"
-msgstr "Glatiga lumo"
+msgstr "Glata lumado"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
msgstr "Teksturado:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Por uzi ombrigilojn, OpenGL-a pelilo estas necesa."
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-#, fuzzy
msgid "Tone Mapping"
-msgstr "Protuberancmapado"
+msgstr "Nuanca mapado"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "Tuŝa sojlo (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Tuŝa sojlo: (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
msgstr "Trilineara filtrilo"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Ondantaj foliaĵoj"
+#, fuzzy
+msgid "Very High"
+msgstr "Altega"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Ondantaj plantoj"
+msgid "Very Low"
+msgstr "Malaltega"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Ondanta akvo"
+msgid "Waving Leaves"
+msgstr "Ondantaj foliaĵoj"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Jes"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Agordi modifojn"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Ĉefmenuo"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Startigi solludanton"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Ludi"
+msgid "Waving Liquids"
+msgstr "Ondantaj fluaĵoj"
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Solludanto"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Neniu informoj disponeblas"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Selekti teksturaron:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Ondantaj plantoj"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Teksturaroj"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Konekta eraro (ĉu eltempiĝo?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr "Konekto eltempiĝas."
+msgstr "Konekto eltempiĝis."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr "Finita!"
+msgstr "Finite!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr "Pravalorizi nodaĵojn"
+msgstr "Pravalorigante monderojn"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Pravalorizi nodaĵojn…"
+msgstr "Pravalorigante monderojn…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr "Ŝargi teksturojn…"
+msgstr "Enlegante teksturojn…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Refaru ombrigilojn…"
+msgstr "Refarante ombrigilojn…"
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
-msgstr "Konekteraro (ĉu eltempiĝo?)"
+msgstr "Konekta eraro (ĉu eltempiĝo?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Ne povas trovi aŭ ŝuti ludon \""
+#, fuzzy
+msgid "Could not find or load game: "
+msgstr "Ne povis trovi aŭ enlegi ludon \""
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
@@ -726,79 +1270,195 @@ msgstr "Ĉefmenuo"
#: src/client/clientlauncher.cpp
msgid "No world selected and no address provided. Nothing to do."
-msgstr "Ne mondo selektas kaj ne adreso provizatas. Nenion fari."
+msgstr "Neniu mondo estas elektita kaj neniu adreso donita. Nenio fareblas."
#: src/client/clientlauncher.cpp
msgid "Player name too long."
-msgstr "Ludanta nomo trolongas."
+msgstr "Nomo de ludanto estas tro longa."
#: src/client/clientlauncher.cpp
-msgid "Provided world path doesn't exist: "
-msgstr "Donita monda dosierindiko ne ekzistas. "
+msgid "Please choose a name!"
+msgstr "Bonvolu elekti nomon!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Malsukcesis malfermi donitan pasvortan dosieron: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Donita monda dosierindiko ne ekzistas: "
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Reviziu debug.txt por detaloj."
+"Rigardu dosieron debug.txt por detaloj."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Ŝanĝi klavojn"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "– Adreso: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "– Reĝimo: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "– Pordo: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "– Publika: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "– LkL: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "– Nomo de servilo: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Eraro okazis:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Memaga pluigo malŝaltita"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Memaga pluigo ŝaltita"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Ĝisdatigo de vidpunkto malŝaltita"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Ĝisdatigo de vidpunkto ŝaltita"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Ŝanĝi pasvorton"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Glita vidpunkto malŝaltita"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Glita vidpunkto ŝaltita"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Klienta modifado"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Klient-flanka skriptado malŝaltita"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "Konekti al servilo…"
+msgstr "Konektante al servilo…"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "Daŭrigi"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Stirado:\n"
+"– %s: moviĝi antaŭen\n"
+"– %s: moviĝi posten\n"
+"– %s: moviĝi maldekstren\n"
+"– %s: moviĝi dekstren\n"
+"– %s: salti/supreniri\n"
+"- %s: fosi/bati\n"
+"- %s: meti/uzi\n"
+"– %s: kaŝiri/malsupreniri\n"
+"– %s: demeti portaĵojn\n"
+"– %s: portaĵujo\n"
+"– Muso: turniĝi/rigardi\n"
+"– Musrado: elekti portaĵon\n"
+"– %s: babili\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr "Krei klienton…"
+msgstr "Kreante klienton…"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Krei servilon…"
+msgstr "Kreante servilon…"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Defaŭltaj Klavoj:\n"
-"- WASD: movi\n"
-"- Spacetklavo: salti/klimi\n"
-"- Majuskliga Klavo: lanti/malsupreniri\n"
-"- Q: lasi aĵon\n"
-"- I: inventaro\n"
-"- Muso: turni/rigardi\n"
-"- Muso maldekstra: fosi/bati\n"
-"- Muso dekstra: lokigi/uzi\n"
-"- Musrado: elekti aĵon\n"
-"- T: babili\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Erarserĉaj informoj kaj profilila grafikaĵo kaŝitaj"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Erarserĉaj informoj montritaj"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Erarserĉaj informoj, profilila grafikaĵo, kaj dratostaro kaŝitaj"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -813,502 +1473,822 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"Defaŭltaj Klavoj:\n"
-"Nevidebla menuo :\n"
-"- unufoja tuŝeto: aktivigi butonon\n"
-"- dufoja tuŝeto: lokigi/uzi\n"
+"Implicita stirado:\n"
+"Senmenue:\n"
+"- unuobla tuŝeto: aktivigi butonon\n"
+"- duobla tuŝeto: meti/uzi\n"
"- ŝova fingro: rigardi\n"
-"Videbla menuo/inventaro:\n"
-"- dufoja tuŝeto (ekstere):\n"
+"Videbla menuo/portaĵujo:\n"
+"- duobla tuŝeto (ekstere):\n"
" -->fermi\n"
-"- tuŝi stakon, tuŝi inventaran spacon:\n"
-" --> movi stakon\n"
-"- tuŝi kaj treni, tuŝeti duan fingron\n"
-" --> lokigi unun aĵon al inventara spaco\n"
+"- tuŝi portaĵaron, tuŝi portaĵingon:\n"
+" --> movi portaĵaron\n"
+"- tuŝi kaj tiri, tuŝeti per dua fingro\n"
+" --> meti unu portaĵon en portaĵingon\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Malŝaltis senliman vidodistancon"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Ŝaltis senliman vidodistancon"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Kreante klienton…"
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr "Foriri al menuo"
+msgstr "Eliri al menuo"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr "Foriri al operaciumo"
+msgstr "Eliri al operaciumo"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Rapidega reĝimo malŝaltita"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Rapidega reĝimo ŝaltita"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Rapidega reĝimo ŝaltita (mankas rajto «rapidegi»)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Fluga reĝimo malŝaltita"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Fluga reĝimo ŝaltita"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Fluga reĝimo ŝaltita (mankas rajto «flugi»)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Nebulo malŝaltita"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Nebulo ŝaltita"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Ludaj informoj:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Ludo paŭzigita"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Gastiganta servile"
+
+#: src/client/game.cpp
msgid "Item definitions..."
-msgstr "Aĵaj difinoj…"
+msgstr "Objektaj difinoj…"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
-msgstr "Medioj…"
+msgstr "Vidaŭdaĵoj…"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Nodaĵaj difinoj…"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Mapeto nuntempe malŝaltita de ludo aŭ modifaĵo"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Adrestrovili…"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Ludo por pluraj ludantoj"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Renaskiĝi"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Trapasa reĝimo malŝaltita"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Malŝaltiĝi…"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Trapasa reĝimo ŝaltita"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Sonintenso"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Trapasa reĝimo ŝaltita (mankas rajto «trapasi»)"
-#: src/game.cpp
-msgid "You died."
-msgstr "Vi mortis."
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Monderaj difinoj…"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "bone"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "For"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Enen "
+#: src/client/game.cpp
+msgid "On"
+msgstr "Ek"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Daŭrigi"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Celilsekva reĝimo malŝaltita"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Uzi\" = malsupreniri"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Celilsekva reĝimo ŝaltita"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Malantaŭen"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profilila grafikaĵo montrita"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Babili"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Fora servilo"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Komando"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Serĉante adreson…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konzolo"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Malŝaltiĝante…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Dufoja tuŝeto \"salti\" por baskuli flugreĝimon"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Ludo por unu"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Lasi"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Laŭteco"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Antaŭen"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Silentigite"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventaro"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Sonsistemo estas malŝaltita"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Salti"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Sonsistemo ne estas subtenata de ĉi tiu muntaĵo"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Klavo jam uzatas"
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Malsilentigite"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-"Klavagordoj (Se tiu menuo misfunkcias, forigu agordojn el minetest.conf)"
-
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Maldekstren"
-
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Presi stakojn"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Ŝanĝi vidodistancon"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Dekstren"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Lanti"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Vidodistanco agordita al %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Baskuli filmreĝimon"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Vidodistanco maksimumas: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Baskuli rapidreĝimon"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Vidodistanco je la minimumo: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Baskuli flugreĝimon"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Laŭteco agordita al %d%%"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Baskuli nekolizian reĝimon"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Dratostaro montrita"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Uzi"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Zomado nuntempe malŝaltita de ludo aŭ modifaĵo"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zomo"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "bone"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "premi klavon"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Babilo kaŝita"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Ŝanĝi"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Babilo montrita"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Certigi pasvorton"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Travida fasado kaŝita"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nova pasvorto"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Travida fasado montrita"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Malnova pasvorto"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profililo kaŝita"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Pasvortoj ne kongruas!"
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profililo montrita (paĝo %d el %d)"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Foriri"
-
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Sonintenso: "
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Aplikaĵoj"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Reenklavo"
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Retro"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Majuskla baskulo"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Fiksiĝema klavo"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Vakigo"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Komo"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Stiro"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Konverto"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Malsupren"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Fino"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Viŝi OEF"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Viŝi dosierfinon"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Eskapo"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Ruli"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Finalo"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Helpo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Hejmen"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Enmeti"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME-akcepto"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME-konverto"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME-eskapo"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME-reĝimŝanĝo"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME-nekonverto"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Enmeti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Maldekstren"
+
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Maldekstra butono"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Maldekstra Stiro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Maldekstra Menuo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Maldekstra Majuskligo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr "Maldekstra fenestro"
+msgstr "Maldekstra Vindozo"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menuo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Meza butono"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Minuso"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Reĝima ŝanĝo"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Sekvanto"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nekonverto"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Nombra Baskulo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr "Klavareto *"
+msgstr "Klavareta *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr "Klavareto +"
+msgstr "Klavareta +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr "Klavareto -"
+msgstr "Klavareta -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Klavareta ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr "Klavareto /"
+msgstr "Klavareta /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr "Klavareto 0"
+msgstr "Klavareta 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr "Klavareto 1"
+msgstr "Klavareta 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr "Klavareto 2"
+msgstr "Klavareta 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr "Klavareto 3"
+msgstr "Klavareta 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr "Klavareto 4"
+msgstr "Klavareta 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr "Klavareto 5"
+msgstr "Klavareta 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr "Klavareto 6"
+msgstr "Klavareta 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr "Klavareto 7"
+msgstr "Klavareta 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr "Klavareto 8"
+msgstr "Klavareta 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr "Klavareto 9"
+msgstr "Klavareta 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Vakigi"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Paĝon malsupren"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Paĝon supren"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Haltigo"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punkto"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Pluso"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Ludi"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Presi"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Antaŭe"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Enen"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Dekstren"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Dekstra butono"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Dekstra Stiro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Dekstra Menuo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Dekstra Majuskligo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr "Dekstra fenestro"
+msgstr "Dekstra Vindozo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Ruluma Baskulo"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr "Selekto"
+msgstr "Elekti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Majuskligo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Dormo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Ekrankopio"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Spacetklavo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Supren"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X-Butono 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X-Butono 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zomo"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Mapeto kaŝita"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Mapeto en radara reĝimo, zomo ×%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Mapeto en supraĵa reĝimo, zomo ×%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Mapeto en tekstura reĝimo"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Malsukcesis elŝuti $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Daŭrigi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "«Speciala» = malsupreniri"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Memirado"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Memaga saltado"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Malantaŭen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Ŝanĝi vidpunkton"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Babilo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Komando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konzolo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Malgrandigi vidodistancon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Mallaŭtigi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Dufoje tuŝetu salton por baskuligi flugan reĝimon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Lasi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Antaŭen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Pligrandigi vidodistancon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Plilaŭtigi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Portaĵujo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Salti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Klavo jam estas uzata"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Loka komando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Silentigi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Sekva portaĵo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Antaŭa portaĵo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Ŝanĝi vidodistancon"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Ekrankopio"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Kaŝiri"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Baskuligi travidan fasadon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Baskuligi babilan protokolon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Baskuligi rapidegan reĝimon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Baskuligi flugan reĝimon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Baskuligi nebulon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Baskuligi mapeton"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Baskuligi trapasan reĝimon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Baskuligi celilsekvadon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "premi klavon"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Ŝanĝi"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nova pasvorto"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Malnova pasvorto"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Pasvortoj ne kongruas!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Foriri"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Silentigita"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Laŭteco: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "eo"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Bonvolu elekti nomon!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Korektas pozicion de virtuala stirstango.\n"
+"Se malŝaltita, virtuala stirstango centriĝos je la unua tuŝo."
+
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Uzi virtualan stirstangon por agigi la butonon «aux».\n"
+"Se ŝaltita, virtuala stirstango tuŝetos la butonon «aux» ankaŭ ekster la "
+"ĉefa ringo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"(X,Y,Z) deŝovo de fraktalo for de la centro de la mondo en unuoj\n"
+"de «scale».\n"
+"Utilas por movo de volata punkto proksimen al (0, 0) por krei taŭgan\n"
+"naskiĝejon, aŭ por permeso «zomi» al volata punkto per pligrandigo\n"
+"de la skalo.\n"
+"La normo estas agordita al taŭga naskiĝejo por aroj de Mandelbrot\n"
+"kun la normaj parametroj; ĝi eble bezonos alĝustigon por aliaj situacioj.\n"
+"Amplekso proksimume inter -2 kaj 2. Obligu per skalo por deŝovo\n"
+"en monderoj."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"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) skalo de fraktalo en monderoj.\n"
+"La vera grando de la fraktalo estos du aŭ trioble pli granda.\n"
+"Ĉi tiuj nombroj povas esti tre grandaj; la fraktalo ne devas\n"
+"nepre engrandi la mondon.\n"
+"Pligrandigu ĉi tiujn por «zomi» al la detaloj de la fraktalo.\n"
+"La normo estas vertikale ŝrumpita formo taŭga por insulo;\n"
+"egaligu ĉiujn tri nombrojn por akiri la krudan formon."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "2d-a bruo, kiu regas la formon/grandon de krestaj montoj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2d-a bruo, kiu regas la formon/grandecon de mildaj montetoj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2d-a bruo, kiu regas la formon/grandon de terasaj montoj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "2d-a bruo, kiu regas la grandon/ofton de krestaj montaroj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2d-a bruo, kiu regas la grandecon/oftecon de mildaj montetoj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "2d-a bruo, kiu regas la grandon/ofton de terasaj montaroj."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "2d-a bruo, kiu lokas la riverajn valojn kaj kanalojn."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1316,7 +2296,53 @@ msgstr "3D nuboj"
#: src/settings_translation_file.cpp
msgid "3D mode"
+msgstr "3d-a reĝimo"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Forteco de 3D-reĝima paralakso"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3d-a bruo difinanta grandegajn kavernojn."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"3d-a bruo difinanta montan strukturon kaj altecon.\n"
+"Ankaŭ difinas strukturon de montoj sur fluginsuloj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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-bruo difinanta la strukturon de fluginsuloj.\n"
+"Ŝanĝite de la implicita valoro, la bruo «scale» (implicite 0.7) eble\n"
+"bezonos alĝustigon, ĉar maldikigaj funkcioj de fluginsuloj funkcias\n"
+"plej bone kiam la bruo havas valoron inter -2.0 kaj 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "3d-a bruo difinanta strukturon de riveraj kanjonaj muroj."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3d-a bruo difinanta terenon."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
msgstr ""
+"3d-a bruo por montaj superelstaraĵoj, rokmuroj, ktp. Plej ofte la etaj "
+"variaĵoj."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3D-bruo, kiu determinas la nombron de forgeskeloj en mondoparto."
#: src/settings_translation_file.cpp
msgid ""
@@ -1327,7 +2353,23 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"Subteno de 3d-a vido.\n"
+"Nun subtenataj:\n"
+"– none: nenia 3d-a eligo.\n"
+"– anaglyph: bluverde/pulpure kolora 3d-o.\n"
+"– interlaced: polarigo de paraj/neparaj linioj.\n"
+"– topbottom: dividi ekranon horizontale.\n"
+"– sidebyside: dividi ekranon vertikale.\n"
+"– crossview: krucokula 3d-o.\n"
+"– pageflip: kvarbufra 3d-o.\n"
+"Rimarku, ke la reĝimo «interlaced» postulas ŝaltitajn ombrigilojn."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1335,42 +2377,52 @@ 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 ""
+"Elektita mapfonto por nova mapo; lasu malplena por hazarda mapfonto.\n"
+"Kreante novan mondon per ĉefmenuo oni transpasos ĉi tion."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr ""
+msgstr "Mesaĝo montrota al ĉiuj klientoj post servila fiasko."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
-msgstr ""
+msgstr "Mesaĝo montrota al ĉiuj klientoj post servila malŝaltiĝo."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "Intertempo de ABM (aktiva modifilo de monderoj)"
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
-msgstr ""
+msgid "ABM time budget"
+msgstr "Tempobuĝeto de ABM (aktiva modifilo de monderoj)"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Absoluta maksimumo de atendantaj estigotaj monderoj"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Acceleration in air"
+msgstr "Akcelo en aero"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Akcelo de pezforto, en monderoj sekunde sekunde."
#: src/settings_translation_file.cpp
msgid "Active Block Modifiers"
-msgstr ""
+msgstr "Aktivaj modifiloj de monderoj (ABM)"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr "Intertempo de aktiva mastrumilo de monderoj"
#: src/settings_translation_file.cpp
msgid "Active block range"
-msgstr ""
+msgstr "Aktiva amplekso de monderoj"
#: src/settings_translation_file.cpp
msgid "Active object send range"
-msgstr ""
+msgstr "Aktiva senda amplekso de objektoj"
#: src/settings_translation_file.cpp
msgid ""
@@ -1378,212 +2430,434 @@ msgid ""
"Leave this blank to start a local server.\n"
"Note that the address field in the main menu overrides this setting."
msgstr ""
+"Adreso alkonektota.\n"
+"Lasu ĝin malplena por komenci lokan servilon.\n"
+"La adresa kampo en la ĉefmenuo transpasas ĉi tiun agordon."
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Aldonas partiklojn ĉe fosado de mondero."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
+"Ĝustigi punktojn cole al via ekrano (ekster X11/Android), ekzemple por "
+"kvarmilaj ekranoj."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
+"Alĝustigas densecon de la fluginsula tavolo.\n"
+"Plialtigu la valoron por pliigi densecon. Eblas plusa aŭ minusa.\n"
+"Valoro = 0.0: 50% de volumeno estas fluginsuloj.\n"
+"Valoro = 2.0 (povas esti pli alta, depende de «mgv7_np_floatland»; ĉiam\n"
+"kontrolu certige) kreas solidan tavolon de fluginsulaĵo."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Almeti nomon de portaĵo"
#: src/settings_translation_file.cpp
msgid "Advanced"
-msgstr ""
+msgstr "Specialaj"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
+"Modifas la luman kurbon per apliko de «gamaa korekto» al ĝi.\n"
+"Pli altaj valoroj heligas mezajn kaj malaltajn lumnivelojn.\n"
+"Valoro «1.0» lasas la luman kurbon neŝanĝita.\n"
+"Ĉi tio nur grave efikas sur taglumo kaj artlumo; ĝi nur\n"
+"tre malmulte efikas sur natura noktlumo."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr ""
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Ĉiam en fluga kaj rapida reĝimoj"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "Gamao de media ombrigo"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr ""
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Kiom da mesaĝoj ludanto rajtas sendi en dek sekundoj."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Plifortigas la valojn."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
-msgstr ""
+msgstr "Neizotropa filtrado"
#: src/settings_translation_file.cpp
msgid "Announce server"
-msgstr ""
+msgstr "Enlistigi servilon"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
+msgid "Announce to this serverlist."
+msgstr "Anonci al ĉi tiu servillisto."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Append item name"
+msgstr "Almeti nomon de portaĵo"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Almeti nomon de portaĵo al ŝpruchelplio."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Bruo de pomujoj"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Braka movofirmo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
+"Braka movofirmo donas pli verecan movadon\n"
+"de la brako dum movo de la vidpunkto."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
-msgstr ""
+msgstr "Demandi pri rekonekto fiaskinte"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
msgstr ""
+"Je ĉi tiu distanco, la servilo fervore alĝustigos la nombron de monderoj\n"
+"sendataj al klientoj.\n"
+"Malgrandaj valoroj povas multe plibonigi efikecon, je la kosto de videblaj\n"
+"bildigaj eraroj (iuj monderoj ne bildiĝos sub akvo kaj en kavernoj, kaj iam\n"
+"eĉ ne surtere).\n"
+"Valoro pli granda ol tiu de «max_block_send_distance» malŝaltas ĉi tiun\n"
+"plibonigon.\n"
+"Donita en mondopecoj (16 monderoj)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Memage antaŭen"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Memage salti unumonderajn barojn."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Memage raporti al la listo de serviloj."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Memori grandecon de ekrano"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Reĝimo de memaga skalado"
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Aux1 key"
+msgstr "Salta klavo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "Speciala klavo por supreniri/malsupreniri"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Malantaŭen"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Base terrain height"
-msgstr "Ondanta akvo"
+msgid "Base ground level"
+msgstr "Baza ternivelo"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr ""
+msgid "Base terrain height."
+msgstr "Baza alteco de tereno."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr ""
+msgid "Basic privileges"
+msgstr "Bazaj rajtoj"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Borda bruo"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Sojlo de borda bruo"
#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
-msgstr "Bilineara filtrilo"
+msgstr "Dulineara filtrado"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Bind address"
-msgstr "Asocianta adreso"
+msgstr "Bindi adreson"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parametroj de varmeco kaj sekeco por Klimata API"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome noise"
+msgstr "Klimata bruo"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Optimuma distanco de monder-sendado"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Dosierindiko al egrasa kaj kursiva tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Dosierindiko al grasa kaj kursiva egallarĝa tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Dosierindiko al grasa tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Dosierindiko al grasa egallarĝa tiparo"
+
+#: src/settings_translation_file.cpp
msgid "Build inside player"
-msgstr ""
+msgstr "Konstruado en ludanto"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Primitivaĵo"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Protuberancmapado"
+#, fuzzy
+msgid "Camera"
+msgstr "Ŝanĝi vidpunkton"
#: src/settings_translation_file.cpp
-msgid "Camera smoothing"
+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 ""
+"Distanco de vidpunkto «proksime tonda ebeno» en monderoj, inter 0 kaj 0.25.\n"
+"Funkcias nur sur GLES-platformoj. Plejparto de uzantoj ne bezonos ĉi tion "
+"ŝanĝi.\n"
+"Plialtigo povas malpliigi misbildojn por malfortaj grafiktraktiloj.\n"
+"0.1 = Norma, 0.25 = Bona valoro por malfortaj tabulkomputiloj."
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "Glatigo de vidpunkto"
#: src/settings_translation_file.cpp
msgid "Camera smoothing in cinematic mode"
-msgstr ""
+msgstr "Glatigo de vidpunkto por glita vidpunkto"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
-msgstr ""
+msgstr "Baskula klavo de ĝisdatigo de vidpunkto"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Kaverna bruo"
#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr ""
+msgstr "Kaverna bruo #1"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr ""
+msgstr "Kaverna bruo #1"
#: src/settings_translation_file.cpp
msgid "Cave width"
-msgstr ""
+msgstr "Kaverna larĝo"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr "Kaverna bruo 1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Kaverna bruo 2"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Kaverna limo"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Bruo de kavernoj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Maldikiĝo de kavernoj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Sojlo de kavernoj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Supra limo de kavernoj"
+
+#: 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 ""
+"Centro de amplekso de pliigo de la luma kurbo.\n"
+"Kie 0.0 estas minimuma lumnivelo, 1.0 estas maksimuma numnivelo."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chat key"
-msgstr "Ŝanĝi klavojn"
+msgid "Chat command time message threshold"
+msgstr "Sojlo de babilaj mesaĝoj antaŭ forpelo"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chat toggle key"
-msgstr "Ŝanĝi klavojn"
+msgid "Chat commands"
+msgstr "Babilaj komandoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Komando"
+msgid "Chat font size"
+msgstr "Grandeco de babiluja tiparo"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
+msgid "Chat key"
+msgstr "Babila klavo"
#: src/settings_translation_file.cpp
-msgid "Chunk size"
-msgstr ""
+msgid "Chat log level"
+msgstr "Babileja protokola nivelo"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Supra limo de babilaj mesaĝoj"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Formato de babilaj mesaĝoj"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Sojlo de babilaj mesaĝoj antaŭ forpelo"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Plejlongo de babilaj mesaĝoj"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Babila baskula klavo"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Chat weblinks"
+msgstr "Babilo montrita"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr "Grando de peco"
+
+#: src/settings_translation_file.cpp
msgid "Cinematic mode"
-msgstr "Kreiva reĝimo"
+msgstr "Glita vidpunkto"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cinematic mode key"
-msgstr "Kreiva reĝimo"
+msgstr "Klavo de glita vidpunkto"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
+msgstr "Puraj travideblaj teksturoj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Kliento"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr ""
+msgstr "Kliento kaj servilo"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr ""
+msgid "Client modding"
+msgstr "Klienta modifado"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr ""
+msgid "Client side modding restrictions"
+msgstr "Limigoj de klient-flanka modifado"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Limigoj de amplekso por klientflanka serĉado de monderoj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Klienta modifado"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Suprenira rapido"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
-msgstr ""
+msgstr "Nuba duondiametro"
#: src/settings_translation_file.cpp
msgid "Clouds"
@@ -1591,68 +2865,145 @@ msgstr "Nuboj"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr ""
+msgstr "Nuboj kreiĝas klient-flanke."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Clouds in menu"
-msgstr "Ĉefmenuo"
+msgstr "Nuboj en ĉefmenuo"
#: src/settings_translation_file.cpp
msgid "Colored fog"
+msgstr "Kolora nebulo"
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "Koloraj ombroj"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
msgstr ""
+"Diskomita listo de etikedoj, kies havantojn kaŝi en la datena deponejo.\n"
+"«nonfree» povas identigi kaj kaŝi pakaĵojn, kiuj ne estas liberaj laŭ la "
+"difino\n"
+"de «Free Software Foundation» (Fondaĵo por libera programaro).\n"
+"Vi ankaŭ povas specifi aĝtaksojn de l’ enhavo.\n"
+"Ĉi tiuj etikedoj ne dependas de versioj de Minetest, do vi ĉiam povas "
+"rigardi\n"
+"la plenan liston je https://content.minetest.net/help/content_flags/"
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
+"Diskomita listo de modifaĵoj, kiuj rajtas aliri la API-on de HTTP, kiu\n"
+"ebligas alŝutadon kaj elŝutadon de datenoj al/el la interreto."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
+"Diskomita listo de fidataj modifaĵoj, kiuj rajtas aliri nesekurajn "
+"funkciojn\n"
+"eĉ kiam modifaĵa sekureco estas ŝaltita (per "
+"«request_insecure_environment()»)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Command key"
-msgstr "Komando"
+msgstr "Komanda klavo"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Connect glass"
-msgstr "Ligata glaco"
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivelo de desigo per ZLib uzota por densigi mondopecojn dum konservado sur "
+"disko.\n"
+"-1 - la implicita nivelo de densigo per Zlib\n"
+"0 - neniu densigo, plej rapida\n"
+"9 - plej bona densigo, plej malrapida\n"
+"(niveloj 1-3 uzas la \"rapidan\" metodon de Zlib; 4-9 uzas la ordinaran "
+"metodon)"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivelo de desigo per ZLib uzota por densigi mondopecojn dum sendado al "
+"kliento.\n"
+"-1 - la implicita nivelo de densigo per Zlib\n"
+"0 - neniu densigo, plej rapida\n"
+"9 - plej bona densigo, plej malrapida\n"
+"(niveloj 1-3 uzas la \"rapidan\" metodon de Zlib; 4-9 uzas la ordinaran "
+"metodon)"
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr "Kunfandi vitron"
+
+#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr "Konekti al servilo…"
+msgstr "Konekti al fora vidaŭdaĵa servilo"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr ""
+msgstr "Kunfandas vitron, se la monderoj tion subtenas."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Console alpha"
-msgstr "Konzolo"
+msgstr "Travidebleco de konzolo"
#: src/settings_translation_file.cpp
msgid "Console color"
-msgstr "Konzola koloro"
+msgstr "Koloro de konzolo"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Konzola klavo"
+msgid "Console height"
+msgstr "Alteco de konzolo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Enreta deponejo de enhavo"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Malpermesitaj flagoj de ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Maksimuma nombro de samtempaj elŝutoj de ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "URL de la datena deponejo"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
-msgstr ""
+msgstr "Senĉese antaŭen"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
+"Senĉesa antaŭena movado, baskuligata de la memirada klavo.\n"
+"Premu la memiran klavon ree, aŭ reeniru por ĝin malŝalti."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1661,237 +3012,385 @@ msgstr "Stirado"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
+"Regas daŭron de tagnokta periodo.\n"
+"Ekzemploj:\n"
+"72 = 20 minutoj, 360 = 4 minutoj, 1 = 24 horoj, 0 = restadas senŝanĝe."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr ""
+msgstr "Regas krutecon/profundecon de lagaj profundaĵoj."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr ""
+msgstr "Regas krutecon/altecon de montetoj."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
+"Regas larĝon de tuneloj, pli malalta valoro kreas pli larĝajn tunelojn.\n"
+"Valoro ≥ 10.0 tute malŝaltas estigon de tuneloj kaj evitas la intensan\n"
+"kalkulojn de bruo."
#: src/settings_translation_file.cpp
msgid "Crash message"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgstr "Fiaska mesaĝo"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgid "Creative"
+msgstr "Krea"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr ""
+msgstr "Travidebleco de celilo"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
+"Travidebleco de celilo (maltravidebleco, inter 0 kaj 255).\n"
+"Ankaŭ determinas la koloron de la celilo de objekto"
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr ""
+msgstr "Koloro de celilo"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
+"Koloro de celilo (Ruĝo, Verdo, Bluo).\n"
+"Ankaŭ determinas la koloron de la celilo de objekto"
#: src/settings_translation_file.cpp
msgid "DPI"
-msgstr ""
+msgstr "Punktoj cole"
#: src/settings_translation_file.cpp
msgid "Damage"
-msgstr "Damaĝon"
+msgstr "Difekto"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr ""
+msgstr "Baskula klavo de erarserĉaj informoj"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Sojlo de grandeco de protokola dosiero"
#: src/settings_translation_file.cpp
msgid "Debug log level"
+msgstr "Erarserĉa protokola nivelo"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Mallaŭtiga klavo"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr ""
+msgstr "Dediĉita servila paŝo"
#: src/settings_translation_file.cpp
msgid "Default acceleration"
-msgstr ""
+msgstr "Implicita akcelo"
#: src/settings_translation_file.cpp
msgid "Default game"
-msgstr ""
+msgstr "Norma ludo"
#: 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 ""
+"Implicita ludo kreante novajn mondojn.\n"
+"Ĝi estos transpasita kreante mondon de la ĉefmenuo."
#: src/settings_translation_file.cpp
msgid "Default password"
-msgstr "Defaŭlta pasvorto"
+msgstr "Implicita pasvorto"
#: src/settings_translation_file.cpp
msgid "Default privileges"
-msgstr ""
+msgstr "Implicitaj rajtoj"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Implicita raporta formo"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Implicita grandeco de la kolumno"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Difinas zonojn kie arboj donas pomojn."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Difinas zonojn kun sablaj bordoj."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "Difinas distribuon de pli alta tereno kaj krutecon de rokmuroj."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Difinas distribuon de alta tereno."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Difinas tutan grandecon de kavernoj; pli malgrandaj valoroj kreas pli "
+"grandajn kavernojn."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Difinas vastan sturkturon de akvovojo."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Difinas lokon kaj terenon de malnepraj montetoj kaj lagoj."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Difinas la bazan ternivelon."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Difinas la profundecon de la rivera akvovojo."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
+"Difinas maksimuman distancon por transsendo de ludantoj, en monderoj (0 = "
+"senlima)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
-msgstr ""
+msgid "Defines the width of the river channel."
+msgstr "Difinas larĝecon de la rivera akvovojo."
#: src/settings_translation_file.cpp
-msgid "Delay showing tooltips, stated in milliseconds."
-msgstr ""
+msgid "Defines the width of the river valley."
+msgstr "Difinas larĝecon de la rivera valo."
#: src/settings_translation_file.cpp
-msgid "Deprecated Lua API handling"
-msgstr ""
+msgid "Defines tree areas and tree density."
+msgstr "Difinas arbajn zonojn kaj densecon."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Prokrasto antaŭ ĝisdatigo de maŝoj kliente (en milisekundoj).\n"
+"Pli grandaj valoroj malrapidigas oftecon de ŝanĝoj, malhelpante postreston\n"
+"je malrapidaj klientoj."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr ""
+msgid "Delay in sending blocks after building"
+msgstr "Prokrasti sendon de metitaj monderoj"
#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr ""
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr "Prokrasto antaŭ montro de ŝpruchelpiloj, sekunde."
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr "Traktado de evitinda Lua API"
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "Profundo sub kiu troveblos grandegaj kavernoj."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr "Profundo sub kiu troveblos grandaj kavernoj."
#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
+"Priskribo de servilo, montrota al ludantoj aliĝintaj kaj en la listo de "
+"serviloj."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Sojlo de dezerta bruo"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
+"Dezertoj estiĝas kiam «np_biome» superas ĉi tiun valoron.\n"
+"Kiam la nova klimata sistemo aktivas, ĉi tio estas malatentata."
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr "Malsamtempigi bildmovon de monderoj"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Developer Options"
+msgstr "Ornamoj"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr "Klavo por fosi"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Fosaj partikloj"
+
+#: src/settings_translation_file.cpp
msgid "Disable anticheat"
-msgstr "Ŝalti partiklojn"
+msgstr "Malŝalti senartifikigon"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+msgid "Disallow empty passwords"
+msgstr "Malpermesi malplenajn pasvortojn"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr ""
+msgstr "Domajna nomo de servilo montrota en la listo de serviloj."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Double tap jump for fly"
-msgstr "Dufoja tuŝeto \"salti\" por baskuli flugreĝimon"
+msgstr "Duoble premu salto-klavon por flugi"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Double-tapping the jump key toggles fly mode."
-msgstr "Dufoja tuŝeto \"salti\" por baskuli flugreĝimon"
+msgstr "Duobla premo de salto-klavo baskulas flugan reĝimon."
#: src/settings_translation_file.cpp
msgid "Drop item key"
+msgstr "Demeta klavo"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Ŝuti la erarserĉajn informojn de «mapgen»."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Maksimuma Y de forgeskelo"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Minimuma Y de forgeskeloj"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Bruo de forgeskeloj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
msgstr ""
+"Ŝalti subtenon de IPv6 (por kaj kliento kaj servilo).\n"
+"Bezonata por ia funkciado de IPv6-konektoj."
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
msgstr ""
+"Ŝalti klient-flankajn Lua-modifojn.\n"
+"Tiu ĉi funkcio estas prova kaj la API eble ŝanĝontas."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "Ŝaltu modifaron"
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Ŝalti konzolan fenestron"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Ŝalti krean reĝimon por ĉiuj ludantoj"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Ŝalti stirstangojn"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Ŝalti subtenon de modifaĵaj kanaloj."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enable mod security"
-msgstr "Interreta modifo-deponejo"
+msgstr "Ŝalti modifaĵan sekurecon"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr ""
+msgstr "Ŝalti difektadon kaj mortadon de ludantoj."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
-msgstr ""
+msgstr "Ŝalti hazardan uzulan enigon (nur por testado)."
#: src/settings_translation_file.cpp
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
+"Ŝalti glatan lumadon kun simpla media ombrado.\n"
+"Malŝaltu por rapido aŭ alia aspekto."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1901,6 +3400,10 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
+"Ŝalti por malpermesi konekton de malnovaj klientoj.\n"
+"Malnovaj klientoj estas akordaj tiel, ke ili ne fiaskas konektante al novaj "
+"serviloj,\n"
+"sed eble ili ne subtenos ĉiujn atendatajn funkciojn."
#: src/settings_translation_file.cpp
msgid ""
@@ -1909,311 +3412,538 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
+"Ŝalti uzon de fora vidaŭdaĵa servilo (se ĝi donitas de la servilo).\n"
+"Foraj serviloj prezentas ege pli rapidon manieron elŝuti vidaŭdaĵojn\n"
+"(ekzemple teksturojn) konektante al la servilo."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
+"Ŝalti verticajn bufrajn objektojn.\n"
+"Ĉi tio devus multe plibonigi efikecon de grafiko."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Ŝalti balanciĝon kaj ĝian fortecon.\n"
+"Ekzemple: 0 por nenioma balanciĝo, 1.0 por normala, 2.0 por duobla."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"Ŝalti/malŝalti ruladon de IPv6-a servilo.\n"
+"Ignorita, se «bind_address» estas agordita.\n"
+"Bezonas «enable_ipv6» ŝaltitan."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+"Ŝaltas filmecan mapadon de tono «Uncharted 2», fare de Hable.\n"
+"Simulas la tonan kurbon de fotofilmo, kaj ĝian proksimigon al aspekto\n"
+"de bildoj kun alta dinamika amplekso. Mezampleksa kontrasto estas\n"
+"iomete alĝustigita, ombroj kaj malombroj estas glate densigitaj."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables filmic tone mapping"
-msgstr "Ŝalti damaĝon"
+msgid "Enables animation of inventory items."
+msgstr "Ŝaltas movbildojn en portaĵujo."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Ŝaltas kaŝmemoradon de maŝoj turnitaj per «facedir»."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enables minimap."
-msgstr "Ŝalti damaĝon"
+msgstr "Ŝaltas mapeton."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
+"Ŝaltas la sonsistemon.\n"
+"Malŝaltite, ĉi tio tute malŝaltas ĉiujn sonojn kaj la enludoj sonregiloj\n"
+"ne funkcios.\n"
+"Ŝanĝo de ĉi tiu agordo postulos restartigon."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Profilo de valoj"
+
+#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "Intervalo inter presoj de profilaj datenoj de la motoro"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Metodoj de estoj"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
+"Eksponento de maldikigo de fluginsuloj. Ŝanĝas la konduton\n"
+"de maldikigo.\n"
+"Valoro = 1.0 kreas unuforman, linearan maldikigon.\n"
+"Valoroj > 1.0 kreas glatan maldikigon taŭgan por la implicitaj apartaj\n"
+"fluginsuloj.\n"
+"Valoroj < 1.0 (ekzemple 0.25) kreas pli difinitan ternivelon kun\n"
+"pli plataj malaltejoj, taŭgaj por solida tavolo de fluginsulaĵo."
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr ""
+msgid "FPS when unfocused or paused"
+msgstr "Maksimuma nombro de kadroj en sekundo dum paŭzo aŭ sen fokuso"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font"
-msgstr "no"
+msgid "FSAA"
+msgstr "FSAA(glatigo/anti-aliasing)"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr ""
+msgid "Factor noise"
+msgstr "Koeficienta bruo"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr ""
+msgid "Fall bobbing factor"
+msgstr "Koeficiento de balancado dum falo"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+msgid "Fallback font path"
+msgstr "Dosierindiko al reenpaŝa tiparo"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr ""
+msgstr "Rapida klavo"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
-msgstr ""
+msgstr "Akcelo en rapida reĝimo"
#: src/settings_translation_file.cpp
msgid "Fast mode speed"
-msgstr ""
+msgstr "Rapido en rapida reĝimo"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr ""
+msgstr "Rapida moviĝo"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
+"Rapida moviĝo (per la klavo «speciala»).\n"
+"Ĉi tio postulas la rajton «rapidegi» en la servilo."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Vidamplekso"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "Vidokampo grade."
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
+"Dosiero en client/serverlist/ kiu enhavas viajn ŝatatajn servilojn "
+"montritajn en la\n"
+"langeto «Ludo por pluraj»."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+msgid "Filler depth"
+msgstr "Profundeco de plenigaĵo"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+msgid "Filler depth noise"
+msgstr "Bruo de profundeco de plenigaĵo"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Filmeca mapado de tono"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
+"Filtritaj teksturoj povas intermiksi RVB valorojn kun plene travideblaj\n"
+"apud-bilderoj, kiujn PNG bonigiloj kutime forigas, farante helan aŭ\n"
+"malhelan limon al la travideblaj teksturoj. Ŝaltu ĉi tiun filtrilon por "
+"ĝustigi\n"
+"tion dum legado de teksturoj."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Filtering"
-msgstr "Neniu filtrilo"
+msgid "Filtering and Antialiasing"
+msgstr "Glatigo:"
#: src/settings_translation_file.cpp
-msgid "Fixed map seed"
+msgid "First of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Unua el la 4 2d-aj bruoj, kiuj kune difinas la alton de mont(et)aj krestoj."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Unua el la du 3d-aj bruoj, kiuj kune difinas tunelojn."
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr "Fiksa mapa greno"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Fiksita virtuala stirstango"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Denseco de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Maksimuma Y de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Minimuma Y de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Bruo de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Eksponento de maldikigo de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Distanco de maldikigo de fluginsuloj"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Akvonivelo de fluginsuloj"
#: src/settings_translation_file.cpp
msgid "Fly key"
-msgstr ""
+msgstr "Fluga klavo"
#: src/settings_translation_file.cpp
msgid "Flying"
-msgstr ""
+msgstr "Flugado"
#: src/settings_translation_file.cpp
msgid "Fog"
-msgstr ""
+msgstr "Nebulo"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Komenco de nebulo"
#: src/settings_translation_file.cpp
msgid "Fog toggle key"
-msgstr ""
+msgstr "Nebula baskula klavo"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr ""
+#, fuzzy
+msgid "Font"
+msgstr "Tipara grandeco"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Implice grasa tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Implice kursiva tiparo"
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr ""
+msgstr "Tipara ombro"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
+msgstr "Travidebleco de tipara ombro"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Tipara grandeco"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#, fuzzy
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Grando de la implicita tiparo, punkte (pt)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Grandeco de la egallarĝa tiparo, punkte (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 ""
+"Grandeco de tiparo de freŝa babila teksto kaj babilujo en punktoj (pt).\n"
+"Valoro 0 uzos la implicitan grandecon de tiparo."
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
+"Formato de babilaj mesaĝoj de ludantoj. La jenaj tekstĉenoj estas validaj\n"
+"lokokupiloj: @name, @message, @timestamp (malnepra)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr ""
+msgstr "Dosierformo de ekrankopioj."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Implicata fonkoloro de fenestroj"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Implicata fona netravidebleco de fenestroj"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Fonkoloro de tutekranaj fenestroj"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Fona netravidebleco de tutekrana fenestro"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Implicata fonkoloro de fenestroj (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Implicata netravidebleco de fenestroj (inter 0 kaj 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Fonkoloro de tutekranaj fenestroj (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "Fona netravidebleco de tutekranaj fenestroj (inter 0 kaj 255)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Forward key"
msgstr "Antaŭen"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Kvara el la 4 2d-aj bruoj, kiuj kune difinas altecon de mont(et)aj krestoj."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Speco de fraktalo"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "Ono de la videbla distanco, ekde kiu nebulo bildiĝas"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"De kia distanco monderoj aperas por klientoj, mondopece (po 16 monderoj)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"De kia distanco monderoj sendiĝas al klinentoj, mondopece (po 16 monderoj)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"De kia distanco klientoj ekkonas objektojn, en mondopecoj (16 monderoj).\n"
+"\n"
+"Agordo pli alta ol « active_block_range » ankaŭ kaŭzos, ke la servilo tenos\n"
+"aktivajn objektojn ĝis ĉi tiu distanco, en la direkto, kien la ludulo "
+"rigardas.\n"
+"(Tio malhelpas subitan malaperon de estuloj el la vido.)"
#: src/settings_translation_file.cpp
msgid "Full screen"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
+msgstr "Tutekrane"
#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "Tutekrana reĝimo."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr ""
+msgstr "Skalo de grafika fasado"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "GUI scaling filter"
-msgstr "GUI skala faktoro"
+msgstr "Skala filtrilo de grafika interfaco"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "Skala filtrilo de grafika interfaco txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Ludoj"
+
+#: src/settings_translation_file.cpp
msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr "Mallokaj revokoj"
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Generate normalmaps"
-msgstr "Generi Normalmapojn"
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Ĉieaj atributoj de mondestigo.\n"
+"En mondestigo v6, la parametro «decorations» regas ĉiujn ornamojn\n"
+"krom arboj kaj ĝangala herbo; en ĉiuj ailaj mondestigiloj, ĉi tiu parametro\n"
+"regas ĉiujn ornamojn."
#: src/settings_translation_file.cpp
-msgid "Global callbacks"
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
msgstr ""
+"Transiro de luma kurbo je plejalta lumnivelo.\n"
+"Regas la kontraston de la plej altaj lumniveloj."
#: src/settings_translation_file.cpp
msgid ""
-"Global map generation attributes.\n"
-"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
+"Transiro de luma kurbo je minimuma lumnivelo.\n"
+"Regas kontraston je la malplej altaj lumniveloj."
#: src/settings_translation_file.cpp
msgid "Graphics"
-msgstr ""
+msgstr "Grafiko"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafiko"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafiko"
#: src/settings_translation_file.cpp
msgid "Gravity"
+msgstr "Pezforto"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr "Ternivelo"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Tera bruo"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "HTTP-modifaĵoj"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "HTTP Mods"
-msgstr "Modifoj"
+msgid "HUD scaling"
+msgstr "Skalo de grafika fasado"
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr ""
+msgstr "Baskula klavo por travida fasado"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
+"Traktado de evitindaj Lua-API-vokoj:\n"
+"- none: ne prokoli evitindajn vokojn\n"
+"- log: imiti kaj protokoli respuron de evitindaj vokoj (implicita).\n"
+"- error: ĉesigi je evitinda voko (proponata al evoluigistoj de modifaĵoj)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2223,67 +3953,305 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Ekzamenigi la profililon per ĝi mem:\n"
+"* Ekzameni malplenan funkcion.\n"
+"Tio prikalkulos la ekstron aldonatan de ekzamenado (+1 voko de funkcio).\n"
+"* Ekzameni la specimenilon uzatan por ĝisdatigo de la statistiko."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr ""
+msgid "Heat blend noise"
+msgstr "Bruo de kunfando de varmeco"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr ""
+msgid "Heat noise"
+msgstr "Varmeca bruo"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr ""
+#, fuzzy
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "Alteco de la fenestro je ĝia komenca grando."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Alteca bruo"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Bruo de elekto de alto"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Kruteco de montetoj"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Sojlo de montetoj"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Bruo de monteteco 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Bruo de monteteco 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Bruo de monteteco 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Bruo de monteteco 4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
-msgstr ""
+msgstr "Hejmpaĝo de la servilo, montrota en la listo de serviloj."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontala akcelo en aero dum saltado aŭ falado, \n"
+"en monderoj sekunde sekunde."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontala kaj vertikala akcelo en rapida reĝimo,\n"
+"en monderoj sekunde sekunde."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
+"Horizontala kaj vertikala akcelo sur tero aŭ dum grimpado,\n"
+"en monderoj sekunde sekunde."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr ""
+msgid "Hotbar next key"
+msgstr "Sekva portaĵo en fulmobreto"
#: src/settings_translation_file.cpp
-msgid "IPv6"
-msgstr ""
+msgid "Hotbar previous key"
+msgstr "Antaŭa portaĵo en fulmobreto"
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Hotbar slot 1 key"
+msgstr "Klavo de fulmobreta portaĵingo 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Klavo de fulmobreta portaĵingo 10"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Klavo de fulmobreta portaĵingo 11"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Klavo de fulmobreta portaĵingo 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Klavo de fulmobreta portaĵingo 13"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Klavo de fulmobreta portaĵingo 14"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Klavo de fulmobreta portaĵingo 15"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Klavo de fulmobreta portaĵingo 16"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Klavo de fulmobreta portaĵingo 17"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Klavo de fulmobreta portaĵingo 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Klavo de fulmobreta portaĵingo 19"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Klavo de fulmobreta portaĵingo 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Klavo de fulmobreta portaĵingo 20"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Klavo de fulmobreta portaĵingo 21"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Klavo de fulmobreta portaĵingo 22"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Klavo de fulmobreta portaĵingo 23"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Klavo de fulmobreta portaĵingo 24"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Klavo de fulmobreta portaĵingo 25"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Klavo de fulmobreta portaĵingo 26"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Klavo de fulmobreta portaĵingo 27"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Klavo de fulmobreta portaĵingo 28"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Klavo de fulmobreta portaĵingo 29"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Klavo de fulmobreta portaĵingo 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Klavo de fulmobreta portaĵingo 30"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Klavo de fulmobreta portaĵingo 31"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Klavo de fulmobreta portaĵingo 32"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Klavo de fulmobreta portaĵingo 4"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Klavo de fulmobreta portaĵingo 5"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Klavo de fulmobreta portaĵingo 6"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Klavo de fulmobreta portaĵingo 7"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Klavo de fulmobreta portaĵingo 8"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Klavo de fulmobreta portaĵingo 9"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Kiel profundaj fari riverojn."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Kiel rapide ondoj de fluaĵoj moviĝos. Pli alta = pli rapide.\n"
+"Je minusa valoro, ondoj de fluaĵoj moviĝos reen.\n"
+"Bezonas ŝaltitajn ondantajn fluaĵojn."
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
+"Kioman tempon la servilo atendos antaŭ delasi neuzatajn mondopecojn.\n"
+"Pli alta valoro estas pli glata, sed uzos pli da tujmemoro."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Malpliigu ĉi tion por pliigi reziston de fluaĵoj al movo."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Kiel larĝajn fari riverojn."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Bruo de intermiksado de malsekeco"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Bruo de malsekeco"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variado de malsekeco por klimatoj."
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "Servilo kun IPv6"
#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"Se la nombro de kadroj superas ĉi tion, limigu ilin per dormo,\n"
+"por ne malŝpari vane potencon de procesoro."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"Malŝaltite, postulas uzon de la «speciala» klavo se ambaŭ la fluga kaj\n"
+"la rapida reĝimoj estas ŝaltitaj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Je ŝalto, servilo elektos postkaŝitajn mondopecojn laŭ loko de okuloj\n"
+"de la ludanto. Tio povas malpliigi la nombron de mondopecoj sendotaj\n"
+"al la kliento je 50–80%. La kliento ne plu ricevos nevideblajn, tiel ke la\n"
+"utileco de trapasa reĝimo malpliiĝos."
#: src/settings_translation_file.cpp
msgid ""
@@ -2291,32 +4259,61 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"Kune kun la fluga reĝimo, ebligas trapasadon de firmaĵo.\n"
+"Por tio necesas la rajto «noclip» servile."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Ŝaltite, klavo «uzi» estas uzata anstataŭ klavo «kaŝiri» por malsupreniro."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
+"Ŝalti konfirmon de registriĝo dum konekto al servilo.\n"
+"Se ĝi estas malŝaltita, nova konto registriĝos memage."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Registras agojn por eblaj malfaroj.\n"
+"Ĉi tiu agordo nur legatas je la komenco de la servilo."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "Ŝaltite malŝaltas sentrompigon en ludo por pluraj."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Protektas la servilon kontraŭ nevalidaj datenoj.\n"
+"Ŝaltu nur se vi bone scias, kion vi faras."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
msgstr ""
+"Ŝaltite akordigas direkton de movoj de la ludanto al la direkto de ĝia "
+"rigardo dum flugado aŭ naĝado."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr "Malebligas konekton kun malplena pasvorto."
#: src/settings_translation_file.cpp
msgid ""
@@ -2324,142 +4321,251 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"Ebligas metadon de monderoj en lokojn (kruroj + supraĵo), kie vi staras.\n"
+"Tio utilas, se vi prilaboras monderojn kun malmulte da spaco."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
+"Se la limigo de klient-flankaj modifaĵoj por mondera distanco ŝaltiĝas, "
+"vokoj\n"
+"al get_node limiĝas al ĉi tiu distanco inter la ludanto kaj la mondero."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Ludo"
+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 ""
+"Se la dosiergrando de «debug.txt» superas la nombron de milionbitokoj\n"
+"agorditan ĉi tie, kiam ĝi malfermiĝas, la dosiero moviĝas al «debug.txt.1»,\n"
+"kaj pli malnova «debug.txt.1» foriĝas, se ĝi ekzistas.\n"
+"«debug.txt» moviĝas nur se ĉi tiu agordo estas ŝaltita."
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "Ŝaltite, ludantoj ĉiam renaskiĝos je la donita loko."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Malatenti mondajn erarojn"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
+"Travidebleco de enluda babila konzolo (maltravidebleco, inter 0 kaj 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
-msgstr ""
+msgstr "Fonkoloro de la enluda babila konzolo (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "(Alteco de la enluda babila konzolo, inter 0.1 (10%) kaj 1.0 (100%)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Plilaŭtiga klavo"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Unuaeca vertikala rapido dum salto, en monderoj sekunde."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Ekzameni primitivojn.\n"
+"Ĉi tion normale bezonas nur evoluigistoj de kerno/primitivoj"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+#, fuzzy
+msgid "Instrument chat commands on registration."
+msgstr "Ekzameni babilajn komandojn je registriĝo."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Ekzameni mallokajn revokajn funkciojn je registriĝo.\n"
+"(ĉio, kion vi donas al la funkcio minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Ekzameni la agan funkcion de Aktivaj Modifiloj de Monderoj je registriĝo."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Ekzameni la agan funkcion de Ŝargaj Modifiloj de Monderoj je registriĝo."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Ekzameni la metodojn de estoj je registriĝo."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
-msgstr ""
+msgstr "Periodo inter konservo de gravaj ŝanĝoj en la mondo, sekunde."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Periodo inter sendoj de tagtempo al klientoj."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Bildmovado de portaĵoj en portaĵujo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Inventory key"
-msgstr "Inventaro"
+msgstr "Klavo de portaĵujo"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Renversi muson"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "Renversi vertikalan movon de muso."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Dosierindiko al kursiva tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Dosierindiko al kursiva egallarĝa tiparo"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Daŭro de lasita portaĵo"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Ripetoj"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+"Ripetoj de la sinvoka funkcio.\n"
+"Ĉi tio pliiĝinte pliigas etajn detalojn, sed ankaŭ pliigas\n"
+"la ŝarĝon al la datentraktilo.\n"
+"Je 20 ripetoj, ĉi tiu mondestigilo havas ŝarĝon similan al\n"
+"la mondestigilo V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "Identigilo de stirstango"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "Ripeta periodo de stirstangaj klavoj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Joystick dead zone"
+msgstr "Nerespondema zono de stirstango"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "Sentemo de stirstanga vidamplekso"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Speco de stirstango"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Nur por aro de Julia.\n"
+"W-ero de supermalsimpla konstanto.\n"
+"Ŝanĝas la formon de la fraktalo.\n"
+"Neniel efikas sur 3D-fraktaloj.\n"
+"Amplekso proksimume de -2 ĝis 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Nur por aro de Julia.\n"
+"X-ero de supermalsimpla konstanto.\n"
+"Ŝanĝas la formon de la fraktalo.\n"
+"Amplekso proksimume de -2 ĝis 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Nur por aro de Julia.\n"
+"Y-ero de supermalsimpla konstanto.\n"
+"Ŝanĝas la formon de la fraktalo.\n"
+"Amplekso proksimume de -2 ĝis 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Nur aro de Julia.\n"
+"Z-a ero de supermalsimpla konstanto.\n"
+"Ŝanĝas la formon de la fraktalo.\n"
+"Amplekso proksimume de -2 ĝis 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia z"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Jump key"
-msgstr "Salti"
+msgstr "Salta klavo"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Salta rapido"
#: src/settings_translation_file.cpp
msgid ""
@@ -2467,6 +4573,29 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por malkreskigi la vidan distancon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klavo por malkreskigi la laŭtecon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klavo por fosi.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2474,6 +4603,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por demeti la elektitan portaĵon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2481,6 +4613,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por kreskigi la vidan distancon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klavo por kreskigi la laŭtecon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2488,6 +4633,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por salti.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2495,13 +4643,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por moviĝi rapide en rapida reĝimo.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por movi la ludanton reen.\n"
+"Aktivigo ankaŭ malŝaltos memiradon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2509,6 +4665,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por movi la ludanton pluen.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2516,6 +4675,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por movi la ludanton maldekstren.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2523,13 +4685,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por movi la ludantan dekstren.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por silentigi la ludon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2537,6 +4705,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por malfermi la babilan fenestron por entajpi komandojn.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klavo por malfermi la babilan fenestron por entajpi lokajn komandojn.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2544,6 +4725,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por malfermi la babilan fenestron.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2551,722 +4735,1077 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por malfermi la portaĵujon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por meti.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 11-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 12-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 13-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 14-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 15-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 16-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 17-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 18-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 19-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 20-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 21-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 22-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 23-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 24-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 25-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 26-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 27-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 28-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 29-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 30-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 31-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti 32-an portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Left key"
-msgstr "Maldekstra Menuo"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Klavo por elekti okan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti kvinan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti unuan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti kvaran portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti sekvan portaĵon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti naŭan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti antaŭan portaĵon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti duan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti sepan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti sesan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti dekan portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por elekti trian portaĵingon en la fulmobreto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por kaŝirado.\n"
+"Ankaŭ uzata por malsupreniro kaj malsuprennaĝo se ‹aux1_descends› estas "
+"malŝaltita.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por unua kaj tria vidpunktoj.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por ekrankopiado.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por memirado.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por glita vidpunkto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por mapeto.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por rapida reĝimo.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "Ĉefmenuo"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Baskula klavo por flugado.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu script"
-msgstr "Ĉefmenuo"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Baskula klavo por trapasa reĝimo.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por celilsekva reĝimo.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por vidpunkta ĝisdatigo. Nur uzata por evoluigado.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri babilon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri erarserĉajn informojn.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri nebulon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri la travidan fasadon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri grandan babilan konzolon.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por montri la profililon. Uzu programante.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Baskula klavo por senlima vido.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Klavo por zomi vidon kiam tio eblas.\n"
+"Vidu http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Mondogenerilo"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "Forpeli ludantojn, kiuj sendis pli ol X mesaĝojn en 10 sekundoj."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Laga kruteco"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Laga sojlo"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Lingvo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen debug"
-msgstr "Mondogenerilo"
+msgid "Large cave depth"
+msgstr "Profundeco de granda kaverno"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flags"
-msgstr "Mondogenerilo"
+msgid "Large cave maximum number"
+msgstr "Maksimuma nombro de grandaj kavernoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Mondogenerilo"
+msgid "Large cave minimum number"
+msgstr "Minimuma nombro de grandaj kavernoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Mondogenerilo"
+msgid "Large cave proportion flooded"
+msgstr "Subakva parto de granda kaverno"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Klavo de granda konzolo"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Stilo de folioj"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Stiloj de folioj:\n"
+"– Fajna: Ĉiuj facoj videblas\n"
+"– Simpla: nur eksteraj facoj, se difinitaj special_tiles uzatas\n"
+"– Maltravidebla: malŝalti travideblecon"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat flags"
-msgstr "Mondogenerilo"
+msgid "Left key"
+msgstr "Maldekstra klavo"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat ground level"
-msgstr "Mondogenerilo"
-
-#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"Longeco de servila agociklo, kaj la intervalo dum kiu objektoj ĝenerale "
+"ĝisdatiĝas\n"
+"trans la reto."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Longo de fluaĵaj ondoj.\n"
+"Bezonas ondantajn fluaĵojn."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake steepness"
-msgstr "Paralaksa Okludo"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Tempodaŭro inter rulaj cikloj de Aktiva Modifilo de Monderoj (AMM)"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake threshold"
-msgstr "Mondogenerilo"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Tempodaŭro inter rulaj cikloj de NodeTimer"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Daŭro inter cikloj de aktiva administrado de monderoj"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Nivelo de protokolado skribota al debug.txt:\n"
+"- <nenio> (nenio protokoliĝas)\n"
+"- none (neniu – mesaĝoj sen nivelo)\n"
+"- error (eraro)\n"
+"- warning (averto)\n"
+"- action (ago)\n"
+"- info (informo)\n"
+"- verbose (babilema)"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal"
-msgstr "Mondogenerilo"
+msgid "Light curve boost"
+msgstr "Pliigo de luma kurbo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Mondogenerilo"
+msgid "Light curve boost center"
+msgstr "Centro de pliigo de luma kurbo"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve boost spread"
+msgstr "Disvastiĝo de pliigo de luma kurbo"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "Gamao de luma kurbo"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "Alta transiro de luma kurbo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal fractal"
-msgstr "Mondogenerilo"
+msgid "Light curve low gradient"
+msgstr "Malalta transiro de luma kurbo"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen fractal iterations"
-msgstr "Paralaksa Okludo"
+msgid "Lighting"
+msgstr "Glata lumado"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"Limo de mapa estigo, mondere, en ĉiuj ses direktoj de (0, 0, 0).\n"
+"Nur mondopartoj plene en la mondestigila limo estiĝos.\n"
+"Valoro konserviĝas aparte por ĉiu mondo."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Limigas nombron da samtempaj HTTP-petoj. Afliktas:\n"
+"– Elŝuton de vidaŭdaĵoj, se la servilo uzas la agordon «remote_media».\n"
+"– Elŝuton de listo de serviloj, kaj servila anonco.\n"
+"– Elŝutojn fare de la ĉefmenuo (ekz. modifaĵa administrilo).\n"
+"Efektivas nur se la ludo tradukiĝis kun cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Flueco de fluaĵoj"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Glatigo de fluida flueco"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal offset"
-msgstr "Mondogenerilo"
+msgid "Liquid loop max"
+msgstr "Maksimumo de fluaĵa ciklo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal scale"
-msgstr "Mondogenerilo"
+msgid "Liquid queue purge time"
+msgstr "Tempo antaŭ vakigo de fluaĵa atendovico"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "Profundiĝo en fluaĵoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal slice w"
-msgstr "Mondogenerilo"
+msgid "Liquid update interval in seconds."
+msgstr "Intervalo inter ĝisdatigoj de fluaĵoj (en sekundoj)."
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Longeco de fluaĵa agociklo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen name"
-msgstr "Mondogenerilo"
+msgid "Load the game profiler"
+msgstr "Enlegi la ludan profililon"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5"
-msgstr "Mondogenerilo"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Enlegas la ludan profililon por kolekti datenojn de luda profilado.\n"
+"Disponigas la komandon «/profiler» por atingi la kodotradukitan profilon.\n"
+"Utila por evoluigistoj de modifaĵoj kaj administrantoj de serviloj."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "Mondogenerilo"
+msgid "Loading Block Modifiers"
+msgstr "Ŝargaj Modifiloj de Monderoj"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of dungeons."
+msgstr "Suba Y-limo de forgeskeloj."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "Suba Y-limo de fluginsuloj."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Ĉefmenua skripto"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Dependigi kolorojn de nebulo kaj ĉielo de tagtempo (sunleviĝo/sunsubiro)\n"
+"kaj direkto de rigardo."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Igas fluaĵojn netravideblaj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v6"
-msgstr "Mondogenerilo"
+msgid "Map Compression Level for Disk Storage"
+msgstr "Nivelo de densigo de mondopecoj por konservado sur disko"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map Compression Level for Network Transfer"
+msgstr "Nivelo de densigo de mondopecoj por sendado tra reto"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map directory"
+msgstr "Dosierujo kun mapoj"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Mondestigaj ecoj speciale por la Karpata Mondestigilo."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Mondestigaj ecoj speciale por la Plata Mondestigilo.\n"
+"Kelklokaj lagoj kaj montetoj povas aldoniĝi al la plata mondo."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"Mondestigaj ecoj speciale por la Plata Mondestigilo.\n"
+"«terrain» ŝaltas estigon de nefraktala tereno:\n"
+"oceano, insuloj, kaj subtero."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"Apartaj mapestigaj ecoj de la mapestigilo «Valleys».\n"
+"«altitude_chill»: Malpliigas varmon laŭ alto.\n"
+"«humid_rivers»: Pliigas malsekecon ĉirkaŭ riveroj.\n"
+"«vary_river_depth»: Ŝaltite foje sekigas riverojn pro malalta malsekeco\n"
+"kaj alta varmo.\n"
+"«altitude_dry»: Malpliigas malsekecon laŭ alto."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Mapestigaj ecoj speciale por Mapestigilo v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
+"Mondestigaj ecoj apartaj al Mondestigilo v6.\n"
+"La flago «snowbiomes» ŝaltas la novan 5-klimatan sistemon.\n"
+"Kiam la flago «snowbiomes» estas ŝaltita, ĝangaloj estas memage ŝaltitaj\n"
+"kaj la flago «jungles» estas malatentata."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+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 ""
+"Mapestigaj ecoj speciale por Mapestigilo v7.\n"
+"«ridges»: Riveroj.\n"
+"«floatlands»: Flugantaj teramasoj en la atmosfero.\n"
+"«caverns»: Grandaj kavernegoj profunde sub tero."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Limo de mondestigo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Intervaloj inter konservoj de mondo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Map shadows update frames"
+msgstr "Longeco de fluaĵa agociklo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Mondopeca limo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Prokrasto de estigo de maŝoj de mondopecoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7"
-msgstr "Mondogenerilo"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Grando (en megabitokoj) de la kaŝmemoro de la estiganto de mondopecoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "Mondogenerilo"
+msgid "Mapblock unload timeout"
+msgstr "Tempolimo de mallego de mondopecoj"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian"
+msgstr "Mondestigilo karpata"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Parametroj specialaj por Karpata Mondestigilo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Mondestigilo plata"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Parametroj specialaj por Plata Mondestigilo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Mondestigilo fraktala"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Parametroj speciale por Fraktala Mondestigilo"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Mondestigilo v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Parametroj specialaj por Mondestigilo v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Mondestigilo v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "Parametroj specialaj por Mondestigilo v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Mondestigilo v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "Parametroj specialaj por Mondestigilo v7"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Mondestigilo vala"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Parametroj specialaj por Vala Mondestigilo"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Mapestigila erarserĉilo"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr "Nomo de mondestigilo"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "Estiga distanco de mondopecoj"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Senda distanco de mondopecoj"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Plejmulto da fluaĵoj traktataj en unu paŝo."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "Maksimumo da ekstraj mondopecoj por «clearobjects»"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "Maksimumaj paketoj iteracie"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
+msgstr "Maksimuma nombro de kadroj en sekundo"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr ""
+"Maksimuma nombro de kadroj en sekundo, kiam la fokuso mankas al la fenestro, "
+"aŭ dum paŭzo de la ludo."
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "Maksimumo de perforte enlegitaj mondopecoj"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
+msgstr "Maksimuma larĝo de la fulmobreto"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
+"Maksimuma limo de hazarda nombro de grandaj kavernoj en unu mondoparto."
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
+"Maksimuma limo de hazarda nombro de malgrandaj kavernoj en unu mondoparto."
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
+"Maksimuma rezisto de fluaĵoj. Regas malakcelon dum eniĝo en fluaĵon\n"
+"je granda rapido."
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that can be queued for loading."
+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 ""
+"Maksimuma nombro de mondopecoj samtempe sendataj al unu kliento.\n"
+"La maksimuma sumo estas kalkulata flue:\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."
+msgstr "Maksimuma nombro da mondopecoj atendantaj legon."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Maksimumo nombro de mondopecoj atendantaj estigon.\n"
+"Ĉi tiu limo estas devigata al ĉiu ludanto aparte."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Maksimuma nombro de atendantaj mondopecoj legotaj de loka dosiero.\n"
+"Ĉi tiu limo estas devigata al ĉiu ludanto aparte."
#: src/settings_translation_file.cpp
-msgid "Maximum number of forceloaded mapblocks."
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
+"Maksimuma nombro de samtempaj elŝutoj. Elŝutoj superantaj ĉi tiun limon "
+"estos atendataj.\n"
+"Tiu nombro devas esti malpli granda ol curl_parallel_limit."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr "Maksimuma nombro de perforte enlegitaj mondopecoj."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
+"Maksimuma nombro da mondopecoj por la kliento en memoro.\n"
+"Agordu -1 por senlima kvanto."
#: src/settings_translation_file.cpp
msgid ""
@@ -3274,128 +5813,208 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
+"Maksimuma nombro da paketoj sendotaj per sendopaŝo. Se via ret-konekto\n"
+"malrapidas, provu ĝin malkreskigi, sed neniam malpli ol duoblo de la "
+"versio,\n"
+"kiun havas la celata kliento."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
-msgstr ""
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "Maksimuma nombro de ludantoj, kiuj povas konektiĝi samtempe."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Maksimuma nombro da freŝaj babilaj mesaĝoj montrotaj"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr ""
+msgstr "Maksimuma nombro de statike memorataj objektoj en mondopeco."
#: src/settings_translation_file.cpp
msgid "Maximum objects per block"
-msgstr ""
+msgstr "Maksimuma nombro de objektoj en mondopeco"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
+"Maksimuma parto de la nuna fenestro uzota por la fulmobreto.\n"
+"Utilas se io montrotas dekstre aŭ maldekstre de la fulmobreto."
#: src/settings_translation_file.cpp
msgid "Maximum simultaneous block sends per client"
-msgstr ""
+msgstr "Maksimumaj samtempaj sendoj de mondopecoj po kliento"
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
+msgstr "Maksimumo da atendantaj elaj mesaĝoj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
+"Maksimuma grando de la elira babila atendovico.\n"
+"0 malŝaltas envicigon, kaj -1 senlimigas ĝin."
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+#, fuzzy
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
+"Maksimuma tempo (en milisekundoj) por elŝuto de dosiero (ekz. modifaĵo)."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Menuo"
+msgid "Maximum users"
+msgstr "Maksimuma nombro da uzantoj"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "Maŝa kaŝmemoro"
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "Tagmesaĝo"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "Tagmesaĝo montrota al konektantaj ludantoj."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
-msgstr ""
+msgstr "Metodo emfazi elektitan objekton."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Minimuma nivelo de protokolado skribota al la babilujo."
#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr ""
+msgstr "Mapeto"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "Mapeta klavo"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr ""
+msgstr "Alteco de mapeta skanado"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr ""
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Minimuma limo de hazarda nombro de grandaj kavernoj en mondoparto."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Minimuma limo de hazarda nombro de malgrandaj kavernoj unu mondoparto."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Minimuma grandeco de teksturoj"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Mipmapping"
-msgstr "Protuberancmapado"
+msgstr "Etmapigo"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Profililo"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Security"
+msgstr "Sekureco"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr "Kanaloj por modifaĵoj"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Modifies the size of the HUD elements."
+msgstr "Ŝanĝas la grandecon de eroj de la travida fasado."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "Dosierindiko al egallarĝa tiparo"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr ""
+msgstr "Grandeco de egalspaca tiparo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Monospace font size divisible by"
+msgstr "Grandeco de egalspaca tiparo"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Bruo de monta alteco"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Bruo de montoj"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Bruo de monta variigo"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Nulnivelo de montoj"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr ""
+msgstr "Respondemo de muso"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr ""
+msgstr "Obligilo por respondeco de muso."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Bruo de koto"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Obligilo por fala balancado.\n"
+"Ekzemple: 0 por neniu balancado; 1.0 por normala; 2.0 por duobla."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "Silentiga klavo"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Silentigi sonon"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
+"Nomo de mapestigilo uzota por krei novan mondon.\n"
+"Kreo de nova mondo en la ĉefmenuo transpasos ĉi tiun agordon.\n"
+"Nunaj tre malstabilaj mapestigiloj estas:\n"
+"- La malnepraj fluginsuloj de v7 (implicite malŝaltitaj)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3403,187 +6022,300 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"Nomo de la ludanto.\n"
+"Gastigante per servilo, klientoj konektantaj kun ĉi tiu nomo estas "
+"administrantoj.\n"
+"Komencante de la ĉefmenuo, oni tranpasas ĉi tion."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
-msgstr ""
+msgstr "Nomo de la servilo, montrota al ludantoj kaj en la listo de serviloj."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr ""
+msgid "Near plane"
+msgstr "Proksima ebeno"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"Ricevigota pordo (UDP).\n"
+"Komencante de la ĉefmenuo, ĉi tio estos transpasita."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Reto"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "Novaj uzantoj devas enigi ĉi tiun pasvorton."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr ""
+msgstr "Trapasado"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr ""
+msgstr "Trapasa klavo"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Emfazado de monderoj"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr "Marki nodaĵojn"
+msgstr "Emfazado de monderoj"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "Intervalo de NodeTimer"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "Bruoj"
#: src/settings_translation_file.cpp
-msgid "Noises"
-msgstr ""
+msgid "Number of emerge threads"
+msgstr "Nombro da mondestigaj fadenoj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+"Nombro de uzotaj fadenoj enlegontaj.\n"
+"Valoro 0:\n"
+"- Memaga elekto. La nombro de fadenoj enlegontaj estos\n"
+"- 'nombro de datentraktiloj - 2', kun suba limo de 1.\n"
+"Ĉiu alia valoro:\n"
+"- Precizigas la nombron de fadenoj enlegontaj, kun suba limo de 1.\n"
+"AVERTO: Pligrandigo de la nombro de fadenoj enlegontaj plirapidigas "
+"mondestigon,\n"
+"sed povas malrapidigi la ludon per ĝenado de aliaj programoj, precipe en "
+"reĝimo\n"
+"por unu ludanto, kaj/aŭ dum rulado de Lua-kodo en «on_generated». Por "
+"multaj\n"
+"uzantoj, la optimuma agordo eble estos «1»."
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+#, fuzzy
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"Nombro da aldonaj mondopecoj legontaj de «/clearobjects» je unu fojo.\n"
+"Ĉi tio decidas preferon inter superŝarĝaj negocoj de «sqlite»\n"
+"kaj uzon de memoro (4096=100MB, proksimume)."
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "Netralumeblaj fluidoj"
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
+"Netravidebleco (alfa) de la ombro post la implicita tiparo, inter 0 kaj 255."
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"Malfermas haltan menuon kiam fokuso je la fenestro perdiĝas. Ne haltigas se "
+"enluda\n"
+"fenestro estas malfermita."
#: src/settings_translation_file.cpp
-msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+#, fuzzy
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
+"Dosierindiko de la reenpaŝa tiparo.\n"
+"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n"
+"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora "
+"tiparo.\n"
+"Ĉi tiu tiparo uziĝos por kelkaj lingvoj, aŭ se la norma tiparo ne "
+"disponeblas."
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+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 ""
+"Dosierindiko por konservotaj ekrankopioj. Povas esti absoluta\n"
+"aŭ relativa. La dosierujo estos kreita, se ĝi ne jam ekzistas."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"Dosierindiko al ombrigiloj. Se neniu estas difinita, la implicita estos "
+"uzata."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion"
-msgstr "Paralaksa Okludo"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "Dosierindiko al teksturoj. Ĉiuj teksturoj estas unue serĉataj tie."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Parallax occlusion Scale"
-msgstr "Paralaksa Okludo"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Dosierindiko al la implicita tiparo.\n"
+"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n"
+"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora "
+"tiparo.\n"
+"La reenpaŝa tiparo uziĝos se la tiparo ne povas enlegiĝi."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Parallax occlusion bias"
-msgstr "Paralaksa Okludo"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Dosierindiko al la egallarĝa tiparo.\n"
+"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n"
+"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora "
+"tiparo.\n"
+"Ĉi tiu tiparo estas uzata por ekz. la ekranoj de konzolo kaj profililo."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion iterations"
-msgstr "Paralaksa Okludo"
+msgid "Pause on lost window focus"
+msgstr "Paŭzigi je perdita fokuso de la fenestro"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion mode"
-msgstr "Paralaksa Okludo"
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Limo de atendataj monderoj ŝargotaj el disko por unu ludanto"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion strength"
-msgstr "Paralaksa Okludo"
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Limo de viceroj estigotaj por unu ludanto"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+msgid "Physics"
+msgstr "Fiziko"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Pitch move key"
+msgstr "Celilsekva klavo"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+msgid "Pitch move mode"
+msgstr "Celilsekva reĝimo"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr ""
+msgid "Place key"
+msgstr "Klavo por meti"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Intertempo inter ripetaj metoj"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"Ludanto povas flugi sed efiko de pezforto.\n"
+"Bezonas la rajton «flugi» je la servilo."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Player name"
-msgstr "Ludanta nomo trolongas."
+msgid "Player transfer distance"
+msgstr "Distanco por transsendo de ludantoj"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "Ludanto kontraŭ ludanto"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+msgid "Poisson filtering"
+msgstr "Poisson-filtrado"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"Konektota pordo (UDP).\n"
+"Rimarku, ke la porda kampo en la ĉefmenuo transpasas ĉi tiun agordon."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Malhelpu ripetadon de fosado kaj metado dum premo de la musklavoj.\n"
+"Ŝaltu ĉi tion, se vi tro ofte nevole fosas aŭ metas monderojn."
#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
+"Malhelpi al reguligistoj agi nesekure (ekzemple ruli ŝelajn komandojn)."
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"Presi la profilajn datenojn de la motoro laŭ regulaj intervaloj (en "
+"sekundoj).\n"
+"0 = malŝalti. Utila por evoluigistoj."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "Rajtoj, kiujn ludantoj kun «basic_privs» povas doni"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Profililo"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr ""
+msgstr "Profilila baskula klavo"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr "Aŭskulta adreso de Prometheus"
#: src/settings_translation_file.cpp
-msgid "Profiling"
+#, fuzzy
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
+"Aŭskulta adreso de Prometheus.\n"
+"Se Minetest estas tradukita kun la elekteblo ENABLE_PROMETHEUS ŝaltita,\n"
+"ŝaltiĝos aŭskultado de mezuriloj por Prometheus ĉe tiu adreso.\n"
+"Mezuriloj disponeblos ĉe http://127.0.0.1:30000/metrics"
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Proporcio de grandaj kavernoj, kiu enhavas fluaĵon."
#: src/settings_translation_file.cpp
msgid ""
@@ -3591,113 +6323,195 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"Duondiametro de nuba areo donita en nombro da 64-monderaj nubaj ortanguloj.\n"
+"Valoroj super 26 estigos akrajn randojn je anguloj de la areo."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Levas terenon por krei valojn ĉirkaŭ la riveroj."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "Hazarda enigo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Range select key"
-msgstr "Ŝanĝi vidodistancon"
+msgstr "Klavo por ŝanĝi vidodistancon"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Freŝaj mesaĝoj de babilo"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Dosierindiko al normala tiparo"
#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "Foraj vidaŭdaĵoj"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "Fora pordo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
+"Forigi kolorkodojn de envenaj babilaj mesaĝoj\n"
+"Uzu tion por ĉesigi uzon de koloroj en mesaĝoj de ludantoj"
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "Anstataŭigas la implicitan ĉefmenuon per propra."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Selekto"
+msgstr "Raporta indiko"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Limigas atingon de kelkaj klient-flankaj funkcioj sur serviloj.\n"
+"Kombinu la ĉi-subajn bitindikilojn por limigi klient-flakajn funkciojn,\n"
+"aŭ agordu al 0 por nenion limigi:\n"
+"LOAD_CLIENT_MODS: 1 (malŝaltas enlegadon de klient-flankaj modifaĵoj)\n"
+"CHAT_MESSAGES: 2 (malŝaltas klient-flankan vokadon de «send_chat_message»)\n"
+"READ_ITEMDEFS: 4 (malŝaltas klient-flankan vokadon de «get_item_def»)\n"
+"READ_NODEDEFS: 8 (malŝaltas klient-flankan vokadon de «get_node_def»)\n"
+"LOOKUP_NODES_LIMIT: 16 (limigas klient-flankan vokadon de «get_node_call»\n"
+"al «csm_restriction_noderange»)\n"
+"READ_PLAYERINFO: 32 (malŝaltas klient-flankan vokadon de «get_player_names»)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Bruo de disvastiĝo de krestaj montoj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Bruo de krestoj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Subakva bruo de krestoj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Bruo de grandeco de krestaj montoj"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Right key"
-msgstr "Dekstra Menuo"
+msgstr "Dekstren-klavo"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr ""
+msgid "River channel depth"
+msgstr "Profundeco de rivera akvovojo"
#: src/settings_translation_file.cpp
-msgid "River Depth"
-msgstr ""
+msgid "River channel width"
+msgstr "Larĝeco de riveraj akvovojoj"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr ""
+msgid "River depth"
+msgstr "Rivera profundo"
#: src/settings_translation_file.cpp
-msgid "River Size"
-msgstr ""
+msgid "River noise"
+msgstr "Rivera bruo"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "River size"
+msgstr "Grandeco de riveroj"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Profundeco de riveraj valoj"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
-msgstr ""
+msgstr "Malfarebligo"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Bruo de grandeco de mildaj montetoj"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Bruo de disvastiĝo de mildaj montetoj"
#: src/settings_translation_file.cpp
msgid "Round minimap"
-msgstr ""
+msgstr "Ronda mapeto"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Sekuraj fosado kaj metado"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Sablaj bordoj okazas kiam «np_beach» superas ĉi tiun valoron."
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr ""
+msgstr "Konservi mapon ricevitan fare de la kliento al la disko."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Memori fenestran grandon post ties ŝanĝo."
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "Konservanta mapon ricevitan de la servilo"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
+"Skali la fasadon per valoro difinita de la uzanto.\n"
+"Uzi glatigan filtrilon per la plej proksimaj bilderoj por skali la fasadon.\n"
+"Ĉi tio glatigos iom da malglataj limoj, kaj miksos bilderojn\n"
+"malskalante, kontraŭ malklarigo de kelkaj limaj bilderoj, malskalante\n"
+"per neentejraj kvantoj."
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Ekrano:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "Alteco de ekrano"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Screenshot"
-msgstr "Ekrankopio"
+msgid "Screen width"
+msgstr "Larĝeco de ekrano"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "Ekrankopia dosierujo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "Ekrankopio"
+msgstr "Ekrankopia dosierformo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "Ekrankopio"
+msgstr "Ekrankopia kvalito"
#: src/settings_translation_file.cpp
msgid ""
@@ -3705,151 +6519,386 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"Ekrankopia kvalito. Nur uzata por la dosierformo « JPEG ».\n"
+"1 estas plej malaltkvalita; 100 estas plej altkvalita.\n"
+"Uzu 0 por implicita kvalito."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr ""
+#, fuzzy
+msgid "Screenshots"
+msgstr "Ekrankopio"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr "Bruo de marfundo"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Dua el la kvar 2d-aj bruoj, kiuj kune difinas altecon de mont(et)aj krestoj."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Dua el la du 3d-aj bruoj, kiuj kune difinas tunelojn."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Vidu https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "Limkoloro de elektujo (R,V,B)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "Koloro de elektujo"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr ""
+msgstr "Larĝo de elektujo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Elektas unu de 18 tipoj de fraktaloj.\n"
+"1 = 4D «Rondeca» aro de Mandelbrot.\n"
+"2 = 4D «Rondeca» aro de Julia.\n"
+"3 = 4D «Ortanguleca» aro de Mandelbrot.\n"
+"4 = 4D «Ortanguleca» aro de Julia.\n"
+"5 = 4D «Mandy Cousin» aro de Mandelbrot.\n"
+"6 = 4D «Mandy Cousin» aro de Julia.\n"
+"7 = 4D «Variaĵa» aro de Mandelbrot.\n"
+"8 = 4D «Variaĵa» aro de Julia.\n"
+"9 = 3D «Mandelbrot/Mandelbar» aro de Mandelbrot.\n"
+"10 = 3D «Mandelbrot/Mandelbar» aro de Julia.\n"
+"11 = 3D «Kristnaskarba» aro de Mandelbrot.\n"
+"12 = 3D «Kristnaskarba» aro de Julia.\n"
+"13 = 3D «Mandelbulb» aro de Mandelbrot.\n"
+"14 = 3D «Mandelbulb» aro de Julia.\n"
+"15 = 3D «Kosinuse Mandelbulb» aro de Mandelbrot.\n"
+"16 = 3D «Kosinuse Mandelbulb» aro de Julia.\n"
+"17 = 4D «Mandelbulb» aro de Mandelbrot.\n"
+"18 = 4D «Mandelbulb» aro de Julia."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
-msgstr "Startigi solludanton"
+msgid "Server"
+msgstr "URL de servilo"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server URL"
-msgstr "Servilo"
+msgid "Server Gameplay"
+msgstr "Nomo de servilo"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Server Security"
+msgstr "Priskribo pri servilo"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr "URL de servilo"
+
+#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr "Servila pordo"
+msgstr "Adreso de servilo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server description"
-msgstr "Servila pordo"
+msgstr "Priskribo pri servilo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server name"
-msgstr "Servilo"
+msgstr "Nomo de servilo"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server port"
-msgstr "Servila pordo"
+msgstr "Pordo de servilo"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Servilflanka elektado de postkaŝitoj"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Servila pordo"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr "Publika servilolisto"
+msgstr "URL de listo de publikaj serviloj"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "URL de listo de publikaj serviloj"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr "Publika servilolisto"
+msgstr "Dosiero kun listo de serviloj"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"Agordi la lingvon. Lasu malplena por uzi la sisteman.\n"
+"Rerulo necesas post la ŝanĝo."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Agordi maksimuman longon de babilaj mesaĝoj (en signoj) sendotaj de klientoj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
+"Ŝaltu por ebligi ondantajn foliojn.\n"
+"Bezonas ombrigilojn."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Ŝaltu por ebligi ondantajn foliojn.\n"
+"Bezonas ombrigilojn."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"Ŝaltu por ebligi ondantajn fluaĵojn (kiel akvon).\n"
+"Bezonas ombrigilojn."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Verigo ŝaltas ondantajn kreskaĵojn.\n"
+"Bezonas ŝalton de ombrigiloj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Indiko al ombrigiloj"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"Ombrigiloj ebligas specialaj vidajn efektojn kaj povas plibonigi efikecon je "
+"kelkaj vidkartoj.\n"
+"Ĉi tio funkcias nur kun la bildiga internaĵo de «OpenGL»."
#: src/settings_translation_file.cpp
-msgid "Shape of the minimap. Enabled = round, disabled = square."
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Ekrankopia kvalito"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Show debug info"
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow map texture size"
+msgstr "Minimuma grandeco de teksturoj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
msgstr ""
+"Deŝovo de ombro de la norma tiparo. Se ĝi estas 0, la ombro ne desegniĝos."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Forto de ombro"
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "Formo de la mapeto. Ŝaltita = ronda, malŝaltita = orta."
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr "Montri erarserĉajn informojn"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
+msgstr "Montri elektujojn de estoj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
msgstr ""
+"Montri elektujojn de estoj\n"
+"Rerulo necesas post la ŝanĝo."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Show name tag backgrounds by default"
+msgstr "Implicite montri fonojn de nometikedoj"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
+msgstr "Ferma mesaĝo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
+"Grandeco de mondopartoj estigitaj de mondestigilo, esprimita en mondopecoj\n"
+"(16 monderoj).\n"
+"AVERTO: Estas neniu avantaĝo, nur kelkaj danĝeroj, en pliigo de la valoro "
+"super 5.\n"
+"Malpliigo de la valoro plialtigas densecon de kavernoj kaj forgeskeloj.\n"
+"Ŝanĝeblo de la valoro celas specialajn uzojn; senŝanĝo estas rekomendata."
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
+"Grandeco de la mondopeca kaŝmemoro de la meŝestigilo. Plialtigo ankaŭ\n"
+"plialtigos la elcenton de kaŝmemoraj trafoj, kaj malpliigos la datenojn\n"
+"kopiatajn de la ĉefa fadeno, malhelpante skuadon."
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Sky Body Orbit Tilt"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Slice w"
+msgstr "Tranĉo w"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Deklivo kaj plenigo kunlaboras por ŝanĝi la altecojn."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Maksimuma nombro de malgrandaj kavernoj"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Minimuma nombro de etaj kavernoj"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr "Malgranda variado de malsekeco por kontinuigi klimatojn ĉe limoj."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr "Etarea variigo de varmeco por intermiksado de klimatoj je limoj."
+
+#: src/settings_translation_file.cpp
msgid "Smooth lighting"
-msgstr "Glatiga lumo"
+msgstr "Glata lumado"
#: src/settings_translation_file.cpp
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"Glitigas movojn de la vidpunkto dum ĉirkaŭrigardado.\n"
+"Utila por registrado de filmoj."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
-msgstr ""
+msgstr "Glatigas la turnadon de vidpunkto en glita reĝimo. 0 por malŝalti."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "Glitigas turnadon de la vidpunkto. 0 por malŝalti."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Sneak key"
-msgstr "Lanti"
+msgstr "Kaŝira klavo"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Rapido de kaŝiro"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Rapido de kaŝirado, en monderoj sekunde."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Radiuso de mola ombro"
#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr ""
+msgstr "Sono"
#: src/settings_translation_file.cpp
msgid ""
@@ -3858,35 +6907,135 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
+"Specifas URL de kiu la kliento elŝutos vidaŭdaĵojn, anstataŭ uzi UDP.\n"
+"$filename atingeblu de $remote_media$filename per cURL\n"
+"(kompreneble, «remote_media» finiĝu per dekliva streko).\n"
+"Dosieroj mankantaj elŝutiĝos per la kutima maniero."
#: src/settings_translation_file.cpp
-msgid "Static spawnpoint"
+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 ""
+"Specifas la implicitajn kolumnograndojn de monderoj, portaĵoj kaj iloj.\n"
+"Notu, ke modifaĵoj aŭ ludoj povas eksplicite agordi kolumnograndojn por iuj "
+"(aŭ ĉiuj) portaĵoj."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Strength of generated normalmaps."
-msgstr "Generi Normalmapojn"
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 ""
+"Disvastiĝo de pliiga amplekso de luma kurbo.\n"
+"Regas la larĝecon de la pliigota amplekso.\n"
+"Norma deflankiĝo de pliigo de la luma kurbo Gaŭsa."
#: src/settings_translation_file.cpp
-msgid "Strict protocol checking"
+msgid "Static spawnpoint"
+msgstr "Statika naskiĝejo"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "Bruo de kruteco"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Bruo de grandeco de terasaj montoj"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Bruo de disvastiĝo de terasaj montoj"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Potenco de paralakso en tridimensia reĝimo."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Forteco de pliigo de la luma kurbo.\n"
+"La 3 parametroj de «boost» definas amplekson\n"
+"de la luma kurbo, kies heleco estas pliigita."
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr "Severa kontrolo de protokoloj"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Forpreni kolorkodojn"
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
+"Surfaca nivelo de ebla akvo sur solida fluginsula tavolo.\n"
+"Tia akvo estas malŝaltita implicite kaj ĉeestos nur se ĉi tiu valoro estas\n"
+"pli granda ol 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (la komenco de "
+"la\n"
+"supra maldikiĝo).\n"
+"***AVERTO, EBLA DANĜERO AL MONDOJ KAJ SERVILA RENDIMENTO***:\n"
+"Se vi ebligas akvon sur fluginsuloj, la fluginsuloj devas esti solidaj "
+"tavoloj.\n"
+"Por tio, la agordo 'mgv7_floatland_density' devas esti '2.0' (aŭ alia\n"
+"postulata valoro depende de 'mgv7_np_floatland'). Tio evitos\n"
+"servil-intensan ekstreman akvofluon kaj vastan inundadon de la\n"
+"suba mondsurfaco."
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
-msgstr ""
+msgstr "Akorda SQLite"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
-msgstr ""
+msgid "Temperature variation for biomes."
+msgstr "Varmeca diverseco por klimatoj."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Agordoj"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Alternativa bruo de tereno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Bruo de terena bazo"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Alteco de tereno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Pli alta bruo de tereno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Bruo de tereno"
#: src/settings_translation_file.cpp
msgid ""
@@ -3894,6 +7043,9 @@ msgid ""
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Sojlo de terena bruo por montetoj.\n"
+"Regas parton de la mondon kovratan per montetoj.\n"
+"Proksimigu al 0.0 por pligrandigi la parton."
#: src/settings_translation_file.cpp
msgid ""
@@ -3901,51 +7053,147 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Sojlo de terena bruo por lagoj.\n"
+"Regas la parton de mondo kovritan per lagoj.\n"
+"Proksimigu al 0.0 por pli granda parto."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Bruo de persisteco de tereno"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Texture path"
-msgstr "Teksturaroj"
+msgstr "Indiko al teksturoj"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
msgstr ""
#: src/settings_translation_file.cpp
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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"Teksturoj sur mondero povas laŭi aŭ la monderon aŭ la mondon.\n"
+"La unua reĝimo pli taŭgas por maŝinoj, mebloj, ktp., kaj la dua donas\n"
+"pli bonan similecon kun ĉirkaŭo al ŝtupoj kaj etblokoj.\n"
+"Sed ĉar tiu ĉi eblo estas nova, kaj malnovaj serviloj ne povas ĝin uzi,\n"
+"ĉi tiu elekteblo bezonigas ĝin por kelkaj specoj de monderoj. Tio ĉi tamen\n"
+"estas EKSPERIMENTA, kaj eble ne funkcios bone."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "URL al la deponejo de enhavo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "The dead zone of the joystick"
+msgstr "La nerespondema zono de la stirstango"
+
+#: src/settings_translation_file.cpp
+msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"La norma formo, en kiu konserviĝas profiloj, kiam\n"
+"vokiĝas «/profiler save [formo]» sen formo."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr "La profundeco de tero aŭ alia surfaca klimata plenigilo."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
msgstr ""
+"La dosierindiko relativa al via mondoindiko, kien konserviĝos profiloj."
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr "Identigilo de la uzota stirstango"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr "Longeco (en bilderoj) necesa por komenco de interago kun tuŝekrano."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Maksimuma alteco de la nivelo de ondantaj fluaĵoj.\n"
+"4.0 = Alteco de ondo estas du monderoj.\n"
+"0.0 = Ondo tute ne moviĝas.\n"
+"La antaŭagordo estas 1.0 (duono de mondero).\n"
+"Bezonas ŝaltitajn ondantajn fluaĵojn."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr ""
+msgstr "La reta interfaco kie la servilo aŭskultas."
#: src/settings_translation_file.cpp
msgid ""
"The privileges that new users automatically get.\n"
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
+"La rajtoj, kiuj novaj uzantoj memage akiras.\n"
+"Vidu «/privs» en la ludo por plena listo de via servilo kaj modifaĵa "
+"agordaro."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
msgstr ""
+"La volumena radiuso, mezurita en mondopecoj (16 monderoj),\n"
+"de monderoj ĉirkaŭ ĉiu ludanto submetataj al la trajtoj de aktivaj "
+"monderoj. \n"
+"En aktivaj monderoj, objektoj enlegiĝas kaj aktivaj modifiloj de monderoj "
+"(ABM) ruliĝas.\n"
+"Ĉi tio ankaŭ estas la minimuma vidodistanco, en kiu teniĝas aktivaj objektoj "
+"(estuloj).\n"
+"Ĉi tio devas esti agordita kune kun active_object_send_range_blocks."
#: src/settings_translation_file.cpp
msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"La bildiga internaĵo.\n"
+"Relanĉo necesas post ĉi tiu ŝanĝo.\n"
+"Rimarko: Sur Androido, restu ĉe OGLES1, se vi ne certas! Aplikaĵo alie "
+"povus\n"
+"malsukcesi ruliĝon. Sur aliaj sistemoj, OpenGL estas rekomendata.\n"
+"Ombrigiloj estas subtenataj de OpenGL (nur sur tablaj komputiloj) kaj OGLES2 "
+"(eksperimente)"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
+"Sentemo de la stirstangaj aksoj por movadi la\n"
+"enludan vidamplekson."
#: src/settings_translation_file.cpp
msgid ""
@@ -3954,6 +7202,10 @@ 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 ""
+"La potenco (mallumeco) de ĉirkaŭaĵa ombrigo de monderoj.\n"
+"Malpli estas mallume, pli estas lume. La valida amplekso de valoroj\n"
+"estas inter 0.25 kaj 4.0, inkluzive. Se la valoro estas ekster la amplekso,\n"
+"ĝi prezentos la plej proksiman valoron validan."
#: src/settings_translation_file.cpp
msgid ""
@@ -3961,44 +7213,76 @@ 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 ""
+"Tempo (en sekundoj) dum kiu atendovico de fluaĵoj povas superkreski\n"
+"la datentraktan kapablon, ĝis oni provos ĝin malgrandigi per forĵeto de\n"
+"malnovaj viceroj. Nula valoro malŝaltas la funkcion."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+"Tempobuĝeto por rulado de ABM (aktiva modifilo de monderoj) dum ĉiu paŝo\n"
+"(kiel frakcio de la intertempo de ABM)"
#: src/settings_translation_file.cpp
msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
+"Tempo (en sekundoj) inter ripetataj okazoj dum premo\n"
+"de stirstangaj klavoj."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
+"Tempo (en sekundoj) inter ripetaj metoj de monderoj dum premado de\n"
+"la butono por meti."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr ""
+msgid "The type of joystick"
+msgstr "La speco de stirstango"
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
+"Vertikala distanco post kiu varmeco malpliiĝas je 20, se «altitude_chill»\n"
+"estas ŝaltita. Ankaŭ la vertikala distanco post kiu malsekeco malpliiĝas\n"
+"je 10 se «altitude_dry» estas ŝaltita."
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "Tria el la 4 3d-aj bruoj, kiuj kune difinas altecon de mont(et)aroj."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
+"Vivodaŭro de metitaj portaĵoj en sekundoj.\n"
+"Agordo al -1 malŝaltas la funkcion."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "Tagtempo kiam nova mondo ekas, en hormilonoj (0–23999)."
#: src/settings_translation_file.cpp
msgid "Time send interval"
-msgstr ""
+msgstr "Intervalo de sendado de tempaj informoj"
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Rapido de tempo"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
-msgstr ""
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr "Tempolimo por forigi neuzatajn mapajn datenojn de klienta memoro."
#: src/settings_translation_file.cpp
msgid ""
@@ -4007,191 +7291,329 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
+"Por malpliigi retprokraston, transsendoj de menderoj malrapidiĝas kiam "
+"ludanto ion\n"
+"konstruas. Ĉi tio decidas, kiom longe ili malrapidos post meto aŭ forigo de "
+"mondero."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr ""
+msgstr "Baskula klavo de vidpunkta reĝimo"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
-msgstr ""
+msgstr "Prokrasto de ŝpruchelpilo"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Sojlo de tuŝekrano"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Touchscreen"
+msgstr "Sojlo de tuŝekrano"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Bruo de arboj"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Triineara filtrilo"
+msgstr "Triineara filtrado"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"Vera = 256\n"
+"Falsa = 128\n"
+"Povas faciligi mapeton por malrapidaj komputiloj."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "Fidataj modifaĵoj"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "URL al la listo de serviloj, montrota en la langeto «Ludo por pluraj»."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Subspecimenado"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
+"Subspecimenado similas uzon de malgranda ekrana distingumo, sed ĝi nur\n"
+"efektivas en la ludo, lasante la fasadon senŝanĝa.\n"
+"Ĝi grave helpu la efikecon kontraŭ malpli detala filmo."
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
-msgstr ""
+msgstr "Senlima distanco por transsendo de ludantoj"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr ""
+msgstr "Mallegi neuzatajn servilajn datenojn"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Supra Y-limo de forgeskeloj."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Supra Y-limo de fluginsuloj."
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr ""
+msgstr "Uzi 3d-ajn nubojn anstataŭ ebenajn."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+msgstr "Uzi moviĝantajn nubojn por la fono de la ĉefmenuo."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
-msgstr ""
+msgstr "Uzi neizotropan filtradon vidante teksturojn deflanke."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
-msgstr ""
+msgstr "Uzi dulinearan filtradon skalante teksturojn."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Use key"
-msgstr "premi klavon"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Uzi etmapigon por skali teksturojn. Povas iomete plibonigi efikecon,\n"
+"precipe dum uzo de teksturaro je alta distingumo.\n"
+"Gamae ĝusta malgrandigado ne estas subtenata."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
+"Uzi multspecimenan glatigon (MSAA) por glatigi randojn de monderoj.\n"
+"Tiu algoritmo glatigas la tridimensian vidon, ne malklarigante la bildon.\n"
+"Tamen, ĝi ne ŝanĝas la internon de teksturoj\n"
+"(kio estas speciale rimarkebla pri travideblaj teksturoj).\n"
+"Videblaj spacoj aperas inter monderoj, se ombrigiloj estas malŝaltitaj.\n"
+"Se la valoro de ĉi tiu elekteblo estas 0, multspecimena glatigo estas "
+"malŝaltita.\n"
+"Vi devas relanĉi post ŝanĝo de ĉi tiu elekteblo."
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
-msgstr ""
+msgstr "Uzi trilinearan filtradon skalante teksturojn."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
-msgstr ""
+msgstr "Vertica bufrobjekto"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
-msgstr ""
+msgid "VSync"
+msgstr "Vertikala akordigo"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr ""
+msgid "Valley depth"
+msgstr "Profundeco de valoj"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
-msgstr ""
+msgid "Valley fill"
+msgstr "Plenigo de valoj"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "Profilo de valoj"
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr "Deklivo de valoj"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr "Vario de profundoj de surfacoj de klimato."
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variaĵo de maksimuma alteco de montoj (en monderoj)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variado de nombro de kavernoj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
+"Variado de vertikala skalo de tereno.\n"
+"Kiam brua subas -0.55, tereno estas preskaŭ plata."
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Varies depth of biome surface nodes."
+msgstr "Variigas profundecon de surfacaj monderoj de klimato."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
+"Variigas krudecon de tereno.\n"
+"Difinas la valoron de «persistence» (persisto) por la bruoj «terrain_base»\n"
+"kaj «terrain_alt»."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Variigas la krutecon de krutaĵoj."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Vertikala rapido de grimpado, en monderoj sekunde."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
-msgstr ""
+msgstr "Vertikala samtempigo de ekrano."
#: src/settings_translation_file.cpp
msgid "Video driver"
-msgstr ""
+msgstr "Videa pelilo"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "Koeficiento de balancado de vido"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
+msgid "View distance in nodes."
+msgstr "Vidodistanco mondere."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
-msgstr ""
+msgstr "Klavo por malgrandigi vidodistancon"
#: src/settings_translation_file.cpp
msgid "View range increase key"
-msgstr ""
+msgstr "Klavo por pligrandigi vidodistancon"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Vidpunkta zoma klavo"
#: src/settings_translation_file.cpp
msgid "Viewing range"
-msgstr ""
+msgstr "Vidodistanco"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "Virtuala stirstango premas specialan klavon"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
-msgstr "Sonintenso"
+msgstr "Laŭteco"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Laŭteco de ĉiuj sonoj\n"
+"Bezonas ŝaltitan sonsistemon."
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"W-koordinato de la estigita 3D-tranĉo de la 4D-fraktalo.\n"
+"Determinas kiu 3D-tranĉo de la 4D-formo estiĝas.\n"
+"ŝanĝas la formon de la fraktalo.\n"
+"Neniel efikas sur 3D-fraktaloj.\n"
+"Ampleksa proksimume de -2 ĝis 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Rapido de irado kaj flugado, en monderoj sekunde."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Walking speed"
-msgstr "Ondantaj foliaĵoj"
+msgstr "Rapido de irado"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr "Aĵaj teksturoj…"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Rapido de irado, flugado kaj grimpado en rapida reĝimo, en monderoj sekunde."
#: src/settings_translation_file.cpp
msgid "Water level"
-msgstr ""
+msgstr "Akvonivelo"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
-msgstr ""
+msgstr "Nivelo de la akvonivelo tra la mondo."
#: src/settings_translation_file.cpp
msgid "Waving Nodes"
-msgstr "Ondantaj nodaĵoj"
+msgstr "Ondantaj monderoj"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
msgstr "Ondantaj foliaĵoj"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Ondantaj plantoj"
+msgid "Waving liquids"
+msgstr "Ondantaj fluaĵoj"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Ondanta akvo"
+msgid "Waving liquids wave height"
+msgstr "Alteco de ondoj de ondantaj fluaĵoj"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Waving water height"
-msgstr "Ondanta akvo"
+msgid "Waving liquids wave speed"
+msgstr "Rapido de ondoj sur ondanta akvo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Waving water length"
-msgstr "Ondanta akvo"
+msgid "Waving liquids wavelength"
+msgstr "Longo de ondoj de ondantaj fluaĵoj"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr "Ondantaj plantoj"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Waving water speed"
-msgstr "Ondanta akvo"
+msgid "Weblink color"
+msgstr "Koloro de elektujo"
#: src/settings_translation_file.cpp
msgid ""
@@ -4199,6 +7621,9 @@ msgid ""
"filtered in software, but some images are generated directly\n"
"to hardware (e.g. render-to-texture for nodes in inventory)."
msgstr ""
+"Kiam veras «gui_scaling_filter», ĉiuj bildoj de la grafika fasado\n"
+"devas filtriĝi en la programaro, sed iuj bildoj estiĝas rekte en la\n"
+"programaro (ekz. «render-to-texture» por monderoj en portaĵujo)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4207,141 +7632,666 @@ msgid ""
"to the old scaling method, for video drivers that don't\n"
"properly support downloading textures back from hardware."
msgstr ""
+"Kiam veras «gui_scaling_filter_txr2img», kopii la bildojn\n"
+"de aparataro al programaro por skalado. Kiam malveras, repaŝu\n"
+"al la malnova metodo de skalado, por vid-peliloj, kiuj ne subtenas\n"
+"bone elŝutadon de teksturoj de la aparataro."
#: 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"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+"Dum uzo de duliniaj/triliniaj/neizotropaj filtriloj, tekstruoj je malaltaj\n"
+"distingumoj povas malklariĝi; tial memage grandigu ĝin per interpolado\n"
+"laŭ plej proksimaj bilderoj por teni klarajn bilderojn. Ĉi tio agordas la\n"
+"malplejaltan grandecon de teksturo por la grandigitaj teksturoj; pli altaj\n"
+"valoroj aspektas pli klare, sed bezonas pli da memoro. Potencoj de duo\n"
+"estas rekomendataj. Valoroj pli grandaj ol 1 eble ne estos videblaj, se ne\n"
+"estas ŝaltita dulinia, trilinia, aŭ neizotropa filtrado.\n"
+"Ĉi tio ankaŭ uziĝas kiel la baza grando de monderaj teksturoj por memaga\n"
+"grandigado de monde laŭigitaj teksturoj."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
+"Ĉu implicite montri fonojn de nometikedoj.\n"
+"Modifaĵoj malgraŭ tio povas agordi fonojn."
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
-msgstr ""
+msgstr "Ĉu teksturaj movbildoj de monderoj malsamtempiĝu en ĉiu mondopeco."
#: 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 ""
+"Ĉu ludantoj montriĝas al klientoj sen limo de vidodistanco.\n"
+"Evitinda; uzu anstataŭe la agordon «player_transfer_distance»."
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "Ĉu permesi al ludantoj vundi kaj mortigi unu la alian."
#: src/settings_translation_file.cpp
msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
+"Ĉu peti rekonekton de klientoj post kolapso (de Lua).\n"
+"Ĉi tion agordu al vero se via servilo rekomencos memage."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
+msgstr "Ĉu nebuli finon de la videbla areo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
+"Ĉu silentigi sonojn. Vi povas malsilentigi ilin kiam ajn, malse\n"
+"la sonsistemo estas malŝaltita (enable_sound=false).\n"
+"Enlude, vi povas ŝalti la staton de silentigo per la silentiga klavo,\n"
+"aŭ per la paŭza menuo."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
+"Ĉu montri erarserĉajn informojn de la kliento (efikas samkiel premo de F5)."
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
msgstr ""
+"Larĝo de la fenestro je ĝia komenca grando. Ignorata en plenekrana reĝimo."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr "Larĝo de linioj de la elektujo ĉirkaŭ monderoj."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
+"Nur por Vindozo: Rulu Mineteston fone per la komanduja fenestro.\n"
+"Ĝi enhavos la samajn informojn kiel la dosiero (norme nomita) debug.txt."
#: src/settings_translation_file.cpp
msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
+"Monda dosierujo (ĉio en la mondo konserviĝos ĉi tie).\n"
+"Ne necesas dum komenco el la ĉefmenuo."
#: src/settings_translation_file.cpp
-msgid "Y of flat ground."
-msgstr ""
+msgid "World start time"
+msgstr "Tempo je komenco de mondo"
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
msgstr ""
+"Monde laŭigitaj teksturoj povas skaliĝi trans kelkaj monderoj. Tamen,\n"
+"la servilo eble ne sendos la volatan skalon, precipe se vi uzas speciale\n"
+"fasonitan teksturaron; per ĉi tiu elekteblo, la kliento provas determini\n"
+"la skalon memage, surbaze de la grandeco de la teksturo.\n"
+"Vidu ankaŭ «texture_min_size».\n"
+"Averto: Ĉi tiu elekteblo estas EKSPERIMENTA!"
#: src/settings_translation_file.cpp
-msgid "cURL file download timeout"
+msgid "World-aligned textures mode"
+msgstr "Reĝimo de monde laŭigitaj teksturoj"
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr "Y de plata tero."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
+"Y de nula nivelo de la transiro de monta denseco. Uzata por movi montojn "
+"vertikale."
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "Y of upper limit of large caves."
+msgstr "Y de supera limo de grandaj kavernoj."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Y-distanco trans kiu kavernoj etendiĝas al plena grandeco."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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-distanco, ekde kiu fluginsuloj maldikiĝas de plena denso al nenio.\n"
+"Maldikiĝo komenciĝas ĉe ĉi tiu distanco de la Y-limo.\n"
+"Sur solida fluginsula tavolo, tio regas la altojn de montetoj/montoj.\n"
+"Devas esti ne pli ol duono de la distanco inter la Y-limoj."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Y-nivelo de mezuma terena surfaco."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Y-nivelo de kaverna supra limo."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Y-nivelo de pli alta tereno, kiu estigas krutaĵojn."
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "Y-level of lower terrain and seabed."
+msgstr "Y-nivelo de malsupra tereno kaj marfundo."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Y-nivelo de marplanko."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
-#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr "Ŝargi teksturojn…"
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "Tempolimo de dosiere elŝuto de cURL"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Skala faktoro por menuoj "
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "Interaga tempolimo de cURL"
-#~ msgid "Touch free target"
-#~ msgstr "Sentuŝa celo"
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "Samtempa limo de cURL"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "– Krea reĝimo: "
+
+#~ msgid "- Damage: "
+#~ msgstr "– Difekto: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = paralaksa ombrigo kun klinaj informoj (pli rapida).\n"
+#~ "1 = reliefa mapado (pli preciza)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Adreso / Pordo"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Alĝustigi la gamaan kodadon al la lumtabeloj. Pli altaj nombroj estas pli "
+#~ "helaj.\n"
+#~ "Ĉi tiu agordo estas klientflanka, kaj serviloj ĝin malatentos."
+
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr ""
+#~ "Ŝanĝas kiel montecaj fluginsuloj maldikiĝas super kaj sub la mezpunkto."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Ĉu vi certas, ke vi volas rekomenci vian mondon por unu ludanto?"
+
+#~ msgid "Back"
+#~ msgstr "Reeniri"
+
+#~ msgid "Basic"
+#~ msgstr "Baza"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bitoj bildere (aŭ kolornombro) en tutekrana reĝimo."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Tubera mapado"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Mapado de elstaraĵoj"
+
+#~ 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 ""
+#~ "Ŝanĝoj al fasado de la ĉefmenuo:\n"
+#~ "- full (plena): Pluraj mondoj por unu ludanto, elektilo de ludo, "
+#~ "teksturaro, ktp.\n"
+#~ "- simple (simpla): Unu mondo por unu ludanto, neniuj elektiloj de ludo "
+#~ "aŭ teksturaro.\n"
+#~ "Povus esti bezona por malgrandaj ekranoj."
+
+#~ msgid "Config mods"
+#~ msgstr "Agordi modifaĵojn"
+
+#~ msgid "Configure"
+#~ msgstr "Agordi"
+
+#~ msgid "Connect"
+#~ msgstr "Konekti"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Regas rapidon de profundiĝo en fluaĵoj."
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Regas densecon de montecaj fluginsuloj.\n"
+#~ "Temas pri deŝovo de la brua valoro «np_mountain»."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Regas larĝecon de tuneloj; pli malgranda valoro kreas pri larĝajn "
+#~ "tunelojn."
+
+#~ msgid "Credits"
+#~ msgstr "Kontribuantaro"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Koloro de celilo (R,V,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Difektado estas ŝaltita"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "Akreco de mallumo"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Implicita tempolimo por cURL, milisekunde.\n"
+#~ "Nur efektiviĝas programtradukite kun cURL."
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Difinas zonojn de glata tereno sur fluginsuloj.\n"
+#~ "Glataj fluginsuloj okazas kiam bruo superas nulon."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Difinas glatigan paŝon de teksturoj.\n"
+#~ "Pli alta valoro signifas pli glatajn normalmapojn."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Forigi ŝataton"
+
+#~ msgid ""
+#~ "Deprecated, define and locate cave liquids using biome definitions "
+#~ "instead.\n"
+#~ "Y of upper limit of lava in large caves."
+#~ msgstr ""
+#~ "Evitinda, difini kaj trovi kavernajn fluaĵojn anstataŭe per klimataj "
+#~ "difinoj\n"
+#~ "Y de supra limo de lafo en grandaj kavernoj."
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Elŝuti ludon, ekzemple minetest_game, el minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Elŝutu ludon el minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Elŝutante kaj instalante $1, bonvolu atendi…"
+
+#~ msgid "Enable VBO"
+#~ msgstr "Ŝalti VBO(Vertex Buffer Object)"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Ŝalti konfirmon de registriĝo"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Ŝaltas mapadon de elstaraĵoj por teksturoj. Normalmapoj devas veni kun la "
+#~ "teksturaro,\n"
+#~ "aŭ estiĝi memage.\n"
+#~ "Bezonas ŝaltitajn ombrigilojn."
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Restartigu Minetest-on por efikigi pelilan ŝanĝon"
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "Ŝaltas dumludan estigadon de normalmapoj (Reliefiga efekto).\n"
+#~ "Bezonas ŝaltitan mapadon de elstaraĵoj."
-#~ msgid "Rendering:"
-#~ msgstr "Bildigo:"
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Ŝaltas mapadon de paralaksa ombrigo.\n"
+#~ "Bezonas ŝaltitajn ombrigilojn."
-#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "ŝaltita"
+#~ msgid "Enter "
+#~ msgstr "Enigi "
-#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Malŝaltu modifaron"
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Prova elekteblo; povas estigi videblajn spacojn inter monderoj\n"
+#~ "je nombro super 0."
-#~ msgid "No!!!"
-#~ msgstr "Ne!!!"
+#~ msgid "FPS in pause menu"
+#~ msgstr "Kadroj sekunde en paŭza menuo"
-#, fuzzy
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Generi Normalmapojn"
+#~ msgid "Fallback font shadow"
+#~ msgstr "Ombro de reenpaŝa tiparo"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Travidebleco de ombro de la reenpaŝa tiparo"
+
+#~ msgid "Fallback font size"
+#~ msgstr "Grando de reenpaŝa tiparo"
+
+#~ msgid "Filtering"
+#~ msgstr "Filtrado"
+
+#~ msgid "Floatland base height noise"
+#~ msgstr "Bruo de baza alteco de fluginsuloj"
+
+#~ msgid "Floatland mountain height"
+#~ msgstr "Alteco de fluginsulaj montoj"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Maltravidebleco de tipara ombro (inter 0 kaj 255)."
+
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Grandeco de la reenpaŝa tiparo, punkte (pt)."
+
+#~ msgid "FreeType fonts"
+#~ msgstr "Tiparoj «FreeType»"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "Kolornombro tutekrane"
+
+#~ msgid "Game"
+#~ msgstr "Ludo"
+
+#~ msgid "Gamma"
+#~ msgstr "Helĝustigo"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Estigi Normalmapojn"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "Estigi normalmapojn"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "Skala koeficiento por travida fasado"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "Preciza glitkoma datentraktilo (FPU)"
+
+#~ msgid "IPv6 support."
+#~ msgstr "Subteno de IPv6."
+
+#~ msgid "In-Game"
+#~ msgstr "Lude"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instali: dosiero: «$1»"
+
+#~ msgid "Instrumentation"
+#~ msgstr "Ekzamenado"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Klavagordoj. (Se tiu menuo misfunkcias, forigu agordojn el minetest.conf)"
+
+#~ msgid "Lava depth"
+#~ msgstr "Lafo-profundeco"
+
+#~ msgid "Lightness sharpness"
+#~ msgstr "Akreco de heleco"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Limo de viceroj enlegotaj de disko"
+
+#~ msgid "Main"
+#~ msgstr "Ĉefmenuo"
+
+#~ msgid "Main menu style"
+#~ msgstr "Stilo de ĉefmenuo"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "Funkciigas programaron «DirectX» kun «LuaJIT». Malŝaltu okaze de "
+#~ "problemoj."
+
+#~ msgid "Menus"
+#~ msgstr "Menuoj"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Mapeto en radara reĝimo, zomo ×2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Mapeto en radara reĝimo, zomo ×4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Mapeto en supraĵa reĝimo, zomo ×2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Mapeto en supraĵa reĝimo, zomo ×4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nomo / Pasvorto"
+
+#~ msgid "Name/Password"
+#~ msgstr "Nomo/Pasvorto"
+
+#~ msgid "No"
+#~ msgstr "Ne"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Normalmapa specimenado"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Normalmapa potenco"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Nombro da iteracioj de paralaksa ombrigo."
+
+#~ msgid "Ok"
+#~ msgstr "Bone"
+
+#~ msgid ""
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
+#~ msgstr ""
+#~ "Netravidebleco (alfa) de la ombro post la reenpaŝa tiparo, inter 0 kaj "
+#~ "255."
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "Entuta ekarto de la efiko de paralaksa ombrigo, kutime skalo/2."
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Entuta vasteco de paralaksa ombrigo."
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Paralaksa ombrigo"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Paralaksa ombrigo"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Ekarto de paralaksa okludo"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Iteracioj de paralaksa ombrigo"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Reĝimo de paralaksa ombrigo"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Skalo de paralaksa ombrigo"
+
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Potenco de paralaksa ombrigo"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Dosierindiko al tiparo «TrueType» aŭ bitbildo."
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Dosierindiko por konservi ekrankopiojn."
+
+#~ msgid "Player name"
+#~ msgstr "Nomo de ludanto"
+
+#~ msgid "Profiling"
+#~ msgstr "Profilado"
+
+#~ msgid "Projecting dungeons"
+#~ msgstr "Planante forgeskelojn"
+
+#~ msgid "PvP enabled"
+#~ msgstr "Dueloj ŝaltitas"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Rekomenci mondon por unu ludanto"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Elekti pakaĵan dosieron:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Servilo / Ludo por unu"
+
+#~ msgid "Shadow limit"
+#~ msgstr "Limo por ombroj"
+
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Deŝovo de tipara ombro (en bilderoj); se ĝi estas 0, la ombro ne "
+#~ "desegniĝos."
+
+#~ msgid "Special"
+#~ msgstr "Speciala"
+
+#~ msgid "Special key"
+#~ msgstr "Speciala klavo"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Komenci ludon por unu"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Forteco de estigitaj normalmapoj."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Tiu ĉi tiparo uziĝos por iuj lingvoj."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Por uzi ombrigilojn, OpenGL-pelilo estas necesa."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Baskuligi glitan vidpunkton"
+
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr ""
+#~ "Ordinara plejalto, super kaj sub la mezpunkto, de fluginsulaj montoj."
+
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Variaĵo de alteco de montetoj kaj profundeco de lagoj sur glata tereno de "
+#~ "fluginsuloj."
+
+#~ msgid "View"
+#~ msgstr "Vido"
+
+#~ msgid "Waving Water"
+#~ msgstr "Ondanta akvo"
-#~ msgid "Public Serverlist"
-#~ msgstr "Publika servilolisto"
+#~ msgid "Waving water"
+#~ msgstr "Ondanta akvo"
-#~ msgid "No of course not!"
-#~ msgstr "Ne, memkompreneble!"
+#~ 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 ""
+#~ "Ĉu tiparoj de FreeType uziĝas; postulas entradukitan subtenon de "
+#~ "FreeType.\n"
+#~ "Malŝaltite, ĉi tio anstataŭe uzigas tiparojn bitbildajn kaj XML-vektorajn."
#, fuzzy
-#~ msgid "Useful for mod developers."
-#~ msgstr "Eksaj kernprogramistoj"
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "Y de supera limo de grandaj kvazaŭ-hazardaj kavernoj."
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Y-nivelo kien etendiĝas ombroj de fluginsuloj."
+
+#~ msgid "Yes"
+#~ msgstr "Jes"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Vi estas aliĝonta al ĉi tiu servilo kun la nomo «%s» unuafoje.\n"
+#~ "Se vi pluigos, nova konto kun viaj salutiloj registriĝos ĉe la servilo.\n"
+#~ "Bonvolu retajpi vian pasvorton kaj klaki al «Registriĝi kaj aliĝi» por "
+#~ "konfirmi kreon de konto, aŭ al «Nuligi» por ĉesigi."
+
+#~ msgid "You died."
+#~ msgstr "Vi mortis."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/es/minetest.po b/po/es/minetest.po
index 1398377ee..812e5945b 100644
--- a/po/es/minetest.po
+++ b/po/es/minetest.po
@@ -1,15 +1,10 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Spanish (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-06-14 21:57+0000\n"
-"Last-Translator: Roberto Mengíbar Fernández <rroobbeerr@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-24 09:24+0000\n"
+"Last-Translator: Valentino <phamtomwhite@protonmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/minetest/"
"minetest/es/>\n"
"Language: es\n"
@@ -17,24 +12,100 @@ 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 2.7-dev\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Vaciar la cola de chat de salida"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Comando vacío."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Salir al menú principal"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Comando inválido: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Comando emitido: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Listar jugadores conectados"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Jugadores conectados: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "La cola de salida del chat está ahora vacía."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Este comando está deshabilitado por el servidor."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Reaparecer"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Has muerto"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Comandos disponibles:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Comandos disponibles: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Comando no disponible: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Obtener ayuda para los comandos"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Usa '.help <cmd>' para obtener más información, o '.help all' para mostrar "
+"todo."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Aceptar"
+
+#: builtin/fstk/ui.lua
+#, fuzzy
+msgid "<none available>"
+msgstr "Comando no disponible: "
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Un error ha ocurrido en un script de Lua, tal como en un mod:"
+msgid "An error occurred in a Lua script:"
+msgstr "Ha ocurrido un error en un script de Lua:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred:"
msgstr "Ha ocurrido un error:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Menú principal"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Aceptar"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Reconectar"
@@ -43,9 +114,30 @@ msgstr "Reconectar"
msgid "The server has requested a reconnect:"
msgstr "El servidor ha solicitado una reconexión:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Cargando..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Selecciona Mods"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr "Más tarde"
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr "Nunca"
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -60,10 +152,8 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr "El servidor soporta versiones del protocolo entre $1 y $2. "
#: builtin/mainmenu/common.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 "
-"a Internet."
+msgid "Visit website"
+msgstr "Visitar el sitio web"
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -73,52 +163,88 @@ msgstr "Solo se soporta la versión de protocolo $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Nosotros soportamos versiones de protocolo entre la versión $1 y $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "(Unsatisfied)"
+msgstr "(Insatisfecho)"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Cancelar"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
msgstr "Dependencias:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Desactivar paquete"
+msgid "Disable all"
+msgstr "Desactivar todo"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Activar paquete"
+msgid "Disable modpack"
+msgstr "Desactivar pack de mods"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Activar todos"
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Activar pack de mods"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
"Error al activar el mod \"$1\" por contener caracteres no permitidos. Solo "
"los caracteres [a-z0-9_] están permitidos."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Ocultar juego"
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Ocultar contenido"
+msgid "Find More Mods"
+msgstr "Encontrar más mods"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Sin dependencias opcionales"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "La descripción del juego no está disponible."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Sin dependencias importantes"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "La descripción del mod no está disponible."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Sin dependencias opcionales"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dependencias opcionales:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Guardar"
@@ -128,77 +254,393 @@ msgstr "Mundo:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
-msgstr "Activado"
+msgstr "activado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" ya existe. Quieres remplazarlo?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Las dependencias $1 y $2 serán instaladas."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+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
+msgid "$1 downloading..."
+msgstr "$1 descargando..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 dependencias requeridas no se encuentren."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+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
+msgid "Already installed"
+msgstr "Ya está instalado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Volver al menú principal"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Juego Base:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"ContentDB no se encuentra disponible cuando Minetest se compiló sin cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Descargando..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Fallo al descargar $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Juegos"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instalar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Instalar $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Instalar dependencias faltantes"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Instalar: Formato de archivo no soportado o archivo corrupto"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "No se ha podido obtener ningún paquete"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Sin resultados"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "No hay actualizaciones"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "No encontrado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Sobreescribir"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Por favor verifica que el juego base está bien."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "En cola"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Paq. de texturas"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Actualizar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Actualizar Todo [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Ver más información en un navegador web"
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
msgstr "Ya existe un mundo llamado \"$1\""
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Terreno adicional"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Frío de altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Sequedad de altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Mezclado de biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Cavernas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Cavernas"
+
+#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Crear"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Descarga un sub-juego, como minetest_game, desde minetest.net"
+msgid "Decorations"
+msgstr "Decoraciones"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Descarga uno desde minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr ""
+"Advertencia: La prueba de desarrollo está destinada a los desarrolladores."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Juego"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Mazmorras"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Terreno plano"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Tierras flotantes en el cielo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Tierras flotantes (experimental)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Generar terreno no fractal: Oceanos y subterráneos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Colinas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Ríos húmedos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Incrementa humedad alrededor de los ríos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr "Instalar un juego"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Lagos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"La baja humedad y el alto calor causan que los ríos sean poco profundos o "
+"secos"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Generador de mapas"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Banderas de Mapgen"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "No se ha dado un nombre al mundo o no se ha seleccionado uno"
+msgid "Mapgen-specific flags"
+msgstr "Banderas específicas de Mapgen"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Montañas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Flujo de lodo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Red de túneles y cuevas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Ningún juego seleccionado"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Reduce el calor con la altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Reduce la humedad con la altitud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Ríos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Ríos a nivel de mar"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Semilla"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Smooth transition between biomes"
+msgstr "Transición suave entre biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
msgstr ""
-"Advertencia: El juego \"Minimal development test\" está diseñado para "
-"desarrolladores."
+"Estructuras generadas en el terreno (sin efecto en arboles y césped de "
+"jungla creado por v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Estructuras que aparecen en el terreno, típicamente árboles y plantas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Templado, Desierto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Templado, Desierto, Jungla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Templado, Desierto, Jungla, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Erosión de la superficie del terreno"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Árboles y hierba de la selva"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Variar la profundidad del río"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Cavernas muy grandes en lo profundo del subsuelo"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Nombre del mundo"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "No tienes sub-juegos instalados."
+msgid "You have no games installed."
+msgstr "No tienes juegos instalados."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "¿Realmente desea borrar \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Borrar"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: Error al borrar \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: Error al borrar \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: Ruta del mod \"$1\" inválida"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: Ruta \"$1\" inválida"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "¿Eliminar el mundo \"$1\"?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Confirmar contraseña"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Generador de mapas"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nombre"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Contraseña"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr "Las contraseñas no coinciden"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Registrarse y unirse"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Aceptar"
@@ -206,23 +648,39 @@ msgstr "Aceptar"
msgid "Rename Modpack:"
msgstr "Renombrar paquete de mod:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" no es un indicador válido."
+#: 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 ""
+"Éste paquete de mods tiene un nombre explícito dado en su modpack.conf el "
+"cual sobreescribirá cualquier renombrado desde aquí."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(Ninguna descripción de ajuste dada)"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Ruido 2D"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr "< Volver a la página de Configuración"
+msgstr "< Volver a la página de configuración"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr "Navegar"
+msgstr "Explorar"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr "Contenido: Juegos"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr "Contenido: Mods"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Desactivado"
@@ -235,274 +693,363 @@ msgid "Enabled"
msgstr "Activado"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
-"El formato es 3 números separados por comas y éstos dentro de paréntesis."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Formato: <offset> <escala> (<extensión X>, <extensión Y> , <extensión Z>), "
-"<semilla>, <octavas>, <persistencia>"
+msgid "Lacunarity"
+msgstr "Lagunaridad"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Juegos"
+msgid "Octaves"
+msgstr "Octavas"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mods"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Compensado"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-"Opcionalmente, el parámetro \"lacunarity\" puede ser anexado separándolo "
-"mediante una coma."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Por favor, introduzca una lista de indicadores separados por comas."
+#, fuzzy
+msgid "Persistence"
+msgstr "Persistencia"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
-msgstr "Por favor, introduzca un entero válido."
+msgstr "Por favor, introduce un entero válido."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid number."
msgstr "Por favor, introduzca un número válido."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Los valores posibles son: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "Restablecer por defecto"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Escala"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Buscar"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Seleccionar ruta"
+msgid "Select directory"
+msgstr "Seleccionar carpeta"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Seleccionar archivo"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Mostrar los nombres técnicos"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "El valor debe ser mayor que $1."
+msgid "The value must be at least $1."
+msgstr "El valor debe ser mayor o igual que $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "El valor debe ser menor que $1."
+msgid "The value must not be larger than $1."
+msgstr "El valor debe ser menor o igual que $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Instalar mod: Formato de archivo \"$1\" no soportado o archivo corrupto"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Propagación X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Propagación Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Propagación Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Valor absoluto"
+
+#. ~ "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 "Predeterminados"
-#: builtin/mainmenu/modmgr.lua
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "Suavizado"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Activado)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mods"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Fallo al instalar $1 en $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Instalar mod: Archivo: \"$1\""
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr "Instalar mod: Imposible encontrar el nombre real del mod para: $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Instalar mod: Imposible encontrar un nombre de archivo adecuado para el "
+"Instalar mod: Imposible encontrar un nombre de carpeta adecuado para el "
"paquete de mod $1"
-# En el menú principal de mods pone repositorio no tienda.
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Cerrar repositorio"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Imposible encontrar un mod o paquete de mod"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Descargando $1, por favor espere..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Fallo al instalar $1 como paquete de texturas"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Instalar"
-
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Página $1 de $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Fallo al instalar un juego como $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Clasificación"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Fallo al instalar un mod como $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Buscar"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Fallo al instalar un paquete de mod como $1"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Nombre corto:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Cargando..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Instalado con éxito:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "La lista de servidores públicos está desactivada"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Sin ordenar"
+#: 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 "
+"a Internet."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Reinstalar"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Acerca de"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Colaboradores activos"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Renderizador activo:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Desarrolladores principales"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Créditos"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Abrir Directorio de Datos de Usuario"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.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_about.lua
msgid "Previous Contributors"
msgstr "Antiguos colaboradores"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Antiguos desarrolladores principales"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Mods instalados:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Información del mod:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "La descripción del mod no está disponible"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Mostrar la informacion de la depuración"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Renombrar"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Explorar contenido en línea"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Selecciona el fichero del mod:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Contenido"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Desinstalar el mod seleccionado"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Desactivar el paquete de texturas"
-# El nombre completo no cabe.
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Desinstalar el paquete seleccionado"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Información:"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Dirección / puerto"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Paquetes instalados:"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Cliente"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Sin dependencias."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Conectar"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "La descripción del paquete no está disponible"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Modo creativo"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Daño activado"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Borrar Fav."
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Renombrar"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Favorito"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Desinstalar el paquete"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Nombre / contraseña"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Usar el paqu. de texturas"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP activado"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Anunciar servidor"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Asociar dirección"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Configurar"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Modo creativo"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Permitir daños"
-# Los dos puntos son intencionados.
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nombre / contraseña"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Hospedar juego"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Hospedar servidor"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Instalar juegos desde ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nuevo"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "¡No se ha dado un nombre al mundo o no se ha seleccionado uno!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Jugar juego"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Puerto"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Público"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Selecciona Mods"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Selecciona un mundo:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Servidor"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Puerto del servidor"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
-msgstr "Iniciar juego"
+msgstr "Empezar juego"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Dirección"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Limpiar"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Modo creativo"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Daño / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Favoritos"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Servidores Incompatibles"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Unirse al juego"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Servidores Públicos"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Actualizar"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Puerto remoto"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Descripción del servidor"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
@@ -521,38 +1068,54 @@ msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Configuración Avanzada"
+msgid "All Settings"
+msgstr "Todos los ajustes"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "Suavizado:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "¿Estás seguro de querer reiniciar el mundo de un jugador?"
+msgid "Autosave Screen Size"
+msgstr "Auto-guardar tamaño de pantalla"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Filtrado bilineal"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Mapeado de relieve"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr "Configurar teclas"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
-msgstr "Vidrio Conectado"
+msgstr "Vidrio conectado"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Sombras dinámicas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr "Sombras dinámicas:"
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Hojas elegantes"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Alto"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Bajo"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Medio"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "Mipmap"
@@ -561,12 +1124,8 @@ msgid "Mipmap + Aniso. Filter"
msgstr "Mipmap + Filtro aniso."
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "No"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
-msgstr "Sin Filtrado"
+msgstr "Sin filtrado"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
@@ -580,13 +1139,9 @@ msgstr "Resaltar nodos"
msgid "Node Outlining"
msgstr "Marcar nodos"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr "Ninguno"
-
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "Mapeado de relieve"
+msgid "None"
+msgstr "Nada"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
@@ -596,124 +1151,101 @@ msgstr "Hojas opacas"
msgid "Opaque Water"
msgstr "Agua opaca"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Oclusión de paralaje"
-
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Partículas"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Reiniciar mundo de un jugador"
+msgid "Screen:"
+msgstr "Pantalla:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
-msgstr "Configuración"
+msgstr "Ajustes"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
msgstr "Sombreadores"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Sombreadores (experimental)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Sombreadores (no disponible)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "Hojas simples"
#: builtin/mainmenu/tab_settings.lua
msgid "Smooth Lighting"
-msgstr "Iluminación Suave"
+msgstr "Iluminación suave"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
msgstr "Texturizado:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Para habilitar los sombreadores debe utilizar el controlador OpenGL."
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
msgstr "Mapeado de tonos"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "Umbral táctil (px)"
+msgid "Touch threshold (px):"
+msgstr "Umbral táctil (px):"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr "Filtrado Trilineal"
+msgstr "Filtrado trilineal"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Movimiento de Hojas"
+#, fuzzy
+msgid "Very High"
+msgstr "Ultra Alto"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Movimiento de Plantas"
+msgid "Very Low"
+msgstr "Muy bajo"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Oleaje"
+msgid "Waving Leaves"
+msgstr "Movimiento de hojas"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Sí"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Configurar mods"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Principal"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Comenzar un jugador"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Jugar"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Un jugador"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Sin información disponible"
+msgid "Waving Liquids"
+msgstr "Movimiento de líquidos"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Seleccione un paquete de texturas:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Movimiento de plantas"
-# No cabe "Paquetes de texturas".
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Texturas"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Error de conexión (¿tiempo agotado?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Tiempo de espera de la conexión agotado."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "¡Completado!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Inicializando nodos"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "Inicializando nodos..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "Cargando texturas..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr "Reconstruyendo sombreadores..."
@@ -722,8 +1254,8 @@ msgid "Connection error (timed out?)"
msgstr "Error de conexión (¿tiempo agotado?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "No se puede encontrar o cargar el juego \""
+msgid "Could not find or load game: "
+msgstr "No se puede encontrar o cargar el juego: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
@@ -744,14 +1276,18 @@ msgid "Player name too long."
msgstr "Nombre de jugador demasiado largo."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "¡Por favor, elige un nombre!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Fallo para abrir el archivo con la contraseña proveída: "
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "La ruta del mundo especificada no existe: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -759,57 +1295,169 @@ msgstr ""
"\n"
"Revisa debug.txt para más detalles."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Configurar teclas"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Dirección: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Modo: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Puerto: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Público: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Nombre del servidor: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Ha ocurrido un error:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Acceso denegado. Razón: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Avance automático desactivado"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Avance automático activado"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Block bounds hidden"
+msgstr "Límites de bloque"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Límites de bloque mostrados para todos los bloques"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Actualización de la cámara desactivada"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Actualización de la cámara activada"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
-msgstr "Cambiar contraseña"
+msgstr "Cambiar Contraseña"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Modo cinematográfico desactivado"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Modo cinematográfico activado"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "El cliente se desconectó"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "El Scripting en el lado del cliente está desactivado"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Conectando al servidor..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "La conexión falló por razones desconocidas"
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Continuar"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Controles:\n"
+"- %s: moverse adelante\n"
+"- %s: moverse atras\n"
+"- %s: moverse a la izquierda\n"
+"- %s: moverse a la derecha\n"
+"- %s: saltar/escalar\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"
+"- Rueda del ratón: elegir objeto\n"
+"- %s: chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "No se pudo resolver la dirección : %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
msgstr "Creando cliente..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
msgstr "Creando servidor..."
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Controles predeterminados:\n"
-"- WASD: moverse\n"
-"- Espacio: saltar/subir\n"
-"- Mayús.: puntillas/bajar\n"
-"- Q: soltar objeto\n"
-"- I: inventario\n"
-"- Ratón: girar/mirar\n"
-"- Ratón izq.: cavar/golpear\n"
-"- Ratón der.: colocar/usar\n"
-"- Ratón rueda: elegir objeto\n"
-"- T: chat\n"
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Info de depuración y gráfico de perfil ocultos"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Info de depuración mostrada"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Info de depuración, gráfico de perfil, y 'wireframe' ocultos"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -837,509 +1485,873 @@ msgstr ""
"- toque y arrastrar, toque con 2 dedos:\n"
" -->colocar solamente un objeto\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Rango de visión ilimitada desactivado"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Rango de visión ilimitada activado"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Creando cliente..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Salir al menú"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Salir al S.O."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Modo rápido desactivado"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Modo rápido activado"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Modo rápido activado (nota: sin privilegio 'rápido')"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Modo de vuelo desactivado"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Modo de vuelo activado"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Modo de vuelo activado (nota: sin privilegio de vuelo)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Niebla desactivada"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Niebla activada"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Información del juego:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Juego pausado"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Servidor anfitrión"
+
+#: src/client/game.cpp
msgid "Item definitions..."
msgstr "Definiciones de objetos..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
-msgstr "Media..."
+msgstr "Multimedia..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Definiciones de nodos..."
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "El minimapa se encuentra actualmente desactivado por el juego o un mod"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Resolviendo dirección..."
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multijugador"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Revivir"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Modo 'Noclip' desactivado"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Cerrando..."
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Modo 'Noclip' activado"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Volumen del sonido"
-
-#: src/game.cpp
-msgid "You died."
-msgstr "Has muerto."
-
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "aceptar"
-
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Ingresar "
-
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Continuar"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Modo 'Noclip' activado (nota: sin privilegio 'noclip')"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Usar\" = Descender"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definiciones de nodos..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Atrás"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Deshabilitado"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Chat"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Habilitado"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Comando"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Modo de movimiento de inclinación desactivado"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Consola"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Modo de movimiento de inclinación activado"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Pulsar dos veces \"saltar\" para volar"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Gráfico de monitorización visible"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Tirar"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Servidor remoto"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Adelante"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Resolviendo dirección..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventario"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Cerrando..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Saltar"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Un jugador"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "La tecla ya se está utilizando"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volumen del sonido"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"Combinaciones de teclas. (Si este menú da error, elimina líneas en minetest."
-"conf)"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Sonido silenciado"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Izquierda"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "El sistema de sonido está desactivado"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Imprimir pilas"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "El sistema de sonido no está soportado en esta \"build\""
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Seleccionar distancia"
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Sonido no silenciado"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Derecha"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Este servidor probablemente use una versión diferente de %s."
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Caminar"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "No se puede conectar a %s porque IPv6 esta"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Activar cinemático"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Activar rápido"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Rango de visión cambiado a %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Activar volar"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "El rango de visión está al máximo: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Activar noclip"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Rango de visión está al mínimo: %d"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Usar"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Volumen cambiado a %d%%"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoom"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Lineas 3D mostradas"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "pulsa una tecla"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "El zoom está actualmente desactivado por el juego o un mod"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Cambiar"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "Aceptar"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Confirmar contraseña"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Chat oculto"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Contraseña nueva"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Chat visible"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Contraseña anterior"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD oculto"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "¡Las contraseñas no coinciden!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD mostrado"
-# Es en el menú de sonido. Salir suena muy fuerte.
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Cerrar"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Monitorización oculta"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Volúmen del sonido: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Monitorización visible (página %d de %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Aplicaciones"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Atentamente"
-
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Atrás"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Tecla de borrado"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Bloq Mayús"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Bloq. Mayús"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Limpiar"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Coma"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convertir"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Abajo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Fin"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Borrar OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Escape"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Borrar EOF"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Ejecutar"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Ayuda"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Inicio"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Introducir"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Aceptar IME"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Convertir IME"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Escape IME"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Cambiar Modo IME"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "No convertir IME"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insertar"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Izquierda"
+
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Botón izquierdo"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Control izq."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Menú izq."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Shift izq."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Win izq."
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menú"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Botón central"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Menos"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Cambio de modo"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Siguiente"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "No convertir"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Bloq Núm"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr "Numpad *"
+msgstr "Teclado Numérico *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr "Numpad +"
+msgstr "Teclado Numérico +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr "Numpad -"
+msgstr "Teclado Numérico -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Teclado Numérico ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr "Numpad /"
+msgstr "Teclado Numérico /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr "Numpad 0"
+msgstr "Teclado Numérico 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr "Numpad 1"
+msgstr "Teclado Numérico 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr "Numpad 2"
+msgstr "Teclado Numérico 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr "Numpad 3"
+msgstr "Teclado Numérico 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr "Numpad 4"
+msgstr "Teclado Numérico 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr "Numpad 5"
+msgstr "Teclado Numérico 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr "Numpad 6"
+msgstr "Teclado Numérico 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr "Numpad 7"
+msgstr "Teclado Numérico 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr "Numpad 8"
+msgstr "Teclado Numérico 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr "Numpad 9"
+msgstr "Teclado Numérico 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "Limpiar OEM"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Re. pág"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Av. pág"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pausa"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punto"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Más"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Jugar"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Captura"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Anterior"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Retorno"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Derecha"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Botón derecho"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Control der."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Menú der."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Shift der."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Win der."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Bloq Despl"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Seleccionar"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Suspender"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Captura de pantalla"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Espacio"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulador"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Arriba"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X Botón 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X Botón 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Minimapa oculto"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimapa en modo radar, Zoom x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minimapa en modo superficie, Zoom x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Minimapa en modo textura"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Fallo al abrir la página web"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Abriendo página web"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Continuar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = bajar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Auto-avance"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Salto automático"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Atrás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Límites de bloque"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Cambiar cámara"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Comando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Consola"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Dec. rango"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Bajar volumen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Pulsar dos veces \"saltar\" para volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Tirar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Adelante"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Inc. rango"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Subir volumen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventario"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Saltar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "La tecla ya se está utilizando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Comando local"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Silenciar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Siguiente"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Anterior"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Seleccionar distancia"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Captura de pantalla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Caminar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Alternar el HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Alternar el registro del chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Activar rápido"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Activar volar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Alternar la niebla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Alternar el minimapa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Activar noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Alternar inclinación"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "pulsa una tecla"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Contraseña nueva"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Contraseña anterior"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "¡Las contraseñas no coinciden!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Cerrar"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Silenciado"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volumen del sonido: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "es"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "¡Por favor, elige un nombre!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Fija la posición de la palanca virtual.\n"
+"Si está desactivado, la palanca virtual se centrará en la primera posición "
+"al tocar."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Usar palanca virtual para activar el botón \"aux\".\n"
+"Si está activado, la palanca virtual también activará el botón \"aux\" fuera "
+"del círculo principal."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
-"Compensado (X,Y,Z) del ruido fractal en unidades de 'scale'.\n"
-"Usado para mover un área plana adecuada para el inicio a (0, 0).\n"
-"El valor predeterminado es adecuado para conjunts de Mandelbrot,\n"
-"necesita ser editado para conjuntos de Julia.\n"
-"El valor debe ser entre -2 y 2. Multiplicar por 'scale' para compensar en "
-"nodos."
+"Desvío (X,Y,Z) del fractal desde el centro del mundo en unidades de "
+"'escala'.\n"
+"Puede ser utilizado para mover el punto deseado al inicio de coordenadas (0, "
+"0) para crear un\n"
+"punto de aparición mejor, o permitir 'ampliar' en un punto deseado si\n"
+"se incrementa la 'escala'.\n"
+"El valor por defecto está ajustado para un punto de aparición adecuado "
+"para \n"
+"los conjuntos Madelbrot\n"
+"Con parámetros por defecto, podría ser necesariomodificarlo para otras \n"
+"situaciones.\n"
+"El rango de está comprendido entre -2 y 2. Multiplicar por la 'escala' para "
+"el desvío en nodos."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+"Escala (X,Y,Z) del fractal en nodos.\n"
+"El tamañó actual de fractal será de 2 a 3 veces mayor.\n"
+"Estos números puede ser muy grandes, el fractal no está\n"
+"limitado en tamaño por el mundo.\n"
+"Incrementa estos valores para 'ampliar' el detalle del fractal.\n"
+"El valor por defecto es para ajustar verticalmente la forma para\n"
+"una isla, establece los 3 números iguales para la forma inicial."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Ruido 2D para controlar la forma/tamaño de las montañas escarpadas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Ruido 2D para controlar la forma/tamaño de las colinas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Ruido 2D para controlar la forma/tamaño de las montañas inclinadas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "Ruido 2D que controla el tamaño/aparición de cordilleras montañosas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Ruido 2D que controla el tamaño/aparición de las colinas ondulantes."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
msgstr ""
-"0 = oclusión de paralaje con información de inclinación (más rápido).\n"
-"1 = mapa de relieve (más lento, más preciso)."
+"Ruido 2D que controla el tamaño/aparición de los intervalos de montañas "
+"inclinadas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Ruido 2D para ubicar los ríos, valles y canales."
#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr "Nubes en 3D"
+msgstr "Nubes 3D"
#: src/settings_translation_file.cpp
msgid "3D mode"
msgstr "Modo 3D"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Fuerza de paralaje en modo 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Ruido 3D definiendo cavernas gigantes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Ruido 3D definiendo estructuras montañosas y altura.\n"
+"También define la estructura de las islas flotantes montañosas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Ruido 3D que define las estructuras flotantes.\n"
+"Si se altera la escala de ruido por defecto (0,7), puede ser necesario "
+"ajustarla, \n"
+"los valores de ruido que definen la estrechez de islas flotantes funcionan "
+"mejor \n"
+"cuando están en un rango de aproximadamente -2.0 a 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Ruido 3D definiendo la estructura de las paredes de ríos de cañón."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Ruido 3D definiendo el terreno."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Ruido 3D para los salientes de montañas, precipicios, etc. Pequeñas "
+"variaciones, normalmente."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Ruido 3D que determina la cantidad de mazmorras por chunk."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1348,24 +2360,33 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Soporte 3D.\n"
-"Soportado Actualmente:\n"
-"- Ninguno (none): No hay salida 3D.\n"
-"- Anaglifo (anaglyph): 3D para anteojos de colores cyan y magenta.\n"
-"- Entrelazado (interlaced): Filas pares e impares intercaladas.\n"
-"- Superior-inferior (topbottom): Partir pantalla horizontalmente.\n"
-"- Lado a lado (sidebyside): Partir pantalla verticalmente."
+"Soportado actualmente:\n"
+"- Ninguno (none): sin salida 3D.\n"
+"- Anaglifo (anaglyph): 3D en colores cian y magenta.\n"
+"- Entrelazado (interlaced): soporte para pantallas con polarización "
+"basada en filas impar/par.\n"
+"- Arriba-abajo (topbottom): dividir pantalla arriba y abajo.\n"
+"- Lado a lado (sidebyside): dividir pantalla lado a lado.\n"
+"- Vista cruzada (crossview): visión 3D cruzada.\n"
+"- Rotación de página (pageflip): 3D basado en buffer cuádruple.\n"
+"Nota: el modo entrelazado requiere que los shaders estén activados."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
#: 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 ""
-"Una semilla de mapa para un mapa nuevo, deja vacío para una semilla al "
-"azar.\n"
-"Será anulado si se crea un nuevo mundo en el menú principal."
+"Semilla de mapa para un nuevo mapa, dejar vacío para una semilla aleatoria.\n"
+"Será ignorado si se crea un nuevo mundo desde el menú principal."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
@@ -1379,25 +2400,32 @@ msgstr ""
"apaga."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr "Limite absoluto de colas emergentes"
+msgid "ABM interval"
+msgstr "Intervalo ABM"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Límite de tiempo para MBA"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Límite absoluto de bloques en proceso"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Aceleración en el aire"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr "Intervalo de administración de bloques activos"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Aceleración de gravedad, en nodos por segundo."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr "Intervalo de modificador de bloques activos"
+msgid "Active Block Modifiers"
+msgstr "Modificadores de bloques activos"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Intervalo de modificador de bloques activos"
+msgid "Active block management interval"
+msgstr "Intervalo de administración de bloques activos"
#: src/settings_translation_file.cpp
msgid "Active block range"
@@ -1413,46 +2441,86 @@ msgid ""
"Leave this blank to start a local server.\n"
"Note that the address field in the main menu overrides this setting."
msgstr ""
-"Dirección a conectarse.\n"
-"Dejar aquí vacío para iniciar un servidor local.\n"
-"Nótese que el campo de dirección en el menú principal anula este ajuste."
+"Dirección para conectarse.\n"
+"Dejar esto vacío para iniciar un servidor local.\n"
+"Nótese que el campo de dirección del menú principal anula este ajuste."
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Añade partículas al excavar un nodo."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
-"Ajustar la configuración de puntos por pulgada a tu pantalla (único no X11/"
-"Android) p.ej. para pantallas 4K."
+"Ajustar la configuración de puntos por pulgada a tu pantalla (no X11/Android "
+"sólo), por ejemplo para pantallas 4K."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Adjuste la densidad de visualización detectada, usada para escalar elementos "
+"de la interfaz."
#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Ajustar la codificación gamma para las tablas de luz. Los números mas bajos "
-"son mas brillantes.\n"
-"Este ajuste es solo para el cliente y es ignorado por el servidor."
+"Ajusta la densidad de la isla flotante.\n"
+"Incrementar el valor para incrementar la densidad. Este puede ser negativo o "
+"positivo\n"
+"Valor = 0.0: 50% del volumen está flotando \n"
+"Valor = 2.0 (puede ser mayor dependiendo de 'mgv7_np_floatland',\n"
+"siempre pruébelo para asegurarse) crea una isla flotante compacta."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Añadir nombre de objeto"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Avanzado"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Altura de enfriamiento"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Altera la curva de luz aplicándole una \"corrección gamma\".\n"
+"Los valores más altos hacen que los niveles de luz medios y bajos sean más "
+"brillantes.\n"
+"El valor \"1.0\" deja la curva de luz inalterada.\n"
+"Esto sólo tiene un efecto significativo en la luz del día y en la luz "
+"artificial, \n"
+"tiene muy poco efecto en la luz natural nocturna."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr "Siempre volar y rápido"
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Siempre volando y rápido"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr "Oclusión ambiental gamma"
+msgstr "Gamma de oclusión ambiental"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Cantidad de mensajes que un jugador puede enviar en 10 segundos."
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Amplificar valles"
+msgid "Amplifies the valleys."
+msgstr "Ampliar los valles."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
@@ -1463,48 +2531,119 @@ msgid "Announce server"
msgstr "Anunciar servidor"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"Anunciar a esta lista de servidores.\n"
-"Si deseas anunciar tu dirección ipv6, usa serverlist_url = v6.servers."
-"minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Anunciar en esta lista de servidores."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Escala aproximada (X,Y,Z) del fractal en nodos."
+msgid "Append item name"
+msgstr "Añadir nombre de objeto"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Añadir nombre de objeto a la burbuja informativa."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Ruido de manzanos"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Inercia de brazo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Inercia de brazo, proporciona un movimiento más realista\n"
+"del brazo cuando la cámara se mueve."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
-msgstr "Preguntar para volver a conectar despues de una caída"
+msgstr "Preguntar para reconectar tras una caída"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
-msgstr "Automáticamente informar a la lista del servidor."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"A esta distancia el servidor optimizará agresivamente qué bloques son "
+"enviados a\n"
+"los clientes.\n"
+"Los valores bajos mejorarán mucho el rendimiento, a costa de \n"
+"errores gráficos visibles (algunos bloques no serán renderizados bajo el "
+"agua y en cuevas,\n"
+"así como ocasionalmente en tierra).\n"
+"Definir esto a un valor mayor que max_block_send_distance deshabilita esta\n"
+"optimización.\n"
+"Fijado en bloques de mapa (16 nodos)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Tecla de avance automático"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Saltar obstáculos de un nodo automáticamente."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Informar automáticamente a la lista del servidor."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Autoguardar el tamaño de la pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Modo de autoescalado"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Tecla Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Tecla Aux1 para subir/bajar"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Tecla retroceso"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Altura base del terreno"
+msgid "Base ground level"
+msgstr "Nivel del suelo"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Básico"
+msgid "Base terrain height."
+msgstr "Altura base del terreno."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
msgstr "Privilegios básicos"
#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Sonido de playa"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Límite de ruido de playa"
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
msgstr "Filtrado bilineal"
@@ -1513,22 +2652,64 @@ msgid "Bind address"
msgstr "Dirección BIND"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parámetros de ruido y humedad en la API de temperatura de biomas"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Ruido de bioma"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Optimizar la distancia del envío de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
msgstr ""
-"Bits por píxel (también conocido como profundidad de color) en modo de "
-"pantalla completa."
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Ruta de la fuente en negrita y cursiva"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Ruta de la fuente monoespacio en negrita y cursiva"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Ruta de la fuente en negrita"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Ruta de la fuente monoespacio en negrita"
#: src/settings_translation_file.cpp
msgid "Build inside player"
-msgstr "Construir dentro de jugador"
+msgstr "Construir dentro del jugador"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Incorporado"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Mapeado de relieve"
+#, fuzzy
+msgid "Camera"
+msgstr "Cambiar cámara"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Distancia de la cámara 'cerca del plano delimitador' en nodos, entre 0 y "
+"0,25.\n"
+"Solo funciona en plataformas GLES. La mayoría de los usuarios no necesitarán "
+"cambiar esto.\n"
+"Aumentarlo puede reducir el artifacting en GPU más débiles.\n"
+"0.1 = Predeterminado, 0,25 = Buen valor para comprimidos más débiles."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1543,6 +2724,10 @@ msgid "Camera update toggle key"
msgstr "Tecla alternativa para la actualización de la cámara"
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Ruido de cueva"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr "Ruido de cueva Nº1"
@@ -1552,66 +2737,90 @@ msgstr "Ruido de cueva Nº2"
#: src/settings_translation_file.cpp
msgid "Cave width"
-msgstr "Anchura de cueva"
+msgstr "Ancho de cueva"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr "Ruido de cueva1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Ruido de cueva2"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Límite de caverna"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Ruido de caverna"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Formar cuevas y túneles en la intersección de dos ruidos"
+msgid "Cavern taper"
+msgstr "Contención de la cueva"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Límite de caverna"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Límite superior de caverna"
+
+#: 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 ""
+"Centro de rango de impulso de la curva de luz.\n"
+"Cuando 0.0 es el nivel mínimo de luz, 1.0 es el nivel de luz máximo."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat command time message threshold"
+msgstr "Umbral de expulsión por mensajes"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Comandos de Chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Tamaño de la fuente del chat"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Tecla del Chat"
#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Nivel de registro del chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Límite de mensajes de chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Formato del mensaje del chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Umbral de expulsión por mensajes"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Longitud máx. de mensaje de chat"
+
+#: src/settings_translation_file.cpp
msgid "Chat toggle key"
msgstr "Tecla alternativa para el chat"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Comando"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"Elección de 18 fractales desde 9 fórmulas.\n"
-"1 = Conjunto de Mandelbrot 4D \"Redondo\".\n"
-"2 = Conjunto de Julia 4D \"Redondo\".\n"
-"3 = Conjunto de Mandelbrot 4D \"Cuadrado\".\n"
-"4 = Conjunto de Julia 4D \"Cuadrado\".\n"
-"5 = Conjunto de Mandelbrot 4D \"Mandy Cousin\".\n"
-"6 = Conjunto de Julia 4D \"Mandy Cousin\".\n"
-"7 = Conjunto de Mandelbrot 4D \"Variado\".\n"
-"8 = Conjunto de Julia 4D \"Variado\".\n"
-"9 = Conjunto de Mandelbrot 3D \"Mandelbrot/Mandelbar\".\n"
-"10 = Conjunto de Julia 3D \"Mandelbrot/Mandelbar\".\n"
-"11 = Conjunto de Mandelbrot 3D \"Árbol de Navidad\".\n"
-"12 = Conjunto de Julia 3D \"Árbol de Navidad\".\n"
-"13 = Conjunto de Mandelbrot 3D \"Mandelbulb\".\n"
-"14 = Conjunto de Julia 3D \"Mandelbulb\".\n"
-"15 = Conjunto de Mandelbrot 3D \"Mandelbulb Coseno\".\n"
-"16 = Conjunto de Julia 3D \"Mandelbulb Coseno\".\n"
-"17 = Conjunto de Mandelbrot 4D \"Mandelbulb\".\n"
-"18 = Conjunto de Julia 4D \"Mandelbulb\"."
+msgid "Chat weblinks"
+msgstr "Chat visible"
#: src/settings_translation_file.cpp
msgid "Chunk size"
@@ -1630,16 +2839,39 @@ msgid "Clean transparent textures"
msgstr "Limpiar texturas transparentes"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Cliente"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Cliente y servidor"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Velocidad de escalada"
+msgid "Client modding"
+msgstr "Customización del cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Restricciones para modear del lado del cliente"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Altura de la nube"
+msgid "Client side node lookup range restriction"
+msgstr "Restricción del rango de búsqueda del nodo del lado cliente"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Customización del cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Velocidad de escalada"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1662,15 +2894,36 @@ msgid "Colored fog"
msgstr "Niebla colorida"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "Sombras coloridas"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Lista de 'marcas' a ocultar en el repositorio de contenido. La lista usa la "
+"coma como separador.\n"
+"Se puede usar la etiqueta \"nonfree\" para ocultar paquetes que no tienen "
+"licencia libre (tal como define la Fundación de software libre (FSF)).\n"
+"También puedes especificar clasificaciones de contenido.\n"
+"Estas 'marcas' son independientes de la versión de Minetest.\n"
+"Si quieres ver una lista completa visita https://content.minetest.net/help/"
+"content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"Lista separada por comas de los mods a los que se les permite usar las\n"
-"interfaces de HTTP, las cuales permiten cargar y descargar datos desde/"
-"hacia\n"
-"la Internet."
+"Lista (separada por comas) de mods a los que se les permite acceder a APIs "
+"de HTTP, las cuales \n"
+"les permiten subir y descargar archivos al/desde internet."
#: src/settings_translation_file.cpp
msgid ""
@@ -1686,6 +2939,32 @@ msgid "Command key"
msgstr "Tecla comando"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivel de compresión a usar para guardar bloques del mapa al disco.\n"
+"-1 - usar compresión por defecto\n"
+"0 - menor compresión, más rápido\n"
+"9 - mejor compresión, más lento"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivel de compresión a usar cuando se envían bloques del mapa al cliente.\n"
+"-1 - usar nivel de compresión por defecto\n"
+"0 - menor compresión, más rápido\n"
+"9 - mejor compresión, más lento"
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr "Conectar vidrio"
@@ -1695,7 +2974,7 @@ msgstr "Conectar a un servidor media externo"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr "Conectar gafas si el nodo lo soporta."
+msgstr "Conectar gafas si el nodo lo permite."
#: src/settings_translation_file.cpp
msgid "Console alpha"
@@ -1706,16 +2985,37 @@ msgid "Console color"
msgstr "Color de la consola"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Tecla de la consola"
+msgid "Console height"
+msgstr "Altura de consola"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Contenido del repositorio en linea"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Lista negra de Contenido de la Base de Datos"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Descargas máximas simultáneas para ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "Dirección URL de ContentDB"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Avance continuo"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Avance continuo (sólo utilizado para la testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Movimiento continuo hacia adelante. Activado por la tecla de auto-avance.\n"
+"Presiona la tecla de auto-avance otra vez o retrocede para desactivar."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1724,73 +3024,72 @@ msgstr "Controles"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
-"Controla el duración del ciclo día/noche.\n"
-"Ejemplos: 72 = 20min, 360 = 4min, 1 = 24hora, 0 = día/noche/lo que sea se "
-"queda inalterado."
+"Controla la duración del ciclo día/noche.\n"
+"Ejemplos: \n"
+"72 = 20min, 360 = 4min, 1 = 24hs, 0 = día/noche/lo que sea se queda "
+"inalterado."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Controla el tamaño de desiertos y playas en Mapgen v6.\n"
-"Cuando snowbiomes están activados 'mgv6_freq_desert' se ignora."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr "Controla lo escarpado/profundo de las depresiones."
+msgstr "Controla la pendiente/profundidad de las depresiones del lago."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr "Controla lo escarpado/alto de las colinas."
+msgstr "Controla la pendiente/altura de las colinas."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
-"Controla el ancho de los túneles, un valor menor crea túneles más anchos."
+"Controla la anchura de los túneles, un valor más pequeño crea túneles más "
+"anchos.\n"
+"El valor >- 10.0 desactiva completamente la generación de túneles y evita "
+"la\n"
+"cálculos intensivos de ruido."
#: src/settings_translation_file.cpp
msgid "Crash message"
msgstr "Mensaje de error"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea características de lava impredecibles en cuevas.\n"
-"Pueden hacer la minería más difícil. Cero lo deshabilita. (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea características de agua impredecibles en cuevas.\n"
-"Pueden hacer la minería más difícil. Cero lo deshabilita. (0-10)"
+msgid "Creative"
+msgstr "Creativo"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr "Opacidad de punto de mira"
+msgstr "Opacidad del punto de mira"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Alfa del punto de mira (opacidad, entre 0 y 255)."
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+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"
msgstr "Color de la cruz"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Color de la cruz (R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Velocidad al agacharse"
+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"
@@ -1805,10 +3104,22 @@ msgid "Debug info toggle key"
msgstr "Tecla alternativa para la información de la depuración"
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Umbral del tamaño del archivo de registro de depuración"
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "Nivel de registro de depuración"
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Dec. tecla de volumen"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
msgstr "Intervalo de servidor dedicado"
@@ -1838,23 +3149,59 @@ msgstr "Privilegios por defecto"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Formato de Reporte por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Tamaño por defecto del stack (Montón)"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Tiempo de espera predeterminado para cURL, en milisegundos.\n"
-"Sólo tiene efecto si está compilado con cURL."
+"Define la calidad del filtro de sombras.\n"
+"Esto simula el efecto de sombras suaves aplicando un PCF o Poisson disk\n"
+"pero tambien utiliza más recursos."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Define las áreas donde los árboles tienen manzanas."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Define areas con playas arenosas."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
msgstr ""
-"Define el intervalo de muestreo de las texturas.\n"
-"Un valor más alto causa mapas de relieve más suaves."
+"Define áreas de terreno más alto (acantilado) y afecta la inclinación de los "
+"acantilados."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Define la distribución del terreno alto."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr "Define el tamaño de las cuevas, valones bajos crean cuervas mayores."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Define la estructura del canal fluvial a gran escala."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Define la localización y terreno de colinas y lagos opcionales."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Define el nivel base del terreno."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Define la profundidad del canal del río."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
@@ -1863,8 +3210,30 @@ msgstr ""
"límite)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Define el ancho del canal del río."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Define el ancho del valle del río."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Define las áreas de árboles y densidad de árboles."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Retardo entre las actualizaciones de mallas en el cliente, en ms. "
+"Incrementar esto\n"
+"reducirá la cantidad de actualizaciones de mallas, lo que reducirá también "
+"la inestabilidad en equipos antiguos."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Retraso en enviar bloques después de construir"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
@@ -1875,60 +3244,69 @@ msgid "Deprecated Lua API handling"
msgstr "Manejo de funciones de Lua obsoletas"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid "Depth below which you'll find giant caverns."
msgstr "Profundidad en la cual comienzan las grandes cuevas."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "Profundidad en la cual comienzan cuevas enormes."
-
-#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Velocidad de descenso"
+msgid "Depth below which you'll find large caves."
+msgstr "Profundidad en la cual comienzan las grandes cuevas."
#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
-"Descripción del servidor, que se muestra cuando los jugadores se unen, y en\n"
-"la lista de servidores."
+"Descripción del servidor, que se muestra en la lista de servidores y cuando "
+"los jugadores se unen."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr "Desincronizar animación de bloques"
+msgid "Desert noise threshold"
+msgstr "Umbral de ruido del desierto"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"Determina la forma del terreno.\n"
-"Los tres números entre paréntesis controlan la escala\n"
-"del terreno, y deben ser iguales."
+"Los desiertos se producen cuando np_biome supera este valor.\n"
+"Cuando se activa la bandera de \"snowbiomes\", esto se ignora."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Desactivar Anticheat"
+msgid "Desynchronize block animation"
+msgstr "Desincronizar la animación de los bloques"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Decoraciones"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Dig key"
+msgstr "Tecla Excavar"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Partículas de excavación"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Desactivar Anticheat"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "No permitir contraseñas vacías"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Factor del Escalado de la Densidad de Visualización"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
msgstr ""
"Nombre de dominio del servidor, será mostrado en la lista de servidores."
@@ -1946,16 +3324,76 @@ msgid "Drop item key"
msgstr "Tecla de \"Soltar objeto\""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr "Imprimir información de depuración del generador de mapas."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
+msgstr "Mazmorras, máx. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Mazmorras, mín. Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Ruido de mazmorra"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Habilitar el soporte de IPv6 (tanto para el cliente como para el servidor).\n"
+"Requerido para que las conexiones IPv6 funcionen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Habilitar el soporte de mods de Lua en el cliente.\n"
+"El soporte es experimental y la API puede cambiar."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Habilitar filtrado \"poisson disk\".\n"
+"Si el valor es verdadero, utiliza \"poisson disk\" para proyectar sombras "
+"suaves. De otro modo utiliza filtrado PCF."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
+"Habilitar las sombras a color.\n"
+"Si el valor es verdadero los nodos traslúcidos proyectarán sombras a color. "
+"Esta opción usa muchos recursos."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Habilitar la ventana de la consola"
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "Activar VBO"
+msgid "Enable creative mode for all players"
+msgstr "Activar el modo creativo para todos los jugadores"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Activar joysticks"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Activar soporte para los canales de mods."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1978,6 +3416,10 @@ msgstr ""
"Deshabilítalo para mayor velocidad o una vista diferente."
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -2003,37 +3445,51 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"Habilita/deshabilita ejecutar un servidor IPv6. Un servidor IPv6 puede ser\n"
-"restringido a clientes IPv6, dependiendo de la configuración del sistema.\n"
-"Ignorado si 'bind_address' está configurado."
+"Habilitar los objetos vértices del buffer.\n"
+"Esto debería mejorar enormemente el rendimiento de los gráficos."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Habilita la animación de objetos en el inventario."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Habilita el balanceo de la vista y la cantidad de balanceo de la vista.\n"
+"Por ejemplo: 0 para balanceo sin vista; 1.0 para normal; 2.0 para doble."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"Habilita mapeado de relieves para las texturas. El mapeado de normales "
-"necesita ser\n"
-"suministrados por el paquete de texturas, o será generado automaticamente.\n"
-"Requiere habilitar sombreadores."
+"Habilita/deshabilita la ejecución de un servidor IPv6.\n"
+"Ignorado si se establece bind_address.\n"
+"Necesita habilitar enable_ipv6 para ser activado."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
-msgstr "Habilitar cacheado de mallas giradas."
+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 ""
+"Permite el mapeo de tonos fílmicos de Hable \"Uncharted 2\".\n"
+"Simula la curva de tono de la película fotográfica y cómo ésta se aproxima a "
+"la\n"
+"aparición de imágenes de alto rango dinámico. El contraste de gama media es "
+"ligeramente\n"
+"mejorado, los reflejos y las sombras se comprimen gradualmente."
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr "Habilita la animación de objetos en el inventario."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Habilita el mapeado de tonos fílmico"
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Habilitar cacheado de mallas giradas."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
@@ -2041,68 +3497,85 @@ msgstr "Activar mini-mapa."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
-"Habilita la generación de mapas de normales (efecto realzado) en el "
-"momento.\n"
-"Requiere habilitar mapeado de relieve."
+"Habilita el sistema de sonido.\n"
+"Si está desactivado, esto desactiva completamente todos los sonidos y\n"
+"los controles de sonido el juego no serán funcionales.\n"
+"Cambiar esta configuración requiere un reinicio."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
-"Habilita mapeado de oclusión de paralaje.\n"
-"Requiere habilitar sombreadores."
+"Habilita compensaciones que reducen la carga del procesador o aumentan el "
+"rendimiento de la renderizacion\n"
+"a cambio de pequeños errores visuales que no impactan a la jugabilidad del "
+"juego."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Perfilador"
#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "Intervalo de impresión de datos del perfil del motor"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Métodos de entidad"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Opción experimental, puede causar espacios visibles entre los\n"
-"bloques si se le da un valor mayor a 0."
-
-#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS (cuadros/s) en el menú de pausa"
+"Exponente de la estrechez de tierra flotante. Altera el comportamiento de la "
+"estrechez.\n"
+"Valor = 1.0 crea una estrechez uniforme y lineal.\n"
+"Valores > 1.0 crea una estrechez suave apropiada para las tierras flotantes "
+"separadas\n"
+"por defecto.\n"
+"Valores < 1.0 (0.25, por ejemplo) crea un nivel de superficie más definida "
+"con \n"
+"tierras bajas más planas, apropiada para una capa de tierra flotante sólida."
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr "FSAA"
+msgid "FPS"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr "Movimiento de cámara al caer"
+msgid "FPS when unfocused or paused"
+msgstr "FPS cuando está en segundo plano o pausado"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Fuente de reserva"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Sombra de fuente de reserva"
+msgid "Factor noise"
+msgstr "Factor de ruido"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Alfa de sombra de fuente de reserva"
+msgid "Fall bobbing factor"
+msgstr "Factor de balanceo en caída"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Tamaño de fuente de reserva"
+msgid "Fallback font path"
+msgstr "Ruta de la fuente alternativa"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr "Tecla de \"Rápido\""
+msgstr "Tecla rápida"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
@@ -2118,10 +3591,10 @@ msgstr "Movimiento rápido"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Movimiento rápido (por medio de tecla de \"Uso\").\n"
+"Movimiento rápido (por medio de tecla de \"Aux1\").\n"
"Requiere privilegio \"fast\" (rápido) en el servidor."
#: src/settings_translation_file.cpp
@@ -2129,61 +3602,96 @@ msgid "Field of view"
msgstr "Campo visual"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "Campo visual"
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr "Campo visual en grados."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
-msgstr ""
-"Movimiento rápido (por medio de tecla de \"Uso\").\n"
-"Requiere privilegio \"fast\" (rápido) en el servidor."
-
-#: src/settings_translation_file.cpp
msgid ""
"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Fichero en client/serverlist/ que contiene sus servidores favoritos que se "
-"mostrarán en la página de Multijugador."
+"Archivo en client/serverlist/ que contiene sus servidores favoritos "
+"mostrados en la \n"
+"página de Multijugador."
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth"
msgstr "Profundidad del relleno"
#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr "Nivel lleno de ruido"
+
+#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
msgstr "Mapa de tonos fílmico"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
-"Las texturas filtradas pueden mezclar los valores RGB de los vecinos\n"
-"completamete tranparentes, los cuales los optimizadores de ficheros\n"
-"PNG usualmente descartan, lo que a veces resulta en un borde claro u\n"
-"oscuro en las texturas transparentes. Aplica éste filtro para limpiar ésto\n"
-"al cargar las texturas."
+"Las texturas filtradas pueden mezclar valores RGB con sus nodos adyacentes "
+"que sean completamente transparentes,\n"
+"los cuales los optimizadores de PNG usualmente descartan, lo que a veces "
+"resulta en un borde claro u\n"
+"oscuro en las texturas transparentes. Aplica éste filtro para limpiar esto\n"
+"al cargar las texturas. Esto se habilita automaticamente si el mapeado MIP "
+"tambien lo está."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Suavizado:"
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Filtrado"
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr "Primero de 2 ruidos 3D que juntos definen la altura de la montañas."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Primero de 2 ruidos 3D que juntos definen túneles."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr "Semilla de mapa fija"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Joystick virtual fijo"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Densidad de las tierras flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Máximo valor de Y de las tierras flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Mínimo valor de Y de las tierras flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Ruido de la tierra flotante"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Exponente de la cónica de las tierras flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Distancia de cónico de la tierra flotante"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Nivel de agua de la tierra flotante"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr "Tecla vuelo"
@@ -2196,76 +3704,177 @@ msgid "Fog"
msgstr "Niebla"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Inicio de Niebla"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr "Tecla para alternar niebla"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Ruta de fuentes"
+#, fuzzy
+msgid "Font"
+msgstr "Tamaño de la fuente"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Fuente en negrita por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Letra cursiva por defecto"
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr "Sombra de fuentes"
+msgstr "Sombra de la fuente"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
-msgstr "Alfa de sombra de fuentes"
+msgstr "Alfa de sombra de la fuente"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
-msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)."
+msgid "Font size"
+msgstr "Tamaño de la fuente"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
-msgstr "Compensado de sombra de fuente, si es 0 no se dibujará la sombra."
+msgid "Font size divisible by"
+msgstr "Tamaño de fuente divisible por"
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Tamaño de fuente"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Tamaño de la fuente por defecto donde 1 unidad = 1 pixel a 96 DPI"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Tamaño de la fuente monoespaciada donde 1 unidad = 1 pixel a 96 DPI"
+
+#: 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 ""
+"El tamaño de la fuente del texto del chat reciente y el indicador del chat "
+"en punto (pt).\n"
+"El valor 0 utilizará el tamaño de fuente predeterminado."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"Para fuentes pixeladas que no escalan bien, esto asegura que los tamaños de "
+"fuente utilizados\n"
+"con esta fuente siempre seran divisibles por este valor, en píxeles. Por "
+"ejemplo,\n"
+"una fuente pixelada de 16 píxeles de alto debería tener un valor de 16, "
+"entonces solo tendrá\n"
+"un tamaño de 16,32,48,etc., por lo que un mod pidiendo un tamaño de 25 "
+"recibira uno de 32."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Formato en los mensajes del chat del jugador. Los siguientes strings son "
+"válidos:\n"
+"@name, @message, @timestamp (opcional)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr "Formato de capturas de pantalla."
+msgstr "Formato de las capturas de pantalla."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Color de fondo predeterminado para los formularios"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Opacidad de fondo Predeterminada para formularios"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Color de fondo para formularios en pantalla completa"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Opacidad de los formularios en pantalla completa"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Color de fondo predeterminado para los formularios (R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Opacidad predeterminada del fondo de los formularios (entre 0 y 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Color de fondo de los formularios en pantalla completa (R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+"Opacidad de fondo de los formularios en pantalla completa (entre 0 y 255)."
#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Tecla Avanzar"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "Fuentes Freetype"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr "Cuarto de 4 ruidos 2D que juntos definen la altura de las montañas."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Tipo de fractal"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+"Fracción de la distancia visible en la que la niebla se empieza a renderizar"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
-"Desde cuán lejos se generan los bloques para los clientes, especificado\n"
-"en bloques de mapa (mapblocks, 16 nodos)."
+"Desde cuán lejos se generan los bloques para los clientes, especificado en "
+"bloques de mapa (mapblocks, 16 nodos)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
-"Desde cuán lejos se envían bloques a los clientes, especificado en\n"
-"bloques de mapa (mapblocks, 16 nodos)."
+"Desde cuán lejos se envían bloques a los clientes, especificado en bloques "
+"de mapa (mapblocks, 16 nodos)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
-"Desde cuán lejos los clientes saben acerca de otros objetos,\n"
-"especificado en bloques de mapa (mapblocks, 16 nodos)."
+"Desde cuan lejano los clientes saben de los objetos, en bloques (16 nodos).\n"
+"\n"
+"Establecer esto a más de 'active_block_range' tambien causará que\n"
+"el servidor mantenga objetos activos hasta ésta distancia en la dirección\n"
+"que el jugador está mirando. (Ésto puede evitar que los enemigos "
+"desaparezcan)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Pantalla completa"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "Profundidad de color en pantalla completa"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Modo de pantalla completa."
@@ -2282,61 +3891,106 @@ msgid "GUI scaling filter txr2img"
msgstr "Filtro de escala de IGU \"txr2img\""
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "General"
+#, fuzzy
+msgid "Gamepads"
+msgstr "Juegos"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Generar mapas normales"
+msgid "General"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Llamadas globales"
#: src/settings_translation_file.cpp
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Atributos globales del generador de mapas.\n"
+"En el generador de mapas V6 la opción (o marcador) \"decorations\" controla "
+"todos los elementos decorativos excepto los árboles\n"
+"y la hierba de la jungla, en todos los otros generadores de mapas esta "
+"opción controla todas las decoraciones."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
msgstr ""
+"Gradiente de la curva de luz en el nivel máximo de luz.\n"
+"Controla el contraste de los niveles de luz más altos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Gradiente de la curva de luz en el nivel mínimo de luz.\n"
+"Controla el contraste de los niveles de luz más bajos."
#: src/settings_translation_file.cpp
msgid "Graphics"
msgstr "Gráficos"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Gráficos"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Gráficos"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravedad"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
-msgstr "HTTP Mods"
+msgid "Ground level"
+msgstr "Nivel del suelo"
#: src/settings_translation_file.cpp
-msgid "HUD toggle key"
+msgid "Ground noise"
+msgstr "Ruido del suelo"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "Mods HTTP"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Escala de IGU"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr "Tecla de cambio del HUD"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
-"Manejo de las llamadas de la API LUA obsoletas:\n"
-"- legacy: (intenta)imita el antiguo comportamiento (por defecto para "
-"lanzamientos).\n"
-"- log: imita y guarda el seguimiento de las llamadas obsoletas (por defecto "
-"para depuración).\n"
-"- error: Cancela en el uso de llamadas obsoletas (sugerido para los "
-"desarrolladores de Mods)."
+"Manejo de llamadas a la API de Lua en desuso:\n"
+"- none: no registrar llamadas en desuso.\n"
+"- log: imitar y registrar la pista de seguimiento de la llamada en desuso "
+"(predeterminado para la depuración).\n"
+"- error: abortar el uso de la llamada en desuso (sugerido para "
+"desarrolladores de mods)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2346,18 +4000,58 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Tener el propio instrumento del generador de perfiles:\n"
+"* Instrumente una función vacía.\n"
+"Esto estima la sobrecarga, que la instrumentación está agregando (+1 llamada "
+"de función).\n"
+"* Instrumente el sampler que se utiliza para actualizar las estadísticas."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr "Componente de altura del tamaño inicial de la ventana."
+msgid "Heat blend noise"
+msgstr "Mezcla de calor del ruido"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Calor del ruido"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Componente de altura del tamaño inicial de la ventana. Ignorado en el modo "
+"de pantalla completa."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Altura del ruido"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr "Altura sobre la cual están apareciendo las nubes."
+msgid "Height select noise"
+msgstr "Altura del ruido seleccionado"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "Alta-precisión FPU"
+msgid "Hill steepness"
+msgstr "Pendiente de la colina"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Umbral de la colina"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Ruido de las colinas 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Ruido de las colinas 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Ruido de las colinas 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Ruido de las colinas 4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
@@ -2365,19 +4059,184 @@ msgstr ""
"Página de inicio del servidor, que se mostrará en la lista de servidores."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
-msgstr "Profundidad para los ríos"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Aceleración horizontal en el aire al saltar o caer,\n"
+"en nodos por segundo."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Aceleración horizontal y vertical en modo rápido,\n"
+"en nodos por segundo."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+"Aceleración horizontal y vertical en el suelo o al subir,\n"
+"en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Tecla de siguiente de la barra rápida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Tecla de anterior de la barra rápida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Tecla de barra rápida ranura 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Tecla de barra rápida ranura 10"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Tecla de barra rápida ranura 11"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Tecla de barra rápida ranura 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Tecla de barra rápida ranura 13"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Tecla de barra rápida ranura 14"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Tecla de barra rápida ranura 15"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Tecla de barra rápida ranura 16"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Tecla de barra rápida ranura 17"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Tecla de barra rápida ranura 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Tecla de barra rápida ranura 19"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Tecla de barra rápida ranura 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Tecla de barra rápida ranura 20"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Tecla de barra rápida ranura 21"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Tecla de barra rápida ranura 22"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Tecla de barra rápida ranura 23"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Tecla de barra rápida ranura 24"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Tecla de barra rápida ranura 25"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Tecla de barra rápida ranura 26"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Tecla de barra rápida ranura 27"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Tecla de barra rápida ranura 28"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Tecla de barra rápida ranura 29"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Tecla de barra rápida ranura 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Tecla de barra rápida ranura 30"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Tecla de barra rápida ranura 31"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Tecla de barra rápida ranura 32"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Tecla de barra rápida ranura 4"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Tecla de barra rápida ranura 5"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Tecla de barra rápida ranura 6"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Tecla de barra rápida ranura 7"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Tecla de barra rápida ranura 8"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Tecla de barra rápida ranura 9"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Profundidad para los ríos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Como de rápido se moverán las ondas de líquido. Más alto = más rápido.\n"
+"Si es negativo, las ondas de líquido se moverán hacia atrás.\n"
+"Requiere que se habiliten los líquidos de agitación."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
"Cuanto espera el servidor antes de descargar los bloques de mapa no "
@@ -2385,8 +4244,27 @@ msgstr ""
"Con valores mayores es mas fluido, pero se utiliza mas RAM."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr "Ancho de los ríos"
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Disminuya esto para aumentar la resistencia del líquido al movimiento."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Ancho de los ríos."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Ruido de la mezcla de humedad"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Ruido para la humedad"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variación de humedad para los biomas."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2397,20 +4275,36 @@ msgid "IPv6 server"
msgstr "servidor IPv6"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "soporte IPv6."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"Si los FPS subieran a más de esto, limítelos durmiendo\n"
+"a fin de no malgastar potencia de CPU sin beneficio."
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"Si está desactivado, la tecla \"Aux1\" se utiliza para volar rápido si el "
+"modo\n"
+"de vuelo y el modo rápido están habilitados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Si está habilitado, el servidor realizará la selección de la oclusión del "
+"bloque del mapa basado\n"
+"en la posición del ojo del jugador. Esto puede reducir el número de bloques\n"
+"enviados al cliente en un 50-80%. El cliente ya no recibirá lo mas "
+"invisible\n"
+"por lo que la utilidad del modo \"NoClip\" se reduce."
#: src/settings_translation_file.cpp
msgid ""
@@ -2418,32 +4312,67 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"Si se activa junto con el modo vuelo, el jugador puede volar a través de "
+"nodos sólidos.\n"
+"Requiere del privilegio \"noclip\" en el servidor."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
+"Si está activada, la tecla \"Aux1\" en lugar de la tecla \"Sneak\" se "
+"utilizará para bajar y\n"
+"descender."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Habilitar confirmación de registro al conectar al servidor\n"
+"Si esta deshabilitado, se registrará una nueva cuenta automáticamente."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Si se activa, las acciones se graban para poder deshacerse.\n"
+"Esta opción sólo se lee al arrancar el servidor."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
msgstr ""
+"Si se habilita, deshabilita la prevención de trampas en modo multijugador."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Si se habilita, los datos del mundo inválidos no causarán que el servidor se "
+"apague.\n"
+"Actívelo solo si sabe lo que hace."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Si está activada, hace que las direcciones de movimiento sean relativas al "
+"lanzamiento del jugador cuando vuela o nada."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
+"Si esta activado, los nuevos jugadores no pueden unirse con contraseñas "
+"vacías."
#: src/settings_translation_file.cpp
msgid ""
@@ -2451,73 +4380,124 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"Si está habilitado, puede colocar bloques en la posición (pies + nivel de "
+"los ojos) donde se encuentra.\n"
+"Esto es útil cuando se trabaja con nódulos en áreas pequeñas."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
+"Si la restricción CSM para el rango de nodos está activada, las llamadas a "
+"get_node están limitadas\n"
+"a esta distancia del jugador al nodo."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
+"Si la ejecución de un comando toma más tiempo del especificado en\n"
+"segundos, agrega la información del tiempo al mensaje del comando"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Juego"
+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 ""
+"Si el tamaño del archivo debug.txt excede el número de megabytes "
+"especificado en\n"
+"esta configuración cuando se abre, el archivo se mueve a debug.txt.1,\n"
+"borrando un antiguo debug.txt.1 si existe.\n"
+"debug.txt sólo se mueve si esta configuración es positiva."
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "Si se activa, los jugadores siempre reaparecerán en la posición dada."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Ignora los errores del mundo"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
+"Valor alfa del fondo de la consola de chat durante el juego (opacidad, entre "
+"0 y 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
+msgstr "Color del fondo de la consola de chat durante el juego (R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
msgstr ""
+"Altura de la consola de chat en el juego, entre 0.1 (10%) y 1.0 (100%)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Tecla para subir volumen"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Velocidad vertical inicial al saltar, en nodos por segundo."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Instrumento incorporado.\n"
+"Esto solo suele ser necesario para los colaboradores principales o integrados"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+#, fuzzy
+msgid "Instrument chat commands on registration."
+msgstr "Instrumento de comandos del chat en el registro."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Funciones de devolución de llamada global del instrumento en el registro.\n"
+"(Cualquier cosa que pase a una función minetest.register _ * ())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Instrumenta la función de acción de los Modificadores de Bloque Activos en "
+"el registro."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Instrumenta la función de acción de Carga de Modificadores de Bloque en el "
+"registro."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Instrumenta los métodos de las entidades en el registro."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
+"Intervalo de guardar cambios importantes en el mundo, expresado en segundos."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Intervalo de envío de la hora del día a los clientes."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Animaciones de elementos del inventario"
#: src/settings_translation_file.cpp
msgid "Inventory key"
@@ -2525,58 +4505,126 @@ msgstr "Tecla Inventario"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Invertir el ratón"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "Invertir movimiento vertical del ratón."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Ruta de fuente cursiva"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Ruta de la fuente monoespacial cursiva"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Ítem entidad TTL"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Iteraciones"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+"Iteraciones de la función recursiva.\n"
+"Aumentar esto aumenta la cantidad de detalles finos, pero también\n"
+"aumenta la carga de procesamiento.\n"
+"En las iteraciones = 20 este mapgen tiene una carga similar al mapgen V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID de Joystick"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "Intervalo de repetición del botón del Joystick"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Joystick dead zone"
+msgstr "Zona muerta del joystick"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "Sensibilidad del Joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Tipo de Joystick"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Sólo conjuntos de Julia.\n"
+"El componente W de la constante hipercompleja.\n"
+"Altera la forma del fractal.\n"
+"No tiene efecto en los fractales 3D.\n"
+"Rango aproximadamente entre -2 y 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Sólo conjuntos de Julia: \n"
+"El componente X de la constante hipercompleja.\n"
+"Altera la forma del fractal.\n"
+"Rango aproximadamente de -2 a 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Sólo conjunto de Julia: \n"
+"El componente Y de la constante hipercompleja.\n"
+"Altera la forma del fractal.\n"
+"Rango aproximadamente de -2 a 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Sólo conjunto de Julia:\n"
+"Componente Z de la constante hipercompleja.\n"
+"Altera la forma del fractal.\n"
+"Rango aproximadamente entre -2 y 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia z"
#: src/settings_translation_file.cpp
msgid "Jump key"
@@ -2584,7 +4632,7 @@ msgstr "Tecla Saltar"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Velocidad de salto"
#: src/settings_translation_file.cpp
msgid ""
@@ -2592,6 +4640,29 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para disminuir la distancia de visión.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para disminuir el volumen.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para cavar.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2599,6 +4670,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para eliminar el elemento seleccionado actualmente.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2606,6 +4680,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para aumentar la distancia de visión.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para incrementar el volumen.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2613,6 +4700,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para saltar.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2620,13 +4710,22 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para moverse rápido en modo rápido.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para desplazar el jugador hacia atrás.\n"
+"Cuando esté activa, También desactivará el desplazamiento automático hacia "
+"adelante.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2634,6 +4733,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para mover el jugador hacia delante.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2641,6 +4743,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para desplazar el jugador hacia la izquierda.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2648,13 +4753,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para desplazar el jugador hacia la derecha.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para silenciar el juego.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2662,6 +4773,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para abrir la ventana de chat y escribir comandos.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para abrir la ventana de chat y escribir comandos.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2669,6 +4793,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para abrir la ventana de chat.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2676,720 +4803,1091 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para abrir la ventana de chat.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para colocar.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 11 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 12 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 13 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el decimocuarto elemento en la barra de acceso "
+"directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el decimoquinto elemento en la barra de acceso "
+"directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 16 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 17 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 18 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 19 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 20 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 21 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 22 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 23 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 24 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 25 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 26 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 27 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 28 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 29 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 30 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 31 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el elemento 32 en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Tecla izquierda"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar el octavo elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el quinto elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el primer elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el cuarto elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el siguiente elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el noveno elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el siguiente elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el segundo elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el septimo elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el sexto elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el decimo elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para seleccionar el tercer elemento en la barra de acceso directo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para agacharse.\n"
+"También utilizada para escalar hacia abajo y hundirse en agua si "
+"aux1_descends está deshabilitado.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para alternar entre cámar en primera y tercera persona.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para tomar capturas de pantalla.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla activar/desactivar el avance automatico.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar el modo cinemático.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Intervalo de modificador de bloques activos"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para activar/desactivar la vista del minimapa.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar el modo veloz.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Menú principal del gestor de mods"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para activar/desactivar el vuelo.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Script del menú principal"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para activar/desactivar el modo noclip.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla activar/desactivar el modo de inclinacion.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar la actualización de la cámara. Solo usada para "
+"desarrollo\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar el chat.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar la visualización de información de "
+"depuración.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar visualización de niebla.\n"
+"Véase http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar la visualización del HUD.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar la consola de chat larga.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar el perfilador. Usado para desarrollo.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para activar/desactivar rango de vista ilimitado.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tecla para hacer zoom cuando sea posible.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Generador de mapas"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+"Expulsa a los jugadores que enviaron más de X mensajes cada 10 segundos."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Pendiente del lago"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Umbral del lago"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Idioma"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Depuración del generador de mapas"
+msgid "Large cave depth"
+msgstr "Profundidad de la cueva grande"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flags"
-msgstr "Generador de mapas"
+msgid "Large cave maximum number"
+msgstr "Numero máximo de cuevas grandes"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Generador de mapas"
+msgid "Large cave minimum number"
+msgstr "Numero mínimo de cuevas grandes"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Generador de mapas"
+msgid "Large cave proportion flooded"
+msgstr "Proporción de cuevas grandes inundadas"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Tecla de la consola del chat grande"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Estilo de las hojas"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Estilo de hojas:\n"
+"- Fabuloso: Todas las caras son visibles\n"
+"- Simple: Solo caras externas, si se utilizan special_tiles definidos\n"
+"- Opaco: Transparencia desactivada"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat flags"
-msgstr "Generador de mapas"
+msgid "Left key"
+msgstr "Tecla izquierda"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat ground level"
-msgstr "Generador de mapas"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"Duración de un tick del servidor y el intervalo en el que los objetos se "
+"actualizan generalmente sobre la\n"
+"red."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Longitud de las ondas líquidas.\n"
+"Requiere que se habiliten los líquidos ondulados."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
+"Período de tiempo entre ciclos de ejecución de Active Block Modifier (ABM)"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake steepness"
-msgstr "Oclusión de paralaje"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Cantidad de tiempo entre ciclos de ejecución de NodeTimer"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake threshold"
-msgstr "Generador de mapas"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Periodo de tiempo entre ciclos de gestión de bloques activos"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Nivel de registro que se escribirá en debug.txt:\n"
+"- <nada> (sin registro)\n"
+"- ninguno (mensajes sin nivel)\n"
+"- error\n"
+"- advertencia\n"
+"- acción\n"
+"- información\n"
+"- detallado"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr ""
+msgid "Light curve boost"
+msgstr "Aumento medio del centro de la curva de luz"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal"
-msgstr "Generador de mapas"
+msgid "Light curve boost center"
+msgstr "Centro de impulso de curva de luz"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Generador de mapas"
+msgid "Light curve boost spread"
+msgstr "Dispersión de impulso de curva de luz"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "Gamma de la curva de luz"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "Curva de luz de alto gradiente"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve low gradient"
+msgstr "Curva de luz de bajo gradiente"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen fractal fractal"
-msgstr "Generador de mapas"
+msgid "Lighting"
+msgstr "Iluminación suave"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal iterations"
-msgstr "Oclusión de paralaje"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Límite de la generación de mapa, en nodos, en todas las 6 direcciones desde "
+"(0, 0, 0).\n"
+"Solo se generan fragmentos de mapa completamente dentro del límite de "
+"generación de mapas.\n"
+"Los valores se guardan por mundo."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Limita el número de solicitudes HTTP paralelas. Afecta:\n"
+"- Recuperación de medios si el servidor utiliza remote_media setting.\n"
+"- Descarga de la lista de servidores y anuncio del servidor.\n"
+"- Descargas realizadas por el menú principal (por ejemplo, gestor de mods).\n"
+"Sólo tiene un efecto si se compila con cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Fluidez líquida"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Suavizado de la fluidez líquida"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid loop max"
+msgstr "Bucle de máximo líquido"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal offset"
-msgstr "Generador de mapas"
+msgid "Liquid queue purge time"
+msgstr "Tiempo de purga de colas de líquidos"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal scale"
-msgstr "Generador de mapas"
+msgid "Liquid sinking"
+msgstr "Hundimiento del líquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid update interval in seconds."
+msgstr "Intervalo de actualización del líquido en segundos."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal slice w"
-msgstr "Generador de mapas"
+msgid "Liquid update tick"
+msgstr "Tick de actualización de los líquidos"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Load the game profiler"
+msgstr "Cargar el generador de perfiles del juego"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen name"
-msgstr "Generador de mapas"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Cargue el generador de perfiles de juego para recopilar datos de generación "
+"de perfiles de juegos.\n"
+"Proporciona un comando /profiler para tener acceso al perfil compilado.\n"
+"Útil para desarrolladores de mods y operadores de servidores."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5"
-msgstr "Generador de mapas"
+msgid "Loading Block Modifiers"
+msgstr "Carga de modificadores de bloque"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "Generador de mapas"
+msgid "Lower Y limit of dungeons."
+msgstr "Límite inferior en Y de mazmorras."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "Límite inferior Y de las tierras flotantes."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Script del menú principal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Hace que la niebla y los colores del cielo dependan de la hora del día "
+"(amanecer / atardecer) y la dirección de vista."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Vuelve opacos a todos los líquidos"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Map Compression Level for Disk Storage"
+msgstr "Nivel de comprensión del mapa para almacenamiento de disco"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v6"
-msgstr "Generador de mapas"
+msgid "Map Compression Level for Network Transfer"
+msgstr "Nivel de comprensión del mapa para transferencias por la red"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map directory"
+msgstr "Directorio de mapas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Atributos de generación de mapas específicos de Mapgen Carpathian."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Atributos de generación de mapa específicos para generador de mapas planos.\n"
+"Ocasionalmente pueden agregarse lagos y colinas al mundo plano."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+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 generación de mapas específicos de Mapgen Fractal.\n"
+"'terreno' permite la generación de terrenos no fractales:\n"
+"océanos, islas y subterráneo."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"Atributos de generación de mapas específicos del generador de mapas "
+"Valleys.\n"
+"'altitude_chill': Reduce el calor con la altitud.\n"
+"'humid_rivers': Aumenta la humedad alrededor de ríos.\n"
+"'vary_river_depth': Si está activo, la baja humedad y alto calor causan que\n"
+"los ríos sean poco profundos y ocasionalmente secos.\n"
+"'altitude_dry': Reduce la humedad con la altitud."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Atributos de generación de mapas específicos al generador de mapas v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 específicos para la generación de Mapgen v6.\n"
+"La opción 'snowbiomes' activa el nuevo sistema de generación de 5 biomas.\n"
+"Cuando la opción 'snowbiomes' está activada, las junglas se activan "
+"automáticamente y\n"
+"la opción 'jungles' es ignorada."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 específicos para la generación de Mapgen v7.\n"
+"'ridges': Rios.\n"
+"'floatlands': Masas de tierra flotantes en la atmósfera.\n"
+"'caverns': Cavernas gigantes subterráneo profundo."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Límite de generación de mapa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Intervalo de guardado de mapa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Map shadows update frames"
+msgstr "Tiempo de actualización de mapa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Limite del Mapblock"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Retraso de generación de la malla del Mapblock"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
+"Tamaño de cache en MB del Mapblock del generador de la malla del Mapblock"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7"
-msgstr "Generador de mapas"
+msgid "Mapblock unload timeout"
+msgstr "Expirado de descarga de Mapblock"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "Generador de mapas"
+msgid "Mapgen Carpathian"
+msgstr "Generador de mapas carpatiano"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Carpathian specific flags"
+msgstr "Banderas planas de Mapgen"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Generador de mapas plano"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Banderas de generador de mapas plano"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Generador de mapas fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Banderas de generador de mapas fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Generador de mapas V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Banderas de generador de mapas V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Generador de mapas V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "Banderas de generador de mapas V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Generador de mapas v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "Banderas de generador de mapas V7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Generador de mapas Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Banderas de generador de mapas Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Depuración del generador de mapas"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Generador de mapas"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "Distancia máxima de generación de bloques"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Distancia máxima de envío de bloques"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Máxima cantidad de líquidos procesada por paso."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "Bloques extra máximos de clearobjects"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "Máximos paquetes por iteración"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
-msgstr ""
+msgstr "FPS máximo"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr ""
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr "FPS máximo cuando el juego está pausado."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Distancia máxima para renderizar las sombras."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "Máximos bloques cargados a la fuerza"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
+msgstr "Anchura máxima de la barra de acceso rápido"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "Límite máximo de grandes cuevas aleatorias por chunk."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
+"Límite máximo de número aleatorio de cavernas pequeñas por pedazo de mapa."
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
+"Resistencia de líquidos máxima. Controla la deceleración al entrar en un "
+"líquido a:\n"
+"alta velocidad."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
-msgstr "Cantidad de bloques que flotan simultáneamente por cliente."
+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úmero máximo de bloques que se envían simultáneamente por cliente.\n"
+"El recuento total máximo se calcula dinámicamente:\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."
msgstr ""
+"Número máximo de bloques que pueden ser añadidos a la cola para cargarse."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Número máximo de bloques para ser añadidos a la cola para ser generados.\n"
+"Este límite se cumple por jugador."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"Número máximo de bloques para ser añadidos a a cola para cargarse desde un "
+"archivo.\n"
+"Este límite se cumple por jugador."
#: src/settings_translation_file.cpp
-msgid "Maximum number of forceloaded mapblocks."
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
+"Número máximo de descargas simultáneas. Las descargas que sobrepasen este "
+"límite se añadirán a la cola.\n"
+"Esto debería ser menor que curl_parallel_limit."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr "Número máximo de bloques de mapa cargados forzosamente."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
+"Número máximo de bloques de mapa para el cliente para ser mantenidos en la "
+"memoria.\n"
+"Establecer a -1 para cantidad ilimitada."
#: src/settings_translation_file.cpp
msgid ""
@@ -3397,76 +5895,117 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
+"Número máximo de paquetes enviados por paso de envío. Si tiene una conexión\n"
+"lenta, intente reducirlo, pero no lo reduzca a un número menor al doble del\n"
+"número de cliente objetivo."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
-msgstr ""
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "Número máximo de jugadores que se pueden conectar simultáneamente."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Número máximo de mensajes del chat recientes a mostrar"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr ""
+msgstr "Número máximo de objetos almacenados estáticamente en un bloque."
#: src/settings_translation_file.cpp
msgid "Maximum objects per block"
-msgstr ""
+msgstr "Objetos máximos por bloque"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
+"Proporción máxima de la ventana actual a ser usada para la barra de acceso "
+"rápido.\n"
+"Útil si hay algo para ser mostrado a la derecha o a la izquierda de la barra "
+"de acceso rápido."
#: src/settings_translation_file.cpp
msgid "Maximum simultaneous block sends per client"
-msgstr ""
+msgstr "Envíos de bloque simultáneos máximos por cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr "Tamaño máximo de la cola de salida del chat"
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
+"Tamaño máximo de la cola del chat externo.\n"
+"0 para desactivar el añadido a la cola y -1 para hacer el tamaño de la cola "
+"ilimitado."
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
+"Tiempo máximo que puede tardar la descarga de archivo (p.ej. una descarga de "
+"mod) en milisegundos."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
+"Tiempo máximo que puede tardar la solicitud interactiva (p.ej. una búsqueda "
+"de lista de servidores) en milisegundos."
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Menús"
+msgid "Maximum users"
+msgstr "Usuarios máximos"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "Caché de mallas poligonales"
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "Mensaje del día"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "Mensaje del día mostrado a los jugadores que se conectan."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
-msgstr ""
+msgstr "Método utilizado para resaltar el objeto seleccionado."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Nivel mínimo de logging a ser escrito al chat."
#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr ""
+msgstr "Minimapa"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "Clave del minimapa"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr ""
+msgstr "Altura de escaneo del minimapa"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr ""
+#, fuzzy
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Límite mínimo del número aleatorio de cuevas grandes por mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Límite mínimo del número aleatorio de cavernas pequeñas por mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Tamaño mínimo de textura"
#: src/settings_translation_file.cpp
#, fuzzy
@@ -3474,50 +6013,94 @@ msgid "Mipmapping"
msgstr "Mapeado de relieve"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Perfilador"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+#, fuzzy
+msgid "Mod Security"
+msgstr "Seguridad"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr "Modifica el tamaño de los elementos del HUD."
+
+#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "Ruta de fuente monoespaciada"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
+msgstr "Tamaño de fuente monoespaciada"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Tamaño de fuente monoespaciada divisible por"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Ruido de altura de montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Variación del ruido de montaña"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Nivel cero de montañas"
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr ""
+msgstr "Sensibilidad del ratón"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr ""
+msgstr "Multiplicador de sensiblidad del ratón."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Ruido del barro"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Multiplicador del balanceo de caída.\n"
+"Por ejemplo: 0 para no ver balanceo; 1.0 para normal; 2.0 para doble."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "Tecla de silencio"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Silenciar sonido"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
+"Nombre del generador de mapas que se utilizará al crear un nuevo mundo.\n"
+"Crear un mundo en el menú principal anulará esto.\n"
+"Los generadores de mapas actuales estan en un estado altamente inestable:\n"
+"- …Las floatlands opcionales de la v7 (desactivado por defecto)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3525,25 +6108,38 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"Nombre del jugador.\n"
+"Cuando se ejecuta un servidor, los clientes que se conecten con este nombre "
+"son administradores.\n"
+"Al comenzar desde el menú principal, esto se anula."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
msgstr ""
+"Nombre del servior, será mostrado cuando los jugadores se unan y en la lista "
+"de servidores."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr ""
+msgid "Near plane"
+msgstr "Plano cercano"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"Puerto de red a escuchar (UDP).\n"
+"Este valor será anulado al iniciar desde el menú principal."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Red"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "Los usuarios nuevos deben ingresar esta contraseña."
#: src/settings_translation_file.cpp
msgid "Noclip"
@@ -3554,187 +6150,290 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Resaltar nodos"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr "Resaltado de los nodos"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "Intervalo de cronometro de nodo"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "Ruidos"
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+#, fuzzy
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"Número de bloques extra que pueden ser cargados por /clearobjects a la vez.\n"
+"Esto es un intercambio entre una sobrecarga de transacciones SQLite y\n"
+"consumo de memoria (4096=100MB, como regla general)."
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
+msgstr "Líquidos opacos"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
+"Opacidad (alfa) de la sombra detrás de la fuente predeterminada, entre 0 y "
+"255."
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"Abrir el menú de pausa al perder el foco de la ventana. No se pausa si hay "
+"un formulario\n"
+"abierto."
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr "Anulación opcional del color de un enlace web en el chat."
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
+"Ruta de la fuente de respaldo. Debe ser una fuente TrueType.\n"
+"Esta fuente será utilizada para ciertos idiomas o si la fuente por defecto "
+"no está disponible."
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+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 ""
+"Ruta en la que guardar capturas de pantalla. Puede ser una ruta absoluta o "
+"relativa.\n"
+"La carpeta será creada si no existe."
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#, fuzzy
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"Ruta al directorio de los shaders. Si no es especificada, se usará la "
+"ubicación por defecto."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
+"Ruta al directorio de texturas. Todas las texturas se buscaran primero desde "
+"aquí."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion"
-msgstr "Oclusión de paralaje"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Ruta a la fuente por defecto. Debe ser una fuente TrueType.\n"
+"La fuente de respaldo se utilizará si la fuente no se puede cargar."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion Scale"
-msgstr "Oclusión de paralaje"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Ruta a la fuente monoespaciada. Debe ser una fuente TrueType.\n"
+"Este fuente es usada, por ejemplo, para la consola y la pantalla del "
+"perfilador."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion bias"
-msgstr "Oclusión de paralaje"
+msgid "Pause on lost window focus"
+msgstr "Pausar cuando se pierda el foco de la ventana"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion iterations"
-msgstr "Oclusión de paralaje"
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Límite por jugador de bloques en cola que se cargan desde el disco"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion mode"
-msgstr "Oclusión de paralaje"
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Límite por jugador de bloques en espera para generar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion strength"
-msgstr "Oclusión de paralaje"
+msgid "Physics"
+msgstr "Físicas"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+#, fuzzy
+msgid "Pitch move key"
+msgstr "Tecla vuelo"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+#, fuzzy
+msgid "Pitch move mode"
+msgstr "Modo de movimiento de inclinación activado"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+#, fuzzy
+msgid "Place key"
+msgstr "Tecla Colocar"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr ""
+msgid "Place repetition interval"
+msgstr "Intervalo de repetición para colocar"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"El jugador es capaz de volar sin ser afectado por la gravedad.\n"
+"Esto requiere el privilegio \"fly\" en el servidor."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Nombre del jugador"
+msgid "Player transfer distance"
+msgstr "Distancia de transferencia del jugador"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "Jugador contra jugador"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Filtrado bilineal"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"Puerto de conectarse (UDP).\n"
+"Nota que el campo de puerto en el menú principal anula esta configuración."
#: src/settings_translation_file.cpp
-msgid "Prevent mods from doing insecure things like running shell commands."
+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 ""
+"Evite que cavar y colocar se repita cuando mantenga presionados los botones "
+"del ratón.\n"
+"Habilite esto cuando excave o coloque con demasiada frecuencia por accidente."
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr "Evitar que mods hagan cosas inseguras como ejecutar comandos de shell."
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"Imprima los datos de perfilado del motor en intervalos regulares (en "
+"segundos).\n"
+"0 = desactivar. Útil para desarrolladores."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "Privilegios que los jugadores con privilegios basicos pueden otorgar"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Perfilador"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
+msgstr "Tecla para alternar perfiles"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Proporción de cuevas grandes que contienen líquido."
+
+#: src/settings_translation_file.cpp
msgid ""
"Radius of cloud area stated in number of 64 node cloud squares.\n"
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"Radio del área de nube indicado en número de 64 nodos cuadrados de nube.\n"
+"Los valores mayores de 26 comenzarán a producir cortes agudos en las "
+"esquinas del área de nubes."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Levanta terreno para hacer valles alrededor de los ríos."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "Entrada aleatoria"
#: src/settings_translation_file.cpp
msgid "Range select key"
msgstr "Tecla seleccionar rango de visión"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Mensajes Recientes del Chat"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Ruta de fuente regular"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "Medios remotos"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "Puerto remoto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
+"Eliminar códigos de color de los mensajes de chat entrantes\n"
+"Use esto para evitar que los jugadores puedan usar color en sus mensajes"
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "Sustituye el menú principal por defecto con uno personalizado."
#: src/settings_translation_file.cpp
#, fuzzy
@@ -3742,79 +6441,157 @@ msgid "Report path"
msgstr "Ruta de fuentes"
#: src/settings_translation_file.cpp
-msgid "Right key"
-msgstr "Tecla derecha"
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Restringe el acceso de ciertas funciones del lado del cliente en los "
+"servidores.\n"
+"Combine los byteflags a continuación para restringir las características del "
+"lado del cliente, o establezca en 0\n"
+"para no tener restricciones:\n"
+"LOAD_CLIENT_MODS: 1 (desactivar la carga de mods proporcionados por el "
+"cliente)\n"
+"CHAT_MESSAGES: 2 (desactivar la llamada send_chat_message del lado del "
+"cliente)\n"
+"READ_ITEMDEFS: 4 (deshabilitar la llamada get_item_def del lado del "
+"cliente)\n"
+"READ_NODEDEFS: 8 (deshabilitar la llamada get_node_def del lado del "
+"cliente)\n"
+"LOOKUP_NODES_LIMIT: 16 (limita la llamada get_node del lado del cliente a\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (desactivar la llamada get_player_names del lado del "
+"cliente)"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "Ridge mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "Ridge noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "Ridge underwater noise"
+msgstr "Ruido de las crestas marinas"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "Right key"
+msgstr "Tecla derecha"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "River channel depth"
+msgstr "Profundidad del relleno"
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr "Ancho de canal de río"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr "Profundidad de río"
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr "Ruido de río"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr "Tamaño del río"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Anchura de los valles con ríos"
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "Rolling hill size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rollback recording"
+msgid "Rolling hills spread noise"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Round minimap"
+msgstr "Minimapa redondo"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Las playas de arena se producen cuando np_beach supera este valor."
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr ""
+msgstr "Guardar el mapa recibido por el cliente en el disco."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Guardar el tamaño de la ventana automáticamente cuando se modifique."
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "Guardando el mapa recibido del servidor"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
+"Escala la interfaz por un valor epecificado por el usuario.\n"
+"Utilice el filtro anti-alias mas cercano para escalar la interfaz.\n"
+"Esto suavizará algunos de los bordes ásperos y mezclará\n"
+"píxeles al reducir el tamaño, a costa de difuminar algunos\n"
+"píxeles en los bordes cuando las imágenes son escaladas por tamaños que no "
+"sean números enteros"
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Pantalla:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "Altura de la pantalla"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Captura de pantalla"
+msgid "Screen width"
+msgstr "Ancho de la pantalla"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "Carpeta de captura de pantalla"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "Captura de pantalla"
+msgstr "Formato de captura de pantalla"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "Captura de pantalla"
+msgstr "Calidad de captura de pantalla"
#: src/settings_translation_file.cpp
msgid ""
@@ -3822,30 +6599,101 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"Calidad de captura de pantalla. Solo se utiliza para el formato JPEG.\n"
+"1 significa la peor calidad; 100 significa la mejor calidad.\n"
+"Utilice 0 para la calidad predeterminada."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr ""
+#, fuzzy
+msgid "Screenshots"
+msgstr "Captura de pantalla"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Seabed noise"
+msgstr "Ruido del lecho marino"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Segundo de 4 ruidos 2D que juntos definen la altura de la colina/cordillera."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Segundo de 2 ruidos 3D que juntos definen túneles."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Ver https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "Color del borde del cuadro de selección (R, G, B)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "Color del cuadro de selección"
#: src/settings_translation_file.cpp
msgid "Selection box width"
+msgstr "Ancho de la caja de selección"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
msgstr ""
+"Elección de 18 fractales desde 9 fórmulas.\n"
+"1 = Conjunto de Mandelbrot 4D \"Redondo\".\n"
+"2 = Conjunto de Julia 4D \"Redondo\".\n"
+"3 = Conjunto de Mandelbrot 4D \"Cuadrado\".\n"
+"4 = Conjunto de Julia 4D \"Cuadrado\".\n"
+"5 = Conjunto de Mandelbrot 4D \"Mandy Cousin\".\n"
+"6 = Conjunto de Julia 4D \"Mandy Cousin\".\n"
+"7 = Conjunto de Mandelbrot 4D \"Variado\".\n"
+"8 = Conjunto de Julia 4D \"Variado\".\n"
+"9 = Conjunto de Mandelbrot 3D \"Mandelbrot/Mandelbar\".\n"
+"10 = Conjunto de Julia 3D \"Mandelbrot/Mandelbar\".\n"
+"11 = Conjunto de Mandelbrot 3D \"Árbol de Navidad\".\n"
+"12 = Conjunto de Julia 3D \"Árbol de Navidad\".\n"
+"13 = Conjunto de Mandelbrot 3D \"Mandelbulb\".\n"
+"14 = Conjunto de Julia 3D \"Mandelbulb\".\n"
+"15 = Conjunto de Mandelbrot 3D \"Mandelbulb Coseno\".\n"
+"16 = Conjunto de Julia 3D \"Mandelbulb Coseno\".\n"
+"17 = Conjunto de Mandelbrot 4D \"Mandelbulb\".\n"
+"18 = Conjunto de Julia 4D \"Mandelbulb\"."
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Servidor / Un jugador"
+#, fuzzy
+msgid "Server"
+msgstr "URL del servidor"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Nombre del servidor"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Descripción del servidor"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3868,10 +6716,24 @@ msgid "Server port"
msgstr "Puerto del servidor"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Puerto del servidor"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr "Lista de las URLs de servidores"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Lista de las URLs de servidores"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr "Archivo de la lista de servidores"
@@ -3880,56 +6742,207 @@ msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"Seleccionar el idioma. Dejar vacío para usar el idioma del sistema.\n"
+"Se requiere reiniciar para cambiar esto."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Establecer la longitud máxima de caracteres de un mensaje de chat enviado "
+"por los clientes."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Establecer la fuerza de la sombra.\n"
+"Un valor menor significa sombras más claras, un valor mayor valor significa "
+"sombras más oscuras."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Establecer el tamaño del radio de las sombras suaves.\n"
+"Los valores más bajos significan sombras más nítidas, los valores más altos "
+"significan sombras más suaves.\n"
+"Valor mínimo: 1.0; valor máximo: 10.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Establecer la inclinación de la órbita del Sol/Luna en grados.\n"
+"El valor 0 significa que no hay inclinación / órbita vertical.\n"
+"Valor mínimo: 0.0; valor máximo: 60.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
+"Establecer en verdero para habilitar el mapeo de sombras.\n"
+"Requiere que los sombreadores estén habilitados."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Habilita mapeado de oclusión de paralaje.\n"
+"Requiere habilitar sombreadores."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"Habilita mapeado de oclusión de paralaje.\n"
+"Requiere habilitar sombreadores."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Habilita mapeado de oclusión de paralaje.\n"
+"Requiere habilitar sombreadores."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Ruta de sombreador"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"Los sombreadores permiten efectos visuales avanzados y pueden aumentar el "
+"rendimiento en algunas tarjetas de\n"
+"vídeo.\n"
+"Esto solo funciona con el motor de vídeo OpenGL."
#: src/settings_translation_file.cpp
-msgid "Shape of the minimap. Enabled = round, disabled = square."
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Calidad de captura de pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Show debug info"
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "Compensado de sombra de fuente, si es 0 no se dibujará la sombra."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Intensidad de sombra"
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "Forma del minimapa. Habilitado = redodondo, deshabilitado = cuadrado."
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr "Mostrar la informacion de la depuración"
+
+#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Show name tag backgrounds by default"
+msgstr "Fuente en negrita por defecto"
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3941,22 +6954,40 @@ msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"Suaviza la cámara al mirar alrededor. También se llama suavizado de mirada o "
+"ratón.\n"
+"Útil para grabar vídeos."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
msgstr ""
+"Suaviza la rotación de la cámara en modo cinematográfico. 0 para desactivar."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "Suaviza la rotación de la cámara. 0 para desactivar."
#: src/settings_translation_file.cpp
msgid "Sneak key"
msgstr "Tecla sigilo"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Velocidad del caminar"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Velocidad agachado, en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "Alfa de sombra de la fuente"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr ""
+msgstr "Sonido"
#: src/settings_translation_file.cpp
msgid ""
@@ -3967,16 +6998,57 @@ msgid ""
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 ""
+"Especifica el tamaño por defecto de los stacks (Montónes) de nodos, items y "
+"bloques.\n"
+"Cabe aclarar que los mods o juegos pueden establecer un stack para algunos "
+"items (o todos)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
+msgstr "Punto de aparición estático"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Strength of generated normalmaps."
-msgstr "Generar mapas normales"
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Strength of 3D mode parallax."
+msgstr "La fuerza del paralaje del modo 3D."
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3984,7 +7056,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3992,15 +7078,43 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr "Variación de temperatura de los biomas."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Ajustes"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Ruido alternativo de terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Ruido base del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Altura del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Ruido del terreno"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Umbral de ruido del terreno para las colinas.\n"
+"Controla la proporción del mundo cubierta por colinas.\n"
+"Ajústalo hacia 0.0 para una mayor proporción."
#: src/settings_translation_file.cpp
msgid ""
@@ -4008,30 +7122,73 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Umbral de ruido del terreno para los lagos.\n"
+"Controla la proporción del mundo cubierta por lagos.\n"
+"Ajústalo hacia 0.0 para una mayor proporción."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
-# No cabe "Paquetes de texturas".
#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr "Ruta de la textura"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "La URL para el repositorio de contenido"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "La zona muerta del joystick"
+
+#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
+msgstr "La profundidad de la tierra u otros nodos de relleno de biomas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4045,13 +7202,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4071,40 +7245,60 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
+"El tiempo en segundos entre la colocación de cada nodo mientras\n"
+"se mantiene pulsado el botón para colocar."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr ""
+msgid "The type of joystick"
+msgstr "El tipo de joystick"
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "Primero de 2 ruidos 3D que juntos definen túneles."
+
+#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Velocidad del tiempo"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4117,13 +7311,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr ""
+msgstr "Tecla para cambiar el modo de cámara"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touch screen threshold"
+msgstr "Límite de ruido de playa"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Límite de ruido de playa"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Ruido de árboles"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
msgstr "Filtrado trilineal"
@@ -4131,8 +7347,11 @@ msgstr "Filtrado trilineal"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"Habilitado = 256\n"
+"Deshabilitado= 128\n"
+"Sirve para suavizar el minimapa en dispositivos mas lentos."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
@@ -4140,6 +7359,19 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "URL a la lista de servidores mostrada en la pestaña de Multijugador."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Renderizado"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4151,12 +7383,20 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use 3D cloud look instead of flat."
+msgid "Upper Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Límite superior Y de las tierras flotantes."
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr "Usar nubes 3D en lugar de planas."
+
+#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+msgstr "Usar nubes con animaciones para el fondo del menú principal."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
@@ -4164,22 +7404,41 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
-msgstr ""
+msgstr "Usar filtrado bilinear al escalar texturas."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Usa la tecla"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
+"Usa el antialiasing multimuestra (MSAA) para suavizar los bordes de los "
+"bloques.\n"
+"Este algoritmo suaviza la vizualización 3D mientras que la imagen sigue "
+"nítida,\n"
+"pero esto no afecta el interior de las texturas\n"
+"(lo que es especialmente visible con texturas transparentes).\n"
+"Aparecen espacios visibles cuando los sombreadores estan deshabilitados.\n"
+"Si se establece en 0, se desactiva MSAA.\n"
+"Se requiere un reinicio después de cambiar esta opción."
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
-msgstr ""
+msgstr "Usar filtrado trilinear al escalar texturas."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4187,49 +7446,89 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
-msgstr ""
+#, fuzzy
+msgid "VSync"
+msgstr "VSync (Sincronización vertical)"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr "Profundidad del valle"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley fill"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley profile"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Vertical screen synchronization."
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variación de la altura maxima de las montañas (En nodos)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Video driver"
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View range decrease key"
+#, fuzzy
+msgid "Varies steepness of cliffs."
+msgstr "Controla lo escarpado/alto de las colinas."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Velocidad de escalado vertical, en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr "Sincronización vertical de la pantalla."
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr "Distancia de visión en nodos."
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr "Tecla para disminuir el rango de visión"
+
+#: src/settings_translation_file.cpp
msgid "View range increase key"
+msgstr "Tecla para aumentar el rango de visión"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4237,63 +7536,86 @@ msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr "Volumen"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Habilita mapeado de oclusión de paralaje.\n"
+"Requiere habilitar sombreadores."
+
+#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Velocidad al caminar y volar, en nodos por segundo."
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr "Velocidad del caminar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr "Texturas de objetos..."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
-msgstr ""
+msgstr "Nivel del agua"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Waving Nodes"
-msgstr "Movimiento de hojas"
+msgstr "Movimiento de nodos"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
msgstr "Movimiento de hojas"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Movimiento de plantas"
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Movimiento de Líquidos"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Oleaje en el agua"
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Altura de las ondulaciones del agua"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Altura de las ondulaciones del agua"
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Velocidad del oleaje en el agua"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Waving water length"
+msgid "Waving liquids wavelength"
msgstr "Oleaje en el agua"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Velocidad del oleaje en el agua"
+msgid "Waving plants"
+msgstr "Movimiento de plantas"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -4314,26 +7636,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4362,24 +7676,44 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "Componente de altura del tamaño inicial de la ventana."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
+"Solo para sistemas Windows: Iniciar Minetest con la ventana de la linea de "
+"comandos en el fondo.\n"
+"Contiene la misma información que el archivo debug.txt (Nombre por defecto)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4388,78 +7722,473 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Tiempo comienzo mundo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
+msgstr "Y de suelo plano."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid "Y of upper limit of large caves."
+msgstr "\"Y\" del límite superior de las grandes cuevas."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL file download timeout"
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "Y-level of average terrain surface."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "Y-level of cavern upper limit."
+msgstr "Nivel Y del límite superior de las cavernas."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Nivel Y del terreno bajo y el fondo marino."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Nivel Y del fondo marino."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr "cURL"
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "Tiempo de espera de descarga por cURL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
msgstr "Tiempo de espera de cURL"
-#~ msgid "Preload inventory textures"
-#~ msgstr "Precarga de las texturas del inventario"
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "Límite de cURL en paralelo"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Factor de escala aplicado a los elementos del menú: "
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Modo creativo: "
-#~ msgid "Touch free target"
-#~ msgstr "Tocar para interactuar"
+#~ msgid "- Damage: "
+#~ msgstr "- Daño: "
-#~ msgid " KB/s"
-#~ msgstr " KB/s"
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = oclusión de paralaje con información de inclinación (más rápido).\n"
+#~ "1 = mapa de relieve (más lento, más preciso)."
-#~ msgid " MB/s"
-#~ msgstr " MB/s"
+#~ msgid "Address / Port"
+#~ msgstr "Dirección / puerto"
-#~ msgid "Restart minetest for driver change to take effect"
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
#~ msgstr ""
-#~ "Reinicia minetest para que los cambios en el controlador tengan efecto"
+#~ "Ajustar la codificación gamma para las tablas de iluminación. Números "
+#~ "mayores son mas brillantes.\n"
+#~ "Este ajuste es solo para cliente y es ignorado por el servidor."
-#~ msgid "Rendering:"
-#~ msgstr "Renderizado:"
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr ""
+#~ "Modifica cómo las tierras flotantes del tipo montaña aparecen arriba y "
+#~ "abajo del punto medio."
-#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "Activado"
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "¿Estás seguro de querer reiniciar el mundo de un jugador?"
+
+#~ msgid "Back"
+#~ msgstr "Atrás"
+
+#~ msgid "Basic"
+#~ msgstr "Básico"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr ""
+#~ "Bits por píxel (también conocido como profundidad de color) en modo de "
+#~ "pantalla completa."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Mapeado de relieve"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Mapeado de relieve"
+
+#~ 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 ""
+#~ "Cambia la UI del menú principal:\n"
+#~ "- Completo: Múltiples mundos, elección de juegos y texturas, etc.\n"
+#~ "- Simple: Un solo mundo, sin elección de juegos o texturas.\n"
+#~ "Puede ser necesario en pantallas pequeñas."
+
+#~ msgid "Config mods"
+#~ msgstr "Configurar mods"
+
+#~ msgid "Configure"
+#~ msgstr "Configurar"
+
+#~ msgid "Connect"
+#~ msgstr "Conectar"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Controla la velocidad de hundimiento en líquidos."
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Controla la densidad del terreno montañoso flotante.\n"
+#~ "Se agrega un desplazamiento al valor de ruido 'mgv7_np_mountain'."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Controla el ancho de los túneles, un valor menor crea túneles más anchos."
+
+#~ msgid "Credits"
+#~ msgstr "Créditos"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Color de la cruz (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Daño activado"
#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Desactivar paquete"
+#~ msgid "Darkness sharpness"
+#~ msgstr "Agudeza de la obscuridad"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Tiempo de espera predeterminado para cURL, en milisegundos.\n"
+#~ "Sólo tiene efecto si está compilado con cURL."
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Define áreas de terreno liso flotante.\n"
+#~ "Las zonas flotantes lisas se producen cuando el ruido > 0."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Define el intervalo de muestreo de las texturas.\n"
+#~ "Un valor más alto causa mapas de relieve más suaves."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Borrar Fav."
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Descarga un subjuego, como minetest_game, desde minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Descarga uno desde minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Descargando e instalando $1, por favor espere..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "Activar VBO"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Habilitar confirmación de registro"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Habilita mapeado de relieves para las texturas. El mapeado de normales "
+#~ "necesita ser\n"
+#~ "suministrados por el paquete de texturas, o será generado "
+#~ "automaticamente.\n"
+#~ "Requiere habilitar sombreadores."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Habilita el mapeado de tonos fílmico"
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "Habilita la generación de mapas de normales (efecto realzado) en el "
+#~ "momento.\n"
+#~ "Requiere habilitar mapeado de relieve."
+
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Habilita mapeado de oclusión de paralaje.\n"
+#~ "Requiere habilitar sombreadores."
+
+#~ msgid "Enter "
+#~ msgstr "Ingresar "
+
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Opción experimental, puede causar espacios visibles entre los\n"
+#~ "bloques si se le da un valor mayor a 0."
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS (cuadros/s) en el menú de pausa"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "Sombra de la fuente de reserva"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Alfa de la sombra de la fuente de reserva"
+
+#~ msgid "Fallback font size"
+#~ msgstr "Tamaño de la fuente de reserva"
+
+#~ msgid "Filtering"
+#~ msgstr "Filtrado"
+
+#~ msgid "Floatland base height noise"
+#~ msgstr "Ruido de altura base para tierra flotante"
+
+#~ msgid "Floatland mountain height"
+#~ msgstr "Altura de las montañas en tierras flotantes"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)."
-#~ msgid "No!!!"
-#~ msgstr "¡¡¡No!!!"
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Tamaño de la fuente de reserva en punto (pt)."
-#~ msgid "Generate Normalmaps"
+#~ msgid "FreeType fonts"
+#~ msgstr "Fuentes FreeType"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "Profundidad de color en pantalla completa"
+
+#~ msgid "Game"
+#~ msgstr "Juego"
+
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Generar mapas normales"
+
+#~ msgid "Generate normalmaps"
#~ msgstr "Generar mapas normales"
-#~ msgid "Public Serverlist"
-#~ msgstr "Lista de servidores públicos"
+#~ msgid "HUD scale factor"
+#~ msgstr "Factor de escala HUD"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "Alta-precisión FPU"
+
+#~ msgid "IPv6 support."
+#~ msgstr "soporte IPv6."
-#~ msgid "No of course not!"
-#~ msgstr "¡No, claro que no!"
+#~ msgid "In-Game"
+#~ msgstr "Dentro del juego"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Útil para los desarrolladores de mods."
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instalar: Archivo: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentación"
#~ msgid ""
-#~ "How many blocks are flying in the wire simultaneously for the whole "
-#~ "server."
-#~ msgstr "Cantidad de bloques que flotan simultáneamente en todo el servidor."
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Combinaciones de teclas. (Si este menú da error, elimina líneas en "
+#~ "minetest.conf)"
+
+#, fuzzy
+#~ msgid "Lava depth"
+#~ msgstr "Características de la Lava"
+
+#~ msgid "Main"
+#~ msgstr "Principal"
+
+#~ msgid "Main menu style"
+#~ msgstr "Estilo del menú principal"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "Hace que DirectX funcione con LuaJIT. Desactivar si ocasiona problemas."
+
+#~ msgid "Menus"
+#~ msgstr "Menús"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Minimapa en modo radar, Zoom x2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Minimapa en modo radar, Zoom x4"
-#~ msgid "Detailed mod profiling"
-#~ msgstr "Perfilador detallado de los mods"
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Minimapa en modo superficie, Zoom x2"
-#~ msgid "Detailed mod profile data. Useful for mod developers."
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Minimapa en modo superficie, Zoom x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nombre / contraseña"
+
+#~ msgid "Name/Password"
+#~ msgstr "Nombre / contraseña"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#~ msgid "Ok"
+#~ msgstr "Aceptar"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Oclusión de paralaje"
+
+#, fuzzy
+#~ msgid "Parallax occlusion"
+#~ msgstr "Oclusión de paralaje"
+
+#, fuzzy
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Oclusión de paralaje"
+
+#, fuzzy
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Oclusión de paralaje"
+
+#, fuzzy
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Oclusión de paralaje"
+
+#, fuzzy
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Oclusión de paralaje"
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Ruta para guardar las capturas de pantalla."
+
+#~ msgid "Player name"
+#~ msgstr "Nombre del jugador"
+
+#~ msgid "Profiling"
+#~ msgstr "Perfilando"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP activado"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Reiniciar mundo de un jugador"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Seleccionar el archivo del paquete:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Servidor / Un jugador"
+
+#, fuzzy
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr "Compensado de sombra de fuente, si es 0 no se dibujará la sombra."
+
+#~ msgid "Special"
+#~ msgstr "Especial"
+
+#~ msgid "Special key"
+#~ msgstr "Tecla especial"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Comenzar un jugador"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Fuerza de los mapas normales generados."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr ""
+#~ "Para habilitar los sombreadores debe utilizar el controlador OpenGL."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Activar cinemático"
+
+#~ msgid "View"
+#~ msgstr "Ver"
+
+#~ msgid "Waving Water"
+#~ msgstr "Oleaje"
+
+#~ msgid "Waving water"
+#~ msgstr "Oleaje en el agua"
+
+#~ msgid "Yes"
+#~ msgstr "Sí"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
#~ msgstr ""
-#~ "Datos detallados de perfilación de mod. Útil para desarrolladores de mods."
+#~ "Te vas unir al servidor con el nombre \"%s\" por primera vez.\n"
+#~ "Cuando procedas, se creará una nueva cuenta en este servidor usando tus "
+#~ "credenciales.\n"
+#~ "Por favor, reescribe tu contraseña y haz clic en 'Registrarse y unirse' "
+#~ "para confirmar la creación de la cuenta, o haz clic en 'Cancelar' para "
+#~ "abortar."
+
+#~ msgid "You died."
+#~ msgstr "Has muerto."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/et/minetest.po b/po/et/minetest.po
index c17658374..150005f02 100644
--- a/po/et/minetest.po
+++ b/po/et/minetest.po
@@ -1,15 +1,10 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Estonian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-04-09 13:53+0000\n"
-"Last-Translator: Jan Harald <kuus29@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2021-06-29 10:33+0000\n"
+"Last-Translator: Janar Leas <janarleas+ubuntuone@googlemail.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/minetest/"
"minetest/et/>\n"
"Language: et\n"
@@ -17,35 +12,130 @@ 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 2.6-dev\n"
+"X-Generator: Weblate 4.7.1-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Tühi käsk."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Välju menüüsse"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Väär käsk: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Anti käsklus: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Võrgus mängijate loend"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Mängijaid võrgus: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Võõrustaja piiras selle käsu kasutuse."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Ärka ellu"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Said surma"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Võimalikud käsud:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Võimalikud käsud: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Käsk pole saadaval: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Leia abi käskude kohta"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr "'.help <käsk>' jagab rohkem teadmisi, ning '.help all' loetleb kõik."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <käsk>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Valmis"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Lue skriptis ilmnes viga; nagu näiteks mod:"
+#, fuzzy
+msgid "<none available>"
+msgstr "Käsk pole saadaval: "
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua skriptis ilmnes viga:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred:"
msgstr "Ilmnes viga:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Peamenüü"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Olgu."
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
-msgstr "Taasta ühendus"
+msgstr "Taasühenda"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
msgstr "Server taotles taasühendumist:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Laadimine..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Vali mod"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -60,10 +150,8 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr "Server toetab protokolli versioone $1 kuni $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Proovi lubada uuesti avalike serverite loend ja kontrolli oma Interneti "
-"ühendust."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -73,52 +161,87 @@ msgstr "Meie toetame ainult protokolli versiooni $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Meie toetame protokolli versioone $1 kuni $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Tühista"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Sõltub:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Sõltuvused:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Keela MP"
+msgid "Disable all"
+msgstr "Keela kõik"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Luba MP"
+msgid "Disable modpack"
+msgstr "Keela MOD-i pakk"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Luba kõik"
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Luba MOD-i pakk"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Mod \"$1\" kasutamine nurjus, sest ta sisaldab keelatud sümboleid. Lubatud "
-"on ainult märgid [a-z0-9_]."
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Peida mäng"
+"MOD-i \"$1\" kasutamine nurjus, kuna sisaldab keelatud sümboleid. Lubatud on "
+"ainult [a-z0-9_] märgid."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Peida mod. pakkide sisu"
+msgid "Find More Mods"
+msgstr "Leia rohkem MODe"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "(Valikulised) sõltuvused puuduvad"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Mängule pole kirjeldust saadaval."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Vajalikud sõltuvused puuduvad"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "MOD-i pakile pole kirjeldust saadaval."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Valikulised sõltuvused puuduvad"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Valikulised sõltuvused:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Salvesta"
@@ -130,495 +253,908 @@ msgstr "Maailm:"
msgid "enabled"
msgstr "Sisse lülitatud"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" on juba olemas. Kas sa tahad seda üle kirjutada?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Paigaldatakse sõltuvused $1 ja $2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 $2 poolt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 allalaadimisel,\n"
+"$2 ootel"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 allalaadimine..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 vajaliku sõltuvust polnud leida."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "Installitakse $1 ja $2 sõltuvus jäetakse vahele."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Kõik pakid"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Juba installeeritud"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Tagasi peamenüüsse"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Põhi Mäng:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB ei ole olemas kui Minetest on kompileeritud ilma cURL'ita"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Allalaadimine..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1 allalaadimine nurjus"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Mängud"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Paigalda"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Paigalda $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Paigalda puuduvad sõltuvused"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Paigaldus: Toetamata failitüüp \"$1\" või katkine arhiiv"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "MOD-id"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Ei õnnestunud ühtki pakki vastu võtta"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Tulemused puuduvad"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Värskendusi pole"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Ei leitud"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Ümber kirjuta"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Palun tee kindlaks et põhi mäng on õige."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Ootel"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Tekstuuri pakid"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Eemalda"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Uuenda"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Uuenda kõiki [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Vaata rohkem infot veebibrauseris"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
msgstr "Maailm nimega \"$1\" on juba olemas"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Täiendav maastik"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Külmetus kõrgus"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Põua kõrgus"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Loodusvööndi hajumine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Loodusvööndid"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Koopasaalid"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Koopad"
+
+#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Loo"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Laadi alla alammäng, näiteks minetest_game, aadressilt minetest.net"
+msgid "Decorations"
+msgstr "Ilmestused"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Laadi minetest.net-st üks mäng alla"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Hoiatus: \"Arendustest\" on mõeldud arendajatele."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Mäng"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Keldrid"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Lame maastik"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Taevas hõljuvad saared"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Lendsaared (katseline)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Mitte-fraktaalse maastiku tekitamine: mered ja süvapinnas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Künkad"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Rõsked jõed"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Suurendab niiskust jõe lähistel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Paigalda $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Järved"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Madal niiskus ja suur kuum põhjustavad madala või kuiva jõesängi"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Kaardi generaator"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Kaartiloome lipud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Kaartiloome-põhised lipud"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Mäed"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "No nimi või no mäng valitud"
+msgid "Mud flow"
+msgstr "Muda voog"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Käikude ja koobaste võrgustik"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Mäng valimata"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Ilma jahenemine kõrgemal"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Ilma kuivenemine kõrgemal"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Jõed"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Jõed merekõrgusel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr "Seed"
+msgstr "Külv"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Sujuv loodusvööndi vaheldumine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Rajatised ilmuvad maastikul (v6 tekitatud puudele ja tihniku rohule mõju ei "
+"avaldu)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Struktuurid ilmuvad maastikul, enamasti puud ja teised taimed"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Rohtla, Lagendik"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Rohtla, Lagendik, Tihnik"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Rohtla, Lagendik, Tihnik, Tundra, Laas"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Hoiatus: minimaalne arendustest on mõeldud arendajatele."
+msgid "Terrain surface erosion"
+msgstr "Maapinna kulumine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Puud ja tihniku rohi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Muutlik jõe sügavus"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Väga suured koopasaalid maapõue sügavuses"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Maailma nimi"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Sa ei ole alammänge paigaldanud."
+msgid "You have no games installed."
+msgstr "Sul pole ühtki mängu paigaldatud."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr ""
+msgstr "Kindlasti kustutad „$1“?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Kustuta"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "PakiHaldur: Nurjus „$1“ kustutamine"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "PakiHaldur: väär asukoht „$1“"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "Kas kustutada maailm \"$1\"?"
+msgstr "Kustutad maailma \"$1\"?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Kinnita parooli"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Maailma tekitus-valemi nimi"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nimi"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Salasõna"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Paroolid ei ole samad!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Registreeru ja liitu"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Nõustu"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr ""
+msgstr "Taasnimeta MOD-i pakk:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
+"Selle MOD-i pakk nimi on määratud oma „modpack.conf“ failid, mis asendab "
+"siinse ümber nimetamise."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr ""
+msgstr "(Kirjeldus seadistusele puudub)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "kahemõõtmeline müra"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< Tagasi lehele „Seaded“"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "Sirvi"
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
+msgid "Content: Games"
+msgstr "Sisu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Sisu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr "Lülita kõik välja"
+msgstr "Keelatud"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "Muuda"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
msgid "Enabled"
-msgstr "Sisse lülitatud"
+msgstr "Lubatud"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
+msgid "Lacunarity"
+msgstr "Pinna auklikus"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "Oktavid"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Nihe"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Mängud"
+#, fuzzy
+msgid "Persistence"
+msgstr "Püsivus"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Palun sisesta korrektne täisarv."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+msgid "Please enter a valid number."
+msgstr "Palun sisesta korrektne arv."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Restore Default"
+msgstr "Taasta vaikeväärtus"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Ulatus"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Otsi"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr ""
+msgid "Select directory"
+msgstr "Vali kataloog"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr ""
+msgid "Select file"
+msgstr "Vali fail"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Kuva tehnilised nimetused"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr ""
+msgid "The value must be at least $1."
+msgstr "Väärtus peab olema vähemalt $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr ""
+msgid "The value must not be larger than $1."
+msgstr "Väärtus ei tohi olla suurem kui $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Select path"
-msgstr "Vali"
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr ""
+msgid "X spread"
+msgstr "X levi"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr ""
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr ""
+msgid "Y spread"
+msgstr "Y levi"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "$1 paigaldamine $2 nurjus"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z levi"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr ""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "täisväärtus"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-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 "algne"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "pehmendatud"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Lubatud)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mod-i"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "$1 paigaldamine $2 nurjus"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Paigalda mod: Tegeliku nime leidmine ebaõnnestus mod-ile: $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
+"Paigalda mod: Sobiva katalooginime leidmine ebaõnnestus mod-komplektile $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Ei leitud sobivat mod-i ega mod-komplekti"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Lühike nimi:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1 paigaldamine tekstuurikomplektiks nurjus"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Mängu nimega $1 paigaldamine nurjus"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Mod nimega $1 paigaldamine nurjus"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Mod-komplekt nimega $1 paigaldamine nurjus"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Active Contributors"
-msgstr "Co-arendaja"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Laadimine..."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Core Developers"
-msgstr "Põhiline arendaja"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Avalike serverite loend on keelatud"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Tänuavaldused"
+#: 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 "
+"ühendust."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
-msgstr "Early arendajad"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Teavet"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Core Developers"
-msgstr "Eelmised põhilised arendajad"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Tegevad panustajad"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Põhi arendajad"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Avalik Kasutaja Andmete Kaust"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
+"Kasutaja poolsete maailmate, mängude, mod-de ning tekstuuri pakide\n"
+"kausta avamine faili-halduris."
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Vali modifikatsiooni fail:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Eelnevad panustajad"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Eelnevad põhi-arendajad"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua
-#, fuzzy
-msgid "Address / Port"
-msgstr "Aadress / Port:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Sirvi veebist sisu"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Sisu"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Liitu"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Keela tekstuurikomplekt"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Loov režiim"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Teave:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Kahjustamine lubatud"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Paigaldatud paketid:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Del. Favorite"
-msgstr "Lemmikud:"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Sõltuvused puuduvad."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Favorite"
-msgstr "Lemmikud:"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Paketil puudub kirjeldus"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Name / Password"
-msgstr "Nimi / Parool:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Nimeta ümber"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "PvP enabled"
-msgstr "Sisse lülitatud"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Eemalda pakett"
-#: builtin/mainmenu/tab_server.lua
-msgid "Bind Address"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Vali tekstuurikomplekt"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Võõrustamise kuulutamine"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Konfigureeri"
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Seo aadress"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr "Kujunduslik mängumood"
+msgstr "Looja"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "Lülita valu sisse"
+msgstr "Ellujääja"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Võõrusta"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Majuta külastajatele"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nimi/Parool"
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Lisa mänge sisuvaramust"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Uus"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#, fuzzy
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "No nimi või no mäng valitud"
+msgstr "Pole valitud ega loodud ühtegi maailma!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Mängi"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
-msgstr ""
+msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Avalik"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Vali mod"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Vali maailm:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr ""
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
-msgstr ""
+msgstr "Võõrustaja kanal"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "Alusta mängu"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Aadress"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Tühjenda"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Looja"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Vigastused mängijatelt"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Lemmikud"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Ühildumatud Võõrustajad"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Ühine"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Viivitus"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Avalikud võõrustajad"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Värskenda"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Pole lemmik"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Võõrustaja kirjeldus"
+
#: builtin/mainmenu/tab_settings.lua
-msgid "2x"
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
-msgstr "3D pilved"
+msgstr "Ruumilised pilved"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr ""
+msgstr "4x"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr ""
+msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Advanced Settings"
-msgstr "Sätted"
+msgid "All Settings"
+msgstr "Kõik sätted"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "Silu servad:"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Üksikmäng"
+msgid "Autosave Screen Size"
+msgstr "Mäleta ekraani suurust"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Bilinear Filter"
-msgstr "Bi-lineaarsed Filtreerimine"
+msgstr "Bi-lineaarne filtreerimine"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "Väga hea kvaliteet"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Vaheta klahve"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Vaheta nuppe"
+msgid "Connected Glass"
+msgstr "Ühendatud klaas"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Elavad varjud"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Connected Glass"
-msgstr "Liitu"
+msgid "Dynamic shadows:"
+msgstr "Elavad varjud: "
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Fancy Leaves"
-msgstr "Läbipaistmatu vesi"
+msgstr "Uhked lehed"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Kõrge"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Madal"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Keskmine"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Mipmap"
-msgstr "Väga hea kvaliteet"
+msgstr "KaugVaatEsemeKaart"
#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap + Aniso. Filter"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Ei"
-
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "No Filter"
-msgstr "Anisotroopne Filtreerimine"
+msgstr "Filtrita"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "No Mipmap"
-msgstr "Väga hea kvaliteet"
+msgstr "Mipmapita"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Highlighting"
-msgstr "Ilus valgustus"
+msgstr "Valitud klotsi ilme"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Outlining"
-msgstr "Ilus valgustus"
-
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr ""
+msgstr "Klotsi servad"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Normal Mapping"
-msgstr "Väga hea kvaliteet"
+msgid "None"
+msgstr "Puudub"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Opaque Leaves"
-msgstr "Läbipaistmatu vesi"
+msgstr "Läbipaistmatud lehed"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Opaque Water"
msgstr "Läbipaistmatu vesi"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "Luba kõik"
+msgstr "Osakesed"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Üksikmäng"
+msgid "Screen:"
+msgstr "Ekraan:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -629,123 +1165,95 @@ msgid "Shaders"
msgstr "Varjutajad"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "Shaderid (katselised)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Varjutajad (pole saadaval)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
-msgstr "Läbipaistmatu vesi"
+msgstr "Lihtsad lehed"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Smooth Lighting"
-msgstr "Ilus valgustus"
+msgstr "Sujuv valgustus"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Aktiveerimiseks varjud, nad vajavad OpenGL draiver."
+msgstr "Tekstureerimine:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-#, fuzzy
msgid "Tone Mapping"
-msgstr "Väga hea kvaliteet"
+msgstr "Tooni kaardistamine"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr ""
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Puutelävi: (px)"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Trilinear Filter"
-msgstr "Tri-Linear Filtreerimine"
+msgstr "Tri-lineaar filtreerimine"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Waving Leaves"
-msgstr "Uhked puud"
+msgid "Very High"
+msgstr "Ülikõrge"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Plants"
-msgstr "Uhked puud"
+msgid "Very Low"
+msgstr "Vägamadal"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Water"
-msgstr "Uhked puud"
+msgid "Waving Leaves"
+msgstr "Lehvivad lehed"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Jah"
-
-#: builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Config mods"
-msgstr "Konfigureeri"
-
-#: builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Main"
-msgstr "Menüü"
-
-#: builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Start Singleplayer"
-msgstr "Üksikmäng"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Mängi"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Üksikmäng"
+msgid "Waving Liquids"
+msgstr "Lainetavad vedelikud"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Informatsioon ei ole kättesaadav"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Vali graafika:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Lehvivad taimed"
-#: builtin/mainmenu/tab_texturepacks.lua
+#: src/client/client.cpp
#, fuzzy
-msgid "Texturepacks"
-msgstr "Vali graafika:"
+msgid "Connection aborted (protocol error?)."
+msgstr "Ühenduse viga (Aeg otsas?)"
-#: src/client.cpp
-#, fuzzy
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr "Ühenduse viga (Aeg otsas?)"
+msgstr "Ühendus aegus."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr ""
+msgstr "Valmis!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr ""
+msgstr "Klotsidega täitmine"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr ""
+msgstr "Klotsidega täitmine..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr ""
+msgstr "Tekstuuride laadimine ..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr ""
+msgstr "Varjutajate taasloomine..."
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
msgstr "Ühenduse viga (Aeg otsas?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr "Ei leia ega suuda jätkata mängu \""
#: src/client/clientlauncher.cpp
@@ -762,17 +1270,21 @@ msgstr "Pole valitud ei maailma ega IP aadressi. Pole midagi teha."
#: src/client/clientlauncher.cpp
msgid "Player name too long."
-msgstr ""
+msgstr "Mängija nimi on liiga pikk."
#: src/client/clientlauncher.cpp
-msgid "Provided world path doesn't exist: "
-msgstr ""
+msgid "Please choose a name!"
+msgstr "Palun vali nimi!"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr ""
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Salasõnafaili avamine ebaõnnestus: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Maailma failiteed pole olemas: "
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -780,47 +1292,169 @@ msgstr ""
"\n"
"Vaata debug.txt info jaoks."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Aadress: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Režiim: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Avalik: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- Üksteise vastu: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Serveri nimi: "
+
+#: src/client/game.cpp
#, fuzzy
-msgid "Change Keys"
-msgstr "Vaheta nuppe"
+msgid "A serialization error occurred:"
+msgstr "Ilmnes viga:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Automaatne edastus keelatud"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Automaatne edastus lubatud"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Block bounds hidden"
+msgstr "Klotsi piirid"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Kaamera värskendamine on keelatud"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Kaamera värskendamine on lubatud"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Vaheta parooli"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Filmirežiim on keelatud"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Filmirežiim on lubatud"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Kliendipoolne skriptimine on keelatud"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
+msgstr "Serveriga ühenduse loomine..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "Jätka"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Klahvid:\n"
+"- %s: liigu edasi\n"
+"- %s: liigu tagasi\n"
+"- %s: liigu vasakule\n"
+"- %s: liigu paremale\n"
+"- %s: hüppa/roni\n"
+"- %s: kaeva/viruta\n"
+"- %s: paigalda/kasuta\n"
+"- %s: hiili/mine alla\n"
+"- %s: viska ese\n"
+"- %s: seljakott\n"
+"- Hiir: keera/vaata\n"
+"- Hiireratas: vali ese\n"
+"- %s: vestlus\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr ""
+msgstr "Kliendi loomine..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr ""
+msgstr "Serveri loomine..."
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Siluri info ja profiileri graafik peidetud"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Silumisteave kuvatud"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Siluri info, profiileri graafik ja sõrestik peidetud"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -835,503 +1469,852 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-
-#: src/game.cpp
+"Vaikimisi juhtimine:\n"
+"Menüü pole nähtav:\n"
+"- toksa: nupu käitamine\n"
+"- kaksiktoksa: aseta/kasuta\n"
+"- libista näpuga: vaata ringi\n"
+"Menüü/varamu nähtav:\n"
+"- kaksiktoksa (välja):\n"
+" -->sulgeb\n"
+"- puutu vihku, puutu pesa:\n"
+" --> teisaldab vihu\n"
+"- puutu&lohista, toksa 2-se näpuga\n"
+" --> asetab ühe eseme pessa\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Piiramatu vaatamisulatus keelatud"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Piiramatu vaatamisulatus lubatud"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Kliendi loomine..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Välju menüüsse"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Välju mängust"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Kiirrežiim on keelatud"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Kiirrežiim on lubatud"
-#: src/game.cpp
-msgid "Media..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Kiirrežiim on lubatud (hoiatus: 'fast' privileeg puudub)"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Lennurežiim on keelatud"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Lennurežiim lubatud"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Lennurežiim lubatud (hoiatus: 'fly' privileeg puudub)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Ärka ellu"
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Udu keelatud"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Udu lubatud"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Hääle volüüm"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Mängu teave:"
-#: src/game.cpp
-msgid "You died."
-msgstr "Sa surid."
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Mäng pausil"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr ""
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Majutan serverit"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr ""
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Esemete määratlused..."
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Jätka"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Tegevus\" = Roni alla"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Meedia..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Tagasi"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Jututuba"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Pisikaardi keelab hetkel mäng või MOD"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Käsklus"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Hulgimängija"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konsool"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Haakumatus keelatud"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Nakkumatus lubatud"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Viska maha"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Haakumatus lubatud (pole 'haakumatus' volitust)"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Edasi"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Klotsi määratlused..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Seljakott"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Väljas"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Hüppamine"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Sees"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Nupp juba kasutuses"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
msgstr ""
-"Nupusätted. (Kui see menüü sassi läheb, siis kustuta asju failist minetest."
-"conf)"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Vasakule"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Koormushinnangu kuvamine"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Prindi kogused"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Kaug võõrustaja"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Kauguse valik"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Aadressi lahendamine..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Paremale"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Sulgemine..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Hiilimine"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Üksikmäng"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle Cinematic"
-msgstr "Lülita kiirus sisse"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Hääle volüüm"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Lülita kiirus sisse"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Heli vaigistatud"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Lülita lendamine sisse"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Heli süsteem on keelatud"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Lülita läbi seinte minek sisse"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "See kooste ei toeta heli süsteemi"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Tegevus"
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Heli taastatud"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Suumi"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "Vajuta nuppu"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Muuda"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Kinnita parooli"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Vaate kaugus on nüüd: %d"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Uus parool"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Vaate kaugus on suurim võimalik: %d"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Vana parool"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Vaate kaugus on vähim võimalik: %d"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Paroolid ei ole samad!"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Helitugevus muutus %d%%"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Välju"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Raamvõrgustiku paljastus"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Hääle Volüüm: "
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Suumimine on praegu mängu või modi tõttu keelatud"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr "Aplikatsioonid"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "sobib"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Vestlus peidetud"
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Tagasi"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Vestluse näitamine"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Caps Lock"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Liidese peitmine"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Tühjenda"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Liidese näitamine"
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Koma"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Koormushindaja peitmine"
-#: src/keycode.cpp
-msgid "Control"
-msgstr "CTRL"
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Koormushinnang (%d leht %d-st)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Aplikatsioonid"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Tagasinihe"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Konverteeri"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Suurtähelukk"
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "CTRL"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Alla"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Lõpeta"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Kustuta OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Põgene"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Kustuta EOF"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Soorita"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Viimane"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Abi"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Kodu"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Sisesta"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Sisendviisiga nõustumine"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Sisendviisi teisendamine"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Sisendviisi paoklahv"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Sisendviisi laadi vahetus"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "Sisendviisi mitte-teisendada"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Sisesta"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Vasakule"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Vasak nupp"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Vasak CTRL"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Vasak Menüü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Vasak Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Vasak Windowsi nupp"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menüü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Keskmine nupp"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Miinus"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Moodi vahetamine"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Järgmine"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Konverteerimatta"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Numbrilaual Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Numbrilaual *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Numbrilaual +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Numbrilaual -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Numbrilaual ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Numbrilaual /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Numbrilaual 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Numbrilaual 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Numbrilaual 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Numbrilaual 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Numbrilaual 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Numbrilaual 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Numbrilaual 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Numbrilaual 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Numbrilaual 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Numbrilaual 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Tühi"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Lehekülg alla"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Lehekülg üles"
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Paus"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punkt"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Pluss"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Mängi"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Prindi"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Eelnev"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Enter"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Paremale"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Parem nupp"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Parem CTRL"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Parem Menüü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Parem Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Parem Windowsi nupp"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll lukk"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Vali"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift,"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Maga"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Mängupilt"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Tühik"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Reavahetus"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Üles"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X Nuppp 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X Nupp 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Suumi"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Pisikaart peidetud"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Radarkaart, Suurendus ×%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Pinnakaart, Suurendus ×%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Pisikaart tekstuur-laadis"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "$1 allalaadimine nurjus"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Jätka"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = roni alla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Iseastuja"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Automaatne hüppamine"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Tagasi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Klotsi piirid"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Muuda kaamerat"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Jututuba"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Käsklus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsool"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Vähenda ulatust"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Vähenda valjust"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Viska maha"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Edasi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Suurenda ulatust"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Helitugevus üles"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Seljakott"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Hüppamine"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Nupp juba kasutuses"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Kohalik käsk"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Vaigista"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Järgmine üksus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Eelmine asi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Kauguse valik"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Kuvatõmmis"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Hiilimine"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Lülita HUD sisse/välja"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Lülita vestluslogi sisse/välja"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Lülita kiirus sisse"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Lülita lendamine sisse"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Lülita udu sisse/välja"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Lülita minikaart sisse/välja"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Lülita läbi seinte minek sisse"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Lülita pitchmove sisse/välja"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Vajuta nuppu"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Muuda"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Uus parool"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Vana parool"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Paroolid ei ole samad!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Välju"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Vaigistatud"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Hääle Volüüm: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "et"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Palun vali nimi!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Parendab virtuaalse juhtkangi asukohta.\n"
+"Kui keelatud, siis juhtkangi kese asub esmapuute kohal."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Virtuaal-juhtkangi kasutamine \"Aux1\" nupu päästmiseks.\n"
+"Kui lubatud, juhtkang päästab ka \"Aux1\" nupu kui läheb väljapoole pearingi."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Kahemõõtmeline müra mis määrab seljandike kuju/suuruse."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Kahemõõtmeline müra mis määrab vooremaa kuju/suuruse."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Kahemõõtmeline müra mis määrab astmikkõrgustike kuju/suuruse."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "Kahemõõtmeline müra mis määrab seljandike ala suuruse/ilmingu."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Kahemõõtmeline müra mis määrab vooremaa ala suuruse/ilmingu."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "Kahemõõtmeline müra mis määrab astmikkõrgendike ala suuruse/ilmingu."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Kahemõõtmeline müra mis paigutab jõeorud ja kanalid."
+
+#: src/settings_translation_file.cpp
msgid "3D clouds"
msgstr "3D pilved"
#: src/settings_translation_file.cpp
msgid "3D mode"
+msgstr "3D-režiim"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Üüratuid koopasaale määratlev kolmemõõtmeline müra."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Kanjonjõe järsakkaldaid määratlev kolmemõõtmeline müra."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Maastiku määratlev kolmemõõtmeline müra."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Kolmemõõtmeline müra kaljudele, eenditele, jms. Tavaliselt väikesed erisused."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Kolmemõõtmeline müra, mis määratleb kambristike sageduse kaardijaos."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1340,7 +2323,13 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1351,30 +2340,38 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr ""
+msgstr "Teade kõigile külalistele, kui võõrustaja kooleb."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
-msgstr ""
+msgstr "Teade kõigile külalistele, kui server kinni läheb."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "ABM sagedus"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "ABM-i ajakava"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Kõrgeim piirang ilmumist ootavatele klotsiedele"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
-msgstr ""
+msgstr "Kiirendus õhus"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Raskuskiirendus, (klotsi sekundis) sekundi kohta."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
+msgid "Active Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Modifiers"
+msgid "Active block management interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1393,27 +2390,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Lendlevad osakesed klotsi kaevandamisel."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Maailma nimi"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Arenenud sätted"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1421,27 +2440,45 @@ msgid "Ambient occlusion gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Anisotropic filtering"
-msgstr "Anisotroopne Filtreerimine"
+msgstr "Anisotroopne filtreerimine"
#: src/settings_translation_file.cpp
msgid "Announce server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1449,47 +2486,119 @@ msgid "Ask to reconnect after crash"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Automaatse edasiliikumise klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Iseseisvalt hüppab üle ühe klotsi kordse tõkke."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1 võti"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Backward key"
-msgstr "Tagasi"
+msgstr "Tagasi liikumise klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr "Baas maapinna tase"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
+msgid "Base terrain height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
+msgid "Basic privileges"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Bilinear filtering"
-msgstr "Bi-lineaarsed Filtreerimine"
+msgstr "Bilineaarne filtreerimine"
#: src/settings_translation_file.cpp
msgid "Bind address"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Build inside player"
-msgstr "Mitmikmäng"
+msgstr "Ehitamine mängija sisse"
#: src/settings_translation_file.cpp
msgid "Builtin"
@@ -1497,8 +2606,16 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Bumpmapping"
-msgstr "Väga hea kvaliteet"
+msgid "Camera"
+msgstr "Muuda kaamerat"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1513,6 +2630,10 @@ msgid "Camera update toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr ""
@@ -1525,75 +2646,133 @@ msgid "Cave width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Koobaste läve"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Vestluskäskluse ajalise sõnumi lävi"
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Chat commands"
+msgstr "Käsklused"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Chat key"
-msgstr "Vaheta nuppe"
+msgstr "Vestlusklahv"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chat toggle key"
-msgstr "Vaheta nuppe"
+msgid "Chat log level"
+msgstr "Vestlus päeviku täpsus"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Käsklus"
+msgid "Chat message count limit"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat message format"
+msgstr "Vestluse sõnumi formaat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Vestlus sõnumi väljaviskamis lävi"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Vestluse lülitusklahv"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "Vestluse näitamine"
+
+#: src/settings_translation_file.cpp
msgid "Chunk size"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cinematic mode"
-msgstr "Kujunduslik mängumood"
+msgstr "Filmirežiim"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cinematic mode key"
-msgstr "Kujunduslik mängumood"
+msgstr "Filmirežiimi klahv"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cloud height"
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1601,24 +2780,37 @@ msgid "Cloud radius"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Clouds"
-msgstr "3D pilved"
+msgstr "Pilved"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Clouds in menu"
-msgstr "Menüü"
+msgstr "Pilved menüüs"
#: src/settings_translation_file.cpp
msgid "Colored fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
@@ -1631,14 +2823,28 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Command key"
-msgstr "Käsklus"
+msgstr "Käsuklahv"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Connect glass"
-msgstr "Liitu"
+msgstr "Ühenda klaasi"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
@@ -1646,47 +2852,61 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr ""
+msgstr "Ühendab klaasi, kui klots võimaldab."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Console alpha"
-msgstr "Konsool"
+msgstr "Konsooli läbipaistvus"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Console color"
-msgstr "Konsool"
+msgstr "Konsooli värv"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Console key"
-msgstr "Konsool"
+msgid "Console height"
+msgstr "Konsooli kõrgus"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "ContentDB aadress"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Controls"
-msgstr "CTRL"
+msgstr "Juhtklahvid"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1698,7 +2918,10 @@ msgid "Controls steepness/height of hills."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1706,52 +2929,55 @@ msgid "Crash message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+msgid "Creative"
+msgstr "Loominguline"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha"
+msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color"
+msgid "DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
+msgid "Damage"
+msgstr "Vigastused"
#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid "Debug info toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "DPI"
+msgid "Debug log file size threshold"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Damage"
-msgstr "Lülita valu sisse"
+msgid "Debug log level"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug info toggle key"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug log level"
+msgid "Dec. volume key"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1763,9 +2989,8 @@ msgid "Default acceleration"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Default game"
-msgstr "Muuda mängu"
+msgstr "Vaikemäng"
#: src/settings_translation_file.cpp
msgid ""
@@ -1774,9 +2999,8 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Default password"
-msgstr "Uus parool"
+msgstr "Vaikimisi salasõna"
#: src/settings_translation_file.cpp
msgid "Default privileges"
@@ -1787,15 +3011,50 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Vaike lasu hulk"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1803,27 +3062,41 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay showing tooltips, stated in milliseconds."
+msgid "Defines the width of the river valley."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Deprecated Lua API handling"
+msgid "Defines tree areas and tree density."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid "Delay in sending blocks after building"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1833,35 +3106,50 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Müra künnis lagendikule"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+"Lagendikud ilmuvad kui np_biome ületab selle väärtuse.\n"
+"Seda eiratakse, kui lipp 'lumistud' on lubatud."
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Developer Options"
+msgstr "Ilmestused"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr "Kaevuri klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Kaevamisel tekkivad osakesed"
+
+#: src/settings_translation_file.cpp
msgid "Disable anticheat"
-msgstr "Lülita osakesed sisse"
+msgstr "Lülita sohituvastus välja"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1869,31 +3157,77 @@ msgid "Domain name of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Double tap jump for fly"
-msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
+msgstr "Topeltklõpsa \"hüppamist\" lendamiseks"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Double-tapping the jump key toggles fly mode."
-msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
+msgstr "Topeltklõpsates \"hüppamist\" lülitatakse lennurežiim sisse/välja."
#: src/settings_translation_file.cpp
msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "Luba MP"
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Müra keldritele"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1914,6 +3248,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1932,89 +3270,101 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables filmic tone mapping"
-msgstr "Lülita valu sisse"
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enables minimap."
-msgstr "Lülita valu sisse"
+msgstr "Lubab minikaarti."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
+msgid "Engine profiling data print interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+msgid "Entity methods"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
+msgid "Fallback font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2035,7 +3385,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
@@ -2044,27 +3394,22 @@ msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2074,21 +3419,61 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Filtering"
-msgstr "Anisotroopne Filtreerimine"
+msgid "Filtering and Antialiasing"
+msgstr "Silu servad:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Müra lendsaartele"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2101,11 +3486,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2117,15 +3514,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2133,12 +3558,51 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
-msgstr "Edasi"
+msgstr "Edasi klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2154,7 +3618,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2162,10 +3630,6 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr ""
@@ -2182,15 +3646,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Mängud"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2198,13 +3663,26 @@ msgid "Global callbacks"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Üldised maailma loome omadused.\n"
+"Maailma loome v6 puhul lipp 'ilmestused' ei avalda mõju puudele ja \n"
+"tihniku rohule, kõigi teistega mõjutab see lipp kõiki ilmestusi."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2212,22 +3690,47 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
+msgstr "Pinna tase"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Müra pinnasele"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Liidese näitamine"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2241,15 +3744,48 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Heat noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Müra kõrgusele"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Küngaste järskus"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Küngaste lävi"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2257,36 +3793,205 @@ msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2297,12 +4002,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2310,8 +4024,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2331,7 +4052,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2342,17 +4071,33 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Mäng"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
@@ -2363,13 +4108,25 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Heli valjemaks"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2393,15 +4150,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2409,9 +4162,8 @@ msgid "Inventory items animations"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Inventory key"
-msgstr "Seljakott"
+msgstr "Varustuse klahv"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
@@ -2422,13 +4174,31 @@ msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2436,42 +4206,69 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Jump key"
-msgstr "Hüppamine"
+msgstr "Hüppa"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
@@ -2486,6 +4283,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2500,6 +4311,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2515,6 +4333,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2542,7 +4361,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2556,6 +4375,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2570,649 +4396,745 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Left key"
-msgstr "Vasak Menüü"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "Menüü"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu script"
-msgstr "Menüü"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Põlvkonna kaardid"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Sügavus järvedele"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Järvede lävi"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
+msgid "Language"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen debug"
-msgstr "Põlvkonna kaardid"
+msgid "Large cave depth"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flags"
-msgstr "Põlvkonna kaardid"
+msgid "Large cave maximum number"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Põlvkonna kaardid"
+msgid "Large cave minimum number"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Põlvkonna kaardid"
+msgid "Large cave proportion flooded"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Suure vestlus-viiba klahv"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat flags"
-msgstr "Põlvkonna kaardid"
+msgid "Left key"
+msgstr "Vasak klahv"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat ground level"
-msgstr "Põlvkonna kaardid"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat lake steepness"
-msgstr "Põlvkonna kaardid"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat lake threshold"
-msgstr "Põlvkonna kaardid"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal"
-msgstr "Põlvkonna kaardid"
+msgid "Light curve boost center"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Põlvkonna kaardid"
+msgid "Light curve boost spread"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen fractal fractal"
-msgstr "Põlvkonna kaardid"
+msgid "Lighting"
+msgstr "Sujuv valgustus"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal iterations"
-msgstr "Põlvkonna kaardid"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal offset"
-msgstr "Põlvkonna kaardid"
+msgid "Liquid queue purge time"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal scale"
-msgstr "Põlvkonna kaardid"
+msgid "Liquid sinking"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal slice w"
-msgstr "Põlvkonna kaardid"
+msgid "Liquid update tick"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen name"
-msgstr "Põlvkonna kaardid"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5"
-msgstr "Põlvkonna kaardid"
+msgid "Loading Block Modifiers"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "Põlvkonna kaardid"
+msgid "Lower Y limit of dungeons."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Peamenüü skript"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v6"
-msgstr "Põlvkonna kaardid"
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
+"Maailma-loome v6 spetsiifilised omadused. \n"
+"Lipp 'lumistud' võimaldab uudse 5-e loodusvööndi süsteemi.\n"
+"Kui lipp 'lumistud' on lubatud, siis võimaldatakse ka tihnikud ning "
+"eiratakse \n"
+"lippu 'tihnikud'."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7"
-msgstr "Põlvkonna kaardid"
+msgid "Mapblock unload timeout"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "Põlvkonna kaardid"
+msgid "Mapgen Carpathian"
+msgstr "Maailmaloome: Mäestik"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Mäestiku spetsiifilised omadused"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Maailmaloome: Lamemaa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Lamemaa spetsiifilised omadused"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Maailmaloome: Fraktaalne"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Fraktaalse maailma spetsiifilised lipud"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Maailmaloome: V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "V5 spetsiifilised lipud"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Maailmaloome: V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "V6 spetsiifilised lipud"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Maailmaloome: V7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "V7 spetsiifilised lipud"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Maailmaloome: Vooremaa"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Vooremaa spetsiifilised lipud"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Maailmaloome: veaproov"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Maailma tekitus-valemi nimi"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3239,7 +5161,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3251,11 +5177,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3265,13 +5204,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3292,7 +5238,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3314,21 +5264,30 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Menüü"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3347,6 +5306,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3359,24 +5322,39 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Mipmapping"
-msgstr "Väga hea kvaliteet"
+msgstr "Astmik-tapeetimine"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3388,6 +5366,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3396,21 +5394,29 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgid "Mute key"
+msgstr "Vaigista"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3426,7 +5432,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3436,6 +5442,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3448,6 +5458,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Valitud klotsi ilme"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3456,91 +5471,119 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+msgid "Pitch move key"
+msgstr "Kõrvale astumise klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
+msgid "Place key"
+msgstr "Asetamis klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3550,16 +5593,16 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+msgid "Poisson filtering"
+msgstr "Poissoni filtreerimine"
#: src/settings_translation_file.cpp
msgid ""
@@ -3568,13 +5611,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3590,7 +5639,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3601,7 +5662,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3609,9 +5670,16 @@ msgid "Random input"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Range select key"
-msgstr "Kauguse valik"
+msgstr "Valiku ulatuse klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Tavafondi asukoht"
#: src/settings_translation_file.cpp
msgid "Remote media"
@@ -3622,37 +5690,75 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Vali"
+msgstr "Aruande asukoht"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Right key"
-msgstr "Parem Menüü"
+msgstr "Parem klahv"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "River channel depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River noise"
+msgstr "Jõe müra"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3660,20 +5766,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3681,6 +5807,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Ekraan:"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr ""
@@ -3689,23 +5820,16 @@ msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Screenshot"
-msgstr "Mängupilt"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "Mängupilt"
+msgstr "Kuvapildi vorming"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "Mängupilt"
+msgstr "Kuvapildi tase"
#: src/settings_translation_file.cpp
msgid ""
@@ -3715,11 +5839,24 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Kuvatõmmis"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3735,9 +5872,42 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
-msgstr "Üksikmäng"
+msgid "Server"
+msgstr "Majuta külastajatele"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Võõrusta / Üksi"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Võõrustaja kirjeldus"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3760,14 +5930,26 @@ msgid "Server port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Võõrustaja kanal"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr "Avatud serverite nimekiri:"
+msgstr "Võõrustaja-loendi aadress"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Võõrustaja-loendi aadress"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr "Avatud serverite nimekiri:"
+msgstr "Võõrustaja-loendi fail"
#: src/settings_translation_file.cpp
msgid ""
@@ -3777,27 +5959,97 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Varjutaja asukoht"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Varju filtreerimis aste"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3813,23 +6065,67 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Smooth lighting"
-msgstr "Ilus valgustus"
+msgstr "Hajus valgus"
#: src/settings_translation_file.cpp
msgid ""
@@ -3846,9 +6142,20 @@ msgid "Smooths rotation of camera. 0 to disable."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Sneak key"
-msgstr "Hiilimine"
+msgstr "Hiilimis klahv"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Hiilimis kiirus"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Sound"
@@ -3863,15 +6170,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3879,7 +6223,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3887,7 +6245,32 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Sätted"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3905,12 +6288,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
-msgstr "Vali graafika:"
+msgstr "Tapeedi kaust"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3920,13 +6327,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3940,13 +6363,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3966,22 +6406,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3991,6 +6444,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -3999,7 +6456,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4019,15 +6476,35 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Puuteekraani lävi"
+
+#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Touchscreen"
+msgstr "Puuteekraani lävi"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Tri-Linear Filtreerimine"
+msgstr "kolmik-lineaar filtreerimine"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4039,6 +6516,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4047,6 +6537,14 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4063,12 +6561,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Use key"
-msgstr "Vajuta nuppu"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4076,7 +6583,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4084,44 +6591,78 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley fill"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley profile"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Vertical screen synchronization."
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Video driver"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr "Vaate kaugus klotsides."
+
+#: src/settings_translation_file.cpp
msgid "View range decrease key"
msgstr ""
@@ -4130,28 +6671,46 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
-msgstr "Hääle volüüm"
+msgstr "Valjus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Water Features"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4160,35 +6719,38 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
-msgstr ""
+msgstr "Merepinna kõrgus maailmas."
#: src/settings_translation_file.cpp
msgid "Waving Nodes"
-msgstr ""
+msgstr "Lainetavad klotsid"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Waving leaves"
-msgstr "Uhked puud"
+msgstr "Lehvivad lehed"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+msgid "Waving liquids"
+msgstr "Lainetavad vedelikud"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+msgid "Waving liquids wave height"
+msgstr "Vedeliku laine kõrgus"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+msgid "Waving liquids wave speed"
+msgstr "Vedeliku laine kiirus"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr ""
+msgid "Waving liquids wavelength"
+msgstr "Vedeliku laine pikkus"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr "Õõtsuvad taimed"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4210,26 +6772,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4244,7 +6798,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "Kas mängjail on võimalus teineteist tappa."
#: src/settings_translation_file.cpp
msgid ""
@@ -4254,27 +6808,43 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
+msgstr "Kas nähtava ala lõpp udutada."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid "Width of the selection box lines around nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4284,11 +6854,71 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Aeg alustatavas maailmas"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4296,151 +6926,171 @@ msgid "cURL file download timeout"
msgstr "cURL faili allalaadimine aegus"
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
-msgstr ""
+msgid "cURL interactive timeout"
+msgstr "cURL-i interaktiivne aegumine"
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
-#, fuzzy
-#~ msgid "Downloading"
-#~ msgstr "Alla"
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kujunduslik mängumood: "
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr ""
-#~ "Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut "
-#~ "asja"
+#~ msgid "- Damage: "
+#~ msgstr "- Valu: "
-#~ msgid "is required by:"
-#~ msgstr "Seda vajavad:"
+#~ msgid "Address / Port"
+#~ msgstr "Aadress / kanal"
-#~ msgid "Configuration saved. "
-#~ msgstr "Konfiguratsioon salvestatud. "
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Kindlasti lähtestad oma üksikmängija maailma algseks?"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Hoiatus: Konfiguratsioon pole kindel."
+#~ msgid "Back"
+#~ msgstr "Tagasi"
-#~ msgid "Cannot create world: Name contains invalid characters"
-#~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti"
+#~ msgid "Bump Mapping"
+#~ msgstr "Konarlik tapeet"
-#~ msgid "Show Public"
-#~ msgstr "Näita avalikke"
+#~ msgid "Bumpmapping"
+#~ msgstr "Muhkkaardistamine"
-#~ msgid "Show Favorites"
-#~ msgstr "Näita lemmikuid"
+#~ msgid "Config mods"
+#~ msgstr "Seadista mod-e"
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit."
+#~ msgid "Configure"
+#~ msgstr "Kohanda"
-#~ msgid "Create world"
-#~ msgstr "Loo maailm"
+#~ msgid "Connect"
+#~ msgstr "Ühine"
-#~ msgid "Address required."
-#~ msgstr "IP on vajalkik."
+#~ msgid "Credits"
+#~ msgstr "Tegijad"
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud"
+#~ msgid "Damage enabled"
+#~ msgstr "Ellujääja"
-#~ msgid "Files to be deleted"
-#~ msgstr "Failid mida kustutada"
+#~ msgid "Darkness sharpness"
+#~ msgstr "Pimeduse teravus"
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud"
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Lae alla mäng: näiteks „Minetest Game“, aadressilt: minetest.net"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Laadi minetest.net-st üks mäng alla"
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Palun oota $1 allalaadimist ja paigaldamist…"
-#~ msgid ""
-#~ "Default Controls:\n"
-#~ "- WASD: Walk\n"
-#~ "- Mouse left: dig/hit\n"
-#~ "- Mouse right: place/use\n"
-#~ "- Mouse wheel: select item\n"
-#~ "- 0...9: select item\n"
-#~ "- Shift: sneak\n"
-#~ "- R: Toggle viewing all loaded chunks\n"
-#~ "- I: Inventory menu\n"
-#~ "- ESC: This menu\n"
-#~ "- T: Chat\n"
-#~ msgstr ""
-#~ "Algsed nupusätted:\n"
-#~ "- WASD: Kõnni\n"
-#~ "- Vasak hiireklõps: Kaeva/löö\n"
-#~ "- Parem hiireklõps: Aseta/kasuta\n"
-#~ "- Hiireratas: Vali asi\n"
-#~ "- 0...9: Vali asi\n"
-#~ "- Shift: Hiili\n"
-#~ "- R: Vaheta nägemiskaugust\n"
-#~ "- I: Seljakott\n"
-#~ "- ESC: Menüü\n"
-#~ "- T: Jututupa\n"
+#~ msgid "Enable VBO"
+#~ msgstr "Luba VBO"
-#~ msgid ""
-#~ "Warning: Some configured mods are missing.\n"
-#~ "Their setting will be removed when you save the configuration. "
-#~ msgstr ""
-#~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n"
-#~ "Nende sätted kustutatakse kui salvestada konfiguratsioon."
+#, fuzzy
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Lubab filmic tone mapping"
+
+#~ msgid "Enter "
+#~ msgstr "Sisesta "
+
+#~ msgid "Filtering"
+#~ msgstr "Filtreerimine"
+
+#~ msgid "Game"
+#~ msgstr "Mäng"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Loo normaalkaardistusi"
+
+#~ msgid "In-Game"
+#~ msgstr "Mängu-sisene"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Paigaldus: fail: \"$1\""
#~ msgid ""
-#~ "Warning: Some mods are not configured yet.\n"
-#~ "They will be enabled by default when you save the configuration. "
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
#~ msgstr ""
-#~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n"
-#~ "Need lülitatakse sisse kohe pärast sätete salvestamist."
+#~ "Nupusätted. (Kui see menüü sassi läheb, siis kustuta asju failist "
+#~ "minetest.conf)"
-#, fuzzy
-#~ msgid "Finite Liquid"
-#~ msgstr "Löppev vedelik"
+#~ msgid "Main"
+#~ msgstr "Peamine"
-#~ msgid "Preload item visuals"
-#~ msgstr "Lae asjade visuaale"
+#~ msgid "Main menu style"
+#~ msgstr "Peamenüü ilme"
-#~ msgid "SETTINGS"
-#~ msgstr "Seaded"
+#~ msgid "Menus"
+#~ msgstr "Menüüd"
-#~ msgid "Password"
-#~ msgstr "Parool"
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Radarkaart, Suurendus ×2"
-#~ msgid "Name"
-#~ msgstr "Nimi"
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Radarkaart, Suurendus ×4"
-#, fuzzy
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Lisama muutus"
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Pinnakaart, Suurendus ×2"
-#, fuzzy
-#~ msgid "Remove selected mod"
-#~ msgstr "Eemalda valitud muutus"
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Pinnakaart, Suurendus ×4"
-#~ msgid "EDIT GAME"
-#~ msgstr "MUUDA MÄNGU"
+#~ msgid "Name / Password"
+#~ msgstr "Nimi / salasõna"
-#~ msgid "new game"
-#~ msgstr "uus mängu"
+#~ msgid "Name/Password"
+#~ msgstr "Nimi/Salasõna"
-#~ msgid "GAMES"
-#~ msgstr "MÄNGUD"
+#~ msgid "No"
+#~ msgstr "Ei"
-#, fuzzy
-#~ msgid "Game Name"
-#~ msgstr "Mäng"
+#~ msgid "Ok"
+#~ msgstr "Olgu."
-#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "Sisse lülitatud"
+#~ msgid "PvP enabled"
+#~ msgstr "Vaenulikus lubatud"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Lähtesta üksikmängija maailm"
#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Lülita kõik välja"
+#~ msgid "Select Package File:"
+#~ msgstr "Vali modifikatsiooni fail:"
-#~ msgid "Public Serverlist"
-#~ msgstr "Avalikud serverid"
+#~ msgid "Special key"
+#~ msgstr "Eri klahv"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Alusta üksikmängu"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Aktiveerimiseks varjud, nad vajavad OpenGL draiver."
#, fuzzy
-#~ msgid "Useful for mod developers."
-#~ msgstr "Põhiline arendaja"
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Lülita kiirus sisse"
+
+#~ msgid "View"
+#~ msgstr "Vaade"
+
+#~ msgid "Yes"
+#~ msgstr "Jah"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Oled esmakordselt liitumas selle võõrustajaga, kandes nime \"%s\".\n"
+#~ "Kui jätkad, siis luuakse sellele võõrustajale uus konto sinu volitus "
+#~ "andmetega.\n"
+#~ "Trüki salasõna uuesti ning klõpsa 'Registreeru ja ühine' konto loomisega "
+#~ "nõustumiseks, või 'Loobu' keeldumiseks."
+
+#~ msgid "You died."
+#~ msgstr "Said otsa."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/eu/minetest.po b/po/eu/minetest.po
new file mode 100644
index 000000000..dc360ef85
--- /dev/null
+++ b/po/eu/minetest.po
@@ -0,0 +1,7008 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-04-29 20:12+0000\n"
+"Last-Translator: JonAnder Oier <jonanderetaoier@gmail.com>\n"
+"Language-Team: Basque <https://hosted.weblate.org/projects/minetest/minetest/"
+"eu/>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"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.12.1\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Garbitu txat-ilara"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Agindu hutsa."
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Itzuli menu nagusira"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Komando baliogabea: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Igorritako komandoa: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Online jokalariak zerrendatu"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Online jokalariak: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Irteerako txat-ilara hutsik dago orain."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Komando hau serbitzariaren bidez desgaituta dago."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Birsortu"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Hil zara"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Komando erabilgarriak:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Komando erabilgarriak: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Komandoa ez dago eskuragarri: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Eskuratu laguntza komandoetarako"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Erabili '.help <cmd>' informazio gehiago eskuratzeko, edo '.help all' guztia "
+"zerrendatzeko."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[guztia | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Ados"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<bat ere ez dago eskuragarri>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Errore bat gertatu da Lua script batean:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Errore bat gertatu da:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Menu nagusia"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Birkonektatu"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Zerbitzariak birkonexioa eskatu du:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Hautatu Modak"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Protokoloaren bertsioen desadostasuna. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Zerbitzariak $1 protokolo bertsioa darabil. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "Zerbitzariak $1 eta $2 arteko protokolo bertsioak onartzen ditu. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "$1 bertsioa soilik onartzen dugu."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "$1 eta $2 arteko protokolo bertsioak onartzen ditugu."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Utzi"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Mendekotasunak:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Desgaitu denak"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Mod paketea desgaitu"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Gaitu denak"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Mod paketea gaitu"
+
+#: 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 ""
+"Akatsa \"$1\" mod-a gaitzerakoan baimendu gabeko karaktereak dituelako. [a-"
+"z0-9_] karaktereak erabil daitezke soilik."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Mod gehiago aurkitu"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Mod:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "(Aukerako) mendekotasunik ez"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Ez da jolasaren deskripziorik eman."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Mendekotasun zorrotzik ez"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Mod-aren deskribapena ez dago eskuragarri."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Aukerako mendekotasunik ez"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Aukerako mendekotasunak:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Gorde"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Mundua:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "gaituta"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" existitzen da. Gainidatzi egin nahi al duzu?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "$1 et $2 mendekotasunak instalatuko dira."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 bider $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 deskargatzen,\n"
+"$2 ilaran"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 deskargatzen..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+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"
+msgstr "Pakete guztiak"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Instalaturik jada"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Itzuli menu nagusira"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Oinarri jokoa:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB ez dago erabilgarri Minetest cURL gabe konpilatzean"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Deskargatzen..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Huts egin du $1 deskargatzean"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Jolasak"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instalatu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "$1 Instalatu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Falta diren mendekotasunak instalatu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Instalazioa: Fitxategi ez bateragarria edo fitxategi hautsia"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mod-ak"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Ezin izan da paketerik eskuratu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Emaitzarik ez"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Eguneraketarik ez"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Ez da aurkitu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Gainidatzi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Mesedez, egiaztatu oinarri jokoa zuzena dela."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Ilaran"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "testura paketeak"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Desinstalatu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Eguneratu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Guztia eguneratu [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Ikusi informazio gehiago web nabigatzailean"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Badago \"$1\" izeneko mundu bat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Lurrazal gehigarria"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Garaierako hotza"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Garaierako lehortasuna"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Bioma nahasketa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Leizeak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Leizeak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Sortu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Apaingarriak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Abisua: Garapen Testa garatzaileentzat da."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Leotzak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Lurrazal laua"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Zeruan flotatzen duten lur-masak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Lur flotagarriak (esperimentala)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Lurrazal ez fraktalak sortu: Ozeanoak eta lurpekoak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Mendiak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Erreka hezeak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Hezetasuna areagotu erreka inguruetan"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "$1 Instalatu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+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"
+msgstr "Mapa sortzailea"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Mapgen banderatxoak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Mapgen berariazko banderak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Mendiak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Lokatz-jarioa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Tunel eta kobazuloen sarea"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Ez da jolasik aukeratu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Beroa murrizten du altuerarekin"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Hezetasuna murrizten du altuerarekin"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Ibaiak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Itsas mailako ibaiak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Hazia"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Biomen arteko trantsizio leuna"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Lurrean agertzen diren egiturak (v6-z sortutako ohianeko zuhaitzetan eta "
+"belarretan eraginik gabe)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Lurrean agertzen diren egiturak, normalean zuhaitzak eta landareak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Epela, Basamortua"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Epela, Basamortua, Ohiana"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Epela, Basamortua, Ohiana, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Lurraren gainazaleko higidura"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Zuhaitzak eta ohianeko belarra"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Ibaiaren sakonera aldatu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Kobazulo oso handiak lurpean sakon"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Munduaren izena"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Ez duzu jolasik instalatuta."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Ziur \"$1\" ezabatu nahi duzula?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Ezabatu"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: Akatsa \"$1\" ezabatzean"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: \"$1\" bide baliogabea"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Ezabatu \"$1\" mundua?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Berretsi pasahitza"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Izena"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Pasahitza"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Pasahitzak ez datoz bat!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Eman izena eta hasi saioa"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Onartu"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "Mod paketea berrizendatu:"
+
+#: 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 ""
+"Mod pakete honek berezko izen zehatza du emanda bere modpack.conf-ean eta "
+"berrizendatutako edozein gainidatziko du hemen."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(Ez da ezarpenaren deskripziorik eman)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D Zarata"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< Itzuli ezarpenen orrira"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Arakatu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Edukia"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Edukia"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Desgaituta"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Editatu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Gaituta"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr "Hutsunetasuna"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Zortzigarrenak"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Desplazamendua"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Persistence"
+msgstr "Iraunkortasuna"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Sartu baliozko zenbaki oso bat."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Sartu baliozko zenbaki bat."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "Berrezarri lehenespena"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Eskala"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Bilatu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Hautatu direktorioa"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Hautatu fitxategia"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Erakutsi izen teknikoak"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Balioa gutxienez $1 izan behar da."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Balioa ezin da $1 baino handiagoa izan."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "X hedapena"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Y hedapena"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z hedapena"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Balio absolutua"
+
+#. ~ "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 "lehenespenak"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "Arindua"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Gaituta)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mod"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Huts egin du $1 %2-n instalatzean"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Mod instalakuntza: Ezinezkoa S1 mod-en berezko izena aurkitzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Mod instalakuntza: ezinezkoa $1 mod-entzako karpeta izen egokia aurkitzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Ezinezkoa baliozko mod edo mod pakete bat aurkitzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Akatsa $1 testura pakete moduan instalatzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Ezinezkoa joko bat $1 moduan instalatzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Ezinezkoa mod bat $1 moduan instalatzea"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Ezinezkoa mod pakete bat $1 moduan instalatzea"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Kargatzen..."
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Zerbitzari publikoen zerrenda desgaituta dago"
+
+#: 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 "
+"internet konexioa."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Buruz"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Laguntzaile aktiboak"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Renderizatzaile aktiboa:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Garatzaile nagusiak"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Ireki Erabiltzaile Datuen Direktorioa"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Erabiltzaileak emandako munduak, jokoak, modak\n"
+"eta testura paketeak fitxategi kudeatzaile / esploratzaile batean."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Lehenagoko laguntzaileak"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Lehenagoko garatzaile nagusiak"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Lineako edukiak esploratu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Edukia"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Desgaitu testura paketea"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informazioa:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Instalaturiko paketeak:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Mendekotasunik gabe."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Paketearen deskribapena ez dago erabilgarri"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Berrizendatu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Paketea desinstalatu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Testura paketea erabili"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Zerbitzaria iragarri"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Helbidea lotu"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Sormen modua"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Kalteak baimendu"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Joko ostalaria"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Zerbitzari ostalaria"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Instalatu ContentDB-ko jolasak"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Berria"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Ez da mundurik sortu edo hautatu!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Jolastu Jokoa"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Portua"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Hautatu Modak"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Munduko selekzioa:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Zerbitzariaren portua"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Hasi partida"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Helbidea"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Garbi"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Sormen modua"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Mina / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Gogokoak"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Zerbitzari bateraezinak"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Elkartu partidara"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Zerbitzaria iragarri"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Freskatu"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Ez. gogokoena"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Zerbitzariaren deskribapena"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D Hodeiak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Ezarpen guztiak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Antialiasinga:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Gorde automatikoki Pantailaren Tamaina"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Iragazki bilineala"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Aldatu teklak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "Konektatutako beira"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Itzal dinamikoak"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Itzal dinamikoak: "
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Fancy Leaves"
+msgstr "Luxuzko hostoak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Altua"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Baxua"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Erdi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmap + Iragazki Aniso."
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Iragazkirik gabe"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "No Mipmap"
+msgstr "Mipmap gabe"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Nabarmendu nodoak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Nodoen ingerada"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Hosto opakoak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Ur opakoa"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Partikulak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Pantaila:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Ezarpenak"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "Itzalgailuak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Itzalgailuak (esperimentala)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Itzalgailuak (ez dago eskuragarri)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Orri sinpleak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Argiztapen leuna"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Testurizazioa:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Iragazki hirulineala"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "Ultra Altua"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "Oso Baxua"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Hosto Uhinduak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Likido Uhinduak"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Landare Uhinduak"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Konexio-errorea (denbora agortua?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Konexioaren itxaronaldia agortu egin da."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Egina!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Nodoak hasieratzen"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Nodoak hasieratzen..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Testurak kargatzen..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Itzalgailuak berreraikitzen..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Konexio-errorea (denbora agortua?)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "Ezin izan da jokoa aurkitu edo kargatu: "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "Jokoaren espezifikazioa ez da baliozkoa."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Menu nagusia"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Ez da mundurik hautatu eta ez da helbiderik eman. Ez dago zer eginik."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Jokalariaren izena luzeegia da."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Mesedez, aukeratu izen bat!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Ezin izan da ireki emandako pasahitzaren fitxategia: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Zehaztutako munduaren ibilbidea ez da existitzen: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Helbidea: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Modua: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Ataka: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Publikoa: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- Jokalaria Jokalariaren aurka (PvP): "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Zerbitzariaren izena: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Errore bat gertatu da:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Sarbidea ukatuta. Arrazoia: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Kameraren eguneraketa desaktibatuta dago"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Kameraren eguneraketa gaituta dago"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Pasahitza aldatu"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Modu zinematografiko desaktibatuta"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Modu zinematografiko gaituta"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Bezero deskonektatua"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Zerbitzarira konektatzen..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Konexioak huts egin du arrazoi ezezagun batengatik"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Jarraitu"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Ezin izan da helbidea ebatzi: %s"
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Bezeroa sortzen..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Zerbitzaria sortzen..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Arazte informazioa eta profilariaren grafikoa ezkutatuta"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Arazketari buruzko informazioa erakusten da"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Arazte informazioa, profilariaren grafikoa, eta hari-sareta ezkutatuta"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Desgaitu mugagabeko ikusmen barrutia"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Gaitu mugagabeko ikusmen barrutia"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Bezeroa sortzen..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Irten menura"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Irten sistema eragilera"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Modu azkarra desaktibatuta"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Modu azkarra gaituta"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Lainoa desaktibatuta"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Lainoa gaituta"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Jokoari buruzko informazioa:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Itemen definizioak..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Multimedia..."
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Nodoen definizioak..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profilariaren grafikoa ikusigai"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Urruneko zerbitzaria"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Itzaltzen..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Jokalari bakarra"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Soinuaren bolumena"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Zerbitzaria ziurrenik %s bertsio desberdin bat exekutatzen ari da."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Ezin da %s-ra konektatu IPv6 desaktibatuta dagoelako"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Ezin da %s-n entzun IPv6 desaktibatuta dagoelako"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Ikusmen barrutia aldatu da: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Ikusmen barrutia maximoan dago: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Ikusmen barrutia minimoan dago: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Bolumena %d%%ra aldatu da"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "Ados"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Txat ezkutua"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profilaria ezkutatuta"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profilaria ikusgai (%d/%d orria)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Aplikazioak"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Ctrl"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Behera"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "Amaiera"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "Exekutatu"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "Laguntza"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "Hasiera"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Txertatu"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Ezkerra"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "Ezkerreko botoia"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Ezkerreko ctrl"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "Ezkerreko menua"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "Ezkerreko maius."
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Ezkerreko leihoa"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "Menu"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "Erdiko botoia"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Orrialdea behera"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Orrialdea gora"
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Jolastu"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "Inprimatu"
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "Itzuli"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Eskuina"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "Eskuineko botoia"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "Eskuineko ctrl"
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "Eskuineko menua"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "Eskuineko maius."
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "Eskuineko leihoa"
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "Hautatu"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "Maius."
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Lokartu"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "Pantaila-argazkia"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Espazioa"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "Tabuladorea"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Gora"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr "1. X botoia"
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr "2. X botoia"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Huts egin du $1 deskargatzean"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Web orria irekitzen"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Jarraitu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Aurrera automatikoki"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Jauzi automatikoa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Atzera"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Aldatu kamera"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Txata"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Agindua"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Kontsola"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Txikitu barrutia"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Jaitsi bolumena"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Laga"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Aurrera"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Handitu barrutia"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Igo bolumena"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inbentarioa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Jauzi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Dagoeneko erabiltzen ari den tekla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Agindu lokala"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Isilarazi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Hurrengoa elementua"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Aurreko elementua"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Barruti hautaketa"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Pantaila-argazkia"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "isilean mugitu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Txandakatu azkar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Txandakatu hegaz egitea"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Txandakatu minimapa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "sakatu tekla"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Aldatu"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Pasahitzak ez datoz bat!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "eu"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Mesedez, aukeratu izen bat!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr "Bloke aktiboaren barrutia"
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr "Objektu aktiboak bidaltzeko barrutia"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Munduaren izena"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "Jauzi tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr "Atzera tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Aldatu kamera"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr "Kameraren eguneraketa txandakatzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Agindua"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Txat tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr "Agindua tekla"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr "Konektatu kanpo multimedia zerbitzari batera"
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Sareko eduki biltegia"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr "Sormena"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr "Kaltea"
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr "Arazte informazioa txandakatzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+"Jokalari transferentziaren distantzia maximoa blokeetan definitzen du (0 = "
+"mugagabea)."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Apaingarriak"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "Eskuinera tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Enable creative mode for all players"
+msgstr "Gaitu sormen modua mapa sortu berrietan."
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr "Ahalbidetu jokalariek kaltea jasotzea eta hiltzea."
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+"Gaitu urruneko multimedia zerbitzariaren erabilera (zerbitzariak ematen "
+"badu),\n"
+"Urruneko zerbitzariek deskarga azkarragoa eskaini dezakete multimedia "
+"deskargatzeko (adib. testurak)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Profilaria"
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr "Azkar tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Antialiasinga:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Floatland tapering distance"
+msgstr "Jokalariaren transferentzia distantzia"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr "Hegaz egin tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr "Aurrera tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"Zein distantziatik dakite bezeroek objektuei buruz, mapa blokeetan (16 nodo) "
+"adierazita.\n"
+"\n"
+"Hau active_block_range baino handiagoa ezarriz gero zerbitzariak jokalariak\n"
+"begiratzen duen norabidean objektu aktiboak distantzia honetara arte\n"
+"mantentzea eragingo du. (Honek gauzak bat batean desagertzea saihestu dezake)"
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Jolasak"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr "Inbentarioa tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Joystick dead zone"
+msgstr "Joystick mota"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Joystick mota"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr "Jauzi tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Ikusmen barrutia txikitzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Ikusmen barrutia txikitzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Ikusmen barrutia handitzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Komando lokalak idazteko txat leihoa irekitzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Ikusmen barrutia txikitzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Kameraren eguneraketa txandakatzeko tekla. Garapenerako soilik erabilia\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Arazte informazioa txandakatzeko tekla\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Profilaria txandakatzeko tekla. Garapenerako soilik erabilia.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Ikusmen barruti mugagabea txandakatzeko tekla.\n"
+"Ikusi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr "Ezkerrera tekla"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Argiztapen leuna"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr "Kargatu jolasaren profilaria"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Kargatu jolasaren profilaria jolasaren profil datuak jasotzeko.\n"
+"/profiler komandoa eskaintzen du jasotako profila atzitzeko.\n"
+"Mod garatzaileentzat eta zerbitzari jabeentzat erabilgarria."
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Profilaria"
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Nabarmendu nodoak"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place key"
+msgstr "Hegaz egin tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr "Jokalariaren transferentzia distantzia"
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr "Profilaria"
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr "Profilaria txandakatzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr "Ikusmen barrutia hautatzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr "Urruneko multimedia"
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr "Eskuinera tekla"
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Pantaila:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Pantaila-argazkia"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Zerbitzari ostalaria"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- Zerbitzariaren izena: "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Zerbitzariaren deskribapena"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Zerbitzariaren portua"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr "Isilean mugitu tekla"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Ezarpenak"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "Eduki biltegiaren URL helbidea"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "The dead zone of the joystick"
+msgstr "Joystick mota"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The default format in which profiles are being saved,\n"
+"when calling `/profiler save [format]` without format."
+msgstr ""
+"Profilak gordetzeko lehenetsitako formatua,\n"
+"`/profiler save [format]` formaturik gabe deitzean erabilia."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr "Joystick mota"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+"Atzerapena murrizteko, blokeen transferentziak moteldu egiten dira jokalari "
+"bat zerbait eraikitzen ari denean.\n"
+"Honek nodo bat jarri edo kendu ondoren zenbat motelduko diren zehazten du."
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr "Jokalari transferentzia distantzia mugagabea"
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr "Ikusmen barrutia txikitzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr "Ikusmen barrutia handitzeko tekla"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr "Ikusmen barrutia"
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+"Jokalariak bezeroei barruti mugarik gabe erakutsiko al zaizkien.\n"
+"Zaharkitua, erabili player_transfer_distance ezarpena honen ordez."
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr "Jokalariak elkarren artean hil daitezkeen ala ez."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
+msgstr "cURL-en denbora muga"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Sormen modua: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Kaltea: "
+
+#~ msgid "Back"
+#~ msgstr "Atzera"
+
+#~ msgid "Configure"
+#~ msgstr "Konfiguratu"
+
+#~ msgid "Connect"
+#~ msgstr "Konektatu"
+
+#~ msgid "Credits"
+#~ msgstr "Kredituak"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr ""
+#~ "Deskargatu jolasen bat, esaterako Minetest Game, minetest.net "
+#~ "zerbitzaritik"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Deskargatu minetest.net zerbitzaritik"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 deskargatu eta instalatzen, itxaron mesedez..."
+
+#~ msgid "Game"
+#~ msgstr "Jolasa"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instalakuntza: fitxategia: \"$1\""
+
+#~ msgid "Ok"
+#~ msgstr "Ados"
+
+#~ msgid "Special"
+#~ msgstr "Berezia"
+
+#~ msgid "Special key"
+#~ msgstr "Berezia tekla"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Hil zara"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/fi/minetest.po b/po/fi/minetest.po
new file mode 100644
index 000000000..489b66b52
--- /dev/null
+++ b/po/fi/minetest.po
@@ -0,0 +1,6950 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-07 17:16+0000\n"
+"Last-Translator: Oftox <oftox@protonmail.com>\n"
+"Language-Team: Finnish <https://hosted.weblate.org/projects/minetest/"
+"minetest/fi/>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"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.13.1-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Tyhjennä keskustelujono"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Tyhjä komento."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Poistu päävalikkoon"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Virheellinen komento: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Annettu komento: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Listaa verkkopelaajat"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Verkkopelaajat: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Keskustelujono on nyt tyhjä."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Palvelin on poistanut komennon käytöstä."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Synny uudelleen"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Kuolit"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Käytettävissä olevat komennot:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Käytettävissä olevat komennot: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Komento ei ole käytettävissä: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Ohjeita komentojen käyttöön"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Käytä '.help <cmd>' saadaksesi lisätietoja komennosta, tai '.help all' "
+"listataksesi kaiken."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[kaikki | <komento>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "OK"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<ei saatavilla>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua-skriptissä tapahtui virhe:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Tapahtui virhe:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Päävalikko"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Yhdistä uudelleen"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Palvelin pyysi yhteyden muodostamista uudelleen:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Valitse modit"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Protokollaversiot epäyhteensopivat. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Palvelin vaatii protokollaversion $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "Palvelin tukee protokollia versioiden $1 ja $2 välillä. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Tuemme vain protokollaversiota $1."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "Tuemme protokollaversioita välillä $1 ja $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Riippuvuudet:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Poista kaikki käytöstä"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Poista modipaketti käytöstä"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Ota kaikki käyttöön"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Ota modipaketti käyttöön"
+
+#: 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 ""
+"Modin \"$1\" käyttöönotto epäonnistui, koska se sisälsi sallimattomia "
+"merkkejä. Vain merkit [a-z0-9_] ovat sallittuja."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Löydä lisää modeja"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Modi:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Ei (valinnaisia) riippuvuuksia"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Pelin kuvausta ei ole annettu."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Ei kovia riippuvuuksia"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Modipaketin kuvausta ei annettu."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Ei valinnaisia riippuvuuksia"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Valinnaiset riippuvuudet:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Tallenna"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Maailma:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "käytössä"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" on jo olemassa. Haluatko korvata sen?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Riippuvuudet $1 ja $2 asennetaan."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 lataa,\n"
+"$2 jonossa"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 latautuu..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 tarvittavaa riippuvuutta ei löytynyt."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 asennetaan, ja $2 riippuvuutta sivuutetaan."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Kaikki paketit"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Asennettu jo"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Palaa päävalikkoon"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Peruspeli:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB ei ole saatavilla, jos Minetest on koottu ilman cURLia"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Ladataan..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Epäonnistui ladata $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Pelit"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Asentaa"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Asenna $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Asenna puuttuvat riippuvuudet"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Lataus: Tukematon tiedostotyyppi tai rikkinäinen arkisto"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Modit"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Paketteja ei löydetty"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Ei tuloksia"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Ei päivityksiä"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Ei löytynyt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Ylikirjoita"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Jonotettu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Tekstuuripaketit"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Poista"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Päivitä"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Päivitä kaikki [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Katso lisätietoja verkkoselaimessa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Maailma nimellä \"$1\" on jo olemassa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomit"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Luolat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Luolat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Luo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Koristeet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Varoitus: Development Test on tarkoitettu kehittäjille."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Tasainen maasto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Taivaalla leijuvat maamassat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Mäet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Kosteat joet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Asenna $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Järvet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Mapgen-valitsimet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Mapgen-spesifit valitsimet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Vuoret"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Ei peliä valittu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Joet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Siemen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Maailman nimi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Sinulla ei ole pelejä asennettuna."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Oletko varma että haluat poistaa \"$1\":n?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Poista"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: kohteen \"$1\" poistaminen epäonnistui"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: virheellinen polku \"$1\""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Poista maailma \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Vahvista salasana"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nimi"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Salasana"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Salasanat eivät täsmää!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Rekisteröidy ja liity"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Hyväksy"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "Nimeä modipaketti uudelleen:"
+
+#: 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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< Palaa asetussivulle"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Selaa"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Sisältö"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Sisältö"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Poistettu käytöstä"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Muokkaa"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Otettu käyttöön"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Anna kelvollinen kokonaisuluku."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Anna kelvollinen numero."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "Palauta oletus"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Etsi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Valitse hakemisto"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Valitse tiedosto"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Näytä tekniset nimet"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Arvon tulee olla vähintään $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Arvo ei saa olla suurempi kuin $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Käytössä)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 modia"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Ladataan..."
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Julkinen palvelinlista on pois käytöstä"
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr ""
+"Kokeile ottaa julkinen palvelinlista uudelleen käyttöön ja tarkista "
+"internetyhteytesi."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Tietoja"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Avaa käyttäjätietohakemisto"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Selaa sisältöä verkossa"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Sisältö"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Poista tekstuuripaketti käytöstä"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Tietoja:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Asennetut paketit:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Ei riippuvuuksia."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Ei paketin kuvausta saatavilla"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Poista paketti"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Käytä tekstuuripakettia"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Ilmoita palvelin"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Sido osoite"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Luova tila"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Ota vahinko käyttöön"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Isännöi peli"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Isännöi palvelin"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Asenna pelejä ContentDB:stä"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Uusi"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Maailmaa ei ole luotu tai valittu!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Pelaa peliä"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Portti"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Valitse modit"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Valitse maailma:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Palvelimen portti"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Aloita peli"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Osoite"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Tyhjennä"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Luova tila"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Vahinko / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Suosikit"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Palvelimet eivät ole yhteensopivat"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Liity peliin"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Viive"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Julkiset palvelimet"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Päivitä"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Palvelimen kuvaus"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D-pilvet"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Kaikki asetukset"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Reunanpehmennys:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Tallenna näytön koko automaattisesti"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Bilineaarinen suodatus"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Näppäinasetukset"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dynaamiset varjot"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Dynaamiset varjot: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Hienot lehdet"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Ei suodatinta"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Läpinäkymätön vesi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Partikkelit"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Näyttö:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Asetukset"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "Varjostimet"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Varjostimet (kokeellinen)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Varjostimet (ei käytettävissä)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Tasainen valaistus"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Teksturointi:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Yhteys aikakatkaistiin."
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Yhteys aikakatkaistiin."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Valmis!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Ladataan tekstuureja..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Rakennetaan uudelleen varjostimia..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Päävalikko"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Pelaajan nimi on liian pitkä."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Valitse nimi!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Osoite: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Tila: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Portti: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Julkinen: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Palvelimen nimi: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Tapahtui virhe:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Vaihda salasana"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Yhdistetään palvelimeen..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Jatka"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Luodaan asiakasta..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Luodaan palvelinta..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Luodaan asiakasta..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Poistu valikkoon"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Poistu käyttöjärjestelmään"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Lentotila pois käytöstä"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Lentotila käytössä"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Sumu pois käytöstä"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Sumu käytössä"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Pelin tiedot:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Peli keskeytetty"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Pois"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "Päällä"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Etäpalvelin"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Selvitetään osoitetta..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Sammutetaan..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Yksinpeli"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Äänenvoimakkuus"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Ääni mykistetty"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Ääni palautettu"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Keskustelu piilotettu"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Verkkosivun avaaminen epäonnistui"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Hypi automaattisesti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Taakse"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Vaihda kameraa"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Keskustelu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Komento"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsoli"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Eteen"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventaario"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Hyppää"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Paikallinen komento"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Kuvakaappaus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Hiivi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Uusi salasana"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Vanha salasana"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Salasanat eivät täsmää!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Poistu"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Mykistetty"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Äänenvoimakkuus: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "fi"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Valitse nimi!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "3D-pilvet"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr "3D-tila"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Maailman nimi"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr "Lisäasetukset"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Tallenna näytön koko automaattisesti"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Vaihda kameraa"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Chat-komennnot"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Asiakas"
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr "Asiakas ja palvelin"
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr "Pilvet"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Koristeet"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Käytä konsoli-ikkunaa"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Reunanpehmennys:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr "Koko näyttö"
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr "Koko näytön tila."
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Pelit"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr "Grafiikka"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafiikka"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafiikka"
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "HTTP-modit"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "Palvelimen sivusto, näytetään palvelinlistauksessa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "IPv6-palvelin"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr "Kieli"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Tasainen valaistus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr "FPS enintään"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Käyttäjiä enintään"
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Security"
+msgstr "Turvallisuus"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr "Hiiren herkkyys"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Mykistä ääni"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Verkko"
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr "Uusien käyttäjien tulee syöttää tämä salasana."
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr "Fysiikka"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr "Pelaaja vastaan pelaaja"
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Näyttö:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr "Näytön korkeus"
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr "Näytön leveys"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr "Kuvakaappausten kansio"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr "Kuvakaappausten muoto"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr "Kuvakaappausten laatu"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Kuvakaappaus"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Lue https://www.sqlite.org/pragma.html#pragma_synchronous"
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Palvelimen URL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Palvelimen nimi"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Palvelimen kuvaus"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr "Palvelimen URL"
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr "Palvelimen osoite"
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr "Palvelimen kuvaus"
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr "Palvelimen nimi"
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr "Palvelimen portti"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Palvelimen portti"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Hiiviskelyn nopeus"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr "Ääni"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr "Synkroninen SQLite"
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Asetukset"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Koko näyttö"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr "Luotetut modit"
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr "Videoajuri"
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr "Kävelyn nopeus"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Luova tila: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Vahinko: "
+
+#~ msgid "Connect"
+#~ msgstr "Yhdistä"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Lataa peli, kuten Minetest Game, minetest.netistä"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Lataa yksi minetest.netistä"
+
+#~ msgid "FreeType fonts"
+#~ msgstr "FreeType-fontit"
+
+#~ msgid "Game"
+#~ msgstr "Peli"
+
+#~ msgid "In-Game"
+#~ msgstr "Pelinsisäinen"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Asenna: tiedosto: \"$1\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Näppäimistöasetukset. (Jos tämä valikko rikkoutuu, poista asioita "
+#~ "minetest.conf-tiedostosta)"
+
+#~ msgid "Menus"
+#~ msgstr "Valikot"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nimi / Salasana"
+
+#~ msgid "Player name"
+#~ msgstr "Pelaajan nimi"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Palvelin / yksinpeli"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Varjostimien käyttäminen vaatii, että käytössä on OpenGL-ajuri."
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Olet aikeissa liittyä tälle palvelimelle nimellä \"%s\" ensimmäistä "
+#~ "kertaa.\n"
+#~ "Jos jatkat, uusi tili kirjautumistietojen kera luodaan tälle "
+#~ "palvelimelle.\n"
+#~ "Kirjoita salasana ja napsauta \"Rekisteröidy ja liity\" vahvistaaksesi "
+#~ "tilin luomisen, tai napsauta \"Peruuta\" lopettaaksesi."
+
+#~ msgid "You died."
+#~ msgstr "Kuolit."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/fil/minetest.po b/po/fil/minetest.po
new file mode 100644
index 000000000..85444da23
--- /dev/null
+++ b/po/fil/minetest.po
@@ -0,0 +1,7064 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-06-27 03:16+0000\n"
+"Last-Translator: Marco Santos <enum.scima@gmail.com>\n"
+"Language-Team: Filipino <https://hosted.weblate.org/projects/minetest/"
+"minetest/fil/>\n"
+"Language: fil\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 "
+"|| n % 10 == 6 || n % 10 == 9);\n"
+"X-Generator: Weblate 4.13.1-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Linisin ang pila ng out chat"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Bakanteng utos."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Umalis sa main menu"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Invalid na utos: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Inisyu na utos: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Ilista ang mga naka-online na player"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Mga naka-online na player: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Bakante na ang pila ng out chat."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Sinara ng server ang utos na ito."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Mag-respawn"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Namatay ka"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Mga magagamit na utos:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Mga magagamit na utos: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Di magagamit ang utos: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Humingi ng tulong para sa mga utos"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Gamitin ang '.help <utos>' para makakuha ka pa ng mas maraming impormasyon, "
+"o '.help all' para ilista lahat."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <utos>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Sige"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<wala>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "May error sa Lua script:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "May error:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Main menu"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Kumonekta uli"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Humiling ang server ng pagkonekta muli:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Pumili ng mga Mod"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Di tumugmang bersyon ng protocol. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Pinapatupad ng server ang bersyon ng protocol na $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr ""
+"Sinusuportahan ng server ang mga bersyon ng protocol sa pagitan $1 at $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Suportado lang po namin ang bersyon ng protocol na $1."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr ""
+"Suportado lang po namin ang mga bersyon ng protocol sa pagitan ng $1 at $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Ikansela"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Mga kailangan:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Isara lahat"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Isara ang modpack"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Buksan lahat"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Buksan ang modpack"
+
+#: 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 ""
+"Bigong mabuksan ang mod na \"$1\" dahil naglalaman ito ng mga bawal na "
+"karakter. Tanging mga karakter na [a-z0-9_] lang ang pwede."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Maghanap pa ng mga Mod"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Mod:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Walang (optional na) kailangan"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Walang binigay na paglalarawan sa laro."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Walang kailangang kailangan"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Walang binigay na paglalarawan sa modpack."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Walang mga optional na kailangan"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Mga optional na kailangan:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "I-save"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Mundo:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "bukas"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "Meron na'ng \"$1\". Gusto mo bang i-overwrite ito?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Ii-install ang mga kailangan na $1 at $2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 ni $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 dina-download,\n"
+"$2 nakapila"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 dina-download..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "Di makita ang $1 (na) kailangan."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "Ii-install ang $1, at lalaktawan ang %2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Lahat ng package"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Naka-install na"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Balik sa Main Menu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Basehang Laro:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+"Di magagamit ang ContentDB kapag na-compile ang Minetest nang walang cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Dina-download..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Bigong ma-download ang $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Mga Laro"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "I-install"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "I-install ang $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "I-install ang mga nawawalang kailangan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "I-install: Di-suportadong file type o sirang archive"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mga Mod"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Walang makuhang mga package"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Walang mga resulta"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Walang mga update"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Di nakita"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "I-overwrite"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Siguraduhing tama ang basehang laro."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Nakapila"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Mga Texture Pack"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Burahin"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "I-update"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "I-update Lahat [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Tumingin pa ng mas maraming impormasyon sa web browser"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Meron na'ng mundong may pangalang \"$1\""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Karagdagang terrain"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Lamig ng altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Tuyo ng altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Paghahalo ng biome"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Mga biome"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Mga kweba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Mga kweba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Gumawa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Mga dekorasyon"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Babala: Para sa mga developer ang Development Test."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Mga dungeon"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Patag na terrain"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Mga lumulutang na kalupaan sa langit"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Lumulutang na Lupa (eksperimento)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Gumawa ng di fractal na terrain: Mga karagatan at ilalim ng lupa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Mga burol"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Mga mahalumigmig na ilog"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Pinapataas ang halumigmig sa mga ilog"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "I-install ang $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Mga lawa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"Bumababa o natutuyo ang mga ilog kapag mababa ang halumigmig at mataas ang "
+"init"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Mapgen"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Mga flag ng mapgen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Mga flag na specific sa mapgen"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Mga bundok"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Agos ng putik"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Network ng mga tunnel at kweba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Walang larong napili"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Binabawasan ang init ng altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Binabawasan ang halumigmig ng altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Mga ilog"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Lebel ng dagat sa mga ilog"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Seed"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Malinis na transition sa pagitan ng mga biome"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Mga istrakturang magpapakita sa terrain (walang epekto sa mga puno at damo "
+"sa gubat na nagawa ng v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+"Mga istrakturang magpapakita sa terrain, tipikal na mga puno at halaman"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Temperate, Disyerto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Temperate, Disyerto, Kagubatan"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Temperate, Disyerto, Kagubatan, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Erosyon sa lupa ng terrain"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Mga puno at damo sa gubat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Nagbabagong lalim ng ilog"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Mga napakalaking malalalim na kweba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Pangalan ng mundo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Wala kang na-install na mga laro."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Sigurado ka bang buburahin mo ang \"$1\"?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Burahin"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: bigong mabura ang \"$1\""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: invalid na path na \"$1\""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Burahin ang Mundong \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Kumpirmahin ang Password"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Pangalan"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Password"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Di tugma ang mga password!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Magparehistro at Sumali"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Tanggapin"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "I-rename ang Modpack:"
+
+#: 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 ""
+"May explicit na pangalan ang modpack na ito na nakalagay sa modpack.conf "
+"nito na mag-o-override sa kahit anong pag-rename dito."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(Walang binigay na paglalarawan)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D Noise"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< Balik sa Pagsasaayos"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Mag-browse"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Content"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Content"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Nakasara"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Baguhin"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Nakabukas"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr "Lacunarity"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Mga octave"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Offset"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr "Persistence"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Mangyaring maglagay ng valid na integer."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Mangyaring maglagay ng valid na bilang."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "I-restore ang Default"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Scale"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Maghanap"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Pumili ng directory"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Pumili ng file"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Ipakita ang mga teknikal na pangalan"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Dapat di bababa sa $1 ang value."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Dapat di lalaki sa $1 ang value."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Pagkalat ng X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Pagkalat ng Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Pagkalat ng Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "absvalue"
+
+#. ~ "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 "defaults"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "eased"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Nakabukas)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 (na) mod"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Bigong ma-install ang $1 sa $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "I-install ang Mod: Bigong mahanap ang tunay na pangalan ng mod ng: $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"I-install ang Mod: Bigong mahanap ang akmang pangalan ng folder para sa "
+"modpack na $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Bigong makahanap ng valid na mod o modpack"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Bigong ma-install ang $1 bilang texture pack"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Bigong ma-install ang laro bilang $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Bigong ma-install ang mod bilang $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Bigong ma-install ang modpack bilang $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Nilo-load..."
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Nakasara ang listahan ng mga pampublikong server"
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr ""
+"Subukang buksan muli ang listahan ng pampublikong server at tingnan ang "
+"koneksyon mo sa internet."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Patungkol"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Mga Aktibong Nag-aambag"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Aktibong renderer:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Mga Core Developer"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Buksan ang User Data Directory"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Bubuksan ang directory na naglalaman ng mga user-provided na mundo,\n"
+"laro, mod, at texture pack sa isang file manager/explorer."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Mga Nakaraang Nag-ambag"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Mga Nakaraang Core Developer"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Mag-browse ng online content"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Content"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Isara ang Texture Pack"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Impormasyon:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Mga Naka-install na Package:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Walang mga kailangan."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Walang paglalarawan sa package"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "I-rename"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Burahin ang Package"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Gumamit ng Texture Pack"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Ianunsyo ang Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "I-bind ang Address"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Creative Mode"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Buksan ang Pinsala"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Mag-host ng Laro"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Mag-host ng Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Mag-install ng mga laro mula sa ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Bago"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Walang nagawa o napiling mundo!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Maglaro"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Port"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Pumili ng mga Mod"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Pumili ng Mundo:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Port ng Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Magsimula"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Address"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Linisin"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Creative mode"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Pinsala/PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Mga Paborito"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Di compatible na mga Server"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Sumali sa Laro"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Mga Pampublikong Server"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "I-refresh"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Burahin Paborito"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Paglalarawan sa Server"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D na Ulap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Lahat ng Pagsasaayos"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Antialiasing:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Kusang I-save ang Laki ng Screen"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Bilinear Filter"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Baguhin ang mga Key"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "Konektadong Salamin"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dynamic na mga anino"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Dynamic na mga anino: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Magagarang Dahon"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Mataas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Mababa"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Katamtaman"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmap + Aniso. Filter"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Walang Filter"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr "Walang Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Pag-highlight sa Node"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Pag-outline sa Node"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Wala"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Opaque na Dahon"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Opaque na Tubig"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Mga Particle"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Screen:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Pagsasaayos"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "Mga Shader"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Mga Shader (eksperimento)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Mga Shader (di available)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Simpleng Dahon"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Malinis na Liwanag"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Pagte-texture:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr "Tone Mapping"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Touchthreshold: (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Trilinear Filter"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "Napakataas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "Napakababa"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Nahahanginang Dahon"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Umaalong Tubig"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Nahahanginang Halaman"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Error sa koneksyon (nag-timeout?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Nag-timeout ang koneksyon."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Tapos na!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Ini-initialize ang mga node"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Ini-initialize ang mga node..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Nilo-load ang mga texture..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Rine-rebuild ang mga shader..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Error sa koneksyon (nag-timeout?)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "Di mahanap o ma-load ang laro: "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "Invalid na gamespec."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Main Menu"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Walang napiling mundo at walang binigay na address. Walang gagawin."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Masyadong mahaba ang pangalan ng player."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Mangyaring pumili po ng pangalan!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Bigong mabuksan ang binigay na password file: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Walang path sa mundo na tumugma sa binigay: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"Tingnan ang debug.txt para sa mga detalye."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Address: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Mode: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Pampubliko: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Pangalan ng Server: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "May naganap na serialization error:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Tinanggihan ang access: Dahilan: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Nakasara ang kusang pag-abante"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Nakabukas ang kusang pag-abante"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Nakatago ang mga block bound"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Ipinapakita ang mga block bound para sa lahat ng mga block"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Ipinapakita ang block bound para sa kasalukuyang block"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Ipinapakita ang mga block bound para sa mga malalapit na block"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Nakasara ang pag-update sa kamera"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Nakabukas ang pag-update sa kamera"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Bawal maipakita ang mga block bound (kailangan ng pribilehiyong "
+"'basic_debug')"
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Baguhin ang Password"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Nakasara ang cinematic mode"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Nakabukas ang cinematic mode"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Nadiskonekta ang client"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Nakasara ang scripting sa client side"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Kumokonekta sa server..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Bigong makakonekta dahil sa di matukoy na dahilan"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Magpatuloy"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Mga kontrol:\n"
+"- %s: abante paharap\n"
+"- %s: abante patalikod\n"
+"- %s: kumaliwa\n"
+"- %s: kumanan\n"
+"- %s: tumalon/umakyat\n"
+"- %s: maghukay/sumuntok\n"
+"- %s: maglagay/gumamit\n"
+"- %s: dahan-dahan/bumaba\n"
+"- %s: ihulog ang item\n"
+"- %s: inventory\n"
+"- Mouse: umikot/tumingin\n"
+"- Mouse wheel: pumili ng item\n"
+"- %s: chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Di maresolba ang address: %s"
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Ginagawa ang client..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Ginagawa ang server..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Nakatago ang debug info at profiler graph"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Ipinapakita ang debug info"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Nakatago ang debug info, profiler graph, at wireframe"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+"Mga Default na Kontrol:\n"
+"Kapag walang makikitang Menu:\n"
+"- isang pindot: i-activate ang button\n"
+"- dobleng pindot: ilagay/gamitin\n"
+"- padulasin ang daliri: tumingin-tingin sa paligid\n"
+"Kapag makikita ang Menu/Inventory:\n"
+"- dobleng pindot (sa labas):\n"
+" -->isara\n"
+"- pindutin ang stack, pindutin ang slot:\n"
+" --> ilipat ang stack\n"
+"- pindutin at i-drag, pindutin pangalawang daliri\n"
+" --> ilagay ang isang item sa slot\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Nakasara ang unlimited na viewing range"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Nakabukas ang unlimited na viewing range"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Ginagawa ang client..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Umalis sa Menu"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Umalis sa OS"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Nakasara ang fast mode"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Nakabukas ang fast mode"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Nakabukas ang fast mode (paalala: walang pribilehiyong 'fast')"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Nakasara ang fly mode"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Nakabukas ang fly mode"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Nakabukas ang fly mode (paalala: walang pribilehiyong 'fly')"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Nakasara ang hamog"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Nakabukas ang hamog"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Info ng laro:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Nakahinto ang laro"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Nagho-host na server"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Mga definition ng item..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Media..."
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Kasalukuyang sinara ng laro o mod ang minimap"
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multiplayer"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Nakasara ang noclip mode"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Nakabukas ang noclip mode"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Nakabukas ang noclip mode (paalala: walang pribilehiyong 'noclip')"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Mga definition ng node..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Sarado"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "Bukas"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Nakasara ang pitch move mode"
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Nakabukas ang pitch move mode"
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Ipinapakita ang profiler graph"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Remote na server"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Rineresolba ang address..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Sina-shutdown..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Singleplayer"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volume ng Tunog"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Naka-mute ang tunog"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Nakasara ang system ng tunog"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Di suportado ang system ng tunog sa build na ito"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Di na naka-mute ang tunog"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Baka ibang bersyon ng %s ang pinapatakbo ng server."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Bigong makakonekta sa %s dahil nakasara ang IPv6"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Bigong makakinig sa %s dahil nakasara ang IPv6"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Binago ang viewing range papuntang %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Nasa maximum na ang viewing range: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Nasa minimum na ang viewing range: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Binago ang volume papuntang %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Ipinapakita ang wireframe"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Kasalukuyang sinara ng laro o mod ang pag-zoom"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "sige"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Nakatago ang chat"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Ipinapakita ang chat"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Nakatago ang HUD"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Ipinapakita ang HUD"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Nakatago ang profiler"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Ipinapakita ang profiler (pahina %d ng %d)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Mga App"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Control"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Down"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "End"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Erase EOF"
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "Execute"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "Help"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "Home"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Accept"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME Convert"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME Mode Change"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME Nonconvert"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Left"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "Left Button"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Left Control"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "Left Menu"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "Left Shift"
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Left Windows"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "Menu"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "Middle Button"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr "Numpad *"
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr "Numpad +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr "Numpad -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Numpad ."
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr "Numpad /"
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr "Numpad 0"
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr "Numpad 1"
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr "Numpad 2"
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr "Numpad 3"
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "Numpad 4"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr "Numpad 5"
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr "Numpad 6"
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr "Numpad 7"
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "Numpad 8"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr "Numpad 9"
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr "OEM Clear"
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page down"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page up"
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Pause"
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Play"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "Print"
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "Return"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Right"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "Right Button"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "Right Control"
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "Right Menu"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "Right Shift"
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "Right Windows"
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "Select"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "Shift"
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Sleep"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "Snapshot"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Space"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "Tab"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Up"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr "X Button 1"
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr "X Button 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Nakatago ang minimap"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimap sa radar mode, Zoom x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minimap sa surface mode, Zoom x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Minimap sa texture mode"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Bigong mabuksan ang webpage"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Binubuksan ang webpage"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Tumuloy"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = bumaba"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Kusang abante"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Kusang talon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Pabalik"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Mga block bound"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Palitan ang kamera"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Utos"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Console"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Dec. range"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Dec. volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Dobleng pindutin ang \"tumalon\" para makalipad"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Ihulog"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Abante"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Inc. range"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Inc. volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventory"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Tumalon"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "May gamit na ang key"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Lokal na utos"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "I-mute"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Susunod na item"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Nakaraang item"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Pagpili sa saklaw"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Mag-screenshot"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Magdahan-dahan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "I-toggle ang HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "I-toggle ang chat log"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "I-toggle ang fast"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "I-toggle ang fly"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "I-toggle ang hamog"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "I-toggle ang minimap"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "I-toggle ang noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "I-toggle ang pitchmove"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "pumindot ng key"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Baguhin"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Bagong Password"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Lumang Password"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Di tugma ang mga password!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Umalis"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Naka-mute"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volume ng Tunog: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "fil"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Mangyaring pumili po ng pangalan!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Inaayos ang posisyon ng virtual joystick.\n"
+"Kung nakasara, isesentro ang virtual joystick sa posisyon na unang pinindot."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Gamitin ang virtual joystick para i-trigger ang button na "
+"\"Aux1\".\n"
+"Kung nakabukas, pipindutin din ng virtual joystick ang button na \"Aux1\" "
+"kapag nasa labas ng pinakabilog."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+"(X,Y,Z) offset ng fractal mula sa sentro ng mundo sa mga unit ng 'scale'.\n"
+"Pwedeng magamit para ilipat ang isang partikular na punto papunta sa (0,0) "
+"para\n"
+"makagawa ng isang maayos na spawn point, o para payagan ang\n"
+"pag-zoom papalapit sa naturang punto sa pamamagitan ng pagtaas sa 'scale'.\n"
+"Ginawa ang default para sa maayos na spawn point para sa\n"
+"mga Mandelbrot set na may mga default na parametro,\n"
+"posibleng kailangang baguhin ito sa ilang mga sitwasyon.\n"
+"Mula -2 hanggang 2 ang tipikal na saklaw. I-multiply sa 'scale' para sa "
+"offset sa mga node."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"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) scale ng fractal sa mga node.\n"
+"2 hanggang 3 beses na mas malaki ang aktwal na laki ng fractal.\n"
+"Pwede sobrang laki ang mga bilang nito, hindi naman dapat\n"
+"sinlaki ng mundo ang fractal.\n"
+"Palakihin ito para mag-zoom sa mga detalye ng fractal.\n"
+"Para sa isang hugis na inipit taas-baba ang default,\n"
+"na bagay para sa mga isla, itakda ang lahat ng 3 bilang nang magkakapareho "
+"para sa raw na hugis."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+"2D noise na kumokonttol sa hugis/laki ng mga mala-gulugod na kabundukan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2D noise na kumokontrol sa hugis/laki ng mga malalambot na burol."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2D noise na kumokontrol sa hugis/laki ng mga mala-hagdang kabundukan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+"2D noise na kumokontrol sa laki/paglitaw ng mga mala-gulugod na kabundukan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2D noise na kumokontrol sa laki/paglitaw ng mga malalambot na burol."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+"2D noise na kumokontrol sa laki/paglitaw ng mga mala-hagdang kabundukan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "2D noise na nagpapakita sa mga lambak-ilog at daluyan."
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "Mga 3D na ulap"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr "3D mode"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Tindi ng parallax ng 3D mode"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "3D noise na gumagawa sa mga malalaking kweba."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"3D noise na gumagawa sa istraktura at taas ng bundok.\n"
+"Ito rij ang gumagawa sa istraktura ng terrain ng bundok sa mga lumulutang na "
+"lupa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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 noise na gumagawa sa istraktura ng mga lumulutang na lupa.\n"
+"Kung binago sa default, posibleng kailangang baguhin ang noise 'scale' (0.7 "
+"sa default),\n"
+"dahil mas maganda na kalalabasan nito kung ang noise ay may value\n"
+"na nasa pagitan ng -2.0 at 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+"3D noise na gumagawa sa istraktura ng mga dingding ng bangin sa mga ilog."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3D noise na gumagawa sa terrain."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"3D noise para sa mga overhang ng bundok, dalisdis, atbp. Madalas na maliit "
+"ang mga pagbabago."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3D noise na nagdedetermina sa bilang ng mga dungeon kada mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"Suporta sa 3D.\n"
+"Kasalukuyang suportado:\n"
+"- wala: walang 3d output.\n"
+"- anaglyph: kulay cyan/magenta color na 3d.\n"
+"- interlaced: linyang odd/even na nakabase sa suporta sa polarisation "
+"screen.\n"
+"- topbottom: hatiin ang screen taas-baba.\n"
+"- sidebyside: hatiin ang screen gilid sa gilid.\n"
+"- crossview: naka-cross eye na 3d\n"
+"- pageflip: nakabase sa quadbuffer na 3d.\n"
+"Tandaan na dapat nakabukas ang mga shader para gumana ang interlaced mode."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+"Piniling seed ng mapa para sa bagong mapa, ibakante para kahit ano.\n"
+"Io-override kapag gumagawa ng bagong mundo sa main menu."
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+"Ipapakitang mensahe sa lahat ng mga client sakaling mag-crash ang server."
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+"Mensaheng ipapakita sa lahat ng mga client kapag nag-shutdown ang server."
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr "Pagitan ng ABM"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Budget sa oras ng ABM"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Pinakalimit ng nakapilang block na lalabas"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr "Acceleration sa ere"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Acceleration ng gravity, sa node kada segundo kada segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr "Mga Modifier sa Aktibong Block"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr "Pagitan sa management sa aktibong block"
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr "Saklaw na aktibong block"
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr "Saklaw na mapapadala sa aktibong bagay"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+"Address na kokonektahan.\n"
+"Ibakante para magsimula ng lokal na server.\n"
+"Tandaan na ang ino-override ng pagsasaayos na ito ang address field sa main "
+"menu."
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Nagdadagdag ng mga particle habang naghuhukay ng node."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+"Ayusin ang dpi configuration ayon sa screen mo (non X11/Android lang) hal. "
+"para sa mga 4k screen."
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Ayusin ang na-detect na display density, ginagamit para sa pag-scale sa mga "
+"UI element."
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+"Ayusin ang density ng layer ng lumulutang na lupa.\n"
+"Pataasin ang value para pataasin ang density.\n"
+"Pwedeng maging postibo o negatibo.\n"
+"Value = 0.0: 50% ng volume ay lumulutang na lupa.\n"
+"Value = 2.0 (o mas mataas, depende sa 'mgv7_np_floatland', palaging subukan "
+"para makasiguro)\n"
+"gumagawa ng solidong layer ng lumulutang na lupa."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Idagdag ang pangalan ng item"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr "Karagdagan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Binabago ang kurba ng liwanag sa pamamagitan ng paglapat ng 'pagtama sa "
+"gamma' dito.\n"
+"Mas mataas ang value, mas maliwanag ang mga katamtaman at mabababang lebel "
+"ng liwanag.\n"
+"Kapag 1.0 ang value, walang mababago sa kurba ng liwanag.\n"
+"Malaki ang epekto nito sa liwanag ng araw at artipisyal,\n"
+"at maliit lang ang epekto nito sa natural na liwanag sa gabi."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Palaging lumipad at mabilis"
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr "Ambient occlusion gamma"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Dami ng mga mensaheng pwede maipadala ng isang player kada 10 segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Ina-amplify ang mga lambak."
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr "Anisotropic filtering"
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr "Ianunsyo ang server"
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr "Ianunsyo sa serverlist na ito."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Idagdag ang pangalan ng item"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Idagdag ang pangalan ng item sa tooltip."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Noise ng mga puno ng mansanas"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Inertia ng braso"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Inertia ng braso, nagbibigay ng mas makatotohanang paggalaw sa\n"
+"braso kapag gumagalaw ang kamera."
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr "Tanunging kung kokonekta uli matapos mag-crash"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"Sa layong ito, agresibong iooptimisa ng server ang mga\n"
+"block na ipapadala sa client.\n"
+"Posibleng humusay ang performance kapag mababa ang value, pero may mga "
+"makikita lang\n"
+"mga glitch sa pag-render (may mga block na hindi mare-render sa\n"
+"ilalim ng tubig at kweba, paminsan-minsan sa lupa rin).\n"
+"Kung lagpas ang value sa max_block_send_distance,\n"
+"isasara ang pag-ooptimisa.\n"
+"Tinukoy sa mga mapblock (16 na node)."
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Key sa kusang pag-abante"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Kusang tumalon sa mga harang na isang node."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Kusang mag-ulat sa serverlist."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Kusang i-save ang laki ng screen"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Kusang mag-scale"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1 key"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Aux1 key para sa pag-akyat/pagbaba"
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr "Key sa pag-atras"
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr "Basehang lebel ng lupa"
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr "Basehang taas ng terrain."
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr "Mga pribilehiyong basic"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Noise ng dalampasigan"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Threshold ng noise ng dalampasigan"
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr "Bilinear filtering"
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr "Bind address"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Mga parametro sa noise ng temperatura at halumigmig sa Biome API"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Noise ng biome"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Layo ng pag-optimisa sa pagpadala ng block"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Path ng font na bold at italic"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Path ng monospace font na bold at italic"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Path ng font na bold"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Path ng monospace font na bold"
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr "Build sa player"
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr "Builtin"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Palitan ang kamera"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Layo sa node ng 'near clipping plane' ng kamera, mula 0 hanggang 0.25\n"
+"Gagana lang sa mga GLES platform. Hindi kailangang baguhin ito ng karamihan "
+"sa mga user.\n"
+"Posibleng mabawasan ang pag-artifact sa mga mahihinang GPU kapag tinaasan "
+"ito.\n"
+"0.1 = Default, 0.25 = Magandang value para sa mga mahihinang tablet."
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "Pag-smooth sa kamera"
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr "Pag-smooth sa kamera sa cinematic mode"
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr "Toggle key sa pag-update sa kamera"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Noise ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr "Noise ng kweba #1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr "Noise ng kweba #2"
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr "Lapad ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr "Cave1 noise"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Cave2 noise"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Limit ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Noise ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Taper ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Threshold ng kweba"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Mataas na limit ng kweba"
+
+#: 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 ""
+"Gitna ng saklaw ng boost sa kurba ng liwanag.\n"
+"Kung saan 0.0 ang pinakamababang lebel ng liwanag, 1.0 naman ang "
+"pinakamataas."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Threshold sa mensahe sa oras ng utos sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Mga utos sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Laki ng font ng chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Key ng chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Lebel ng pag-log sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Limit sa bilang ng mga mensahe sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Format ng mensahe sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Threshold sa pagsipa sa mensahe sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Max na haba ng mensahe sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Toggle key sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Mga weblink sa chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr "Laki ng chunk"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr "Cinematic mode"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr "Key sa cinematic mode"
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr "Malilinis na transparent na texture"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Nakabukas ang napipindot na mga weblink (gitnang pindot o Ctrl+kaliwang "
+"pindot) sa chat console output."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr "Client at Server"
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr "Pag-mod ng client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Mga restriksyon sa pag-mod ng client side"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Restriksyon sa saklaw ng pagtingin sa node ng client side"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Pag-mod ng client"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Bilis ng pag-akyat"
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr "Radius ng ulap"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr "Mga ulap"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr "Epekto sa client side ang mga ulap."
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr "Mga ulap sa menu"
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr "May kulay na hamog"
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "Makukulay na anino"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Mga dekorasyon"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Antialiasing:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Mga Laro"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Ipinapakita ang HUD"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Malinis na Liwanag"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Pag-highlight sa Node"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Screen:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Mag-screenshot"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Mag-host ng Server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- Pangalan ng Server: "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Paglalarawan sa Server"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Port ng Server"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Pagsasaayos"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "Basic"
+#~ msgstr "Basic"
+
+#~ msgid "Connect"
+#~ msgstr "Kumonekta"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Mag-download ng laro, tulad ng Minetest Game, mula sa minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Mag-download ng isa mula sa minetest.net"
+
+#~ msgid "Enter "
+#~ msgstr "Ipasok "
+
+#~ msgid "Game"
+#~ msgstr "Laro"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Mga keybinding. (Kung pumalpak ang menu na ito, tanggalin ang laman ng "
+#~ "minetest.conf)"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Sasali ka sa server na ito na may pangalang \"%s\" sa unang pagkakataon.\n"
+#~ "Kung tutuloy ka, may magagawang bagong account sa server na ito gamit ang "
+#~ "iyong mga credential.\n"
+#~ "Mangyaring i-type muli ang password mo at pindutin ang 'Magparehistro at "
+#~ "Sumali' para kumpirmahin ang paggawa sa account, o pindutin ang "
+#~ "'Ikansela' para pigilan ito."
diff --git a/po/fr/minetest.po b/po/fr/minetest.po
index bb4f02255..815a0a4c2 100644
--- a/po/fr/minetest.po
+++ b/po/fr/minetest.po
@@ -1,15 +1,10 @@
-# French translations for minetest-c55 package.
-# Copyright (C) 2011 celeron
-# This file is distributed under the same license as the minetest-c55 package.
-# Cyriaque 'Cisoun' Skrapits <cysoun@gmail.com>, 2011
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.0.0\n"
+"Project-Id-Version: French (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-07-13 16:41+0000\n"
-"Last-Translator: Jean-Baptiste <jean-baptiste@holcroft.fr>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-24 18:04+0000\n"
+"Last-Translator: waxtatect <piero@live.ie>\n"
"Language-Team: French <https://hosted.weblate.org/projects/minetest/minetest/"
"fr/>\n"
"Language: fr\n"
@@ -17,35 +12,134 @@ 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 2.8-dev\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Effacer la file de sortie de message du tchat"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Commande vide."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Quitter vers le menu principal"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Commande invalide : "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Commande émise : "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Liste des joueurs en ligne"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Joueurs en ligne : "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "La file de sortie de message du tchat est maintenant vide."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Cette commande est désactivée par le serveur."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Réapparaître"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Vous êtes mort"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Commandes disponibles :"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Commandes disponibles : "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Commande non disponible : "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Obtenir de l'aide pour les commandes"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Utiliser « .help <cmd> » pour obtenir plus d'informations, ou « .help all » "
+"pour tout lister."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "OK"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "< aucun disponible >"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Une erreur est survenue avec un script Lua, il peut s'agir d'un mod :"
+msgid "An error occurred in a Lua script:"
+msgstr "Une erreur est survenue dans un script Lua :"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "Une erreur est survenue :"
+msgid "An error occurred:"
+msgstr "Une erreur est survenue :"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Menu principal"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "OK"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Se reconnecter"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "Le serveur souhaite rétablir une connexion :"
+msgstr "Le serveur souhaite rétablir une connexion :"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Chargement..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr "Une nouvelle $1 version est disponible"
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr "Mods client"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+"Version installée : $1\n"
+"Nouvelle version : $2\n"
+"Visiter $3 pour savoir comment obtenir la nouvelle version et rester à jour "
+"des fonctionnalités et des corrections de bogues."
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr "Plus tard"
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr "Jamais"
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -60,9 +154,8 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr "Le serveur supporte les versions de protocole entre $1 et $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
-msgstr ""
-"Rechargez la liste des serveurs publics et vérifiez votre connexion Internet."
+msgid "Visit website"
+msgstr "Visiter le site web"
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -72,145 +165,502 @@ msgstr "Nous supportons seulement la version du protocole $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Nous supportons seulement les versions du protocole entre $1 et $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr "(Activé, a une erreur)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr "(Insatisfait)"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Annuler"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Dépend de :"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Dépend de :"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Désactiver les packs de mods"
+msgid "Disable all"
+msgstr "Tout désactiver"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Activer le pack de mods"
+msgid "Disable modpack"
+msgstr "Désactiver le pack de mods"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Tout activer"
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Activer le pack de mods"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Échec du chargement du mod \"$1\" car il contient des caractères non-"
+"Échec du chargement du mod « $1 » car il contient des caractères non "
"autorisés.\n"
-"Seulement les caractères alphanumériques [a-z0-9_] sont autorisés."
+"Seuls les caractères alphanumériques [a–z0–9_] sont autorisés."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Rechercher des mods"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Cacher le jeu"
+msgid "Mod:"
+msgstr "Mod :"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Cacher le contenu du mod"
+msgid "No (optional) dependencies"
+msgstr "Pas de dépendances (optionnelles)"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr "Mod :"
+msgid "No game description provided."
+msgstr "Pas de description du jeu fournie."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Pas de dépendances"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No modpack description provided."
+msgstr "Aucune description fournie pour le pack de mods."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Pas de dépendances optionnelles"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dépendances optionnelles :"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
-msgstr "Enregistrer"
+msgstr "Sauvegarder"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
-msgstr "Sélectionner un monde :"
+msgstr "Monde :"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
msgstr "activé"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "« $1 » existe déjà. Voulez-vous l'écraser ?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Les dépendances $1 et $2 vont être installées."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 par $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 en téléchargement,\n"
+"$2 mis en attente"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "Téléchargement de $1…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+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 "$1 sera installé, et les dépendances de $2 seront ignorées."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Tous les paquets"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Déjà installé"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Retour au menu principal"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Jeu de base :"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB n'est pas disponible quand Minetest est compilé sans cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Téléchargement…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Échec du téléchargement de $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Jeux"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Installer"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Installer $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Installer les dépendances manquantes"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Installation : type de fichier non supporté ou archive endommagée"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Aucun paquet n'a pu être récupéré"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Aucun résultat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Aucune mise à jour"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Non trouvé"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Écraser"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Veuillez vérifier que le jeu de base est correct."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "En file d'attente"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Packs de textures"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Désinstaller"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Mettre à jour"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Tout mettre à jour [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Voir plus d'informations dans un navigateur web"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Le monde \"$1\" existe déjà"
+msgstr "Le monde « $1 » existe déjà"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Terrain supplémentaire"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Refroidissement en altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Faible humidité en altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Mélange de biomes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Cavernes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Grottes"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Créer"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Téléchargez un jeu, comme minetest_game, depuis minetest.net"
+msgid "Decorations"
+msgstr "Décorations"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Téléchargez-en un depuis minetest.net"
+msgid "Development Test is meant for developers."
+msgstr "« Development Test » est destiné aux développeurs."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Jeu"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Donjons"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Terrain plat"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Masses de terrains flottants dans le ciel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Terrains flottants (expérimental)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Générer un terrain non fractal : océans et souterrains"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Collines"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Rivières irrigantes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Augmente l'humidité autour des rivières"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr "Installer un jeu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr "Installer un autre jeu"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Lacs"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"Humidité basse et chaleur élevée rendent les rivières peu profondes ou sèches"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Générateur de terrain"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Drapeaux de génération de terrain"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Montagnes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Coulée de boue"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Réseau de tunnels et de grottes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Aucun jeu sélectionné"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Réduit la chaleur avec l'altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Réduit l'humidité avec l'altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Rivières"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Nom du monde manquant ou aucun jeu sélectionné"
+msgid "Sea level rivers"
+msgstr "Rivières au niveau de la mer"
#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Graine"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Avertissement : le jeu minimal est fait pour les développeurs."
+msgid "Smooth transition between biomes"
+msgstr "Transition progressive entre les biomes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Structures apparaissant sur le sol (sans effet sur la création d'arbres et "
+"d'herbes de la jungle par v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+"Structures apparaissant sur le terrain, généralement des arbres et des "
+"plantes"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Tempéré, désertique"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Tempéré, désertique, jungle"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Tempéré, désertique, jungle, toundra, taïga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Érosion du sol"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Arbres et herbes de la jungle"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Varier la profondeur fluviale"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Très grandes cavernes profondes souterraines"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Nom du monde"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Vous n'avez pas de jeux installés."
+msgid "You have no games installed."
+msgstr "Vous n'avez pas de jeu installé."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "Êtes-vous sûr de vouloir supprimer \"$1\" ?"
+msgstr "Êtes-vous sûr de vouloir supprimer « $1 » ?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Supprimer"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Le gestionnaire de mods n'a pas pu supprimer \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "Gestionnaire de mods : échec de la suppression de « $1 »"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Gestionnaire de mods : chemin de mod invalide \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "Gestionnaire de mods : chemin invalide de « $1 »"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "Supprimer le monde \"$1\" ?"
+msgstr "Supprimer le monde « $1 » ?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Confirmer le mot de passe"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr "Rejoindre $1"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr "Nom manquant"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nom"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Mot de passe"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr "Les mots de passe ne correspondent pas"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr "S'inscrire"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Accepter"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr "Renommer le pack de mods :"
+msgstr "Renommer le pack de mods :"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" n'est pas un drapeau valide."
+#: 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 ""
+"Ce pack de mods a un nom explicitement donné dans son fichier modpack.conf "
+"qui remplacera tout renommage effectué ici."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr "(Aucune description donnée de l'option)"
+msgstr "(Aucune description du paramètre donnée)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Bruit 2D"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
@@ -218,9 +668,17 @@ msgstr "< Revenir aux paramètres"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr "Naviguer"
+msgstr "Parcourir"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr "Contenu : Jeux"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr "Contenu : Mods"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Désactivé"
@@ -233,35 +691,20 @@ msgid "Enabled"
msgstr "Activé"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
-"Le format est 3 nombres séparés par des virgules et entre les parenthèses."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Format : <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Lacunarity"
+msgstr "Lacunarité"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Jeux"
+msgid "Octaves"
+msgstr "Octaves"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mods"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Décalage"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-"Éventuellement, l'option \"lacunarity\" peut être jointe par une virgule "
-"d'en-tête."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Veuillez séparer les drapeaux par des virgules dans la liste."
+msgid "Persistence"
+msgstr "Persistance"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -272,238 +715,341 @@ msgid "Please enter a valid number."
msgstr "Veuillez entrer un nombre valide."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Les valeurs possibles sont : "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "Réinitialiser"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Échelle"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Rechercher"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Sélectionner un chemin"
+msgid "Select directory"
+msgstr "Choisir un répertoire"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Choisir un fichier"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Montrer les noms techniques"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "La valeur doit être supérieure à $1."
+msgid "The value must be at least $1."
+msgstr "La valeur doit être au moins $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "La valeur doit être inférieure à $1."
+msgid "The value must not be larger than $1."
+msgstr "La valeur ne doit pas être supérieure à $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Installation d'un mod : type de fichier non supporté \"$1\" ou archive "
-"endommagée"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Écart X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Écart Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Écart Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Valeur absolue"
+
+#. ~ "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 "Paramètres par défaut"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "Lissé"
-#: builtin/mainmenu/modmgr.lua
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Activé)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mods"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Échec de l'installation de $1 vers $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Installation d'un mod : fichier : \"$1\""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Installer mod : impossible de trouver le nom réel du mod pour : $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Installation d'un mod : impossible de trouver le vrai nom du mod pour : $1"
+"Installer mod : impossible de trouver un nom de dossier valide pour le pack "
+"de mods $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
-"Installation un mod : impossible de trouver un nom de dossier valide pour le "
-"pack de mods $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Impossible de trouver un mod ou un pack de mods valide"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Fermer le magasin"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Impossible d'installer un $1 comme un pack de textures"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Téléchargement de $1, veuillez patienter..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Impossible d'installer un jeu comme un $1"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Installer"
-
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Page $1 de $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Impossible d'installer un mod comme un $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Note"
-
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Rechercher"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Impossible d'installer un pack de mods comme un $1"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Nom court :"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Chargement…"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Installé avec succès :"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "La liste des serveurs publics est désactivée"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Non-trié"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr ""
+"Essayer de réactiver la liste des serveurs et vérifier votre connexion "
+"Internet."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Ré-installer"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "À propos"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Contributeurs actifs"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Moteur de rendu actif :"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Développeurs principaux"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Crédits"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Répertoire de données utilisateur"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+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, les jeux, les mods et les packs "
+"de textures\n"
+"fournis par l'utilisateur dans un gestionnaire de fichiers/explorateur."
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Anciens contributeurs"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
-msgstr "Anciens développeurs"
+msgstr "Anciens développeurs principaux"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Mods installés :"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr "Partager le journal de débogage"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Informations du mod :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Parcourir le contenu en ligne"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Pas de description disponible"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Contenu"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Renommer"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Sélectionner un fichier de mod :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Désactiver le pack de textures"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Désinstaller le mod"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informations :"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Désinstaller le pack de mods"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Paquets installés :"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Adresse / Port"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Pas de dépendances."
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Client"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Pas de description du paquet disponible"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Rejoindre"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Mode créatif"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Dégâts activés"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Supprimer favori"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Renommer"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Favoris :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Désinstaller le paquet"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Nom / Mot de passe :"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Utiliser un pack de texture"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "Combat activé"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Annoncer le serveur"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Adresse à assigner"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Configurer"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Mode créatif"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Activer les dégâts"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nom / Mot de passe"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Héberger une partie"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Héberger le serveur"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Installer à partir de ContentDB"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nouveau"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Aucun monde créé ou sélectionné !"
+msgstr "Aucun monde créé ou sélectionné !"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Jouer"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Public"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Sélectionner les mods"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
-msgstr "Sélectionner un monde :"
+msgstr "Sélectionner un monde :"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Serveur"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Port du serveur"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "Démarrer"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Adresse"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Effacer"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Mode créatif"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Dégâts / JcJ"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Favoris"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Serveurs incompatibles"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Rejoindre une partie"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr "Connexion"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Serveurs publics"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Actualiser"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr "Supprimer le favori"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Description du serveur"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr "(support du jeu requis)"
+
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
-msgstr "2x"
+msgstr "2×"
#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
@@ -511,57 +1057,69 @@ msgstr "Nuages en 3D"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr "4x"
+msgstr "4×"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr "8x"
+msgstr "8×"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Réglages avancés"
+msgid "All Settings"
+msgstr "Tous les paramètres"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr "Anti-crénelage :"
+msgstr "Anticrénelage :"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Êtes-vous sûr de vouloir réinitialiser votre monde ?"
+msgid "Autosave Screen Size"
+msgstr "Sauv. autom. de la taille d'écran"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Filtrage bilinéaire"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Placage de relief"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr "Changer les touches"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
msgstr "Verre unifié"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Ombres dynamiques"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr "Ombres dynamiques :"
+
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr "Arbres détaillés"
+msgstr "Feuilles détaillées"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Élevées"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Basses"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Moyennes"
#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
-msgstr "MIP mapping"
+msgstr "MIP map"
#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap + Aniso. Filter"
msgstr "MIP map + anisotropie"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Non"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr "Aucun filtre"
@@ -577,45 +1135,45 @@ msgstr "Surbrillance des blocs"
msgid "Node Outlining"
msgstr "Non-surbrillance des blocs"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Aucun"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "Mappage de texture"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr "Arbres minimaux"
+msgstr "Feuilles opaques"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
msgstr "Eau opaque"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Occlusion parallaxe"
-
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Activer les particules"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Réinitialiser le monde"
+msgid "Screen:"
+msgstr "Écran :"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
-msgstr "Réglages"
+msgstr "Paramètres"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
msgstr "Shaders"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Shaders (expérimental)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Shaders (indisponible)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
-msgstr "Arbres simples"
+msgstr "Feuilles simples"
#: builtin/mainmenu/tab_settings.lua
msgid "Smooth Lighting"
@@ -623,107 +1181,79 @@ msgstr "Lumière douce"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
-msgstr "Textures :"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Pour activer les shaders, le pilote OpenGL doit être utilisé."
+msgstr "Texturisation :"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr "mappage tonal"
+msgstr "Mappage tonal"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "Sensibilité du toucher (px)"
+msgid "Touch threshold (px):"
+msgstr "Sensibilité tactile (px) :"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
msgstr "Filtrage trilinéaire"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Feuilles ondulantes"
+msgid "Very High"
+msgstr "Très élevées"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Plantes ondulantes"
+msgid "Very Low"
+msgstr "Très basses"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Eau ondulante"
+msgid "Waving Leaves"
+msgstr "Feuilles ondulantes"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Oui"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Configurer les mods"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Menu principal"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Démarrer une partie solo"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Jouer"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Solo"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Pas d'information disponible"
+msgid "Waving Liquids"
+msgstr "Liquides ondulants"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Sélectionner un pack de textures :"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Plantes ondulantes"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Packs de textures"
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr "Connexion interrompue (erreur de protocole ?)."
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Connexion perdue."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr "Terminé !"
+msgstr "Terminé !"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Initialisation des blocs"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Initialisation des blocs..."
+msgstr "Initialisation des blocs…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr "Chargement des textures..."
+msgstr "Chargement des textures…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Reconstruction des shaders..."
+msgstr "Reconstruction des shaders…"
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
-msgstr "Erreur de connexion (perte de connexion ?)"
+msgstr "Erreur de connexion (perte de connexion ?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Le jeu \" n'a pas pu être trouvé"
+msgid "Could not find or load game: "
+msgstr "Impossible de trouver ou charger le jeu : "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
-msgstr "gamespec invalide."
+msgstr "Jeu spécifié invalide."
#: src/client/clientlauncher.cpp
msgid "Main Menu"
@@ -738,72 +1268,187 @@ msgid "Player name too long."
msgstr "Nom du joueur trop long."
#: src/client/clientlauncher.cpp
-msgid "Provided world path doesn't exist: "
-msgstr "Le chemin du monde spécifié n'existe pas : "
+msgid "Please choose a name!"
+msgstr "Veuillez choisir un nom !"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "yes"
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Le fichier de mot de passe fourni n'a pas pu être ouvert : "
-#: src/game.cpp
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Le chemin du monde spécifié n'existe pas : "
+
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Voir debug.txt pour plus d'informations."
+"Voir « debug.txt » pour plus d'informations."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Changer les touches"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "– Adresse : "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "– Mode : "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "– Port : "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "– Public : "
-#: src/game.cpp
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "– JcJ : "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "– Nom du serveur : "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Une erreur de sérialisation est survenue :"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Accès refusé. Raison : %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Marche automatique désactivée"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Marche automatique activée"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Limites des blocs cachées"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Limites des blocs affichées pour tous les blocs"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Limites des blocs affichées pour le bloc actuel"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Limites des blocs affichées pour les blocs voisins"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Mise à jour de la caméra désactivée"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Mise à jour de la caméra activée"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Impossible d'afficher les limites des blocs (désactivé par un jeu ou un mod)"
+
+#: src/client/game.cpp
msgid "Change Password"
-msgstr "Changer votre mot de passe"
+msgstr "Changer le mot de passe"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Mode cinématique désactivé"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Mode cinématique activé"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Client déconnecté"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Les scripts côté client sont désactivés"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "Connexion au serveur..."
+msgstr "Connexion au serveur…"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "La connexion a échoué pour une raison inconnue"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "Continuer"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Contrôles :\n"
+"– %s : avancer\n"
+"– %s : reculer\n"
+"– %s : à gauche\n"
+"– %s : à droite\n"
+"– %s : sauter/grimper\n"
+"– %s : creuser/actionner\n"
+"– %s : placer/utiliser\n"
+"– %s : marcher lentement/descendre\n"
+"– %s : lâcher un objet\n"
+"– %s : inventaire\n"
+"– Souris : tourner/regarder\n"
+"– Molette souris : sélectionner un objet\n"
+"– %s : tchat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Impossible de résoudre l'adresse : %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr "Création du client..."
+msgstr "Création du client…"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Création du serveur..."
+msgstr "Création du serveur…"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Contrôles:\n"
-"- ZQSD : se déplacer\n"
-"- Espace : sauter/grimper\n"
-"- Maj. : marcher lentement/descendre\n"
-"- A : lâcher l'objet en main\n"
-"- I : inventaire\n"
-"- Souris : tourner/regarder\n"
-"- Souris gauche : creuser/attaquer\n"
-"- Souris droite : placer/utiliser\n"
-"- Molette souris : sélectionner objet\n"
-"- T : discuter\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Informations de débogage et graphique du profileur cachés"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Informations de débogage affichées"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Informations de débogage, graphique du profileur et fils de fer cachés"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -818,508 +1463,819 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"Touches par défaut :\n"
-"Sans menu visible :\n"
-"- un seul appui : touche d'activation\n"
-"- double-appui : placement / utilisation\n"
-"- Glissement du doigt : regarder autour\n"
-"Menu / Inventaire visible :\n"
-"- double-appui (en dehors) : fermeture\n"
-"- objet(s) dans l'inventaire : déplacement\n"
-"- appui, glissement et appui : placement d'un seul item par slot\n"
-
-#: src/game.cpp
+"Touches par défaut :\n"
+"Sans menu visible :\n"
+"– un seul appui : touche d'activation\n"
+"– double-appui : placement / utilisation\n"
+"– Glissement du doigt : regarder autour\n"
+"Menu / Inventaire visible :\n"
+"– double-appui (en dehors) : fermeture\n"
+"– objets dans l'inventaire : déplacement\n"
+"– appui, glissement et appui : pose d'un seul objet par emplacement\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "La limite de vue a été activée"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "La limite de vue a été désactivée"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr "Erreur de création du client : %s"
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr "Quitter vers le menu"
+msgstr "Menu principal"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Quitter le jeu"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr "Définitions des items..."
-
-#: src/game.cpp
-msgid "KiB/s"
-msgstr "Ko/s"
-
-#: src/game.cpp
-msgid "Media..."
-msgstr "Média..."
-
-#: src/game.cpp
-msgid "MiB/s"
-msgstr "Mo/s"
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Mode rapide désactivé"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Définitions des blocs..."
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Mode rapide activé"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Résolution de l'adresse..."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Mode rapide activé (note : pas de privilège « fast »)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Réapparaître"
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Mode vol désactivé"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Fermeture du jeu..."
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Mode vol activé"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Volume du son"
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Mode vol activé (note : pas de privilège « fly »)"
-#: src/game.cpp
-msgid "You died."
-msgstr "Vous êtes mort."
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Brouillard désactivé"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "ok"
-
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Entrer "
-
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Procéder"
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Brouillard activé"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Use\" = descendre"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Reculer"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Infos de jeu :"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Chatter"
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Jeu en pause"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Commande"
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Serveur hôte"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Console"
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Définitions des objets…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Double-appui sur \"saut\" pour voler"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "Kio/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Lâcher"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Média…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Avancer"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "Mio/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventaire"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Mini-carte actuellement désactivée par un jeu ou un mod"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Sauter"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multijoueur"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Touche déjà utilisée"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Collisions activées"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr "Raccourcis"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Collisions désactivées"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Gauche"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Collisions activées (note : pas de privilège « noclip »)"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Afficher les stacks"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Définitions des blocs…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Distance de vue"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Désactivé"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Droite"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Activé"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Marcher lentement"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Mode mouvement de tangage désactivé"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Mode cinématique"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Mode mouvement de tangage activé"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Mode rapide"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Graphique du profileur affiché"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Voler"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Serveur distant"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Mode sans collision"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Résolution de l'adresse…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Utiliser"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Fermeture du jeu…"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoomer"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Solo"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "appuyez sur une touche"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volume du son"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Changer"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Son coupé"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Le système audio est désactivé"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Cette compilation ne gère pas l'audio du système"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Son rétabli"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Le serveur utilise probablement une version différente de %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Impossible de se connecter à %s car IPv6 est désactivé"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Impossible d’écouter sur %s car IPv6 est désactivé"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Distance de vue réglée sur %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Distance de vue maximale : %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Distance de vue minimale : %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Volume réglé sur %d %%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Fils de fer affichés"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Zoom actuellement désactivé par un jeu ou un mod"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ok"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Confirmer le mot de passe"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Tchat caché"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nouveau mot de passe"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Tchat affiché"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Ancien mot de passe"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Interface cachée"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Les mots de passe ne correspondent pas !"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Interface affichée"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Quitter"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profileur caché"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Volume du son : "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profileur affiché (page %d1 sur %d2)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Applications"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attente"
-
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+msgid "Backspace"
msgstr "Retour"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Verr Maj"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Vider"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Virgule"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Verr. Maj"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Contrôle"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convertir"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "Vider sélection"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Bas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Fin"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Écraser l'OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Échap"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Écraser l'EOF"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Exécuter"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Aide"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Origine"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insérer"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Accepter IME"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Convertir IME"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Échap. IME"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Changer de mode IME"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "Non converti IME"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insérer"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Gauche"
+
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr "Bouton gauche"
+msgstr "Clic gauche"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Contrôle gauche"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr "Menu gauche"
+msgstr "Menu Gauche"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
-msgstr "Shift gauche"
+msgstr "Maj. gauche"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Windows gauche"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr "Bouton du milieu"
-
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Moins"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Changer de mode"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Suivant"
+msgstr "Clic central"
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Non converti"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Verr Num"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Pavé num. *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Pavé num. +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Pavé num. -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Pavé num. ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Pavé num. /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Pavé num. 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Pavé num. 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Pavé num. 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Pavé num. 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Pavé num. 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Pavé num. 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Pavé num. 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Pavé num. 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Pavé num. 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Pavé num. 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Bas de page"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Haut de page"
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Point"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plus"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Jouer"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr "Imprimer"
-
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Précédent"
+msgstr "Capture d'écran"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Retour"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Droite"
+
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr "Bouton droit"
+msgstr "Clic droit"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Contrôle droite"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Menu droite"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
-msgstr "Shift droit"
+msgstr "Majuscule droit"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Windows droite"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Verr. défilement"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Sélectionner"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
-msgstr "Shift"
+msgstr "Maj."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Mise en veille"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Capture d'écran"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Espace"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulation"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Haut"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "Bouton X 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "Bouton X 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Mini-carte cachée"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Mini-carte en mode radar, zoom ×%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Mini-carte en mode surface, zoom ×%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Mini-carte en mode texture"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Échec de l'ouverture de la page Web"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Ouverture de la page web"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Procéder"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "« Aux1 » = descendre"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Avancer autom."
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Sauts automatiques"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Reculer"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Limites des blocs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Changer la caméra"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Tchat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Commande"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Console"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Réd. la distance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Réd. le volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Double-appui sur « saut » pour voler"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Lâcher"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Avancer"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Augm. la distance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Augm. le volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventaire"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Sauter"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Touche déjà utilisée"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr "Raccourcis clavier"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Commande locale"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Muet"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Objet suivant"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Objet précédent"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Distance de vue"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Capture d'écran"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Marcher lentement"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Interface"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Afficher le tchat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Mode rapide"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Voler"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Brouillard"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Mini-carte"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Mode sans collision"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Mouvement de tang."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Appuyer sur une touche"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Changer"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nouveau mot de passe"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Ancien mot de passe"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Les mots de passe ne correspondent pas !"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Quitter"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Muet"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volume du son : %d %%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "fr"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+"Le nom n'est pas enregistré. Pour créer un compte sur ce serveur, cliquer "
+"sur « S'inscrire »."
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr "Le nom est pris. Veuillez choisir un autre nom."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Fixe la position de la manette virtuel.\n"
+"Si désactivé, la manette virtuelle sera centrée sur la position du doigt "
+"principal."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Utiliser la manette virtuelle pour déclencher le bouton « Aux1 ».\n"
+"Si activé, la manette virtuelle va également appuyer sur le bouton « Aux1 » "
+"lorsqu'en dehors du cercle principal."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
-"(X,Y,Z) décalage de fractale à partir du centre du monde en unités "
-"\"d'échelle\".\n"
-"Utilisé pour déplacer une zone de frai convenable dans les basses terres à "
-"proximité de (0, 0).\n"
-"La valeur par défaut est adaptée pour les réglages de Mandelbrot, elle doit "
-"être modifiée pour les réglages de julia.\n"
-"Portée environ -2 à 2. A multiplier par \"l'échelle\" pour le décalage dans "
-"les nœuds."
+"(X,Y,Z) de décalage du fractal à partir du centre du monde en unités "
+"« échelle ».\n"
+"Peut être utilisé pour déplacer un point désiré à (0, 0) pour créer une zone "
+"d'apparition convenable, ou pour autoriser à « zoomer » sur un point désiré "
+"en augmentant l'« échelle ».\n"
+"La valeur par défaut est adaptée pour créer une zone d'apparition convenable "
+"pour les ensembles de Mandelbrot crées avec des paramètres par défaut. Elle "
+"peut nécessiter une modification dans d'autres situations.\n"
+"La gamme est d'environ -2 à 2. Multiplier par « échelle » pour le décalage "
+"en nœuds."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = occlusion parallaxe avec des informations de pente (plus rapide).\n"
-"1 = cartographie en relief (plus lent, plus précis)."
+"Échelle (X,Y,Z) de la fractale en nœuds.\n"
+"La taille réelle de la fractale sera 2 à 3 fois plus grande.\n"
+"Ces nombres peuvent être très grands, la fractale n'a pas à être contenue "
+"dans le monde. Les augmenter pour « zoomer » dans les détails de la "
+"fractale.\n"
+"Le valeur par défaut est pour une forme verticalement écrasée convenant pour "
+"une île, définir les 3 nombres égaux pour la forme brute."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Bruit 2D contrôlant la forme et taille des montagnes crantées."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Bruit 2D contrôlant la forme et la taille des collines arrondies."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Bruit 2D contrôlant la forme et taille du pas des montagnes."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "Bruit 2D contrôlant la taille/fréquence des chaînes de montagnes."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Bruit 2D contrôlant la taille et la fréquence des collines arrondies."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "Bruit 2D contrôlant la taille et la fréquence des plateaux montagneux."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Bruit 2D qui localise les vallées et les chenaux des rivières."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1330,6 +2286,52 @@ msgid "3D mode"
msgstr "Mode écran 3D"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Intensité parallaxe en mode 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Bruit 3D définissant les cavernes géantes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Bruit 3D définissant la structure et la hauteur des montagnes.\n"
+"Définit également la structure de terrain flottant type montagne."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Bruit 3D pour la structures des terrains flottants.\n"
+"Si la valeur par défaut est changée, le bruit « d'échelle » (0,7 par défaut) "
+"peut demander à être ajustée, comme l'effilage des terrains flottants "
+"fonctionne mieux quand le bruit à une valeur approximativement comprise "
+"entre -2,0 et 2,0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Bruit 3D définissant la structure des gorges."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Bruit 3D définissant le terrain."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Bruit 3D pour les surplombs, falaises, etc. Généralement peu de variations."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Bruit 3D qui détermine le nombre de donjons par tranche de carte."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1338,16 +2340,24 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Support 3D.\n"
-"Options :\n"
-"- aucun : pas de sortie 3D.\n"
-"- anaglyphe : couleur 3D bleu turquoise/violet.\n"
-"- entrelacé : polarisation basée sur des lignes avec support de l'écran.\n"
-"- horizontal : partage de l'écran horizontal.\n"
-"- vertical : partage de l'écran vertical.\n"
-"- pageflip: 3D basé sur quadbuffer."
+"Actuellement supporté :\n"
+"– aucun : pas de sortie 3D.\n"
+"– anaglyphe : couleur 3D bleu turquoise/violet.\n"
+"– entrelacé : polarisation basée sur des lignes avec support de l'écran.\n"
+"– horizontal : partage haut/bas de l'écran.\n"
+"– vertical : séparation côte à côte de l'écran.\n"
+"– vue mixte : 3D binoculaire.\n"
+"– « pageflip » : 3D basé sur « quadbuffer ».\n"
+"Noter que le mode entrelacé nécessite que les shaders soient activés."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr "3D"
#: src/settings_translation_file.cpp
msgid ""
@@ -1360,38 +2370,43 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr ""
-"Un message qui sera affiché à tous les joueurs quand le serveur s'interrompt."
+msgstr "Un message envoyé à tous les joueurs lorsque le serveur plante."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
-msgstr ""
-"Un message qui sera affiché à tous les joueurs quand le serveur s’interrompt."
+msgstr "Un message envoyé à tous les joueurs lorsque le serveur s’arrête."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr "Limite absolue des files émergentes"
+msgid "ABM interval"
+msgstr "Intervalle « ABM »"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Budget de temps « ABM »"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Limite stricte de la file de blocs émergents"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Accélération en l'air"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr "intervalle de gestion des blocs actifs"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Accélération de la gravité, en nœuds par seconde par seconde."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr "Intervalle du modificateur de bloc actif"
+msgid "Active Block Modifiers"
+msgstr "Modificateurs de bloc actif"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Intervalle du modificateur de bloc actif"
+msgid "Active block management interval"
+msgstr "intervalle de gestion des blocs actifs"
#: src/settings_translation_file.cpp
msgid "Active block range"
-msgstr "Portée des mapblocks actifs"
+msgstr "Portée des blocs actifs"
#: src/settings_translation_file.cpp
msgid "Active object send range"
@@ -1405,41 +2420,81 @@ msgid ""
msgstr ""
"Adresse où se connecter.\n"
"Laisser vide pour démarrer un serveur local.\n"
-"Le champ de l'adresse dans le menu peut annuler cette option."
+"Noter que le champ de l'adresse dans le menu principal passe outre ce "
+"paramètre."
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Ajoute des particules lorsqu'un bloc est creusé."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
-msgstr "Ajuster le DPI de votre écran (non-X11 / Android seulement)."
+msgstr ""
+"Ajuste la configuration des PPP à votre écran (non X11 / Android seulement), "
+"par exemple pour les écrans 4k."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Ajuste la densité d'affichage détectée, utilisée pour la mise à l'échelle "
+"des éléments de l'interface utilisateur."
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n"
-"Ce paramètre s'applique au client seulement et est ignoré par le serveur."
+"Règle la densité de la couche de terrain flottant.\n"
+"Augmenter la valeur pour augmenter la densité. Peut être positive ou "
+"négative.\n"
+"Valeur = 0,0 : 50 % du volume est terrain flottant.\n"
+"Valeur = 2,0 (peut être plus élevée selon « mgv7_np_floatland », toujours "
+"vérifier pour être sûr) créée une couche de terrain flottant solide."
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr "Nom de l’administrateur"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Avancé"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Refroidissement en altitude"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Il modifie la courbe de lumière en lui appliquant une « correction gamma ».\n"
+"Des valeurs plus élevées rendent les niveaux de lumière moyens et inférieurs "
+"plus lumineux.\n"
+"La valeur « 1,0 » laisse la courbe de lumière intacte.\n"
+"Cela n'a un effet significatif que sur la lumière du jour et la lumière "
+"artificielle, elle a très peu d'effet sur la lumière naturelle nocturne."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr "Toujours voler et être rapide"
+msgid "Always fly fast"
+msgstr "Toujours voler vite"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr "Occlusion gamma ambiente"
+msgstr "Occlusion gamma ambiante"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Amplifier les vallées"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Nombre de messages qu'un joueur peut envoyer en 10 secondes."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Amplifier les vallées."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
@@ -1450,47 +2505,116 @@ msgid "Announce server"
msgstr "Annoncer le serveur"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"Annoncer à la liste des serveurs publics.\n"
-"Si vous voulez annoncer votre adresse IPv6, utilisez serverlist_url = v6."
-"servers.minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Annoncer à cette liste de serveurs."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Série Julia: échelles (X,Y,Z) en blocs."
+msgid "Append item name"
+msgstr "Ajouter un nom d'objet"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Ajouter un nom d'objet à l'infobulle."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Bruit appliqué aux pommiers"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Inertie du bras"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Inertie du bras, donne un mouvement plus réaliste du bras lors des "
+"mouvements de caméra."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
msgstr "Demander de se reconnecter après une coupure de connexion"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
msgstr ""
-"Déclarer automatiquement votre serveur à la liste des serveurs publics."
+"À cette distance, le serveur va agressivement optimiser quels blocs seront "
+"envoyés aux clients.\n"
+"Des valeurs faibles peuvent augmenter fortement la performance du serveur, "
+"mais peut provoquer l'apparition de problèmes de rendu visibles (certains "
+"blocs ne seront pas affichés sous l'eau ou dans les cavernes, ou parfois sur "
+"terre).\n"
+"Une valeur supérieure à « max_block_send_distance » désactive cette "
+"optimisation.\n"
+"Établie en blocs de carte (16 nœuds)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
-msgstr ""
+msgid "Audio"
+msgstr "Audio"
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Touche marche automatique"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Saute automatiquement sur les obstacles d'un bloc de haut."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Déclarer automatiquement le serveur à la liste des serveurs."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Sauvegarde automatique de la taille d'écran"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Mode d'agrandissement automatique"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Touche Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Touche Aux1 pour monter/descendre"
#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr "Reculer"
+msgstr "Touche reculer"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Hauteur du terrain de base"
+msgid "Base ground level"
+msgstr "Niveau du sol de base"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Principal"
+msgid "Base terrain height."
+msgstr "Hauteur du terrain de base."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr "Privilèges par défaut"
+msgid "Basic privileges"
+msgstr "Privilèges de base"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Bruit des plages"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Seuil de bruit des plages"
#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
@@ -1501,8 +2625,36 @@ msgid "Bind address"
msgstr "Adresse à assigner"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bits par pixel (profondeur de couleur) en mode plein-écran."
+msgid "Biome API noise parameters"
+msgstr "Paramètres de bruit de l'API des biomes"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Bruit des biomes"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Distance d'optimisation d'envoi des blocs"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr "Balancement"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Chemin de la police en gras et en italique"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Chemin de la police monospace en gras et en italique"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Chemin de la police en gras"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Chemin de la police monospace en gras"
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1510,11 +2662,25 @@ msgstr "Placement de bloc à la position du joueur"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Intégré"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Bump mapping"
+msgid "Camera"
+msgstr "Caméra"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Distance de la caméra « près du plan de coupure » dans les nœuds, entre 0 et "
+"0,25\n"
+"Ne fonctionne que sur les plateformes GLES. La plupart des utilisateurs "
+"n’auront pas besoin de changer cela.\n"
+"L’augmentation peut réduire les artefacts sur des GPUs plus faibles.\n"
+"0,1 = Défaut, 0,25 = Bonne valeur pour les tablettes plus faibles."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1526,82 +2692,108 @@ msgstr "Lissage du mouvement de la caméra en mode cinématique"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
-msgstr "Touche de mise à jour de la caméra"
+msgstr "Touche mise à jour de la caméra"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Bruit de grottes"
#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr "Bruit de cave #1"
+msgstr "Bruit de grottes nº 1"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr "Bruit de grotte #2"
+msgstr "Bruit de grottes nº 2"
#: src/settings_translation_file.cpp
msgid "Cave width"
-msgstr "Largeur de la grotte"
+msgstr "Largeur des grottes"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Les grottes et tunnels se forment à l'intersection de deux bruits"
+msgid "Cave1 noise"
+msgstr "Bruit de grottes nº 1"
#: src/settings_translation_file.cpp
-msgid "Chat key"
-msgstr "Chatter"
+msgid "Cave2 noise"
+msgstr "Bruit de grottes nº 2"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Afficher le chat"
+msgid "Cavern limit"
+msgstr "Limite des cavernes"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Commande"
+msgid "Cavern noise"
+msgstr "Bruit de cavernes"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Conicité des cavernes"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Seuil des cavernes"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Limite haute des cavernes"
#: src/settings_translation_file.cpp
msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"Choix de 18 fractales provenant de 9 formules.\n"
-"1 = réglage Mandelbrot \"Roundy\" 4D.\n"
-"2 = réglage Julia \"Roundy\" 4D.\n"
-"3 = réglage Mandelbrot \"Squarry\" 4D.\n"
-"4 = réglage Julia \"Squarry\" 4D.\n"
-"5 = réglage Mandelbrot \"Cousin Mandy\" 4D.\n"
-"6 = réglage Julia \"Cousin Mandy\" 4D.\n"
-"7 = réglage Mandelbrot \"Variation\" 4D.\n"
-"8 = réglage Julia \"Variation\" 4D.\n"
-"9 = réglage Mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n"
-"10 = réglage Julia \"Mandelbrot/Mandelbar\" 3D.\n"
-"11 = réglage Mandelbrot \"Christmas Tree\" 3D.\n"
-"12 = réglage Julia \"Christmas Tree\" 3D.\n"
-"13 = réglage Mandelbrot \"Mandelbulb\" 3D.\n"
-"14 = réglage Julia \"Mandelbulb\" 3D.\n"
-"15 = réglage Mandelbrot \"Cosine Mandelbulb\" 3D.\n"
-"16 = réglage Julia \"Cosine Mandelbulb\" 3D.\n"
-"17 = réglage Mandelbrot \"Mandelbulb\" 4D.\n"
-"18 = réglage Julia \"Mandelbulb\" 4D."
+"Center of light curve boost range.\n"
+"Where 0.0 is minimum light level, 1.0 is maximum light level."
+msgstr ""
+"Centre de la plage d'amplification de la courbe de lumière.\n"
+"Où 0,0 est le niveau de lumière minimale, et 1,0 est le niveau de lumière "
+"maximale."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Seuil de message du temps de commande du tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Commandes de tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Taille de la police du tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Touche tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Niveau du journal du tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Limite du nombre de messages de tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Format de message du tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Seuil de messages de discussion avant déconnexion forcée"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Longueur maximale d'un message de tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Touche afficher le tchat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Liens web de tchat"
#: src/settings_translation_file.cpp
msgid "Chunk size"
-msgstr "Taille des chunks"
+msgstr "Taille des tranches"
#: src/settings_translation_file.cpp
msgid "Cinematic mode"
@@ -1609,23 +2801,47 @@ msgstr "Mode cinématique"
#: src/settings_translation_file.cpp
msgid "Cinematic mode key"
-msgstr "Mode cinématique"
+msgstr "Touche mode cinématique"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
msgstr "Textures transparentes filtrées"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Liens web cliquables (molette de la souris ou ctrl+clic gauche) activés dans "
+"la sortie de la console de tchat."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Client"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr "Client et Serveur"
+msgstr "Client et serveur"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Vitesse d'escalade du joueur"
+msgid "Client modding"
+msgstr "Personnalisation client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Restrictions du modding côté client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Restriction de distance de recherche des noeuds côté client"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Hauteur des nuages"
+msgid "Client-side Modding"
+msgstr "Modding côté client"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Vitesse d'escalade du joueur"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1645,15 +2861,35 @@ msgstr "Nuages dans le menu"
#: src/settings_translation_file.cpp
msgid "Colored fog"
-msgstr "Brume colorée"
+msgstr "Brouillard coloré"
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "Ombres colorées"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Liste des drapeaux à cacher du dépôt des contenus.\n"
+"« nonfree » peut être utilisé pour cacher les paquets non libres, comme "
+"défini par la Free Software Foundation.\n"
+"Vous pouvez aussi spécifier des classifications de contenu.\n"
+"Ces drapeaux sont indépendants des versions de Minetest, consulter la liste "
+"complète à l'adresse https://content.minetest.net/help/content_flags/."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"Liste séparée par des virgules des mods de confiance qui sont autorisés à "
+"Liste des mods de confiance séparés par des virgules qui sont autorisés à "
"accéder\n"
"aux API HTTP, leur permettant d'envoyer et de télécharger des données vers/"
"depuis Internet."
@@ -1664,13 +2900,38 @@ msgid ""
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
"Liste séparée par des virgules des mods de confiance qui sont autorisés à "
-"accéder aux fonctions non\n"
-"sécurisées même lorsque l'option de sécurisation des mods est activée (via "
-"request_insecure_environment())."
+"accéder aux fonctions non sécurisées même lorsque l'option de sécurisation "
+"des mods est activée (via « request_insecure_environment() »)."
#: src/settings_translation_file.cpp
msgid "Command key"
-msgstr "Commande"
+msgstr "Touche commande"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Niveau de compression à utiliser lors de la sauvegarde des blocs de carte "
+"sur le disque.\n"
+"-1 - utilise le niveau de compression par défaut\n"
+"0 - compression minimale, le plus rapide\n"
+"9 - meilleure compression, le plus lent"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Niveau de compression à utiliser lors de l'envoi des blocs de carte au "
+"client.\n"
+"-1 - utilise le niveau de compression par défaut\n"
+"0 - compression minimale, le plus rapide\n"
+"9 - meilleure compression, le plus lent"
#: src/settings_translation_file.cpp
msgid "Connect glass"
@@ -1686,46 +2947,67 @@ msgstr "Unifier le verre si le bloc le permet."
#: src/settings_translation_file.cpp
msgid "Console alpha"
-msgstr "Opacité du fond de la console de jeu"
+msgstr "Opacité de la console"
#: src/settings_translation_file.cpp
msgid "Console color"
-msgstr "Couleur de la console de jeu"
+msgstr "Couleur de la console"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "Hauteur de la console"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr "Dépôt de contenu"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Drapeaux ContentDB en liste noire"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Maximum de téléchargement en parallèle pour ContentDB"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Console de jeu"
+msgid "ContentDB URL"
+msgstr "Adresse de la ContentDB"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Avancer en continu"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Mouvement avant permanent (seulement utilisé pour des tests)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Mouvement continu en avant, activé par la touche d'avance automatique.\n"
+"Appuyer à nouveau sur la touche d'avance automatique ou de recul pour le "
+"désactiver."
#: src/settings_translation_file.cpp
msgid "Controls"
-msgstr "Touches de contrôle"
+msgstr "Contrôles"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
-"Durée complet du cycle jour/nuit.\n"
-"Exemples : 72 = 20 minutes, 360 = 4 minutes, 1 = 24 heures, 0 = jour ou nuit "
-"reste figé(e)."
+"Contrôle la durée complet du cycle jour/nuit.\n"
+"Exemples :\n"
+"72 = 20 minutes, 360 = 4 minutes, 1 = 24 heures, 0 = jour/nuit/n'importe "
+"quoi éternellement."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Taille des déserts et plages dans Mapgen V6.\n"
-"Quand les environnements neigeux sont activés, le paramètre de fréquence des "
-"déserts dans Mapgen V6 est ignoré."
+"Contrôle la vitesse d'immersion dans un liquide lorsque inactif. Des valeurs "
+"négatives feront remonter."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
@@ -1736,54 +3018,51 @@ msgid "Controls steepness/height of hills."
msgstr "Contrôle l'élévation/hauteur des collines."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
-"Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels "
-"plus larges."
+"Contrôle la largeur des tunnels, une valeur plus faible crée des tunnels "
+"plus larges.\n"
+"Valeur >= 10,0 désactive complètement la génération de tunnels et évite le "
+"calcul intensif de bruit."
#: src/settings_translation_file.cpp
msgid "Crash message"
-msgstr "Message d'interruption du serveur"
+msgstr "Message de plantage"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crée des zones imprévisibles de lave dans les caves.\n"
-"Elles rendent le minage plus difficile. 0 les désactivent. (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crée des zones aquatiques imprévisibles dans les caves.\n"
-"Elles rendent le minage plus difficile. 0 les désactivent. (0-10)"
+msgid "Creative"
+msgstr "Créatif"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr "Opacité du réticule"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Opacité du réticule (entre 0 et 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Opacité du réticule (entre 0 et 255).\n"
+"Ceci s'applique également au réticule de l'objet."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
msgstr "Couleur du réticule"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Couleur du réticule (R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Vitesse du joueur en position accroupie"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+"Couleur du réticule (R,V,B).\n"
+"Contrôle également la couleur du réticule de l'objet."
#: src/settings_translation_file.cpp
msgid "DPI"
-msgstr "DPI"
+msgstr "PPP"
#: src/settings_translation_file.cpp
msgid "Damage"
@@ -1791,11 +3070,23 @@ msgstr "Dégâts"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr "Infos de débogage"
+msgstr "Touche infos de débogage"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Seuil de la taille du fichier journal de débogage"
#: src/settings_translation_file.cpp
msgid "Debug log level"
-msgstr "Niveau de détails des infos de débogage"
+msgstr "Niveau du journal de débogage"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr "Débogage"
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Touche réduire le volume"
#: src/settings_translation_file.cpp
msgid "Dedicated server step"
@@ -1827,125 +3118,253 @@ msgstr "Privilèges par défaut"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Format de rapport par défaut"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Taille d’empilement par défaut"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Délais d'interruption de cURL par défaut, établi en millisecondes.\n"
-"Seulement appliqué si Minetest est compilé avec cURL."
+"Définit la qualité du filtrage des ombres. Cela simule l'effet d'ombres "
+"douces en appliquant un disque PCF ou Poisson mais utilise également plus de "
+"ressources."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Définit des zones où les arbres ont des pommes."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Définit des zones où on trouve des plages de sable."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "Définit la répartition des hauts reliefs et la pente des falaises."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Définit la répartition des zones de hauts reliefs."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
-"Niveau de lissage des normal maps.\n"
-"Une valeur plus grande lisse davantage les normal maps."
+"Définit la taille totale des cavernes, une valeur plus petite crée des "
+"cavernes plus larges."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Définit la structure des canaux fluviaux à grande échelle."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+"Définit l'emplacement et le terrain des collines et des lacs optionnels."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Définit le niveau du sol de base."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Définit la profondeur du court de la rivière."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
-"Détermine la distance maximale de transfert du joueur en mapblocks (0 = "
+"Détermine la distance maximale de transfert du joueur en blocs (0 = "
"illimité)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Définit la largeur des canaux fluviaux."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Définit la largeur de la vallée de la rivière."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Définit des zones avec arbres et leur densité."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Délai entre les mises à jour du maillage sur le client en ms. Augmenter ceci "
+"ralentit le taux de mise à jour et réduit donc les tremblements sur les "
+"client lents."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Retard dans les blocs envoyés après la construction"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
-msgstr "Latence d'apparition des infobulles, établie en millisecondes."
+msgstr "Délai d'apparition des infobulles, établi en millisecondes."
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
msgstr "Traitement d'API Lua obsolète(s)"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
-msgstr "Profondeur en-dessous duquel se trouvent de grandes caves."
-
-#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "Profondeur en-dessous duquel se trouvent des caves massives."
+msgid "Depth below which you'll find giant caverns."
+msgstr "Profondeur en-dessous de laquelle se trouvent les grandes cavernes."
#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Vitesse de descente du joueur"
+msgid "Depth below which you'll find large caves."
+msgstr "Profondeur en-dessous duquel se trouvent de grandes grottes."
#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
-msgstr "Description du serveur affichée sur la liste des serveurs."
+msgstr ""
+"Description du serveur affichée lorsque les joueurs se connectent et sur la "
+"liste des serveurs."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr "Désynchroniser les textures animées par mapblock"
+msgid "Desert noise threshold"
+msgstr "Seuil de bruit des déserts"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"Détermine la forme du terrain.\n"
-"Les 3 nombres entre parenthèses contrôlent l'échelle du terrain,\n"
-"ces nombres doivent être identiques."
+"Des déserts apparaissent lorsque « np_biome » dépasse cette valeur.\n"
+"Quand le drapeau « snowbiomes » est activé (avec le nouveau système de "
+"biomes), ce paramètre est ignoré."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Désactiver l'anti-triche"
+msgid "Desynchronize block animation"
+msgstr "Désynchroniser les animations de blocs"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr "Désactive les séquences d'échappement"
+msgid "Developer Options"
+msgstr "Options de développeur"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
-"Désactive les séquences d'échappement, ex. tchat en couleurs.\n"
-"Utilisez cette option si vous voulez exécuter un serveur avec des clients "
-"antérieurs à la 0.4.14 et que vous souhaitez désactiver\n"
-"les séquences d'échappement générés par les mods."
+msgid "Dig key"
+msgstr "Touche creuser"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Particules au minage"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Désactiver l'anti-triche"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Refuser les mots de passe vides"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Facteur d'échelle de la densité d'affichage"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+"Distance en nœuds à laquelle le tri de profondeur de la transparence est "
+"activé.\n"
+"Utiliser cette option pour limiter l'impact sur les performances du tri de "
+"profondeur de la transparence."
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr "Nom de domaine du serveur affichée sur la liste des serveurs publics."
+msgstr "Nom de domaine du serveur affichée sur la liste des serveurs."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr "Double-appui sur \"saut\" pour voler"
+msgstr "Double-appui sur « saut » pour voler"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
-msgstr "Double-appui sur \"saut\" pour voler."
+msgstr "Double-appui sur la touche « saut » pour voler."
#: src/settings_translation_file.cpp
msgid "Drop item key"
-msgstr "Lâcher"
+msgstr "Touche lâcher un objet"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Afficher les informations de débogage de la génération de terrain."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Maximum Y des donjons"
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
-msgstr "Afficher les infos de débogage de la génération de terrain."
+msgid "Dungeon minimum Y"
+msgstr "Minimum Y des donjons"
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
-msgstr "Activer souris"
+msgid "Dungeon noise"
+msgstr "Bruit de donjons"
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "Activer Vertex Buffer Object: objet tampon de vertex"
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Activer la prise en charge IPv6 (pour le client et le serveur).\n"
+"Requis pour que les connexions IPv6 fonctionnent."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Active le support des mods Lua sur le client.\n"
+"Ce support est expérimental et l'API peut changer."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Active le filtrage par disque de Poisson.\n"
+"Si activé, utilise le disque de Poisson pour créer des « ombres douces ». "
+"Sinon, utilise le filtrage PCF."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"Active les ombres colorées.\n"
+"Sur les nœuds vraiment transparents, projette des ombres colorées. Ceci est "
+"coûteux."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Activer la console"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Activer le mode créatif pour tous les joueurs."
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Activer les manettes"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr "Activer les manettes. Nécessite un redémarrage pour prendre effet."
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Activer le support des canaux de mods."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1966,7 +3385,11 @@ msgid ""
"Disable for speed or for different looks."
msgstr ""
"Active l'éclairage doux avec une occlusion ambiante simple.\n"
-"Désactiver pour davantage de performances."
+"Désactiver pour davantage de performances ou pour un visuel différent."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr "Active la séparation de connexion / s'inscrire"
#: src/settings_translation_file.cpp
msgid ""
@@ -1978,9 +3401,8 @@ msgid ""
msgstr ""
"Activer pour empêcher les anciens clients de se connecter.\n"
"Les anciens clients sont compatibles dans le sens où ils ne s'interrompent "
-"pas lors de la connexion\n"
-"aux serveurs récents, mais ils peuvent ne pas supporter certaines "
-"fonctionnalités."
+"pas lors de la connexion aux serveurs récents, mais ils peuvent ne pas "
+"supporter certaines fonctionnalités."
#: src/settings_translation_file.cpp
msgid ""
@@ -1991,44 +3413,56 @@ msgid ""
msgstr ""
"Activer l'usage d'un serveur de média distant (si pourvu par le serveur).\n"
"Les serveurs de média distants offrent un moyen significativement plus "
-"rapide de télécharger\n"
-"des données média (ex.: textures) lors de la connexion au serveur."
+"rapide de télécharger des données média (ex. : textures) lors de la "
+"connexion au serveur."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"Active/désactive l'usage d'un serveur IPv6. Un serveur IPv6 peut être "
-"restreint\n"
-"aux clients IPv6, selon leur configuration système.\n"
-"Ignoré si bind_address est paramétré."
+"Active les « vertex buffer objects ».\n"
+"Cela devrait grandement augmenter les performances graphiques."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Active la rotation des items d'inventaire."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Active le balancement de la vue et la quantité de balancement de la vue.\n"
+"Par exemple : 0 pour aucun balancement de la vue, 1 pour normal, 2 pour "
+"double."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"Active le bumpmapping pour les textures.\n"
-"Les normalmaps peuvent être fournies par un pack de textures pour un "
-"meilleur effet de relief,\n"
-"ou bien celui-ci est auto-généré.\n"
-"Nécessite les shaders pour être activé."
+"Active/désactive l'usage d'un serveur IPv6.\n"
+"Ignoré si « bind_address » est activé.\n"
+"A besoin de « enable_ipv6 » pour être activé."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
-msgstr "Active la mise en cache des meshnodes."
+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 ""
+"Active le mappage de tons filmique « Uncharted 2 » de Hable.\n"
+"Simule la courbe des tons du film photographique, ce qui se rapproche de la "
+"l'apparition d'images à plage dynamique élevée. Le contraste de milieu de "
+"gamme est légèrement améliorées, les reflets et les ombres sont "
+"progressivement compressés."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Autorise le mappage tonal cinématographique"
+msgid "Enables animation of inventory items."
+msgstr "Active la rotation des items d'inventaire."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Active la mise en cache des maillages orientés."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
@@ -2036,68 +3470,82 @@ msgstr "Active la mini-carte."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
-"Active la génération à la volée des normalmaps.\n"
-"Nécessite le bumpmapping pour être activé."
+"Active le système audio.\n"
+"Si désactivé, cela désactive complètement tous les sons partout et les "
+"commandes audio dans le jeu ne fonctionneront pas.\n"
+"La modification de ce paramètre nécessite un redémarrage."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
-"Active l'occlusion parallaxe.\n"
-"Nécessite les shaders pour être activé."
+"Active les compromis qui réduisent la charge du CPU ou augmentent les "
+"performances de rendu au détriment de problèmes visuels mineurs qui n'ont "
+"pas d'impact sur la jouabilité du jeu."
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr "Profileur de moteur"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Engine profiling data print interval"
-msgstr "Délais d'intervale du profilage"
+msgstr "Intervalle d'impression des données du moteur de profilage"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Systèmes d'entité"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Option expérimentale, peut causer un espace vide visible entre les blocs\n"
-"quand paramétré avec un nombre supérieur à 0."
-
-#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS maximum sur le menu pause"
+"Exposant de l'effilement des terrains flottants. Modifie le comportement de "
+"l'effilement.\n"
+"Une valeur égale à 1 créée un effilement uniforme et linéaire.\n"
+"Une valeur supérieure à 1 créée un effilement lisse adaptée pour les "
+"terrains flottants séparés par défaut.\n"
+"Une valeur inférieure à 1 (par exemple 0,25) créée une surface plus définie "
+"avec des terrains bas plus plats, adaptée pour une couche solide de terrain "
+"flottant."
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr "FSAA"
+msgid "FPS"
+msgstr "FPS"
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr "Fréquence du mouvement du bras en tombant"
+msgid "FPS when unfocused or paused"
+msgstr "FPS lorsqu’il n’est pas sélectionné ou mis en pause"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Police alternative"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Ombre de la police alternative"
+msgid "Factor noise"
+msgstr "Facteur de bruit"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Opacité de l'ombre de la police alternative"
+msgid "Fall bobbing factor"
+msgstr "Facteur de balancement de chute"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Taille de la police alternative"
+msgid "Fallback font path"
+msgstr "Chemin de la police alternative"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr "Mode rapide"
+msgstr "Touche mode rapide"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
@@ -2113,74 +3561,108 @@ msgstr "Mouvement rapide"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Mouvement rapide (via la touche utiliser).\n"
-"Nécessite le privilège \"fast\" sur un serveur."
+"Mouvement rapide (via la touche « Aux1 »).\n"
+"Nécessite le privilège « fast » sur le serveur."
#: src/settings_translation_file.cpp
msgid "Field of view"
msgstr "Champ de vision"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "Champ de vision"
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr "Champ de vision en degrés."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
-msgstr ""
-"Mouvement rapide (via la touche utiliser).\n"
-"Nécessite le privilège \"fast\" sur un serveur."
-
-#: src/settings_translation_file.cpp
msgid ""
"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Fichier localisé dans /client/serverlist contenant vos serveurs favoris dans "
-"l'onglet multijoueur."
+"Fichier dans « client/serverlist/ » contenant vos serveurs favoris affichés "
+"dans l'onglet « Rejoindre une partie »."
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth"
msgstr "Profondeur du remplissage"
#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr "Bruit de profondeur de remplissage"
+
+#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr "Mappage tonal cinématographique"
+msgstr "Mappage de tons filmique"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
-"Les textures filtrées peuvent mélanger des valeurs RGB avec des zones 100% "
+"Les textures filtrées peuvent mélanger des valeurs RVB avec des zones "
+"complètement transparentes, que les optimiseurs PNG ignorent généralement, "
+"aboutissant souvent à des bords foncés ou clairs sur les textures "
"transparentes.\n"
-"aboutissant parfois à des bords foncés ou clairs sur les textures "
-"transparentes.\n"
-"Appliquer ce filtre pour nettoyer cela au chargement de la texture."
+"Appliquer ce filtre pour nettoyer cela au chargement de la texture. Ceci est "
+"automatiquement activé si le mip-mapping est activé."
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr "Filtrage et anticrénelage"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Le premier des 4 bruits 2D qui définissent ensemble la hauteur des collines "
+"et des montagnes."
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Filtrage"
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Le premier des deux bruits 3D qui définissent ensemble les tunnels."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr "Graine de génération de terrain déterminée"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Fixer la manette virtuelle"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Densité des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Maximum Y des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Minimum Y des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Bruit des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Exposant de l'effilement des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Hauteur de la base des terrains flottants"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Niveau d'eau des terrains flottants"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
-msgstr "Voler"
+msgstr "Touche voler"
#: src/settings_translation_file.cpp
msgid "Flying"
@@ -2188,15 +3670,27 @@ msgstr "Voler"
#: src/settings_translation_file.cpp
msgid "Fog"
-msgstr "Brume"
+msgstr "Brouillard"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Début du brouillard"
#: src/settings_translation_file.cpp
msgid "Fog toggle key"
-msgstr "Brume"
+msgstr "Touche brouillard"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Chemin du fichier de police"
+msgid "Font"
+msgstr "Police"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Police en gras par défaut"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Police en italique par défaut"
#: src/settings_translation_file.cpp
msgid "Font shadow"
@@ -2207,64 +3701,153 @@ msgid "Font shadow alpha"
msgstr "Opacité de l'ombre de la police"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
-msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)."
+msgid "Font size"
+msgstr "Taille de la police"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
+msgstr "Taille de la police divisible par"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Taille de la police par défaut où 1 unité = 1 pixel à 96 PPP"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Taille de la police monospace où 1 unité = 1 pixel à 96 PPP"
+
+#: 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 ""
-"Décalage de l'ombre de la police, si 0 est choisi alors l'ombre ne "
-"s'affichera pas."
+"Taille de la police des messages récents de tchat et de l'invité de tchat en "
+"point (pt).\n"
+"La valeur 0 utilise la taille de police par défaut."
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Taille de la police"
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"Pour les polices de style pixel qui ne s'adaptent pas bien, cela garantit "
+"que les tailles de police utilisées avec cette police seront toujours "
+"divisibles par cette valeur, en pixels. Par exemple une police de style "
+"pixel de 16 pixels de haut doit avoir cette valeur définie sur 16, alors "
+"elle ne sera jamais que de taille 16, 32, 48, etc., donc un mod demandant "
+"une taille de 25 obtiendra 32."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Format des messages de tchat des joueurs. Substituts valides :\n"
+"@name, @message, @timestamp (optionnel)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
msgstr "Format de captures d'écran."
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Couleur de l'arrière-plan par défaut des formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Opacité de l'arrière-plan par défaut des formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Couleur de l'arrière-plan en plein écran des formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Opacité de l'arrière-plan en plein écran des formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Couleur de l'arrière-plan par défaut des formspec (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Opacité de l'arrière-plan par défaut des formspec (entre 0 et 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Couleur de l'arrière-plan en plein écran des formspec (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+"Opacité de l'arrière-plan en plein écran des formspec (entre 0 et 255)."
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
-msgstr "Avancer"
+msgstr "Touche avancer"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "Polices Freetype"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Le quatrième des 4 bruits 2D qui définissent ensemble la hauteur des "
+"collines et des montagnes."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Type fractal"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+"Fraction de la distance de vue à partir de laquelle le brouillard commence à "
+"être rendu."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
-"Distance maximale de génération des mapblocks (16^3 blocs) depuis la "
-"position du client."
+"Distance maximale de génération des blocs depuis la position du client, "
+"établie en blocs de carte (16^3 blocs)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
-"Distance maximale d'envoi des mapblocks aux clients, établie en mapblocks "
+"Distance maximale d'envoi des blocs aux clients, établie en blocs de carte "
"(16^3 blocs)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
-"Distance maximale d'envoi de données sur les objets aux clients, établie en "
-"mapblocks (16^3 blocs)."
+"Distance maximale à laquelle les clients ont connaissance des objets, "
+"établie en blocs de carte (16 nœuds).\n"
+"\n"
+"Définir cela plus grand que « active_block_range », ainsi le serveur va "
+"maintenir les objets actifs jusqu’à cette distance dans la direction où un "
+"joueur regarde (cela peut éviter que des mobs disparaissent soudainement de "
+"la vue)."
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Plein écran"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "Bits par pixel en mode plein écran"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr "Mode plein écran."
+msgstr ""
+"Mode plein écran.\n"
+"Un redémarrage est nécessaire après la modification de cette option."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
@@ -2276,70 +3859,102 @@ msgstr "Filtrage des images du GUI"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr "Filtrage txr2img du GUI"
+msgstr "Filtrage de mise à l'échelle txr2img du GUI"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr "GUIs"
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "Général"
+msgid "Gamepads"
+msgstr "Manettes de jeu"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Normal mapping"
+msgid "General"
+msgstr "Général"
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Rappels globaux"
#: src/settings_translation_file.cpp
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
"Attributs de génération de terrain globaux.\n"
-"Dans le générateur de terrain V6, le drapeau 'décorations' contrôle toutes "
-"les décorations sauf les arbres\n"
-"et l'herbe de la jungle, dans tous les autres générateurs de terrain, ce "
-"drapeau contrôle toutes les décorations.\n"
-"La chaîne de drapeaux modifie les paramètres par défaut du moteur.\n"
-"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par "
-"défaut.\n"
-"Les drapeaux commençant par \"non\" sont désactivés."
+"Dans le générateur de terrain v6, le drapeau « décorations » contrôle toutes "
+"les décorations sauf les arbres et les herbes de la jungle, dans tous les "
+"autres générateurs de terrain, ce drapeau contrôle toutes les décorations."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Gradient de la courbe de lumière au niveau de lumière maximale.\n"
+"Contrôle le contraste aux niveaux d'éclairage les plus élevés."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Gradient de la courbe de lumière au niveau de lumière minimale.\n"
+"Contrôle le contraste aux niveaux d'éclairage les plus bas."
#: src/settings_translation_file.cpp
msgid "Graphics"
-msgstr "Options graphiques"
+msgstr "Graphiques"
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr "Effets graphiques"
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr "Graphiques et audio"
#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravité"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
-msgstr "Mods utilisant le protocole de transfert hypertexte"
+msgid "Ground level"
+msgstr "Niveau du sol"
#: src/settings_translation_file.cpp
-msgid "HUD toggle key"
+msgid "Ground noise"
+msgstr "Bruit au sol"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "Mods HTTP"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr "HUD"
#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr "Taille du HUD"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr "Touche HUD"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
-"Traitement des appels d'API Lua obsolètes :\n"
-"- legacy : imite l'ancien comportement (par défaut en mode release).\n"
-"- log : imite et registre les appels obsolètes (par défaut en mode debug).\n"
-"- error : interruption à l'usage d'un appel obsolète (recommandé pour les "
+"Traitement des appels d'API Lua obsolètes :\n"
+"– aucun : n'enregistre pas les appels obsolètes.\n"
+"– journal : imite et enregistre la trace des appels obsolètes (par défaut).\n"
+"– erreur : s'interrompt lors d'un appel obsolète (recommandé pour les "
"développeurs de mods)."
#: src/settings_translation_file.cpp
@@ -2350,50 +3965,272 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Auto-instrumentaliser le profileur :\n"
+"* Instrumentalise une fonction vide.\n"
+"La surcharge est évaluée (l'auto-instrumentalisation ajoute 1 appel de "
+"fonction à chaque fois).\n"
+"* Instrumentalise l’échantillonneur utilisé pour mettre à jour les "
+"statistiques."
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr "Bruit de mélange de chaleur"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Bruit de chaleur"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Composant de hauteur de la taille initiale de la fenêtre. Ignoré en mode "
+"plein écran."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr "Résolution verticale de la fenêtre de jeu."
+msgid "Height noise"
+msgstr "Bruit de hauteur"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr "Hauteur des nuages dans le jeu."
+msgid "Height select noise"
+msgstr "Bruit de sélection de hauteur"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "FPU de haute précision"
+msgid "Hill steepness"
+msgstr "Pente des collines"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Seuil des collines"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Bruit de collines nº 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Bruit de collines nº 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Bruit de collines nº 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Bruit de collines nº 4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
msgstr "Adresse web du serveur affichée sur la liste des serveurs."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
-msgstr "Profondeur des rivières"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Accélération horizontale dans l'air en sautant ou en tombant, en nœuds par "
+"seconde par seconde."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
-"Largeur des aires de mapblocks qui sont sujets à être gardés actifs, établie "
-"en mapblocks (16^3 blocs).\n"
-"Les mapblocks actifs sont chargés et les ABMs y sont actifs."
+"Accélération horizontale et verticale en mode rapide, en nœuds par seconde "
+"par seconde."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+"Accélération horizontale et verticale au sol ou en montée, en nœuds par "
+"seconde."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Touche suivant sur la barre d'actions"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Touche précédent sur la barre d'actions"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Touche emplacement 1 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Touche emplacement 10 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Touche emplacement 11 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Touche emplacement 12 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Touche emplacement 13 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Touche emplacement 14 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Touche emplacement 15 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Touche emplacement 16 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Touche emplacement 17 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Touche emplacement 18 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Touche emplacement 19 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Touche emplacement 2 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Touche emplacement 20 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Touche emplacement 21 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Touche emplacement 22 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Touche emplacement 23 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Touche emplacement 24 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Touche emplacement 25 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Touche emplacement 26 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Touche emplacement 27 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Touche emplacement 28 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Touche emplacement 29 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Touche emplacement 3 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Touche emplacement 30 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Touche emplacement 31 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Touche emplacement 32 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Touche emplacement 4 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Touche emplacement 5 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Touche emplacement 6 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Touche emplacement 7 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Touche emplacement 8 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Touche emplacement 9 de la barre d'action"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Quelle profondeur pour faire des rivières."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Vitesse à laquelle les ondes de liquides se déplacent. Plus élevé = plus "
+"rapide.\n"
+"Si elle est négative, les ondes de liquides se déplaceront en arrière.\n"
+"Nécessite les liquides ondulants pour être activé."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
-"Délais maximum jusqu'où le serveur va attendre avant de purger les mapblocks "
-"inactifs.\n"
-"Une valeur plus grande est plus confortable, mais utilise davantage de "
-"mémoire."
+"Combien de temps le serveur attendra avant de décharger les blocs de carte "
+"inutilisés, établi en secondes.\n"
+"Une valeur plus élevée est plus fluide, mais utilise plus de RAM."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr "Largeur des rivières"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+"Ralentissement lors du déplacement dans un liquide.\n"
+"Réduire ceci pour augmenter la résistance liquide au mouvement."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Quelle largeur doivent avoir les rivières."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Bruit de mélange de l'humidité"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Bruit de l'humidité"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variation de l'humidité pour les biomes."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2404,25 +4241,35 @@ msgid "IPv6 server"
msgstr "Serveur IPv6"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "Support IPv6."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
-"Si le nombre d'images par seconde (FPS) veut aller au-delà de cette valeur, "
-"il est limité\n"
-"pour ne pas gaspiller inutilement les ressources du processeur."
+"Si les FPS (nombre d'images par seconde) sont supérieurs à cette valeur, "
+"limitez-les en les mettant en sommeil pour ne pas gaspiller la puissance du "
+"CPU sans aucun bénéfice."
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
-"Si désactivé la touche \"Utiliser\" est utilisée pour voler + mode rapide "
-"(si ceux-ci sont activés)."
+"Si désactivé, la touche « Aux1 » est utilisée pour voler vite si les modes "
+"vol et rapide sont activés."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Si activé, le serveur effectuera la détermination des blocs de carte "
+"invisibles selon la position des yeux du joueur.\n"
+"Cela peut réduire le nombre de blocs envoyés au client de 50 à 80 %.\n"
+"Le client ne recevra plus la plupart des blocs invisibles, de sorte que "
+"l'utilité du mode sans collision est réduite."
#: src/settings_translation_file.cpp
msgid ""
@@ -2431,15 +4278,27 @@ msgid ""
"This requires the \"noclip\" privilege on the server."
msgstr ""
"Si activé avec le mode vol, le joueur sera capable de traverser les blocs "
-"solides en volant."
+"solides en volant.\n"
+"Nécessite le privilège « noclip » sur le serveur."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
-"Si activé, la touche \"Utiliser\" est utilisée à la place de la touche "
-"\"Sneak\" pour monter ou descendre."
+"Si activé, la touche « Aux1 » est utilisée à la place de la touche « Marcher "
+"lentement » pour monter ou descendre."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Si activé, l'enregistrement du compte est séparé de la connexion dans "
+"l'interface utilisateur.\n"
+"Si désactivé, les nouveaux comptes seront enregistrés automatiquement lors "
+"de la connexion."
#: src/settings_translation_file.cpp
msgid ""
@@ -2460,13 +4319,23 @@ msgid ""
msgstr ""
"Si activé, les données invalides du monde ne causeront pas l'interruption du "
"serveur.\n"
-"Activer seulement si vous sachez ce que vous faites."
+"Activer cette option seulement si vous savez ce que vous faites."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Si activé, rend les directions de déplacement relatives à l'assiette du "
+"joueur lorsqu'il vole ou nage."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
-"Si activé, les nouveaux joueurs ne pourront pas se connecter avec un mot de "
-"passe vide."
+"Si activé, les joueurs ne peuvent pas se connecter sans un mot de passe ou "
+"de le remplacer par un mot de passe vide."
#: src/settings_translation_file.cpp
msgid ""
@@ -2475,10 +4344,40 @@ msgid ""
"This is helpful when working with nodeboxes in small areas."
msgstr ""
"Si activé, vous pourrez placer des blocs à la position où vous êtes.\n"
-"C'est utile quand vous travaillez avec des modèles nodebox dans des zones "
+"C'est utile pour travailler avec des modèles « nodebox » dans des zones "
"exiguës."
#: src/settings_translation_file.cpp
+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 ""
+"Si la restriction « CSM » pour la distance des blocs est activée, les appels "
+"« get_node » sont limités à la distance entre le joueur et le bloc."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Si l'exécution d'une commande de tchat prend plus de temps que cette durée "
+"spécifiée en secondes, ajoute les informations de temps au message de la "
+"commande de tchat."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Si la taille du fichier « debug.txt » dépasse le nombre de mégaoctets "
+"spécifié par ce paramètre ; une fois ouvert, le fichier est déplacé vers "
+"« debug.txt.1 » et supprime l'ancien « debug.txt.1 » s'il existe.\n"
+"« debug.txt » est déplacé seulement si ce paramètre est activé."
+
+#: src/settings_translation_file.cpp
msgid "If this is set, players will always (re)spawn at the given position."
msgstr "Détermine les coordonnées où les joueurs vont toujours réapparaître."
@@ -2487,60 +4386,76 @@ msgid "Ignore world errors"
msgstr "Ignorer les erreurs du monde"
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "Dans le jeu"
-
-#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
-msgstr "Opacité de fond de la console du jeu (entre 0 et 255)."
+msgstr ""
+"Opacité de l'arrière-plan de la console de tchat dans le jeu (entre 0 et "
+"255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
-msgstr "Couleur de fond de la console du jeu (R,G,B)."
+msgstr "Couleur de l'arrière-plan de la console de tchat dans le jeu (R,V,B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+"Hauteur de la console de tchat dans le jeu, entre 0,1 (10 %) et 1,0 (100 %)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Touche augmenter le volume"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Vitesse verticale initiale lors du saut, en nœuds par seconde."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Instrument d'intégration.\n"
+"Ceci est habituellement nécessaire pour les contributeurs d'intégration au "
+"noyau."
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "Instrument d'enregistrement des commandes de tchat."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Instrument des fonctions de rappel global enregistrées.\n"
+"(tout ce que vous passez dans une fonction minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Instrumentalise la fonction d'action des modificateurs de bloc actif lors de "
+"l'enregistrement."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Instrumentalise la fonction d'action des modificateurs de blocs de "
+"chargement à l'enregistrement."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Instrumentalise les systèmes d'entités lors de l'enregistrement."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
-"Intervalle de sauvegarde des changements importants dans le monde, établie "
-"en secondes."
+"Intervalle de sauvegarde des changements importants dans le monde, établi en "
+"secondes."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr "Intervalle d'envoi de l'heure de jeu aux clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Intervalle d'envoi de l'heure aux clients, établi en secondes."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
@@ -2548,7 +4463,7 @@ msgstr "Animation des items d'inventaire"
#: src/settings_translation_file.cpp
msgid "Inventory key"
-msgstr "Inventaire"
+msgstr "Touche inventaire"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
@@ -2559,69 +4474,123 @@ msgid "Invert vertical mouse movement."
msgstr "Inverser les mouvements verticaux de la souris."
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Chemin de la police italique"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Chemin de la police monospace en italique"
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr "Durée de vie des items abandonnés"
+msgstr "Temps de vie des entités objets"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Itérations"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
-"Série Julia : itérations de la fonction récursive.\n"
-"Contrôle la quantité de détails fins."
+"Itérations de la fonction récursive.\n"
+"L'augmenter, augmente la quantité de détails, mais également la charge du "
+"processeur.\n"
+"Quand itérations = 20 cette méthode de génération est aussi gourmande en "
+"ressources que la méthode v7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID de manette"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick button repetition interval"
-msgstr "Intervalle de répétition du clic droit"
+msgstr "Intervalle de répétition des boutons de la manette"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Zone morte de la manette."
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr "Sensibilité tronconique du joystick"
+msgstr "Sensibilité tronconique de la manette"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Type de manette."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
-"Réglage Julia uniquement: composante W de la constante \"hypercomplex\" "
-"déterminant la forme Julia.\n"
-"N'a aucun effet sur fractales 3D.\n"
-"Portée environ -2 et 2."
+"Réglage Julia uniquement.\n"
+"La composante W de la constante hypercomplexe.\n"
+"Modifie la forme de la fractale.\n"
+"N'a aucun effet sur les fractales 3D.\n"
+"Gamme d'environ -2 à 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Série Julia uniquement: composant X de la constante \"hypercomplex\" "
-"déterminant la forme Julia.\n"
-"Portée environ -2 et 2."
+"Série Julia uniquement.\n"
+"La composante X de la constante hypercomplexe.\n"
+"Transforme la forme de la fractale.\n"
+"Portée environ -2 à 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Série Julia uniquement: valeur Y déterminant la forme 4D.\n"
-"La portée est environ entre -2 et 2."
+"Série Julia uniquement.\n"
+"La composante Y de la constante hypercomplexe.\n"
+"Transforme la forme de la fractale.\n"
+"Portée environ -2 à 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Série Julia uniquement: valeur Z déterminant la forme 4D.\n"
-"La portée est environ entre -2 et 2."
+"Série Julia uniquement.\n"
+"La composante Z de la constante hypercomplexe.\n"
+"Transforme la forme de la fractale.\n"
+"Portée environ -2 à 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia z"
#: src/settings_translation_file.cpp
msgid "Jump key"
-msgstr "Sauter"
+msgstr "Touche sauter"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
@@ -2633,7 +4602,27 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour diminuer le champ de vision.\n"
+"Touche pour réduire la distance d'affichage.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour réduire le volume.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour creuser.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2643,7 +4632,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour jeter l'objet sélectionné.\n"
+"Touche pour lâcher l'objet sélectionné.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2653,7 +4642,17 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour accroitre le champ de vision.\n"
+"Touche pour augmenter la distance d'affichage.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour augmenter le volume.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2680,10 +4679,12 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour reculer.\n"
+"Touche pour déplacer le joueur en arrière.\n"
+"Désactive également l’avance automatique, lorsqu’elle est active.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2693,7 +4694,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour avancer.\n"
+"Touche pour déplacer le joueur en avant.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2703,7 +4704,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour se déplacer à gauche.\n"
+"Touche pour déplacer le joueur à gauche.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2713,17 +4714,17 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour se déplacer à droite.\n"
+"Touche pour déplacer le joueur à droite.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour ouvrir la console de jeu.\n"
+"Touche pour rendre le jeu muet.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2733,7 +4734,17 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour ouvrir la fenêtre de chat pour entrer des commandes.\n"
+"Touche pour ouvrir la fenêtre de tchat pour entrer des commandes.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour ouvrir la fenêtre de tchat pour entrer des commandes locales.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2743,7 +4754,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour ouvrir la fenêtre de chat.\n"
+"Touche pour ouvrir la fenêtre de tchat.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2759,737 +4770,970 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher les infos de débogage. Utilisé pour le développement.\n"
+"Touche pour placer.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour se déplacer lentement.\n"
-"Utilisé pour descendre si aux1_descends est désactivé.\n"
+"Touche pour sélectionner la 11ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour changer de vue entre la 1ère et 3ème personne.\n"
+"Touche pour sélectionner la 12ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour prendre des captures d'écran.\n"
+"Touche pour sélectionner la 13ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour passer en mode rapide.\n"
+"Touche pour sélectionner la 14ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour passer en mode cinématique.\n"
+"Touche pour sélectionner la 15ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher la mini-carte.\n"
+"Touche pour sélectionner la 16ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour passer en mode rapide.\n"
+"Touche pour sélectionner la 17ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour voler.\n"
+"Touche pour sélectionner la 18ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour passer en mode \"sans-collision\".\n"
+"Touche pour sélectionner la 19ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche de mise à jour de la caméra. Seulement utilisé pour le "
-"développement.\n"
+"Touche pour sélectionner la 20ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher les infos de débogage.\n"
+"Touche pour sélectionner la 21ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher le HUD.\n"
+"Touche pour sélectionner la 22ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher la zone de chat.\n"
+"Touche pour sélectionner la 23ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher la brume.\n"
+"Touche pour sélectionner la 24ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour afficher/cacher la zone de profilage. Utilisé pour le "
-"développement.\n"
+"Touche pour sélectionner la 25ᵉ case de la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Touche pour activer/désactiver la distance de vue illimitée.\n"
+"Touche pour sélectionner la 26ᵉ case des la barre d'action.\n"
"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "Touche utilisée pour monter/descendre"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la 27ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Langue"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la 28ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
-msgstr "Profondeur des grandes caves"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la 29ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
-msgstr "Fonctionnalités de la lave"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la 30ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
-msgstr "Apparence des feuilles d'arbres"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la 31ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Apparence des feuilles d'arbres :\n"
-"- Détaillée : toutes les faces sont visibles\n"
-"- Simple : seulement les faces externes sont visibles\n"
-"- Opaque : désactive la transparence entre les feuilles"
+"Touche pour sélectionner la 32ᵉ case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Gauche"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la huitième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
-msgstr "Temps d'intervalle entre la mise à jour des objets sur le réseau."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la cinquième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
-msgstr "Durée entre les cycles d’exécution ABM"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la première case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
-msgstr "Durée entre les cycles d’exécution NodeTimer"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la quatrième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Niveau de détails des infos de débogage écrits dans debug.txt :\n"
-"- <rien> (pas d'infos)\n"
-"- aucun (messages sans niveau)\n"
-"- erreur\n"
-"- avertissement\n"
-"- action\n"
-"- info\n"
-"- prolixe"
+"Touche pour sélectionner l'objet suivant dans la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
-msgstr "Limite des files émergentes sur le disque"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la neuvième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
-msgstr "Limite des files émergentes à générer"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner l'objet précédent dans la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Nombre limite de requête HTTP en parallèle. Affecte :\n"
-"- L'obtention de média si le serveur utilise l'option remote_media.\n"
-"- Le téléchargement de la liste des serveurs et l'annonce du serveur.\n"
-"- Les téléchargements effectués par le menu (ex.: gestionnaire de mods).\n"
-"Prend seulement effet si Minetest est compilé avec cURL."
+"Touche pour sélectionner la deuxième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
-msgstr "Fluidité des liquides"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la septième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
-msgstr "Régularité de la fluidité des liquides"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la sixième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
-msgstr "Itérations maximales pendant la transformation des liquides"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la dixième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
-msgstr "Délais de nettoyage d'une file de liquide"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour sélectionner la troisième case de la barre d'action.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
-msgstr "Facteur d'écoulement des liquides"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour se déplacer lentement.\n"
+"Également utilisée pour descendre et plonger dans l'eau si « aux1_descends » "
+"est désactivé.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
-msgstr "Intervalle de mise-à-jour des liquides en secondes."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour changer de vue entre la première et troisième personne.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
-msgstr "Intervalle de mise-à-jour des liquides"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour prendre des captures d'écran.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Touche d'avance automatique.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Touche pour passer en mode cinématique.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Intervalle du modificateur de bloc actif"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour afficher/cacher la mini-carte.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
-msgstr "Gestionnaire de jeux du menu"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour passer en mode rapide.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Gestionnaire de mods du menu"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour voler.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Script de menu personnalisé"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour passer en mode sans collision.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Rendre la couleur de la brume et du ciel différente selon l'heure du jour et "
-"la direction du regard."
+"Touche pour passer en mode mouvement de tangage.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Rendre DirectX compatible avec LuaJIT. Désactiver si cela cause des "
-"problèmes."
+"Touche de mise à jour de la caméra. Seulement utilisé pour le "
+"développement.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
-msgstr "Chemin du monde"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour afficher/cacher la zone de tchat.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Attributs spécifiques au générateur de terrain: Mapgen Valleys.\n"
-"Le paramètre: 'altitude_chill' provoque un refroidissement à des altitudes "
-"élevées, ce qui cause des problèmes dans les biomes.\n"
-"Le paramètre 'humid_rivers' modifie l'humidité autour des rivières et dans "
-"les zones où l'eau est assez présente,\n"
-"cela peut interférer avec des biomes ajustés délicatement.\n"
-"La chaîne de drapeaux modifie les paramètres par défaut du moteur.\n"
-"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par "
-"défaut.\n"
-"Les drapeaux commençant par \"non\" sont utilisés pour désactiver de manière "
-"explicite."
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Attributs de terrain spécifiques à Mapgen flat.\n"
-"Des lacs et des collines occasionnels peuvent être ajoutés au monde plat.\n"
-"Les drapeaux qui ne sont spécifiés dans le champ ne sont pas modifiés par "
-"défaut.\n"
-"Les drapeaux commençant par \"non\" sont désactivés."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour afficher/cacher les infos de débogage.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Attributs spécifiques à Mapgen V6.\n"
-"Quand les terrains neigeux sont activés, les jungles sont activés "
-"automatiquement, les drapeaux \"jungles\" sont ignorés.\n"
-"Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par "
-"défaut.\n"
-"Les drapeaux commençant par \"non\" sont désactivés."
+"Touche pour afficher/cacher le brouillard.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Attributs de terrain spécifiques au Mapgen V7.\n"
-"Le drapeau 'des crêtes' contrôle les rivières.\n"
-"Les drapeaux qui ne sont pas spécifiés dans la chaîne de drapeau ne sont pas "
-"modifiés par rapport à la valeur par défaut.\n"
-"Les drapeaux commençant par \"non\" sont désactivés."
+"Touche pour afficher/masquer le HUD (affichage tête haute).\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
-msgstr "Limites de génération du terrain"
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour afficher/cacher la grande console de tchat.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
-msgstr "Intervalle de sauvegarde de la carte"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour afficher/cacher le profileur. Utilisé pour le développement.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
-msgstr "Limite des mapblocks"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour activer/désactiver la distance de vue illimitée.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
-msgstr "Délais d'interruption du déchargement des mapblocks"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Touche pour zoomer si possible.\n"
+"Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Générateur de carte avec des vallées"
+msgid "Keyboard and Mouse"
+msgstr "Clavier et souris"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr "Mapgen : paramètres de bruit de la température"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+"Expulser les joueurs qui ont envoyé plus de X messages sur 10 secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr "Mapgen : paramètres de mélange de l'humidité"
+msgid "Lake steepness"
+msgstr "Pic du lac"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr "Mapgen : paramètres de bruit de l'humidité"
+msgid "Lake threshold"
+msgstr "Seuil de lacs"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Débogage de la génération du terrain"
+msgid "Language"
+msgstr "Langue"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr "Drapeaux de génération de terrain"
+msgid "Large cave depth"
+msgstr "Profondeur de grandes grottes"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "Générateur de terrain plat"
+msgid "Large cave maximum number"
+msgstr "Nombre maximal de grandes grottes"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
-msgstr "Ampleur de grotte du générateur de terrain plat"
+msgid "Large cave minimum number"
+msgstr "Nombre minimal de grandes grottes"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr "Générateur de terrain plat: paramètres de bruit grotte1"
+msgid "Large cave proportion flooded"
+msgstr "Proportion de grandes grottes inondées"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr "Générateur de terrain plat: paramètres de bruit grotte2"
+msgid "Large chat console key"
+msgstr "Touche grande console de tchat"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr "Générateur de terrain plat: paramètres de bruit sur la profondeur"
+msgid "Leaves style"
+msgstr "Apparence des feuilles"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr "Drapeaux du générateur de terrain plat"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+"Apparence des feuilles d’arbres :\n"
+"– Détaillée : toutes les faces sont visibles\n"
+"– Simple : seulement les faces externes, si des « special_tiles » sont "
+"définies\n"
+"– Opaque : désactive la transparence"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
-msgstr "Niveau du sol du générateur de terrain plat"
+msgid "Left key"
+msgstr "Touche gauche"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr "Élévation des collines plates"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"Durée d'intervalle serveur et intervalle auquel les objets sont généralement "
+"mis à jour sur le réseau, établie en secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr "Seuil du générateur de cartes avec de faibles collines"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Longueur des ondes de liquides.\n"
+"Nécessite les liquides ondulants pour être activé."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr "Escarpement des lacs du générateur de terrain plat"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+"Durée entre les cycles d’exécution du Modificateur de Bloc Actif (« ABM »), "
+"établie en secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr "Seuil des lacs du générateur de terrain plat"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Durée entre les cycles d’exécution « NodeTimer », établie en secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr "Profondeur des grandes grottes du générateur de terrain plat"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+"Durée entre les cycles de gestion des blocs actifs, établie en secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr "Paramètres de bruit du générateur de terrain plat"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+"Niveau de journalisation à écrire dans « debug.txt » :\n"
+"– < rien > (pas de journalisation)\n"
+"– aucun (messages sans niveau)\n"
+"– erreur\n"
+"– avertissement\n"
+"– action\n"
+"– info\n"
+"– prolixe\n"
+"– traçage"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "Fractales de la génération de terrain"
+msgid "Light curve boost"
+msgstr "Amplification de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
-msgstr "Ampleur des grottes du générateur de terrain Julia"
+msgid "Light curve boost center"
+msgstr "Centre d'amplification de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr "Mapgen V5 : paramètres de bruit cave1"
+msgid "Light curve boost spread"
+msgstr "Étalement de l'amplification de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr "Mapgen V5 : paramètre de bruit cave2"
+msgid "Light curve gamma"
+msgstr "Gamma de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr "Mapgen V5 : paramètres de bruit sur la profondeur"
+msgid "Light curve high gradient"
+msgstr "Fort gradient de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr "Drapeaux des fractales de la génération de terrain"
+msgid "Light curve low gradient"
+msgstr "Faible gradient de la courbe de lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
-msgstr "Générateur de terrain Julia: itérations fractales"
+msgid "Lighting"
+msgstr "Lumière"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
-msgstr "Mapgen Julia : fractale W"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Limite du générateur de terrain, en nœuds, dans les 6 directions à partir de "
+"(0,0,0).\n"
+"Seules les tranches de la carte totalement comprises dans cette limite sont "
+"générées.\n"
+"Valeur différente pour chaque monde."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr "Mapgen Julia : fractale X"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+"Nombre limite de requête HTTP en parallèle. Affecte :\n"
+"– L'obtention de média si le serveur utilise le paramètre « remote_media ».\n"
+"– Le téléchargement de la liste des serveurs et l'annonce du serveur.\n"
+"– Les téléchargements effectués par le menu (ex. : gestionnaire de mods).\n"
+"Prend seulement effet si Minetest est compilé avec cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr "Mapgen Julia : fractale Y"
+msgid "Liquid fluidity"
+msgstr "Fluidité des liquides"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr "Mapgen Julia : fractale Z"
+msgid "Liquid fluidity smoothing"
+msgstr "Régularité de la fluidité des liquides"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr "Générateur de terrain Julia: décalages fractals"
+msgid "Liquid loop max"
+msgstr "Itérations maximales pendant la transformation des liquides"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr "Générateur de terrain Julia: échelles fractales"
+msgid "Liquid queue purge time"
+msgstr "Délais de nettoyage d'une file de liquide"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr "Mapgen : paramètres de bruit du fond de l'eau"
+msgid "Liquid sinking"
+msgstr "Écoulement du liquide"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr "Générateur de terrain Julia: couche fractale W"
+msgid "Liquid update interval in seconds."
+msgstr "Intervalle de mise à jour des liquides en secondes."
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr "Mapgen : paramètres de mélange de la température"
+msgid "Liquid update tick"
+msgstr "Intervalle de mise à jour des liquides"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Nom du générateur de carte"
+msgid "Load the game profiler"
+msgstr "Charger le profileur du jeu"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "Mapgen V5"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Charge le profileur du jeu pour collecter des données de profilage du jeu.\n"
+"Fournit une commande « /profiler » pour accéder au profil compilé.\n"
+"Utile pour les développeurs de mod et les opérateurs de serveurs."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
-msgstr "Ampleur des grottes du générateur de terrain: Mapgen V5"
+msgid "Loading Block Modifiers"
+msgstr "Chargement des modificateurs de blocs"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr "Mapgen V5 : paramètres de bruit cave1"
+msgid "Lower Y limit of dungeons."
+msgstr "Limite basse Y des donjons."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr "Mapgen V5 : paramètre de bruit cave2"
+msgid "Lower Y limit of floatlands."
+msgstr "Limite basse Y des terrains flottants."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr "Mapgen V5 : paramètres de facteur de dispersion"
+msgid "Main menu script"
+msgstr "Script du menu principal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr "Mapgen V5 : paramètres de bruit sur la profondeur"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+"Rendre la couleur du brouillard et du ciel différents selon l'heure du jour "
+"(aube/crépuscule) et la direction du regard."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr "Mapgen V5 : paramètres de bruit de la hauteur"
+msgid "Makes all liquids opaque"
+msgstr "Rend toutes les liquides opaques."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "Mapgen V6"
+msgid "Map Compression Level for Disk Storage"
+msgstr "Niveau de compression des cartes pour le stockage sur disque"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des pommiers"
+msgid "Map Compression Level for Network Transfer"
+msgstr "Niveau de compression de la carte pour le transfert réseau"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr "Mapgen V6 : fréquence des plages"
+msgid "Map directory"
+msgstr "Répertoire de la carte du monde"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des plages"
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Attributs spécifiques au générateur de terrain carpatien."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des biomes"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+"Attributs spécifiques au générateur de terrain plat.\n"
+"Des lacs et des collines peuvent être occasionnellement ajoutés au monde "
+"plat."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des caves"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+"Attributs spécifiques au générateur de terrain fractal.\n"
+"« terrain » active la création de terrains non fractals : océans, îles et "
+"souterrains."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr "Mapgen V6 : fréquence des déserts"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+"Attributs spécifiques au générateur de terrain vallées.\n"
+"« altitude_chill » : réduit la chaleur avec l’altitude.\n"
+"« humid_rivers » : augmente l’humidité autour des rivières.\n"
+"« vary_river_dept » : si activé, une humidité basse et une chaleur élevée "
+"rendent les rivières moins profondes et parfois sèches.\n"
+"« altitude_dry » : réduit l’humidité avec l’altitude."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
-msgstr "Mapgen V6 : drapeaux"
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Attributs spécifiques au générateur de terrain v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
-msgstr "Mapgen V6 : paramètres de sélection de la hauteur de bruit"
+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 ""
+"Attributs spécifiques au générateur de terrain v6.\n"
+"Le drapeau « snowbiomes » active le nouveau système à 5 biomes.\n"
+"Lorsque le drapeau « snowbiomes » est activé, les jungles sont "
+"automatiquement activées et le drapeau « jungles » est ignoré."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit de l'humidité"
+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 ""
+"Attributs spécifiques au générateur de terrain v7.\n"
+"« montagnes » : montagnes.\n"
+"« crêtes » : rivières.\n"
+"« terrains flottants » : vaste terrain flottant dans l'atmosphère.\n"
+"« cavernes » : cavernes immenses souterraines profondes."
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr "Limite de génération du terrain"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit de la vase"
+msgid "Map save interval"
+msgstr "Intervalle de sauvegarde de la carte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des pentes"
+msgid "Map shadows update frames"
+msgstr "Images de mise à jour des ombres de la carte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit de l'altitude du terrain"
+msgid "Mapblock limit"
+msgstr "Limite des blocs de carte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit du terrain de base"
+msgid "Mapblock mesh generation delay"
+msgstr "Délai de génération des maillages de blocs de carte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr "Mapgen V6 : paramètres de bruit des arbres"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Taille du cache de blocs de carte en Mo du générateur de maillage"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "Mapgen V7"
+msgid "Mapblock unload timeout"
+msgstr "Délai d'interruption du déchargement de blocs de carte"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr "Ampleur des grottes du générateur de terrain: Mapgen V7"
+msgid "Mapgen Carpathian"
+msgstr "Générateur de terrain carpatien"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit cave1"
+msgid "Mapgen Carpathian specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain carpatien"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit cave2"
+msgid "Mapgen Flat"
+msgstr "Générateur de terrain plat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit sur la profondeur"
+msgid "Mapgen Flat specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain plat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr "Mapgen V7 : drapeaux"
+msgid "Mapgen Fractal"
+msgstr "Générateur de terrain fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr "Mapgen V7 : paramètres de sélection de la hauteur du bruit"
+msgid "Mapgen Fractal specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr "Mapgen V7 : paramètres de hauteur du bruit des montagnes"
+msgid "Mapgen V5"
+msgstr "Générateur de terrain v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit des montagnes"
+msgid "Mapgen V5 specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit des rivières"
+msgid "Mapgen V6"
+msgstr "Générateur de terrain v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit de l'eau des rivières"
+msgid "Mapgen V6 specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr "Mapgen V7 : paramètres de bruit de l'altitude du terrain"
+msgid "Mapgen V7"
+msgstr "Générateur de terrain v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr "Mapgen V7 : paramètres du bruit du terrain de base"
+msgid "Mapgen V7 specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr "Mapgen V7 : paramètres du bruit de la persistance du terrain"
+msgid "Mapgen Valleys"
+msgstr "Générateur de terrain vallées"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr "Profondeur des caves massives"
+msgid "Mapgen Valleys specific flags"
+msgstr "Drapeaux spécifiques au générateur de terrain vallées"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr "Bruit des caves massives"
+msgid "Mapgen debug"
+msgstr "Débogage de la génération de terrain"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr "Forme des caves massives."
+msgid "Mapgen name"
+msgstr "Nom du générateur de terrain"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr "Distance maximale de génération des mapblocks"
+msgstr "Distance maximale de génération de blocs"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr "Distance maximale d'envoi des mapblocks"
+msgstr "Distance maximale d'envoi de blocs"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
@@ -3497,69 +5741,106 @@ msgstr "Maximum de liquides traités par étape de serveur."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr "Maximum d'extra-mapblocks par clearobjects"
+msgstr "Blocs supplémentaires maximum de « clearobjects »"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr "Paquets maximum par itération"
+msgstr "Paquets maximaux par itération"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
msgstr "FPS maximum"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr "FPS maximum quand le jeu est en pause."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+"FPS maximum lorsque la fenêtre n'est pas sélectionnée, ou lorsque le jeu est "
+"en pause."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Distance maximale pour le rendu des ombres."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr "Mapblocks maximum chargés de force"
+msgstr "Blocs maximum chargés de force"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
msgstr "Largeur maximale de la barre d'inventaire"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent in total."
-msgstr "Nombre maximal de joueurs qui peuvent être connectés en même temps."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+"Limite maximale du nombre aléatoire de grandes grottes par tranche de carte."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
-msgstr "Nombre maximum de mapblocks qui peuvent être listés pour chargement."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+"Limite maximale du nombre aléatoire de petites grottes par tranche de carte."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+"Résistance maximale aux liquides. Contrôle la décélération lorsqu'un joueur "
+"entre dans un liquide à haute vitesse."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Le nombre maximal de blocs envoyés simultanément par client.\n"
+"Le compte total maximal est calculé dynamiquement :\n"
+"max_total = ceil((nombre clients + max_users) × per_client ÷ 4)"
#: src/settings_translation_file.cpp
msgid "Maximum number of blocks that can be queued for loading."
-msgstr "Nombre maximum de mapblocks qui peuvent être listés pour chargement."
+msgstr ""
+"Nombre maximal de blocs qui peuvent être mis en file d'attente pour "
+"chargement."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Nombre maximum de mapblocks à lister qui doivent être générés.\n"
-"Laisser ce champ vide pour un montant approprié défini automatiquement."
+"Nombre maximal de blocs à mettre en file d'attente qui doivent être "
+"générés.\n"
+"Cette limite est appliquée par joueur."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Nombre maximum de mapblocks à lister qui doivent être générés depuis un "
-"fichier.\n"
-"Laisser ce champ vide pour un montant approprié défini automatiquement."
+"Nombre maximal de blocs à mettre en file d'attente qui doivent être chargés "
+"depuis un fichier.\n"
+"Cette limite est appliquée par joueur."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+"Nombre maximal de téléchargements simultanés. Les téléchargements dépassant "
+"cette limite seront mis en file d'attente.\n"
+"Ce nombre doit être inférieur à la limite de « curl_parallel_limit »."
#: src/settings_translation_file.cpp
msgid "Maximum number of forceloaded mapblocks."
-msgstr "Nombre maximum de mapblocks chargés de force."
+msgstr "Nombre maximal de blocs de carte chargés de force."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
-"Nombre maximum de mapblocks gardés dans la mémoire du client.\n"
+"Nombre maximal de blocs de carte pour le client à garder en mémoire.\n"
"Définir à -1 pour un montant illimité."
#: src/settings_translation_file.cpp
@@ -3568,24 +5849,26 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
-"Nombre maximum de paquets envoyés par étape d'envoi. Si vous avez une "
-"connexion lente,\n"
-"essayez de réduire cette valeur, mais réduisez pas cette valeur en-dessous "
-"du double du nombre\n"
-"de clients maximum sur le serveur."
+"Nombre maximal de paquets envoyés par étape d'envoi. Si vous avez une "
+"connexion lente, essayer de réduire cette valeur, mais ne pas réduire cette "
+"valeur en-dessous du double du nombre de clients maximum sur le serveur."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
msgstr "Nombre maximal de joueurs qui peuvent être connectés en même temps."
#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Nombre maximal de message récent à afficher."
+
+#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr "Nombre maximum d'objets sauvegardés dans un mapblock (16^3 blocs)."
+msgstr ""
+"Nombre maximal d'objets sauvegardés dans un bloc de carte (16^3 blocs)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum objects per block"
-msgstr "Nombre maximum d'objets par mapblock"
+msgstr "Nombre maximal d'objets par bloc"
#: src/settings_translation_file.cpp
msgid ""
@@ -3596,32 +5879,45 @@ msgstr ""
"Utile quand il y a quelque chose à afficher à gauche ou à droite de la barre."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum simultaneous block sends per client"
-msgstr "Nombre maximum de mapblocks simultanés envoyés par client"
+msgstr "Nombre maximal de blocs simultanés envoyés par client"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum simultaneous block sends total"
-msgstr "Nombre maximum total de mapblocks simultanés envoyés"
+msgid "Maximum size of the out chat queue"
+msgstr "Taille maximale de la file de sortie de message du tchat"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
-"Délais maximaux de téléchargement d'un fichier (ex.: un mod), établi en "
-"millisecondes."
+"Taille maximale de la file de sortie de message du tchat.\n"
+"0 pour désactiver la file de sortie et -1 pour rendre la taille de la file "
+"de sortie illimitée."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr "Joueurs maximum"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+"Durée maximale qu'un téléchargement de fichier (ex. : un téléchargement de "
+"mod) peut prendre, établie en millisecondes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Durée maximale qu'une requête interactive (ex. : récupération de la liste de "
+"serveurs) peut prendre, établie en millisecondes."
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Menus"
+msgid "Maximum users"
+msgstr "Joueurs maximums"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr "Mise en cache des meshes"
+msgstr "Mise en cache des maillages"
#: src/settings_translation_file.cpp
msgid "Message of the day"
@@ -3636,44 +5932,86 @@ msgid "Method used to highlight selected object."
msgstr "Méthodes utilisées pour l'éclairage des objets."
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Niveau minimal de journalisation à écrire dans le tchat."
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr "Mini-carte"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr "Mini-carte"
+msgstr "Touche mini-carte"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr "Hauteur de scannage de la mini-carte"
+msgstr "Hauteur de balayage de la mini-carte"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr "Taille minimum des textures à filtrer"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+"Limite minimale du nombre aléatoire de grandes grottes par tranche de carte."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+"Limite minimale du nombre aléatoire de petites grottes par tranche de carte."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Taille minimale des textures"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
msgstr "Mip-mapping"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
-msgstr "URL des détails du magasin de mods"
+msgid "Misc"
+msgstr "Divers"
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr "Profileur des mods"
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr "Sécurité des mods"
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr "URL de téléchargement du magasin de mods"
+msgid "Mod channels"
+msgstr "Canaux de mods"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr "URL de liste des mods du magasin de mods"
+msgid "Modifies the size of the HUD elements."
+msgstr "Modifie la taille des éléments de l'interface."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr "Chemin de la police Monospace"
+msgstr "Chemin de la police monospace"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr "Taille de la police Monospace"
+msgstr "Taille de la police monospace"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Taille de la police monospace divisible par"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Bruit de hauteur des montagnes"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Bruit des montagnes"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Bruit de variation des montagnes"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Niveau de base des montagnes"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
@@ -3684,29 +6022,38 @@ msgid "Mouse sensitivity multiplier."
msgstr "Facteur de sensibilité de la souris."
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Bruit de boue"
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
-"Facteur de mouvement de bras en tombant.\n"
-"Exemples : 0 = aucun mouvement, 1 = normal, 2 = double."
+"Facteur de balancement de chute.\n"
+"Par exemple : 0 pour aucun balancement de la vue, 1 pour normal, 2 pour "
+"double."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
-"Facteur de mouvement de bras.\n"
-"Par exemple : 0 = pas de mouvement, 1 = normal, 2 = double."
+msgid "Mute key"
+msgstr "Touche muet"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Couper le son"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
-"Nom du générateur de terrain à utiliser lorsque de la création d'un nouveau "
+"Nom du générateur de terrain qui sera utilisé à la création d’un nouveau "
"monde.\n"
-"Créer un nouveau monde dans le menu va annuler ce paramètre."
+"La création d'un monde depuis le menu principal le remplacera.\n"
+"Les générateurs de terrain actuellement très instables sont :\n"
+"– Les terrains flottants optionnels du générateur v7 (désactivé par défaut)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3715,19 +6062,20 @@ msgid ""
"When starting from the main menu, this is overridden."
msgstr ""
"Nom du joueur.\n"
-"Lors qu'un serveur est lancé, les clients se connectant avec ce nom sont "
-"administrateurs."
+"Lorsqu'un serveur est lancé, les clients se connectant avec ce nom sont "
+"administrateurs.\n"
+"Lors du démarrage à partir du menu principal, celui-ci est remplacé."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
msgstr ""
-"Nom du serveur, affiché sur liste des serveurs publics et lorsque les "
-"joueurs se connectent."
+"Nom du serveur affiché lorsque les joueurs se connectent et sur la liste des "
+"serveurs."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr "Réseau"
+msgid "Near plane"
+msgstr "Plan à proximité"
#: src/settings_translation_file.cpp
msgid ""
@@ -3738,6 +6086,10 @@ msgstr ""
"Cette valeur est annulée en commençant depuis le menu."
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr "Réseau"
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr "Les nouveaux joueurs ont besoin d'entrer ce mot de passe."
@@ -3747,137 +6099,190 @@ msgstr "Sans collision"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr "Mode sans collision"
+msgstr "Touche mode sans collision"
#: src/settings_translation_file.cpp
-msgid "Node highlighting"
-msgstr "Eclairage des blocs"
+msgid "Node and Entity Highlighting"
+msgstr "Surbrillance des blocs et des entités"
#: src/settings_translation_file.cpp
-msgid "NodeTimer interval"
-msgstr "Intervalle de temps d'un nœud"
+msgid "Node highlighting"
+msgstr "Surbrillance des blocs"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
-"Paramètres de mélange pour la température, humidité et mélange de biomes."
+msgid "NodeTimer interval"
+msgstr "Intervalle « NodeTimer »"
#: src/settings_translation_file.cpp
msgid "Noises"
msgstr "Bruits"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
-msgstr "Échantillonnage de normalmaps"
-
-#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
-msgstr "Force des normalmaps"
-
-#: src/settings_translation_file.cpp
msgid "Number of emerge threads"
msgstr "Nombre de tâches en cours"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
-"Nombre de tâches en cours à utiliser. Laisser ce champ vide, ou augmenter "
-"cette valeur\n"
-"pour utiliser le multi-tâches. Sur des systèmes multi-processeurs, cela va "
-"améliorer grandement\n"
-"la génération de terrain au détriment de quelques altérations de grottes."
+"Nombre de processus « emerge » à utiliser.\n"
+"Valeur 0 :\n"
+"– Sélection automatique. Le nombre de processus sera le\n"
+"– « nombre de processeurs - 2 », avec un minimum de 1.\n"
+"Toute autre valeur :\n"
+"– Spécifie le nombre de processus, avec un minimum de 1.\n"
+"ATTENTION : augmenter le nombre de processus « emerge » accélère bien la\n"
+"création de terrain, mais cela peut nuire à la performance du jeu en "
+"interférant\n"
+"avec d’autres processus, en particulier en mode solo et/ou lors de "
+"l’exécution de\n"
+"code Lua en mode « on_generated ». Pour beaucoup, le réglage optimal peut "
+"être « 1 »."
#: src/settings_translation_file.cpp
msgid ""
"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
+"This is a trade-off between SQLite transaction overhead and\n"
"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
-"Nombre d'extra-mapblocks qui peuvent être chargés par /clearobjects dans "
-"l'immédiat.\n"
-"C'est un compromis entre un transfert SQLite plafonné et la consommation "
-"mémoire\n"
-"(4096 = 100 Mo, comme règle fondamentale)."
+"Nombre de blocs supplémentaires qui peuvent être chargés par « /"
+"clearobjects » à la fois.\n"
+"C'est un compromis entre la surcharge de transaction SQLite et la "
+"consommation mémoire\n"
+"(4096 = 100 Mo, comme règle générale)."
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr "Liquides opaques"
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
-msgstr "Nombre d'itérations sur l'occlusion parallaxe."
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+"Opacité (alpha) de l'ombre derrière la police par défaut, entre 0 et 255."
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
-"Bias général de l'occlusion parallaxe, habituellement échelle divisée par 2."
+"Ouvre le menu pause lorsque la sélection de la fenêtre est perdue. Ne met "
+"pas en pause si un formspec est ouvert."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
-msgstr "Echelle générale de l'occlusion parallaxe."
+msgid "Optional override for chat weblink color."
+msgstr "Remplacement optionnel pour la couleur du lien web du tchat."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "Occlusion parallaxe"
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+"Chemin de la police alternative. Doit être une police TrueType.\n"
+"Cette police sera utilisée pour certaines langues ou si la police par défaut "
+"est indisponible."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr "Echelle de l'occlusion parallaxe"
+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 ""
+"Chemin pour enregistrer les captures d'écran (absolu ou relatif).\n"
+"La création du dossier sera faite si besoin."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr "Bias de l'occlusion parallaxe"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+"Répertoire des shaders. Si le chemin n'est pas défini, le chemin par défaut "
+"est utilisé."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
-msgstr "Nombre d'itérations sur l'occlusion parallaxe"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+"Chemin vers le dossier des textures. Toutes les textures sont d'abord "
+"cherchées dans ce dossier."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "Mode occlusion parallaxe"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Chemin de la police par défaut. Doit être une police TrueType.\n"
+"La police alternative sera utilisée si la police ne peut pas être chargée."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr "Force de l'occlusion parallaxe"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Chemin de la police monospace. Doit être une police TrueType.\n"
+"Cette police est utilisée par exemple pour la console et l’écran du "
+"profileur."
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr "Chemin vers police TrueType ou Bitmap."
+msgid "Pause on lost window focus"
+msgstr "Mettre en pause sur perte de sélection de la fenêtre"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr "Chemin où les captures d'écran sont sauvegardées."
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Limite par joueur de blocs en attente à charger depuis le disque"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
-"Chemin vers le dossier des textures. Toutes les textures sont d'abord "
-"cherchées dans ce dossier."
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Limite par joueur de la file de blocs à générer"
#: src/settings_translation_file.cpp
msgid "Physics"
msgstr "Physique"
#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr "Touche mouvement de tangage"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "Mode mouvement de tangage"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr "Touche placer"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Intervalle de répétition du placement"
+
+#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
"Le joueur est capable de voler sans être affecté par la gravité.\n"
-"Nécessite le privilège \"fly\" sur un serveur."
-
-#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Nom du joueur"
+"Nécessite le privilège « fly » sur le serveur."
#: src/settings_translation_file.cpp
msgid "Player transfer distance"
msgstr "Distance de transfert du joueur"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr "Mode combat"
+msgid "Player versus player"
+msgstr "Joueur contre joueur"
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr "Filtrage de Poisson"
#: src/settings_translation_file.cpp
msgid ""
@@ -3885,7 +6290,17 @@ msgid ""
"Note that the port field in the main menu overrides this setting."
msgstr ""
"Port où se connecter (UDP).\n"
-"Le champ de port dans le menu va annuler ce paramètre."
+"Noter que le champ de port dans le menu principal passe outre ce paramètre."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Empêche le minage et le placement de se répéter lors du maintien des boutons "
+"de la souris.\n"
+"Activer cette option lorsque vous creusez ou placez trop souvent par "
+"accident."
#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
@@ -3894,34 +6309,47 @@ msgstr ""
"système)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
-"Délais d’intervalle d'affichage du profilage des données. 0 = "
-"désactivation.\n"
-"Utile pour les développeurs."
+"Affiche les données de profilage du moteur à intervalles réguliers (en "
+"secondes).\n"
+"0 = désactivé. Utile pour les développeurs."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
msgstr ""
-"Les privilèges que les joueurs ayant le privilège basic_privs peuvent "
-"accorder"
+"Les privilèges que les joueurs avec le privilège « basic_privs » peuvent "
+"accorder."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Profiler"
-msgstr "Profil des vallées"
+msgstr "Profileur"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr "Profilage"
+msgstr "Touche profilage"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Profiling"
-msgstr "Profilage des mods"
+msgid "Prometheus listener address"
+msgstr "Adresse d'écoute pour Prometheus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+"Adresse d'écoute pour Prometheus.\n"
+"Lorsque Minetest est compilé avec l'option « ENABLE_PROMETHEUS », cette "
+"adresse est utilisée pour l'écoute de données pour Prometheus.\n"
+"Les métriques peuvent être récupérées sur http://127.0.0.1:30000/metrics."
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Proportion de grandes grottes qui contiennent du liquide."
#: src/settings_translation_file.cpp
msgid ""
@@ -3929,13 +6357,13 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
-"Rayon de l'aire des nuages où se trouve 64 blocs de nuage.\n"
-"Les valeurs plus grandes que 26 entraînent une \"coupure\" nette des nuages "
-"aux coins de l'aire."
+"Rayon de la zone de nuages établi en nombre de 64 blocs de nuages carrés.\n"
+"Les valeurs plus grandes que 26 entraînent une coupure nette des nuages aux "
+"coins des zones de nuages."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr "Élève le terrain pour former des vallées autour des rivières"
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Élève le terrain pour former des vallées autour des rivières."
#: src/settings_translation_file.cpp
msgid "Random input"
@@ -3943,7 +6371,15 @@ msgstr "Entrée aléatoire"
#: src/settings_translation_file.cpp
msgid "Range select key"
-msgstr "Distance d'affichage illimitée"
+msgstr "Touche distance d'affichage illimitée"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Messages de discussion récents"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Chemin de la police par défaut"
#: src/settings_translation_file.cpp
msgid "Remote media"
@@ -3954,68 +6390,145 @@ msgid "Remote port"
msgstr "Port distant"
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+"Supprime les codes couleurs venant des messages du tchat.\n"
+"Utiliser cette option pour empêcher les joueurs d’utiliser la couleur dans "
+"leurs messages."
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr "Remplace le menu par défaut par un menu personnalisé."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Chemin du fichier de police"
+msgstr "Chemin du rapport"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Limite l'accès de certaines fonctions côté client sur les serveurs.\n"
+"Combiner les « byteflags » ci dessous pour restreindre les fonctionnalités "
+"client, ou mettre 0 pour laisser sans restriction :\n"
+"LOAD_CLIENT_MODS : 1 (désactive le chargement des mods client)\n"
+"CHAT_MESSAGES : 2 (désactive l'appel « send_chat_message côté » client)\n"
+"READ_ITEMDEFS : 4 (désactive l'appel « get_item_def côté » client)\n"
+"READ_NODEDEFS : 8 (désactive l'appel « get_node_def » côté client)\n"
+"LOOKUP_NODES_LIMIT : 16 (limite l'appel « get_node » côté client à « "
+"csm_restriction_noderange »)\n"
+"READ_PLAYERINFO : 32 (désactive l'appel « get_player_names » côté client)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Bruit pour l'espacement des crêtes de montagnes"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Bruit des crêtes"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Bruit des crêtes sous l'eau"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Bruit de la taille des crêtes de montagnes"
#: src/settings_translation_file.cpp
msgid "Right key"
-msgstr "Droite"
+msgstr "Touche droite"
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr "Profondeur des rivières"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr "Intervalle de répétition du clic droit"
+msgid "River channel width"
+msgstr "Largeur des rivières"
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River depth"
msgstr "Profondeur des rivières"
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River noise"
msgstr "Bruit des rivières"
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River size"
msgstr "Taille des rivières"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr "Bruit des rivières"
+msgid "River valley width"
+msgstr "Largeur des vallées fluviales"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
msgstr "Enregistrement des actions"
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Taille du bruit des collines arrondies"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Étalement du bruit de collines arrondies"
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr "Mini-carte circulaire"
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Minage et placement sécurisés"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+"Des plages de sables apparaissent lorsque « np_beach » dépasse cette valeur."
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr "Sauvegarde le monde du serveur sur le disque-dur du client."
+msgstr "Sauvegarde le monde du serveur sur le disque dur du client."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+"Sauvegarde automatiquement la taille de la fenêtre quand elle est modifiée."
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr "Sauvegarder le monde du serveur"
+msgstr "Sauvegarde de la carte reçue du serveur"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
-"Mise à l'échelle du GUI par une valeur spécifique de l'utilisateur.\n"
+"Met à l'échelle l'interface par une valeur spécifiée par l'utilisateur, à "
+"l'aide d'un filtre au plus proche voisin avec anticrénelage.\n"
"Cela va lisser certains bords grossiers, et mélanger les pixels en réduisant "
-"l'échelle\n"
-"au détriment d'un effet de flou sur des pixels en bordure quand les images "
-"sont\n"
-"misent à l'échelle par des valeurs non-entières."
+"l'échelle au détriment d'un effet de flou sur des pixels en bordure quand "
+"les images sont mises à l'échelle par des valeurs fractionnelles."
+
+#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr "Écran"
#: src/settings_translation_file.cpp
msgid "Screen height"
@@ -4026,10 +6539,6 @@ msgid "Screen width"
msgstr "Largeur de la fenêtre"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Capture d'écran"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr "Dossier des captures d'écran"
@@ -4048,20 +6557,34 @@ msgid ""
"Use 0 for default quality."
msgstr ""
"Qualité de capture d'écran. Utilisé uniquement pour le format JPEG.\n"
-"1 signifie mauvaise qualité; 100 signifie la meilleure qualité.\n"
-"Utilisez 0 pour la qualité par défaut."
+"1 signifie mauvaise qualité ; 100 signifie la meilleure qualité.\n"
+"Utiliser 0 pour la qualité par défaut."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "Sécurité"
+msgid "Screenshots"
+msgstr "Captures d'écran"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Seabed noise"
+msgstr "Bruit des fonds marins"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Deuxième des 4 bruits 2D qui définissent ensemble la hauteur des collines et "
+"des montagnes."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Deuxième des deux bruits 3D qui définissent ensemble les tunnels."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr "Voir http://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr "Couleur des bords de sélection (R,G,B)."
+msgstr "Couleur des bords de sélection (R,V,B)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
@@ -4072,8 +6595,58 @@ msgid "Selection box width"
msgstr "Epaisseur des bords de sélection"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Serveur / Partie solo"
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Choisit parmi 18 types de fractales.\n"
+"1 = réglage Mandelbrot « Roundy » 4D.\n"
+"2 = réglage Julia « Roundy » 4D.\n"
+"3 = réglage Mandelbrot « Squarry » 4D.\n"
+"4 = réglage Julia « Squarry » 4D.\n"
+"5 = réglage Mandelbrot « Cousin Mandy » 4D.\n"
+"6 = réglage Julia « Cousin Mandy » 4D.\n"
+"7 = réglage Mandelbrot « Variation » 4D.\n"
+"8 = réglage Julia « Variation » 4D.\n"
+"9 = réglage Mandelbrot « Mandelbrot/Mandelbar » 3D.\n"
+"10 = réglage Julia « Mandelbrot/Mandelbar » 3D.\n"
+"11 = réglage Mandelbrot « Christmas Tree » 3D.\n"
+"12 = réglage Julia « Christmas Tree » 3D.\n"
+"13 = réglage Mandelbrot « Mandelbulb » 3D.\n"
+"14 = réglage Julia « Mandelbulb » 3D.\n"
+"15 = réglage Mandelbrot « Cosine Mandelbulb » 3D.\n"
+"16 = réglage Julia « Cosine Mandelbulb » 3D.\n"
+"17 = réglage Mandelbrot « Mandelbulb » 4D.\n"
+"18 = réglage Julia « Mandelbulb » 4D."
+
+#: src/settings_translation_file.cpp
+msgid "Server"
+msgstr "Serveur"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr "Jeu du serveur"
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr "Sécurité du serveur"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -4096,59 +6669,161 @@ msgid "Server port"
msgstr "Port du serveur"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Détermination des blocs invisibles côté serveur"
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr "Performance du serveur"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr "URL de la liste des serveurs publics"
+msgstr "URL de la liste des serveurs"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr "Liste des serveurs et message du jour"
#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr "Fichier des serveurs publics"
+msgstr "Fichier de la liste des serveurs"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
-"Détermine la langue. Laisser vide pour utiliser celui de votre système.\n"
-"Un redémarrage du jeu est nécessaire pour prendre effet."
+"Définit la langue. Laisser vide pour utiliser la langue du système.\n"
+"Un redémarrage est nécessaire après cette modification."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Définit la longueur maximale d'un message de tchat (en caractères) envoyé "
+"par les clients."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Définit l'intensité gamma de l'ombre.\n"
+"Ajuste l’intensité des ombres dynamiques dans le jeu.\n"
+"Une valeur plus faible signifie des ombres plus claires, une valeur plus "
+"élevée signifie des ombres plus sombres."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Définit la taille du rayon de l'ombre douce.\n"
+"Les valeurs les plus faibles signifient des ombres plus nettes, les valeurs "
+"les plus élevées des ombres plus douces.\n"
+"Valeur minimale : 1,0 ; valeur maximale : 15,0"
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Définit l'inclinaison de l'orbite du soleil / lune en degrés.\n"
+"La valeur de 0 signifie aucune inclinaison / orbite verticale.\n"
+"Valeur minimale : 0,0 ; valeur maximale : 60,0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
-"Mettre sur \"true\" active les feuilles d'arbres mouvantes.\n"
+"Mettre sur « Activé » active le « Shadow Mapping ».\n"
"Nécessite les shaders pour être activé."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
-"Mettre sur \"true\" active les plantes mouvantes.\n"
+"Mettre sur « Activé » active les feuilles ondulantes.\n"
"Nécessite les shaders pour être activé."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
-"Mettre sur \"true\" active les liquides mouvants.\n"
+"Mettre sur « Activé » active les liquides ondulants (comme l'eau).\n"
"Nécessite les shaders pour être activé."
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Mettre sur « Activé » active le mouvement des végétaux.\n"
+"Nécessite les shaders pour être activé."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Définit la qualité de la texture de l'ombre sur 32 bits.\n"
+"Si désactivé, une texture de 16 bits sera utilisée.\n"
+"Cela peut causer beaucoup plus d'artefacts sur l'ombre."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Chemin des shaders"
+
+#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
-"Les shaders permettent des effets visuels avancés et peut améliorer les "
+"Les shaders permettent des effets visuels avancés et peuvent améliorer les "
"performances sur certaines cartes graphiques.\n"
"Fonctionne seulement avec OpenGL."
#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Qualité du filtre d’ombre"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+"Distance maximale de la carte des ombres en nœuds pour le rendu des ombres"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "Texture de la carte des ombres en 32 bits"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Taille de la texture de la carte des ombres"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+"Décalage de l'ombre de la police par défaut (en pixel). Aucune ombre si la "
+"valeur est 0."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr "Intensité gamma de l'ombre"
+
+#: src/settings_translation_file.cpp
msgid "Shape of the minimap. Enabled = round, disabled = square."
-msgstr "Forme de la mini-carte. Activé = ronde, désactivé = carré."
+msgstr "Forme de la mini-carte. Activé = ronde, désactivé = carrée."
#: src/settings_translation_file.cpp
msgid "Show debug info"
@@ -4159,19 +6834,80 @@ msgid "Show entity selection boxes"
msgstr "Afficher les boîtes de sélection de l'entité"
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Afficher les boîtes de sélection de l'entité\n"
+"Un redémarrage est nécessaire après cette modification."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Afficher l'arrière-plan des badges par défaut"
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
-msgstr "Message d'arrêt du serveur"
+msgstr "Message d'arrêt"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
-msgstr "Taille des chunks à générer, établie en mapblocks (16^3 blocs)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+"Taille des tranches de carte générés à la création de terrain, établie en "
+"blocs de carte (16 nœuds).\n"
+"ATTENTION ! : Il n’y a aucun avantage, et plusieurs dangers, à augmenter "
+"cette valeur au-dessus de 5.\n"
+"Réduire cette valeur augmente la densité de cavernes et de donjons.\n"
+"La modification de cette valeur est réservée à un usage spécial. Il est "
+"conseillé de la laisser inchangée."
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
-"La pente et le remplissage fonctionnent ensemble pour modifier les hauteurs"
+"Taille du cache de blocs de carte du générateur de maillage. Augmenter ceci "
+"augmente le % d'interception du cache et réduit la copie de données dans le "
+"fil principal, réduisant les tremblements."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Inclinaison de l'orbite du corps du ciel"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "Largeur de part"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+"La pente et le remplissage fonctionnent ensemble pour modifier les hauteurs."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Nombre maximal de petites grottes"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Nombre minimal de petites grottes"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+"Variation de l'humidité de petite échelle pour la transition entre les "
+"biomes."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+"Variation de température de petite échelle pour la transition entre les "
+"biomes."
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
@@ -4182,7 +6918,8 @@ msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
-"Lisse les mouvement de la caméra en se déplaçant et en regardant autour.\n"
+"Lisse les mouvements de la caméra en se déplaçant et en regardant autour. "
+"Également appelé « look smoothing » ou « mouse smoothing ».\n"
"Utile pour enregistrer des vidéos."
#: src/settings_translation_file.cpp
@@ -4195,7 +6932,19 @@ msgstr "Lisse la rotation de la caméra. 0 pour désactiver."
#: src/settings_translation_file.cpp
msgid "Sneak key"
-msgstr "Déplacement lent"
+msgstr "Touche déplacement lent"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Vitesse de déplacement lent"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Vitesse de déplacement lent, en nœuds par seconde."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Rayon de l'ombre douce"
#: src/settings_translation_file.cpp
msgid "Sound"
@@ -4211,47 +6960,149 @@ msgstr ""
"Spécifie l'URL à laquelle les clients obtiennent les fichiers média au lieu "
"d'utiliser le port UDP.\n"
"$filename doit être accessible depuis $remote_media$filename via cURL "
-"(évidemment, remote_media devrait\n"
-"se terminer avec un slash).\n"
-"Les fichiers qui ne sont pas présents seront obtenus avec le moyen usuel."
+"(évidemment, remote_media devrait se terminer avec un slash).\n"
+"Les fichiers qui ne sont pas présents seront récupérés de la manière "
+"habituelle."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Donne les valeurs par défaut de la taille des piles de nœuds, d'items et "
+"d'outils.\n"
+"Les mods ou les parties peuvent fixer explicitement une pile pour certains "
+"items."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Répartit une mise à jour complète de la carte des ombres sur un nombre donné "
+"d'images.\n"
+"Des valeurs plus élevées peuvent rendre les ombres plus lentes, des valeurs "
+"plus faibles consommeront plus de ressources.\n"
+"Valeur minimale : 1 ; valeur maximale : 16"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Longueur d'intervalle de l'amplification de la courbe de lumière.\n"
+"Contrôle la largeur de l'intervalle d'amplification.\n"
+"Écart type de la gaussienne d'amplification de courbe de lumière."
#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
-msgstr "Emplacement du spawn"
+msgstr "Point d'apparition statique"
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
-msgstr "Force des normalmaps autogénérés."
+msgid "Steepness noise"
+msgstr "Bruit des pentes"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
-msgstr "Force de l'occlusion parallaxe."
+msgid "Step mountain size noise"
+msgstr "Bruit de la taille des montagnes en escalier"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Bruit d'étalement des montagnes en escalier"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Intensité de parallaxe en mode 3D."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Niveau d'amplification de la courbure de la lumière.\n"
+"Les trois paramètres « d'amplification » définissent un intervalle de la "
+"courbe de lumière pour lequel la luminosité est amplifiée."
#: src/settings_translation_file.cpp
msgid "Strict protocol checking"
msgstr "Vérification stricte du protocole"
#: src/settings_translation_file.cpp
-msgid "Support older servers"
-msgstr "Fonctionne sur d'anciens serveurs"
+msgid "Strip color codes"
+msgstr "Supprimer les codes couleurs"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Niveau de la surface de l'eau (optionnel) placée sur une couche solide de "
+"terrain flottant.\n"
+"L'eau est désactivée par défaut et ne sera placée que si cette valeur est "
+"définie à plus de « mgv7_floatland_ymax » - « mgv7_floatland_taper » (début "
+"de l’effilage du haut).\n"
+"***ATTENTION, DANGER POTENTIEL AU MONDES ET AUX PERFORMANCES DES "
+"SERVEURS*** :\n"
+"Lorsque le placement de l'eau est activé, les terrains flottants doivent "
+"être configurés et vérifiés pour être une couche solide en mettant "
+"« mgv7_floatland_density » à 2,0 (ou autre valeur dépendante de "
+"« mgv7_np_floatland »), pour éviter les chutes d'eaux énormes qui "
+"surchargent les serveurs et pourraient inonder les terres en dessous."
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
msgstr "SQLite synchronisé"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr "Variation de température pour les biomes."
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr "Paramètres temporaires"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Bruit alternatif de terrain"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Bruit de terrain de base"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
msgstr "Hauteur du terrain"
#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Bruit de hauteur du terrain"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Bruit de terrain"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
"Seuil du bruit de relief pour les collines.\n"
-"Contrôle la proportion sur la superficie d'un monde recouvert de collines.\n"
-"Ajuster vers 0. 0 pour une plus grande proportion."
+"Contrôle la proportion sur la zone d'un monde recouvert de collines.\n"
+"Ajuster vers 0,0 pour une plus grande proportion."
#: src/settings_translation_file.cpp
msgid ""
@@ -4260,32 +7111,98 @@ msgid ""
"Adjust towards 0.0 for a larger proportion."
msgstr ""
"Seuil du bruit de relief pour les lacs.\n"
-"Contrôle la proportion sur la superficie d'un monde recouvert de lacs.\n"
-"Ajuster vers 0. 0 pour une plus grande proportion."
+"Contrôle la proportion sur la zone d'un monde recouvert de lacs.\n"
+"Ajuster vers 0,0 pour une plus grande proportion."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Bruit de persistance du terrain"
#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr "Chemin des textures"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
-msgstr "L'altitude à laquelle la température descend de 20°C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Taille de la texture pour le rendu de la carte des ombres.\n"
+"Il doit s'agir d'une puissance de deux.\n"
+"Les nombres plus grands créent de meilleures ombres, mais ils sont aussi "
+"plus coûteux."
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"Les textures sur un nœud peuvent être alignées soit sur le nœud, soit sur le "
+"monde. Le premier mode convient mieux aux choses comme des machines, des "
+"meubles, etc., tandis que le second rend les escaliers et les microblocs "
+"mieux adaptés à l'environnement. Cependant, comme cette possibilité est "
+"nouvelle, elle ne peut donc pas être utilisée par les anciens serveurs, "
+"cette option permet de l'appliquer pour certains types de nœuds. Noter "
+"cependant que c'est considéré comme EXPÉRIMENTAL et peut ne pas fonctionner "
+"correctement."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "L'URL du dépôt de contenu."
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "La zone morte de la manette"
#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"Le format par défaut dans lequel les profils sont enregistrés, lors de "
+"l'appel de « /profiler save [format] » sans format."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+"La profondeur de la terre ou autre matériau de remplissage dépendant du "
+"biome."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"Le chemin d'accès au fichier relatif au monde dans lequel les profils seront "
+"sauvegardés."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
-msgstr "La profondeur de la terre ou autre matériau"
+msgid "The identifier of the joystick to use"
+msgstr "L'identifiant de la manette à utiliser."
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+"La longueur en pixels qu'il faut pour que l'interaction avec l'écran tactile "
+"commence."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"La hauteur maximale de la surface des liquides ondulants.\n"
+"4,0 - La hauteur des vagues est de deux blocs.\n"
+"0,0 - La vague ne bouge pas du tout.\n"
+"Par défaut est de 1,0 (1/2 bloc).\n"
+"Nécessite les liquides ondulants pour être activé."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
@@ -4297,19 +7214,50 @@ msgid ""
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
"Les privilèges que les nouveaux joueurs obtiennent automatiquement.\n"
-"Entrer /privs dans le jeu pour voir une liste complète des privilèges."
+"Entrer « /privs » dans le jeu pour voir une liste complète des privilèges."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
-msgstr "Le pilote vidéo pour Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+"Le rayon du volume de blocs autour de chaque joueur soumis au bloc actif, "
+"établi en blocs de carte (16 nœuds).\n"
+"Dans les blocs actifs, les objets sont chargés et les « ABMs » sont "
+"exécutés.\n"
+"C'est également la distance minimale dans laquelle les objets actifs (mobs) "
+"sont conservés.\n"
+"Ceci devrait être configuré avec « active_object_send_range_blocks »."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"Le moteur de rendu.\n"
+"Un redémarrage est nécessaire après cette modification.\n"
+"Remarque : Sur Android, rester avec OGLES1 en cas de doute ! Autrement, "
+"l'application peut ne pas démarrer.\n"
+"Sur les autres plateformes, OpenGL est recommandé.\n"
+"Les shaders sont pris en charge par OpenGL (ordinateur de bureau uniquement) "
+"et OGLES2 (expérimental)."
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
-"Sensibilité de la souris pour déplacer la \n"
-"vue en jeu autour du tronc."
+"Sensibilité des axes de la manette pour déplacer la vue en jeu autour du "
+"tronc."
#: src/settings_translation_file.cpp
msgid ""
@@ -4318,12 +7266,12 @@ 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 ""
-"Force (obscurité) de l'ombrage des blocs avec l'occlusion ambiante.\n"
+"Intensité (obscurité) de l'ombrage des blocs avec l'occlusion ambiante.\n"
"Les valeurs plus basses sont plus sombres, les valeurs plus hautes sont plus "
"claires.\n"
-"Une gamme valide de valeurs pour ceci se situe entre 0.25 et 4.0. Si la "
-"valeur est en dehors\n"
-"de cette gamme alors elle sera définie à la plus proche des valeurs valides."
+"Une gamme valide de valeurs pour ceci se situe entre 0,25 et 4,0. Si la "
+"valeur est en dehors de cette gamme alors elle sera définie à la plus proche "
+"des valeurs valides."
#: src/settings_translation_file.cpp
msgid ""
@@ -4331,43 +7279,68 @@ 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 ""
-"Le temps (en secondes) où la file des liquides peut s'agrandir au-delà de "
-"sa\n"
-"capacité de traitement jusqu'à ce qu'une tentative est faite pour réduire sa "
-"taille en vidant\n"
-"l'ancienne file d'items. Une valeur de 0 désactive cette fonctionnalité."
+"Le temps (en secondes) où la file des liquides peut s'agrandir au-delà de sa "
+"capacité de traitement jusqu'à ce qu'une tentative soit faite pour réduire "
+"sa taille en vidant l'ancienne file d'articles.\n"
+"Une valeur de 0 désactive cette fonctionnalité."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+"Budget de temps alloué aux « ABMs » pour s'exécuter à chaque étape (en "
+"fraction de l'intervalle « ABM »)"
#: src/settings_translation_file.cpp
msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
-"L'intervalle en secondes entre des clics droits répétés lors de l'appui sur "
-"le bouton droit de la souris."
+"Le temps en secondes qu'il faut entre des événements répétés lors de l'appui "
+"d'une combinaison de boutons de la manette."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
-"L'intervalle en secondes entre des clics droits répétés lors de l'appui sur "
-"le bouton droit de la souris."
+"Le temps en secondes qu'il faut entre des placements de blocs répétés lors "
+"de l'appui sur le bouton de placement."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr "Cette police sera utilisée pour certaines langues."
+msgid "The type of joystick"
+msgstr "Le type de manette"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+"La distance verticale sur laquelle la chaleur diminue de 20 si "
+"« altitude_chill » est activé. Également la distance verticale sur laquelle "
+"l’humidité diminue de 10 si « altitude_dry » est activé."
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
-msgstr "Temps entre les cycles de gestion des blocs actifs"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Le troisième des 4 bruits 2D qui définissent ensemble la hauteur des "
+"collines et des montagnes."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
-"Durée de visibilité des objets jetés.\n"
-"Définir ceci à -1 pour désactiver cette fonctionnalité."
+"Temps en secondes pour les entités objets (objets lâchés) à exister.\n"
+"Définir à -1 pour désactiver cette fonctionnalité."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+"Heure de la journée lorsqu'un nouveau monde est créé, en milliheures (0–"
+"23999)."
#: src/settings_translation_file.cpp
msgid "Time send interval"
@@ -4378,10 +7351,10 @@ msgid "Time speed"
msgstr "Vitesse du temps"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
-"Temps de délais pour le client pour supprimer les données de la carte de sa "
-"mémoire."
+"Délai d'interruption pour le client pour supprimer les données de carte "
+"inutilisées de la mémoire, établi en secondes."
#: src/settings_translation_file.cpp
msgid ""
@@ -4390,19 +7363,38 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
-"Pour réduire le lag, le transfert des mapblocks sont ralentis quand un "
-"joueur\n"
-"est en train de construire quelque chose.\n"
+"Pour réduire le décalage, le transfert des blocs est ralenti quand un joueur "
+"construit quelque chose.\n"
"Cela détermine la durée du ralentissement après placement ou destruction "
-"d'un bloc."
+"d'un nœud."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr "Changer de caméra"
+msgstr "Touche basculer en mode caméra"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
-msgstr "Délais d'apparition des infobulles"
+msgstr "Délai d'apparition des infobulles"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Sensibilité de l'écran tactile"
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr "Écran tactile"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Compromis pour la performance"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr "Distance de tri de la transparence"
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Bruit des arbres"
#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
@@ -4412,20 +7404,40 @@ msgstr "Filtrage trilinéaire"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
-"True = 256\n"
-"False = 128\n"
+"Activé = 256\n"
+"Désactive = 128\n"
"Utile pour rendre la mini-carte plus fluide sur des ordinateurs peu "
"performants."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr "Mods sécurisés"
+msgstr "Mods de confiance"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
-msgstr "URL de la liste des serveurs affichée dans l'onglet multijoueur."
+msgstr ""
+"URL de la liste des serveurs affichée dans l'onglet « Rejoindre une partie »."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Sous-échantillonnage"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+"Le sous-échantillonnage ressemble à l'utilisation d'une résolution d'écran "
+"inférieure, mais il ne s'applique qu'au rendu 3D, gardant l'interface "
+"intacte.\n"
+"Cela doit donner un bonus de performance conséquent, au détriment de la "
+"qualité d'image.\n"
+"Les valeurs plus élevées réduisent la qualité du détail des images."
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
@@ -4433,63 +7445,138 @@ msgstr "Distance de transfert du joueur illimitée"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr "Purger les données de serveur inutiles"
+msgstr "Décharger les données de serveur inutilisées"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Limite haute Y des donjons."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Limite haute Y des terrains flottants."
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr "Activation des nuages 3D au lieu des nuages 2D (plats)."
+msgstr "Activer les nuages 3D au lieu des nuages 2D (plats)."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr "Mouvement des nuages dans le menu."
+msgstr ""
+"Utiliser une animation de nuages pour l'arrière-plan du menu principal."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
-msgstr "Utilisation du filtrage anisotrope."
+msgstr ""
+"Utilisation du filtrage anisotrope lors de la visualisation des textures de "
+"biais."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
msgstr "Utilisation du filtrage bilinéaire."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Utiliser"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Utilise le mip-mapping pour mettre à l'échelle les textures.\n"
+"Peut augmenter légèrement les performances, surtout lors de l'utilisation "
+"d'un pack de textures haute résolution.\n"
+"La réduction d'échelle gamma correcte n'est pas prise en charge."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
-msgstr "Utilisation du mip-mapping. Peut impacter les performances."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+"Utilise l'anticrénelage multi-échantillons (MSAA) pour lisser les bords des "
+"blocs.\n"
+"Cet algorithme lisse la vue 3D tout en conservant l'image nette, mais cela "
+"ne concerne pas la partie interne des textures (ce qui est particulièrement "
+"visible avec des textures transparentes).\n"
+"Des espaces visibles apparaissent entre les blocs lorsque les shaders sont "
+"désactivés.\n"
+"Si définie à 0, MSAA est désactivé.\n"
+"Un redémarrage est nécessaire après la modification de cette option."
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
msgstr "Utilisation du filtrage trilinéaire."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
-msgstr "Synchronisation verticale"
+msgid "User Interfaces"
+msgstr "Interfaces utilisateur"
#: src/settings_translation_file.cpp
msgid "VBO"
msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr "Synchronisation verticale"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
msgstr "Profondeur des vallées"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr "Comblement de vallée"
+msgid "Valley fill"
+msgstr "Comblement des vallées"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley profile"
msgstr "Profil des vallées"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
msgstr "Inclinaison des vallées"
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
-msgstr "Drapeaux de Valleys C"
+msgid "Variation of biome filler depth."
+msgstr "Variation de la profondeur du remplisseur de biome."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variation de la hauteur maximale des montagnes (en blocs)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variation du nombre de grottes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+"Variation du terrain en hauteur.\n"
+"Quand le bruit est inférieur à -0,55, le terrain est presque plat."
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "Variation de la profondeur des blocs en surface pour les biomes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+"Variation de la rugosité du terrain.\n"
+"Définit la valeur de « persistance » pour les bruits terrain_base et "
+"terrain_alt."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Contrôle l'élévation/hauteur des falaises."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Vitesse d’escalade verticale, en nœuds par seconde."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
@@ -4500,52 +7587,71 @@ msgid "Video driver"
msgstr "Pilote vidéo"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr "Mouvement du bras"
+msgid "View bobbing factor"
+msgstr "Facteur de balancement de la vue"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
-"Distance d'affichage en blocs.\n"
-"Minimum à 20"
+msgid "View distance in nodes."
+msgstr "Distance d'affichage en blocs."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
-msgstr "Réduire la distance d'affichage"
+msgstr "Touche réduire la distance d'affichage"
#: src/settings_translation_file.cpp
msgid "View range increase key"
-msgstr "Augmenter la distance d'affichage"
+msgstr "Touche augmenter la distance d'affichage"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Touche zoomer"
#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr "Plage de visualisation"
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "Manette virtuelle déclenche le bouton Aux1"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr "Volume du son"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Volume de tous les sons.\n"
+"Exige que le son du système soit activé."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
-"Série Julia : coordonnée W de la couche 3D de la forme 4D.\n"
+"Coordonnée W de la couche 3D de la forme 4D.\n"
"Détermine la tranche 3D de la forme 4D qui est générée.\n"
+"Transforme la forme de la fractale.\n"
"N'a aucun effet sur les fractales 3D.\n"
-"La portée est environ entre -2 et 2."
+"La portée est d'environ -2 à 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Vitesse de marche et de vol, en nœuds par seconde."
#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr "Vitesse de marche"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Caractéristiques de l'eau"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Vitesse de marche, de vol et de montée en mode rapide, en nœuds par seconde."
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4553,7 +7659,7 @@ msgstr "Niveau de l'eau"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
-msgstr "Niveau de la surface de l'eau dans le monde."
+msgstr "Niveau de la surface de l'eau du monde."
#: src/settings_translation_file.cpp
msgid "Waving Nodes"
@@ -4561,27 +7667,31 @@ msgstr "Environnement mouvant"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
-msgstr "Feuilles d'arbres mouvantes"
+msgstr "Feuilles ondulantes"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Plantes mouvantes"
+msgid "Waving liquids"
+msgstr "Liquides ondulants"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Liquides mouvants"
+msgid "Waving liquids wave height"
+msgstr "Hauteur des vagues des liquides ondulants"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Hauteur des liquides mouvants"
+msgid "Waving liquids wave speed"
+msgstr "Vitesse de mouvement des liquides ondulants"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "Durée du mouvement des liquides"
+msgid "Waving liquids wavelength"
+msgstr "Longueur d'onde des liquides ondulants"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Vitesse de mouvement des liquides"
+msgid "Waving plants"
+msgstr "Plantes ondulantes"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "Couleur du lien web"
#: src/settings_translation_file.cpp
msgid ""
@@ -4589,76 +7699,58 @@ msgid ""
"filtered in software, but some images are generated directly\n"
"to hardware (e.g. render-to-texture for nodes in inventory)."
msgstr ""
-"Quand gui_scaling_filter est activé, tous les images du GUI sont\n"
-"filtrées dans Minetest, mais quelques images sont générées directement\n"
-"par le matériel (ex.: textures des blocs dans l'inventaire)."
+"Quand « gui_scaling_filter » est activé, tous les images du GUI sont "
+"filtrées par le logiciel, mais certaines sont générées directement par le "
+"matériel (ex. : textures des blocs dans l'inventaire)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"When gui_scaling_filter_txr2img is true, copy those images\n"
"from hardware to software for scaling. When false, fall back\n"
"to the old scaling method, for video drivers that don't\n"
"properly support downloading textures back from hardware."
msgstr ""
-"Quand gui_scaling_filter_txr2img est activé, cela copie les images depuis\n"
-"votre matériel vers Minetest pour mise à l'échelle. Si désactivé, retour à "
-"la méthode par défaut\n"
-"pour les pilotes vidéo qui ne supportent pas le chargement des textures "
-"depuis le matériel."
+"Quand « gui_scaling_filter_txr2img » est activé, copier les images du "
+"matériel au logiciel pour mise à l'échelle.\n"
+"Si désactivé, l'ancienne méthode de mise à l'échelle est utilisée, pour les "
+"pilotes vidéos qui ne supportent pas le chargement des textures depuis le "
+"matériel."
#: src/settings_translation_file.cpp
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
-"En utilisant le filtrage bilinéaire / trilinéaire / anisotrope, les textures "
-"de basse résolution\n"
-"peuvent être floues en agrandissat automatiquement les textures avec une "
-"interpolation précise\n"
-"pour préserver les pixels hasardeux.\n"
-"\n"
-"Ceci détermine la taille de la texture minimale pour les textures agrandie. "
-"Les valeurs plus hautes rendent\n"
-"les textures plus détaillées, mais nécessitent plus de mémoire.\n"
-"Les valeurs en puissance de 2 sont recommandées. Définir une valeur "
-"supérieure à 1 peut ne pas\n"
-"avoir un effet visible sauf le filtrage bilinéaire / trilinéaire / "
-"anisotrope est activé."
+"En utilisant le filtrage bilinéaire/trilinéaire/anisotrope, les textures de "
+"basse résolution peuvent être brouillées. Elles seront donc automatiquement "
+"agrandies avec l'interpolation du plus proche voisin pour garder des pixels "
+"moins floues. Ceci détermine la taille de la texture minimale pour les "
+"textures agrandies ; les valeurs plus hautes rendent plus détaillées, mais "
+"nécessitent plus de mémoire. Les puissances de 2 sont recommandées. Ce "
+"paramètre est appliqué uniquement si le filtrage bilinéaire/trilinéaire/"
+"anisotrope est activé.\n"
+"Ceci est également utilisée comme taille de texture de nœud de base pour "
+"l'agrandissement automatique des textures alignées sur le monde."
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
-"Limite de la génération de terrain.\n"
-"Notes :\n"
-"- Limite absolue à 31000 (une valeur supérieure n'a aucun effet).\n"
-"- La génération de terrain fonctionne par groupes de 80^3 blocs (= 5^3 "
-"mapblocks).\n"
-"- Ces groupes ont un décalage de -32, -32 blocs depuis leur origine.\n"
-"- Seuls les groupes intégrant les limites définies par map_generation_limit "
-"sont générées"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
-msgstr ""
-"Détermine l'utilisation des polices Freetype. Nécessite une compilation avec "
-"le support Freetype."
+"Si l'arrière-plan des badges doit être affiché par défaut.\n"
+"Les mods peuvent toujours définir un arrière-plan."
#: 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."
+msgstr ""
+"Détermine la désynchronisation des animations de texture de nœud par bloc de "
+"carte."
#: src/settings_translation_file.cpp
msgid ""
@@ -4666,7 +7758,7 @@ msgid ""
"Deprecated, use the setting player_transfer_distance instead."
msgstr ""
"Détermine l'exposition illimitée des noms de joueurs aux autres clients.\n"
-"Obsolète : utiliser l'option player_transfer_distance à la place."
+"Obsolète : utiliser le paramètre « player_transfer_distance » à la place."
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
@@ -4677,45 +7769,69 @@ msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
-"Détermine la possibilité des clients de se re-connecter après une "
-"interruption de serveur.\n"
-"Activé-le si votre serveur est paramétré pour redémarrer automatiquement."
+"S’il faut demander aux clients de se reconnecter après un crash (Lua).\n"
+"Définir sur « Activé » si le serveur est paramétré pour redémarrer "
+"automatiquement."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
-msgstr "Détermine la visibilité de la brume au bout de l'aire visible."
+msgstr "Détermine la visibilité du brouillard au bout de l'aire visible."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+"S'il faut couper le son. Vous pouvez réactiver le son à tout moment, sauf si "
+"le système audio est désactivé (« enable_sound=false »).\n"
+"Dans le jeu, vous pouvez basculer l'état du son avec la touche « Muet » ou "
+"en utilisant le menu pause."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
-"Détermine la visibilité des infos de débogage du client (même effet que "
-"taper F5)."
+"Détermine si les noms techniques doivent être affichés.\n"
+"Affecte les mods et les packs de textures dans les menus « Contenu » et « "
+"Sélectionner les mods », ainsi que les noms de paramètres dans « Tous les "
+"paramètres ».\n"
+"Contrôlé par la case à cocher dans le menu « Tous les paramètres »."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
-"Supporte les anciens serveurs antérieurs au protocole version 25.\n"
-"A activer si vous souhaitez vous connecter aux serveurs version 0.4.12 et "
-"antérieure.\n"
-"Les serveurs démarrant en 0.4.13 vont fonctionner, pas ceux en 0.4.12-dev.\n"
-"La désactivation de cette option permettra de mieux protéger votre mot de "
-"passe."
+"Détermine la visibilité des informations de débogage du client (même effet "
+"que taper F5)."
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr "Résolution verticale de la fenêtre de jeu."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Composant de largeur de la taille initiale de la fenêtre. Ignoré en mode "
+"plein écran."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width of the selection box lines around nodes."
msgstr "Épaisseur des bordures de sélection autour des blocs."
#: src/settings_translation_file.cpp
msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Systèmes Windows seulement : démarrer Minetest avec la fenêtre de ligne de "
+"commande en arrière-plan. Contient les mêmes informations que le fichier "
+"« debug.txt » (nom par défaut)."
+
+#: src/settings_translation_file.cpp
+msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
@@ -4723,455 +7839,574 @@ msgstr ""
"Inutile si démarré depuis le menu."
#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Heure de début du monde"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"Les textures alignées sur le monde peuvent être mises à l'échelle pour "
+"couvrir plusieurs nœuds. Cependant, le serveur peut ne pas envoyer l'échelle "
+"que vous voulez, surtout si vous utilisez un pack de textures spécialement "
+"conçu ; avec cette option, le client essaie de déterminer l'échelle "
+"automatiquement en fonction de la taille de la texture.\n"
+"Voir aussi « texture_min_size ».\n"
+"Avertissement : cette option est EXPÉRIMENTALE !"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "Mode d’alignement des textures sur le monde"
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr "Coordonnée Y des terrains plats."
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"Y du niveau zéro du gradient de densité de la montagne. Utilisé pour "
+"déplacer les montagnes verticalement."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Limite haute Y des grandes grottes."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
msgstr ""
-"Coordonnée Y de la limite supérieure des grandes grottes pseudo-aléatoires."
+"La distance Y jusqu'à laquelle les cavernes s'étendent à leur taille "
+"maximale."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+"Hauteur-Y à laquelle les terrains flottants commencent à rétrécir.\n"
+"L'effilage comment à cette distance de la limite en Y.\n"
+"Pour une couche solide de terrain flottant, ceci contrôle la hauteur des "
+"montagnes.\n"
+"Doit être égale ou moindre à la moitié de la distance entre les limites Y."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Limite moyenne Y de la surface du terrain."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Limite haute Y de génération des cavernes."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Limite Y du plus haut terrain qui crée des falaises."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Limite Y du plus bas terrain et des fonds marins."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Limite Y du fond marin."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr "cURL"
#: src/settings_translation_file.cpp
msgid "cURL file download timeout"
-msgstr "Délais d'interruption de cURL lors d'un téléchargement de fichier"
+msgstr "Délai d'interruption de cURL lors d'un téléchargement de fichier"
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "Délai d'interruption interactive de cURL"
#: src/settings_translation_file.cpp
msgid "cURL parallel limit"
msgstr "Limite parallèle de cURL"
-#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "Délais d'interruption de cURL"
+#~ msgid "- Creative Mode: "
+#~ msgstr "– Mode créatif : "
-#~ msgid ""
-#~ "Map generation attributes specific to Mapgen flat.\n"
-#~ "Occasional lakes and hills can be added to the flat world.\n"
-#~ "The default flags set in the engine are: none\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
-#~ msgstr ""
-#~ "Attributs de terrain spécifiques au générateur de carte plate.\n"
-#~ "Lacs et collines peuvent partiellement être ajoutés à un monde plat.\n"
-#~ "Aucun drapeau par défaut défini dans le moteur.\n"
-#~ "La chaîne de drapeaux modifie les paramètres par défaut du moteur.\n"
-#~ "Les drapeaux qui ne sont pas spécifiés dans le champ gardent leurs "
-#~ "valeurs par défaut.\n"
-#~ "Les drapeaux commençant par \"non\" sont désactivés."
+#~ msgid "- Damage: "
+#~ msgstr "– Dégâts : "
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen v7.\n"
-#~ "The 'ridges' flag controls the rivers.\n"
-#~ "The default flags set in the engine are: mountains, ridges\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
#~ msgstr ""
-#~ "Attributs spécifiques à Mapgen V7.\n"
-#~ "Le drapeau 'des crêtes' contrôle les rivières.\n"
-#~ "Les drapeaux par défaut définis dans le moteur sont: montagnes, crêtes.\n"
-#~ "La chaîne de drapeaux modifie les paramètres par défaut du moteur.\n"
-#~ "Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs "
-#~ "par défaut.\n"
-#~ "Les drapeaux commençant par \"non\" sont désactivés."
+#~ "0 = occlusion parallaxe avec des informations de pente (plus rapide).\n"
+#~ "1 = cartographie en relief (plus lent, plus précis)."
-#~ msgid "Item textures..."
-#~ msgstr "Textures d'items..."
+#~ msgid "Address / Port"
+#~ msgstr "Adresse / Port"
#~ msgid ""
-#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node "
-#~ "completely.\n"
-#~ "Note that this is not quite optimized and that smooth lighting on the\n"
-#~ "water surface doesn't work with this."
-#~ msgstr ""
-#~ "Rend la surface de l'eau légèrement plus basse, de façon à ce qu'elle ne "
-#~ "submerge pas\n"
-#~ "entièrement le bloc voisin.\n"
-#~ "Cette fonctionnalité est encore expérimentale et la lumière douce "
-#~ "n’apparaît pas à la\n"
-#~ "surface de l'eau."
-
-#~ msgid "Enable selection highlighting for nodes (disables selectionbox)."
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
#~ msgstr ""
-#~ "Active l'éclairage des blocs pointés (et supprime les bordures noires de "
-#~ "sélection)."
+#~ "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n"
+#~ "Ce paramètre s'applique au client seulement et est ignoré par le serveur."
-#~ msgid ""
-#~ "Julia set: (X,Y,Z) offsets from world centre.\n"
-#~ "Range roughly -2 to 2, multiply by j_scale for offsets in nodes."
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
#~ msgstr ""
-#~ "Série Julia : décalages (X,Y,Z) à partir du centre du monde.\n"
-#~ "La portée est environ entre -2 et 2. Multiplier par j_scale pour décaler "
-#~ "en nombre de blocs."
+#~ "Modifie la façon dont les terres flottantes montagneuses s’effilent au-"
+#~ "dessus et au-dessous du point médian."
-#~ msgid ""
-#~ "Julia set: W value determining the 4D shape.\n"
-#~ "Range roughly -2 to 2."
-#~ msgstr ""
-#~ "Série Julia : valeur W déterminant la forme 4D.\n"
-#~ "La portée est environ entre -2 et 2."
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Êtes-vous sûr de vouloir réinitialiser votre monde ?"
+
+#~ msgid "Back"
+#~ msgstr "Retour"
+
+#~ msgid "Basic"
+#~ msgstr "Principal"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bits par pixel (profondeur de couleur) en mode plein-écran."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Placage de relief"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Bump mapping"
+
+#~ msgid "Center of light curve mid-boost."
+#~ msgstr "Milieu de la courbe de lumière mi-boost."
#~ msgid ""
-#~ "Key for decreasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "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 ""
-#~ "Touche pour réduire la distance de vue. Modifie la distance de vue "
-#~ "minimale.\n"
-#~ "Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Change l’interface du menu principal :\n"
+#~ "- Complet : Mondes solo, choix du jeu, sélecteur du pack de textures, "
+#~ "etc.\n"
+#~ "- Simple : un monde solo, pas de sélecteurs de jeu ou de pack de "
+#~ "textures. Peut être\n"
+#~ "nécessaire pour les plus petits écrans."
+
+#~ msgid "Config mods"
+#~ msgstr "Configurer les mods"
+
+#~ msgid "Configure"
+#~ msgstr "Configurer"
+
+#~ msgid "Connect"
+#~ msgstr "Rejoindre"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Contrôle la vitesse de descente dans un liquide."
#~ msgid ""
-#~ "Key for increasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
#~ msgstr ""
-#~ "Touche pour augmenter la distance de vue. Modifie la distance de vue "
-#~ "minimale.\n"
-#~ "Voir http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Contrôle la densité des terrains montagneux sur les terres flottantes.\n"
+#~ "C'est un décalage ajouté à la valeur du bruit 'mgv7_np_mountain'."
-#~ msgid ""
-#~ "Mandelbrot set: (X,Y,Z) offsets from world centre.\n"
-#~ "Range roughly -2 to 2, multiply by m_scale for offsets in nodes."
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
#~ msgstr ""
-#~ "Série Mandelbrot : décalages (X,Y,Z) à partir du centre du monde.\n"
-#~ "La portée est environ entre -2 et 2. Multiplier par m_scale pour décaler "
-#~ "en nombre de blocs."
+#~ "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels "
+#~ "plus larges."
+
+#~ msgid "Credits"
+#~ msgstr "Crédits"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Couleur du réticule (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Dégâts activés"
-#~ msgid "Mandelbrot set: Approximate (X,Y,Z) scales in nodes."
-#~ msgstr "Série Mandelbrot : échelles (X,Y,Z) en blocs."
+#~ msgid "Darkness sharpness"
+#~ msgstr "Démarcation de l'obscurité"
#~ msgid ""
-#~ "Mandelbrot set: Iterations of the recursive function.\n"
-#~ "Controls scale of finest detail."
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
#~ msgstr ""
-#~ "Série Mandelbrot : itérations de la fonction récursive.\n"
-#~ "Contrôle l'échelle du détail le plus subtil."
+#~ "Délais d'interruption de cURL par défaut, établi en millisecondes.\n"
+#~ "Seulement appliqué si Minetest est compilé avec cURL."
#~ msgid ""
-#~ "Mandelbrot set: W co-ordinate of the generated 3D slice of the 4D shape.\n"
-#~ "Range roughly -2 to 2."
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
#~ msgstr ""
-#~ "Série Mandelbrot : coordonnée W de la couche 3D de la forme 4D.\n"
-#~ "La portée est environ entre -2 et 2."
+#~ "Défini les zones de terrain plat flottant.\n"
+#~ "Des terrains plats flottants apparaissent lorsque le bruit > 0."
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen fractal.\n"
-#~ "'julia' selects a julia set to be generated instead of a mandelbrot set.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them."
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
#~ msgstr ""
-#~ "Attributs de terrain spécifiques à Mapgen V7.\n"
-#~ "'ridges' sont les rivières.\n"
-#~ "Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs "
-#~ "par défaut.\n"
-#~ "Les drapeaux commençant par \"non\" sont désactivés."
+#~ "Niveau de lissage des normal maps.\n"
+#~ "Une valeur plus grande lisse davantage les normal maps."
-#~ msgid "Mapgen fractal mandelbrot iterations"
-#~ msgstr "Mapgen Mandelbrot : itérations fractales"
+#~ msgid "Del. Favorite"
+#~ msgstr "Supprimer favori"
-#~ msgid "Mapgen fractal mandelbrot offset"
-#~ msgstr "Mapgen Mandelbrot : décalages fractals"
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Télécharger un jeu comme Minetest Game depuis minetest.net"
-#~ msgid "Mapgen fractal mandelbrot scale"
-#~ msgstr "Mapgen Mandelbrot : échelles fractales"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Télécharger en un depuis minetest.net"
-#~ msgid "Mapgen fractal mandelbrot slice w"
-#~ msgstr "Mapgen Mandelbrot : couche fractale W"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Téléchargement et installation de $1, veuillez patienter..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "Activer Vertex Buffer Object: objet tampon de vertex"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Activer la confirmation d'enregistrement"
#~ msgid ""
-#~ "Maximum distance above water level for player spawn.\n"
-#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n"
-#~ "Smaller values may result in a suitable spawn point not being found,\n"
-#~ "resulting in a spawn at (0, 0, 0) possibly buried underground."
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Distance maximum au-dessus du niveau de l'eau où le joueur apparaît.\n"
-#~ "Des valeurs plus grandes aboutissent à des locations plus proches de (x = "
-#~ "0, z = 0).\n"
-#~ "Des valeurs plus petites peut résulter à une location de spawn non-"
-#~ "trouvée, résultant\n"
-#~ "à une location située à (0, 0, 0) probablement enterrée sous le sol."
+#~ "Active le bumpmapping pour les textures.\n"
+#~ "Les normalmaps peuvent être fournies par un pack de textures pour un "
+#~ "meilleur effet de relief,\n"
+#~ "ou bien celui-ci est auto-généré.\n"
+#~ "Nécessite les shaders pour être activé."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Autorise le mappage tonal cinématographique"
#~ msgid ""
-#~ "Minimum wanted FPS.\n"
-#~ "The amount of rendered stuff is dynamically set according to this. and "
-#~ "viewing range min and max."
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
#~ msgstr ""
-#~ "Images par seconde (FPS) minimum.\n"
-#~ "Le niveau de rendu est dynamiquement adapté selon ce paramètre et la "
-#~ "distance de vue (minimale et maximale)."
-
-#~ msgid "New style water"
-#~ msgstr "Nouveau style de liquide"
+#~ "Active la génération à la volée des normalmaps.\n"
+#~ "Nécessite le bumpmapping pour être activé."
#~ msgid ""
-#~ "Pre-generate all item visuals used in the inventory.\n"
-#~ "This increases startup time, but runs smoother in-game.\n"
-#~ "The generated textures can easily exceed your VRAM, causing artifacts in "
-#~ "the inventory."
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Pré-générer tous les visuels d'items utilisés dans l'inventaire.\n"
-#~ "Cela augmente le temps de démarrage, mais rend les inventaires plus "
-#~ "fluides.\n"
-#~ "Les textures générées peuvent facilement déborder votre VRAM, causant des "
-#~ "bugs dans votre inventaire."
+#~ "Active l'occlusion parallaxe.\n"
+#~ "Nécessite les shaders pour être activé."
-#~ msgid "Preload inventory textures"
-#~ msgstr "Pré-chargement des textures d'inventaire"
+#~ msgid "Enter "
+#~ msgstr "Entrer "
#~ msgid ""
-#~ "The allowed adjustment range for the automatic rendering range "
-#~ "adjustment.\n"
-#~ "Set this to be equal to viewing range minimum to disable the auto-"
-#~ "adjustment algorithm."
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
#~ msgstr ""
-#~ "Distance d'affichage maximum.\n"
-#~ "Définir cette valeur égale à la distance de vue minimum pour désactiver\n"
-#~ "l'auto-ajustement dynamique de la distance d'affichage."
+#~ "Option expérimentale, peut causer un espace vide visible entre les blocs\n"
+#~ "quand paramétré avec un nombre supérieur à 0."
-#~ msgid "Vertical initial window size."
-#~ msgstr "Largeur initiale de la fenêtre de jeu."
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS maximum sur le menu pause"
-#~ msgid "Vertical spawn range"
-#~ msgstr "Portée verticale du spawn"
+#~ msgid "Fallback font shadow"
+#~ msgstr "Ombre de la police alternative"
-#~ msgid "Viewing range minimum"
-#~ msgstr "Distance de vue minimum"
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Opacité de l'ombre de la police alternative"
-#~ msgid "Wanted FPS"
-#~ msgstr "FPS minimum"
+#~ msgid "Fallback font size"
+#~ msgstr "Taille de la police alternative"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Taille appliquée aux menus : "
+#~ msgid "Filtering"
+#~ msgstr "Filtrage"
-#~ msgid "Downloading"
-#~ msgstr "Téléchargement"
+#~ msgid "Floatland base height noise"
+#~ msgstr "Le bruit de hauteur de base des terres flottantes"
-#~ msgid " KB/s"
-#~ msgstr " Ko/s"
+#~ msgid "Floatland mountain height"
+#~ msgstr "Hauteur des montagnes flottantes"
-#~ msgid " MB/s"
-#~ msgstr " Mo/s"
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)."
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr ""
-#~ "Clic gauche : déplacer tous les objets -- Clic droit : déplacer un objet"
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Taille de police secondaire au point (pt)."
-#~ msgid "is required by:"
-#~ msgstr "est requis par :"
+#~ msgid "FreeType fonts"
+#~ msgstr "Polices Freetype"
-#~ msgid "Configuration saved. "
-#~ msgstr "Configuration enregistrée. "
+#~ msgid "Full screen BPP"
+#~ msgstr "Bits par pixel en mode plein écran"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Attention : configuration incorrecte. "
+#~ msgid "Game"
+#~ msgstr "Jeu"
-#~ msgid "Cannot create world: Name contains invalid characters"
-#~ msgstr ""
-#~ "Impossible de créer le monde : le nom contient des caractères invalides"
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
-#~ msgid "Show Public"
-#~ msgstr "Voir les serveurs publics"
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Génération de Normal Maps"
-#~ msgid "Show Favorites"
-#~ msgstr "Voir les serveurs favoris"
+#~ msgid "Generate normalmaps"
+#~ msgstr "Normal mapping"
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Laisser l'adresse vide pour lancer un serveur local."
+#~ msgid "HUD scale factor"
+#~ msgstr "Facteur de mise à l'échelle de l'interface"
-#~ msgid "Create world"
-#~ msgstr "Créer un monde"
+#~ msgid "High-precision FPU"
+#~ msgstr "FPU de haute précision"
-#~ msgid "Address required."
-#~ msgstr "Adresse requise."
+#~ msgid "IPv6 support."
+#~ msgstr "Support IPv6."
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Impossible de supprimer le monde : rien n'est sélectionné"
+#~ msgid "In-Game"
+#~ msgstr "Dans le jeu"
-#~ msgid "Files to be deleted"
-#~ msgstr "Fichiers à supprimer"
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Installation : fichier : « $1 »"
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Impossible de créer le monde : aucun jeu n'est présent"
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentalisation"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Impossible de configurer ce monde : aucune sélection active"
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr "Raccourcis clavier"
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Tous les fichiers du monde n'ont pu être supprimés"
+#~ msgid "Lava depth"
+#~ msgstr "Profondeur de lave"
-#~ msgid ""
-#~ "Default Controls:\n"
-#~ "- WASD: Walk\n"
-#~ "- Mouse left: dig/hit\n"
-#~ "- Mouse right: place/use\n"
-#~ "- Mouse wheel: select item\n"
-#~ "- 0...9: select item\n"
-#~ "- Shift: sneak\n"
-#~ "- R: Toggle viewing all loaded chunks\n"
-#~ "- I: Inventory menu\n"
-#~ "- ESC: This menu\n"
-#~ "- T: Chat\n"
-#~ msgstr ""
-#~ "Touches par défaut :\n"
-#~ "- ZQSD : se déplacer\n"
-#~ "- Clic gauche : creuser bloc\n"
-#~ "- Clic droite : insérer bloc\n"
-#~ "- Roulette : sélectionner objet\n"
-#~ "- 0...9 : sélectionner objet\n"
-#~ "- Shift : déplacement prudent\n"
-#~ "- R : active la vue de tous les blocs\n"
-#~ "- I : inventaire\n"
-#~ "- Échap : ce menu\n"
-#~ "- T : discuter\n"
-
-#~ msgid "Delete map"
-#~ msgstr "Supprimer la carte"
+#~ msgid "Lightness sharpness"
+#~ msgstr "Démarcation de la luminosité"
-#~ msgid ""
-#~ "Warning: Some configured mods are missing.\n"
-#~ "Their setting will be removed when you save the configuration. "
-#~ msgstr ""
-#~ "Attention : certains mods configurés sont introuvables.\n"
-#~ "Leurs réglages seront effacés quand vous enregistrerez la configuration. "
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Limite des files émergentes sur le disque"
-#~ msgid ""
-#~ "Warning: Some mods are not configured yet.\n"
-#~ "They will be enabled by default when you save the configuration. "
+#~ msgid "Main"
+#~ msgstr "Principal"
+
+#~ msgid "Main menu style"
+#~ msgstr "Style du menu principal"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
#~ msgstr ""
-#~ "Attention : certains mods ne sont pas encore configurés.\n"
-#~ "Ils seront activés par défaut quand vous enregistrerez la configuration. "
+#~ "Rendre DirectX compatible avec LuaJIT. Désactiver si cela cause des "
+#~ "problèmes."
+
+#~ msgid "Menus"
+#~ msgstr "Menus"
-#~ msgid "Local install"
-#~ msgstr "Installation locale"
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Mini-carte en mode radar, zoom x2"
-#~ msgid "Add mod:"
-#~ msgstr "Ajouter un mod :"
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Mini-carte en mode radar, zoom x4"
-#~ msgid "MODS"
-#~ msgstr "MODS"
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Mini-carte en mode surface, zoom x2"
-#~ msgid "TEXTURE PACKS"
-#~ msgstr "PACKS DE TEXTURES"
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Mini-carte en mode surface, zoom x4"
-#~ msgid "SINGLE PLAYER"
-#~ msgstr "PARTIE SOLO"
+#~ msgid "Name / Password"
+#~ msgstr "Nom / Mot de passe"
-#~ msgid "Finite Liquid"
-#~ msgstr "Liquides limités"
+#~ msgid "Name/Password"
+#~ msgstr "Nom / Mot de passe"
-#~ msgid "Preload item visuals"
-#~ msgstr "Précharger les objets"
+#~ msgid "No"
+#~ msgstr "Non"
-#~ msgid "SETTINGS"
-#~ msgstr "PARAMÈTRES"
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Échantillonnage de normalmaps"
-#~ msgid "Password"
-#~ msgstr "Mot de passe"
+#~ msgid "Normalmaps strength"
+#~ msgstr "Force des normalmaps"
-#~ msgid "Name"
-#~ msgstr "Nom"
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Nombre d'itérations sur l'occlusion parallaxe."
-#~ msgid "START SERVER"
-#~ msgstr "DÉMARRER LE SERVEUR"
+#~ msgid "Ok"
+#~ msgstr "Ok"
-#~ msgid "CLIENT"
-#~ msgstr "CLIENT"
+#~ msgid ""
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
+#~ msgstr ""
+#~ "Opacité (alpha) de l'ombre derrière la police secondaire, entre 0 et 255."
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Ajouter un mod"
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "Bias général de l'occlusion parallaxe, habituellement échelle/2."
-#~ msgid "Remove selected mod"
-#~ msgstr "Supprimer le mod sélectionné"
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Echelle générale de l'effet de l'occlusion parallaxe."
-#~ msgid "EDIT GAME"
-#~ msgstr "MODIFIER LE JEU"
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Occlusion parallaxe"
-#~ msgid "new game"
-#~ msgstr "nouveau jeu"
+#~ msgid "Parallax occlusion"
+#~ msgstr "Occlusion parallaxe"
-#~ msgid "Mods:"
-#~ msgstr "Mods :"
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Bias de l'occlusion parallaxe"
-#~ msgid "GAMES"
-#~ msgstr "JEUX"
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Nombre d'itérations sur l'occlusion parallaxe"
-#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
-#~ msgstr "Gamemgr : Impossible de copier le mod \"$1\" dans le jeu \"$2\""
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Mode occlusion parallaxe"
-#~ msgid "Game Name"
-#~ msgstr "Nom du jeu"
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Echelle de l'occlusion parallaxe"
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Redémarrez Minetest pour que le changement du pilote prenne effet"
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Force de l'occlusion parallaxe"
-#~ msgid "Rendering:"
-#~ msgstr "Affichage :"
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Chemin vers police TrueType ou Bitmap."
-#~ msgid "If enabled, "
-#~ msgstr "Si activé, "
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Chemin où les captures d'écran sont sauvegardées."
-#~ msgid "If disabled "
-#~ msgstr "Si désactivé "
+#~ msgid "Player name"
+#~ msgstr "Nom du joueur"
-#~ msgid "Enable a bit lower water surface, so it doesn't "
+#~ msgid "Profiling"
+#~ msgstr "Profilage"
+
+#~ msgid "Projecting dungeons"
+#~ msgstr "Projection des donjons"
+
+#~ msgid "PvP enabled"
+#~ msgstr "JcJ activé"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Réinitialiser le monde"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Sélectionner le fichier du mod :"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Serveur / Partie solo"
+
+#~ msgid ""
+#~ "Set the shadow update time.\n"
+#~ "Lower value means shadows and map updates faster, but it consume more "
+#~ "resources.\n"
+#~ "Minimun value 0.001 seconds max value 0.2 seconds"
#~ msgstr ""
-#~ "Rend l'eau légèrement plus basse, de façon à ce qu'elle ne submerge pas "
-#~ "le bloc complètement.\n"
-#~ "Note : cette fonctionnalité est assez expérimentale et l'éclairage doux "
-#~ "ne fonctionne pas dessus. "
+#~ "Définit le temps de mise à jour des ombres.\n"
+#~ "Une valeur plus faible signifie que les ombres et les mises à jour de la "
+#~ "carte sont plus rapides, mais cela consomme plus de ressources.\n"
+#~ "Valeur minimale 0,001 seconde et maximale 0,2 seconde."
-#~ msgid "\""
-#~ msgstr "\""
+#~ msgid "Shadow limit"
+#~ msgstr "Limite des ombres"
-#, fuzzy
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen Valleys.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them.\n"
-#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome "
-#~ "issues.\n"
-#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where "
-#~ "water would tend to pool. It may interfere with delicately adjusted "
-#~ "biomes."
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
#~ msgstr ""
-#~ "Attributs généraux de la génération de terrain.\n"
-#~ "Les drapeaux qui ne sont spécifiés dans leur champ respectif gardent "
-#~ "leurs valeurs par défaut."
+#~ "Décalage de l'ombre de la police de secours (en pixel). Aucune ombre si "
+#~ "la valeur est 0."
+
+#~ msgid "Special"
+#~ msgstr "Spécial"
-#~ msgid "No!!!"
-#~ msgstr "Non !"
+#~ msgid "Special key"
+#~ msgstr "Touche spéciale"
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Normal Mapping"
+#~ msgid "Start Singleplayer"
+#~ msgstr "Démarrer une partie solo"
-#~ msgid "Public Serverlist"
-#~ msgstr "Liste de serveurs publics"
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Force des normalmaps autogénérés."
-#~ msgid "No of course not!"
-#~ msgstr "Non, bien sûr que non !"
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "Force de la courbe de lumière mi-boost."
-#~ msgid "Useful for mod developers."
-#~ msgstr "Utile pour les développeurs de mods."
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Cette police sera utilisée pour certaines langues."
-#~ msgid "How many blocks are flying in the wire simultaneously per client."
-#~ msgstr "Nombre maximum de mapblocks simultanés envoyés par client."
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Pour activer les shaders, le pilote OpenGL doit être utilisé."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Mode cinématique"
+
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr ""
+#~ "Hauteur maximum typique, au-dessus et au-dessous du point médian, du "
+#~ "terrain de montagne flottantes."
+
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Variation de la hauteur des collines et de la profondeur des lacs sur les "
+#~ "terrains plats flottants."
+
+#~ msgid "View"
+#~ msgstr "Voir"
+
+#~ msgid "Waving Water"
+#~ msgstr "Eau ondulante"
+
+#~ msgid "Waving water"
+#~ msgstr "Vagues"
#~ msgid ""
-#~ "How many blocks are flying in the wire simultaneously for the whole "
-#~ "server."
-#~ msgstr "Nombre maximum de mapblocks simultanés envoyés sur le serveur."
+#~ "Whether FreeType fonts are used, requires FreeType support to be compiled "
+#~ "in.\n"
+#~ "If disabled, bitmap and XML vectors fonts are used instead."
+#~ msgstr ""
+#~ "Détermine l'utilisation des polices Freetype. Nécessite une compilation "
+#~ "avec le support Freetype.\n"
+#~ "Si désactivée, des polices bitmap et en vecteurs XML seront utilisé en "
+#~ "remplacement."
+
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "Si les donjons font parfois saillie du terrain."
+
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr ""
+#~ "Coordonnée Y de la limite supérieure des grandes grottes pseudo-"
+#~ "aléatoires."
+
+#~ msgid "Y-level of floatland midpoint and lake surface."
+#~ msgstr "Hauteur (Y) du point de flottaison et de la surface des lacs."
-#~ msgid "Detailed mod profiling"
-#~ msgstr "Profil détaillé des mods"
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Hauteur (Y) auquel les ombres portées s’étendent."
-#~ msgid "Detailed mod profile data. Useful for mod developers."
+#~ msgid "Yes"
+#~ msgstr "Oui"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
#~ msgstr ""
-#~ "Profil détaillé des données du mod. Utile pour les développeurs de mods."
+#~ "Vous êtes sur le point de rejoindre ce serveur avec le nom « %s » pour la "
+#~ "première fois.\n"
+#~ "Si vous continuez, un nouveau compte utilisant vos identifiants sera créé "
+#~ "sur ce serveur.\n"
+#~ "Veuillez retaper votre mot de passe et cliquer sur « S'enregistrer et "
+#~ "rejoindre » pour confirmer la création de votre compte, ou cliquer sur "
+#~ "« Annuler »."
+
+#~ msgid "You died."
+#~ msgstr "Vous êtes mort."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/gd/minetest.po b/po/gd/minetest.po
new file mode 100644
index 000000000..5c46bfe9b
--- /dev/null
+++ b/po/gd/minetest.po
@@ -0,0 +1,7199 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2021-08-19 06:36+0000\n"
+"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n"
+"Language-Team: Gaelic <https://hosted.weblate.org/projects/minetest/minetest/"
+"gd/>\n"
+"Language: gd\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
+"(n > 2 && n < 20) ? 2 : 3;\n"
+"X-Generator: Weblate 4.8-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Prìomh chlàr-taice"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Prìomh chlàr-taice"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Protocol version mismatch. "
+msgstr " "
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Server enforces protocol version $1. "
+msgstr " "
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr " "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr ""
+
+#: 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 ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Gun eisimeileachd chruaidh"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"Stàladh: Faidhle dhen t-seòrsa “$1” ris nach eil taic no tasglann bhriste"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Development Test is meant for developers."
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Tìr air fhleòd san speur"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Aibhnean boga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Nì seo an tìr nas buige faisg air aibhnean"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Pacaidean air an stàladh:"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Adhbharaichidh saoghal tioram is teth aibhnean tana no tioram"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Gineadair nam mapa"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Brataich gineadair nam mapa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Aibhnean"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Aibhnean air àirde na mara"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Caochail doimhne nan aibhnean"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Ainm gineadair nam mapa"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Pacaidean air an stàladh:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Stàlaich geamannan o ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr " "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "– Dochann: "
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Aibhnean boga"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Sgrìn:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr ""
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+#, fuzzy
+msgid "Provided password file failed to open: "
+msgstr " "
+
+#: src/client/clientlauncher.cpp
+#, fuzzy
+msgid "Provided world path doesn't exist: "
+msgstr " "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Address: "
+msgstr " "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Mode: "
+msgstr " "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Port: "
+msgstr " "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Public: "
+msgstr " "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+#, fuzzy
+msgid "- PvP: "
+msgstr " "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Server Name: "
+msgstr " "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Tha am modh film an comas"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Stiùireadh:\n"
+"- %s: gluais an comhair a’ bheòil\n"
+"- %s: gluais an comhair a’ chùil\n"
+"- %s: gluais dhan taobh clì\n"
+"- %s: gluais dhan taobh deas\n"
+"- %s: leum/sreap\n"
+"- %s: tàislich/dìrich\n"
+"- %s: leig às nì\n"
+"- %s: an tasgadh\n"
+"- Luchag: tionndaidh/coimhead\n"
+"- Putan clì na luchaige: geàrr/buail\n"
+"- Putan deas na luchaige: cuir ann/cleachd\n"
+"- Cuibhle na luchaige: tagh nì\n"
+"- %s: cabadaich\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Tha am modh luath an comas (an aire: gun sochair “fast”)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Tha am modh sgiathaidh à comas"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Tha am modh sgiathaidh an comas"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Tha am modh sgiathaidh an comas (an aire: gun sochair “fly”)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Fiosrachadh mun gheama:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Tha am modh gun bhearradh à comas"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Tha am modh gun bhearradh an comas"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Tha am modh gun bhearradh an comas (an aire: gun sochair “noclip”)"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Tha astar na faicsinn cho mòr sa ghabhas: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Tha a’ chabadaich ’ga shealltainn"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Control clì"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "4 air pada nan àireamhan"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "8 air pada nan àireamhan"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Thoir gnogag dhùbailte air “leum” airson sgiathadh a thoglachadh"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Meudaich an t-astar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Tàislich"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Toglaich sgiathadh"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Toglaich am modh gun bhearradh"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "brùth air iuchair"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr " "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "gd"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Riasladh 2D a stiùiricheas cruth/meud nan cnoc."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Riasladh 2D a shuidhicheas glinn is sruthan nan aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Riasladh 3D a mhìnicheas structar is àirde nam beanntan.\n"
+"Mìnichidh e cruth-tìre nam beanntan air tìr air fhleòd cuideachd."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Riasladh 3D a mhìnicheas structar na tìre air fhleòd.\n"
+"Mura cleachd thu an luach bunaiteach, dh’fhaoidte gum b’ fheàirrde thu\n"
+"gleus a chur air “scale” an riaslaidh (0.7 a ghnàth) on a dh’obraicheas "
+"foincseanan\n"
+"cinn-chaoil as fheàrr nuair a bhios an riasladh seo eadar mu -2.0 agus 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Riasladh 3D a mhìnicheas structar ballachan sgoltaidhean-aibhne."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+"Riasladh 3D a mhìnicheas an àireamh dhe thuill-dhubha anns gach cnap mapa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Atharraichidh seo lùb an t-solais a’ cur “gamma correction” air.\n"
+"Nì luachan nas àirde an solas meadhanach no fann nas soilleire.\n"
+"Fàgaidh luach “1.0” lùb an t-solais mar a tha i.\n"
+"Chan eil buaidh mhòr aige ach air solas an latha is na h-oidhche fuadaine,\n"
+"agus cha mhòr nach bi buaidh air solas oidhche nàdarra idir."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Sgiathaich an-còmhnaidh ’s gu luath"
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Meudaichidh seo na glinn."
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr "Ainmich am frithealaiche"
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr "Àirde bhunasach a’ ghrunnda"
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr "Sochairean bunasach"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+"Meadhan rainse meudachadh lùb an t-solais.\n"
+"Is 0.0 an ìre as fhainne agus 1.0 an ìre as soilleire air an solas."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Tha a’ chabadaich ’ga shealltainn"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Ìre loga na cabadaich"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "Tha a’ chabadaich ’ga shealltainn"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr "Meud nan cnapan"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Cuingeachadh tuilleadain air a’ chliant"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Cuingeachadh tuilleadain air a’ chliant"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Ionad-tasgaidh susbaint air loidhne"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr "Iuchair toglachadh an fhiosrachaidh dì-bhugachaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr "Ìre an loga dì-bhugachaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr "Sochairean bunaiteach"
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Mìnichidh seo structar sruth nan aibhnean mòra."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Mìnichidh seo àirde bhunasach a’ ghrunnda."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Mìnichidh seo doimhne sruth nan aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+"Mìnichidh seo an t-astar as motha airson tar-chur chluicheadairean ann am "
+"bloca (0 = gun chuingeachadh)."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr "Mìnichidh seo leud sruth nan aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Mìnichidh seo leud gleanntan nan aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Developer Options"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr "Thoir gnogag dhùbailte airson leum no sgiathadh"
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr "Toglaichidh gnogag dhùbailte air iuchair an leuma am modh sgiathaidh."
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Dumpaich fiosrachadh dì-bhugachaidh aig gineadair nam mapa."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+"An t-easponant aig cinn-chaoil na tìre air fhleòd. Atharraichidh seo giùlnan "
+"nan ceann-caol.\n"
+"Cruthaichidh luach = 1.0 cinn-chaoil aon-fhillte loidhneach.\n"
+"Cruthaichidh luachan > 1.0 cinn-chaoil rèidhe\n"
+"a bhios freagarrach dha na cinn-chaoill sgaraichte thùsail.\n"
+"Cruthaichidh luachan < 1.0 (can 0.25) uachdar nas mionaidiche le tìr-ìosal "
+"nas rèidhe a bhios freagarrach\n"
+"do bhreath tìre air fhleòd sholadach."
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr "Factar bogadaich an tuiteim"
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+"Gluasad luath (leis an iuchair “shònraichte”).\n"
+"Bidh feum air sochair “fast” air an fhrithealaiche."
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr "Mapadh tòna film"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Dùmhlachd na tìre air fhleòd"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Riasladh na tìre air fhleòd"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Easponant cinn-chaoil air tìr air fhleòd"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Astar cinn-chaoil air tìr air fhleòd"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Àirde an uisge air tìr air fhleòd"
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr "Iuchair an sgiathaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr "Sgiathadh"
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+"An t-astar on a thèid blocaichean a ghintinn dha na cliantan, ann am bloca "
+"mapa (16 nòdan)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gamepads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Buadhan gintinn mapa uile-choitcheann.\n"
+"Ann an gineadair nam mapa v6, stiùirichidh bratach “decorations” sgeadachadh "
+"seach craobhan is feur dlùth-choille\n"
+"agus ann an gineadairean nam mapa eile, stiùirichidh a’ bhratach seo a h-"
+"uile sgeadachadh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Caisead lùb an t-solais aig an ìre as soilleire.\n"
+"Stiùirichidh seo iomsgaradh an t-solais shoilleir."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Caisead lùb an t-solais aig an ìre as fainne.\n"
+"Stiùirichidh seo iomsgaradh an t-solais fhainn."
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr "Àirde a’ ghrunnda"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Iuchair air adhart a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Iuchair air ais a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Iuchair air slot 1 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Iuchair air slot 10 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Iuchair air slot 11 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Iuchair air slot 12 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Iuchair air slot 13 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Iuchair air slot 14 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Iuchair air slot 15 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Iuchair air slot 16 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Iuchair air slot 17 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Iuchair air slot 18 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Iuchair air slot 19 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Iuchair air slot 2 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Iuchair air slot 20 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Iuchair air slot 21 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Iuchair air slot 22 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Iuchair air slot 23 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Iuchair air slot 24 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Iuchair air slot 25 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Iuchair air slot 26 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Iuchair air slot 27 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Iuchair air slot 28 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Iuchair air slot 29 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Iuchair air slot 3 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Iuchair air slot 30 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Iuchair air slot 31 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Iuchair air slot 32 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Iuchair air slot 4 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Iuchair air slot 5 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Iuchair air slot 6 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Iuchair air slot 7 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Iuchair air slot 8 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Iuchair air slot 9 a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Dè cho domhainn ’s a bhios aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Dè cho leathann ’s a bhios aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+"Ma tha seo à comas, thèid iuchair “shònraichte” a chleachdadh airson "
+"sgiathadh\n"
+"ma tha an dà chuid am modh sgiathaidh ’s am modh luadh an comas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+"Ma tha seo an comas còmhla ris a’ mhodh sgiathaidh, ’s urrainn dhan "
+"chluicheadair sgiathadh tro nòdan soladach.\n"
+"Bidh feum air sochair “noclip” on fhrithealaiche."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Ma tha seo an comas, thèid iuchair “shònraichte” seach “tàisleachaidh” a "
+"chleachdadh\n"
+"airson dìreadh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Ma tha seo an comas, bidh an gluasad a-rèir pids a’ chluicheadair rè "
+"sgiathaidh no snàimh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ma tha seo an comas, ’s urrainn dhut blocaichean a chur ann far a bheil thu "
+"’nad sheasamh (co chois + àirde do shùil).\n"
+"Bidh seo feumail nuair a bhios tu ag obair le bogsaichean nòd ann an "
+"raointean beaga."
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Leig seachad mearachdan an t-saoghail"
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ath-thriall an fhoincsein ath-chùrsaiche.\n"
+"Ma mheudaicheas tu seo, bidh barrachd mion-chruthan air\n"
+"ach bi barrachd eallaich air a’ phròiseasadh cuideachd.\n"
+"Ma tha ath-thriall = 20, bidh an t-eallach aig gineadair nam mapa seo "
+"coltach ri eallach gineadair nam mapa V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thoglaicheas an sgiathadh.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a ghluaiseas gu luath sa mhodh luath.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a ghluaiseas an cluicheadair dhan taobh chlì.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a ghluaiseas an cluicheadair dhan taobh deas.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thoglaicheas an sgiathadh.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 11mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 12mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 13mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 14mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 15mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 16mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 17mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 18mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an 19mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 20mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 21mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 22mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 23mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 24mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 25mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 26mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 27mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 28mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 29mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 30mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 31mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas am 32mh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an t-ochdamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an còigeamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas a’ chiad slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an ceathramh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an ath-nì air a’ ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an naoidheamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an nì roimhe air a’ ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an dàrna slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an seachdamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an siathamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an deicheamh slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thaghas an treas slot dhen ghrad-bhàr.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair airson tàisleachadh.\n"
+"Tha i ‘ga cleachdadh airson dìreadh agus dìreadh san uisge ma bhios "
+"aux1_descends à comas.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thoglaicheas an sgiathadh.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"An iuchair a thoglaicheas am modh gun bhearradh.\n"
+"Faic http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+"Ìre an loga a thèid a sgrìobhadh gu debug.txt:\n"
+"- <bàn> (gun logadh)\n"
+"- none (teachdaireachdan gun ìre)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Cuingeachadh gintinn mapa, ann an nòd, sa h-uile 6 comhair o (0, 0, 0).\n"
+"Cha dèid ach cnapan mapa a tha am broinn cuingeachadh gineadair nam mapa a "
+"ghintinn.\n"
+"Thèid luach fa leth a stòradh air gach saoghal."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr "Eadaramh nan ùrachaidhean air an lionn ann an diog."
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr "Dèan gach lionn trìd-dhoilleir"
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Carpathian."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Flat.\n"
+"’S urrainn dhut lochan is cnuic ghanna a chur ris an t-saoghal rèidh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Fractal.\n"
+"Cuiridh “terrain” gintinn crutha-tìre nach eil fractalach an comas:\n"
+"cuan, eileanan is fon talamh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Valleys.\n"
+"“altitude_chill”: Bidh tìr àrd nas fhuaire.\n"
+"“humid_rivers”: Bidh an tìr nas buige faisg air aibhnean.\n"
+"“vary_river_depth”: Ma tha seo an comas, bidh aibhnean nas tana agus tioram "
+"aig amannan ma tha an saoghal tioram no teth.\n"
+"’“altitude_dry”: Bidh tìr àrd nas tiorma."
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v5."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v6.\n"
+"Cuiridh a’ bhratach “snowbiomes” siostam 5 ùr nam bitheom an comas.\n"
+"Nuair a bhios a’ bhratach “snowbiomes” an comas, thèid dlùth-choilltean a "
+"chur an comas gu fèin-obrachail \n"
+"agus a’ bhratach “jungles” a leigeil seachad."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v7.\n"
+"“ridges”: Aibhnean.\n"
+"“floatlands”: Tìr air fhleòd san àile.\n"
+"“caverns”: Uamhan mòra domhainn fon talamh."
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr "Cuingeachadh gintinn mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr "Gineadair nam mapa Carpathian"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa Carpathian"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr "Gineadair nam mapa Flat"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa Flat"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr "Gineadair nam mapa Fractal"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa Fractal"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr "Gineadair nam mapa V5"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa V5"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr "Gineadair nam mapa V6"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa V6"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr "Gineadair nam mapa V7"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa V7"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr "Gineadair nam mapa Valleys"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr "Brataich shònraichte do ghineadair nam mapa Valleys"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr "Dì-bhugachadh gineadair nam mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr "Ainm gineadair nam mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr "Leud as motha a’ ghrad-bhàr"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+"An àireamh as motha de dh’uamhan mòra air thuaiream anns gach cnap mapa."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+"An àireamh as motha de dh’uamhan beaga air thuaiream anns gach cnap mapa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+"A’ chuid as motha dhen uinneag làithreach a thèid a chleachdadh airson a’ "
+"ghrad-bhàr.\n"
+"Tha seo feumail ma dh’fheumas tu rudeigin a shealltainn taobh deas no clì "
+"air a’ ghrad-bhàr."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "An ìre as lugha dhen loga a thèid a sgrìobhadh dhan chabadaich."
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+"An àireamh as lugha de dh’uamhan mòra air thuaiream anns gach cnap mapa."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+"An àireamh as lugha de dh’uamhan beaga air thuaiream anns gach cnap mapa."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr "Slighe dhan chlò aon-leud"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Àirde neoini nam beanntan"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ainm air gineadair nam mapa a thèid a chleachdadh airson saoghal ùr a "
+"chruthachadh.\n"
+"Tar-aithnidh cruthachadh saoghail ùir sa phrìomh chlàr-taice seo.\n"
+"Seo gineadairean nam mapa a tha glè neo-sheasmhach aig an àm seo:\n"
+"- floatlands roghainneil aig v7 (à comas o thùs)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr "Gun bhearradh"
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr "Iuchair modha gun bhearradh"
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+"Fosgail clàr-taice a’ chuir ’na stad nuair a chailleas an uinneag am fòcas.\n"
+"Cha dèid a chur ’na stad nuair a bhios formspec fosgailte."
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place key"
+msgstr "Iuchair an sgiathaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+"’S urrainn dhan chluicheadair sgiathadh gun bhuaidh na iom-tharraing air.\n"
+"Bidh feum air sochair “fly” air an fhrithealaiche."
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr "Sochairean as urrainn do chluicheadairean le basic_privs a cheadachadh"
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+"Àrdaichidh seo an cruth-tìre airson glinn a chruthachadh timcheall air na h-"
+"aibhnean."
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr "Doimhne sruth nan aibhnean"
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr "Leud sruth nan aibhnean"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr "Doimhne nan aibhnean"
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr "Riasladh aibhnean"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr "Meud nan aibhnean"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Leud gleanntan aibhne"
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Sgrìn:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Sgrìn:"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Aibhnean boga"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr " "
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+"Meud nan cnapan mapa a thèid a ghintinn le gineadair nam mapa, ann am bloca "
+"mapa (16 nòd).\n"
+"RABHADH: Chan fhaigh thu buannachd ach cunnartan à luach nas àirde na 5.\n"
+"Le luach nas lugha, gheibh thu barrachd uamhan is thuill-dubha.\n"
+"Chan fhiach atharrachadh an luach seo ach air adhbhar sònraichte ’s "
+"mholamaid\n"
+"nach atharraich thu e."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr "Iuchair an tàisleachaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Luaths an tàisleachaidh"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Luaths an tàisleachaidh ann an nòd gach diog."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Àirde uachdar an uisge roghainneil a thèid a chur air breath tìre air fhleòd "
+"soladaiche.\n"
+"Tha uisge à comas o thùs agus cha dèid gin a chur ach\n"
+"ma tha an luach seo nas àirde na “mgv7_floatland_ymax” − "
+"“mgv7_floatland_taper”\n"
+"(seo toiseach a’ chinn-chaoil).\n"
+"***RABHADH, CUNNART AIR SAOGHLAN IS DÈANADAS AN FHRITHEALAICHE***:\n"
+"Ma chuireas tu cur ann uisge an comas, feumaidh tu an tìr air fhleòd a "
+"rèiteachadh ’s a chur fo dheuchainn a dhèanamh cinnteach gu bheil e ’na "
+"breath sholadach\n"
+"’s tu a’ cur 2.0 air “mgv7_floatland_density”\n"
+"(no luach riatanach eile a-rèir “mgv7_np_floatland”)\n"
+"ach an seachnaich thu sruthadh uisge anabarrach a chuireas ealach air an "
+"fhrithealaiche ’s ach an seachnaich thu tuil mhòr air uachdar na tìre "
+"foidhpe."
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+"Na sochairean a gheibh cleachdaichean ùra gu fèin-obrachail.\n"
+"Faic /privs sa gheama airson liosta slàn air rèiteachadh an fhrithealaiche "
+"’s nan tuilleadan agad."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+"True = 256\n"
+"False = 128\n"
+"Gabhaidh a chleachdadh airson am meanbh-mhapa a dhèanamh nas rèidhe air "
+"uidheaman slaodach."
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr "Astar tar-chur nan cluicheadairean gun chuingeachadh"
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr "Dràibhear video"
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Luaths na coiseachd is sgiathaidh, ann an nòd gach diog."
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Luaths na coiseachd, sgiathaidh is sreap sa mhodh luath, ann an nòd gach "
+"diog."
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr "Àirde an uisge"
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr "Àirde uachdar an uisge air an t-saoghal."
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr "Crathadh duillich"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+"Co-dhiù am faod cluicheadairean càch a chèile a leòn ’s a mharbhadh gus nach "
+"fhaod."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"Y air àirde neoini air caisead dùmhlachd nam beanntan. Thèid seo a "
+"chleachdadh airson beanntan a thogail gu h-inghearach."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+"Seo an t-astar-Y eadar an dùbhlachd làn ’s an òir air cinn-chaoil na tìre "
+"air fhleòd.\n"
+"Tòsichidh na cinn-chaoil aig an astar seo on chrìoch Y.\n"
+"Airson breath tìre air fhleòd sholadach, stiùirichidh seo àirde nan cnoc/nam "
+"beanntan.\n"
+"Feumaidh e a bhith nas lugha na no co-ionnann ris an dàrna leth dhen astar "
+"eadar na crìochan Y."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Àirde-Y aig uachdar cuibheasach a’ chrutha-thìre."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Àirde-Y aig crìoch àrd nan uamhan."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Àirde-Y a’ chrutha-thìre nas àirde a chruthaicheas creagan."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Àirde-Y a’ chrutha-thìre ìosal agus grunnd na mara."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Àirde-Y aig grunnd na mara."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#, fuzzy
+#~ msgid "- Creative Mode: "
+#~ msgstr " "
+
+#~ msgid "- Damage: "
+#~ msgstr "– Dochann: "
+
+#~ msgid "Address / Port"
+#~ msgstr "Seòladh / Port"
+
+#~ msgid "Enter "
+#~ msgstr "Cuir a-steach "
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr ""
+#~ "Claonadh na h-èifeachd occlusion na paraileig air fheadh, seo sgèile/2 "
+#~ "mar as àbhaist."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr ""
+#~ "Airson sgàileadairean a chur an comas, feumaidh tu draibhear OpenGL a "
+#~ "chleachdadh."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/gl/minetest.po b/po/gl/minetest.po
new file mode 100644
index 000000000..064f74087
--- /dev/null
+++ b/po/gl/minetest.po
@@ -0,0 +1,8021 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-06-27 03:16+0000\n"
+"Last-Translator: Raquel Fariña Agra <raquelagra1@gmail.com>\n"
+"Language-Team: Galician <https://hosted.weblate.org/projects/minetest/"
+"minetest/gl/>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"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.13.1-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Limpar a fila de espera do chat"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Comando baleiro."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Sair ao menú principal"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Comando non válido: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Comando emitido: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Lista de xogadores en liña"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Xogadores en liña: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "A fila de espera do chat agora está baleira."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Este comando está desactivado polo servidor."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Reaparecer"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Morreches"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Comandos dispoñibeis:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Comandos dispoñibeis: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Comando non dispoñible: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Obter axuda para os comandos"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Usa '.help <cmd>' para conseguir máis información ou '.help all' para ver a "
+"lista completa."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Aceptar"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<Comando non dispoñible>"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Produciuse un erro nun script Lua:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Produciuse un erro:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Menú principal"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Volver conectar"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "O servidor solicitou volver conectar:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Seleccionar mods"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "A versión do protocolo non coincide "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "O servidor impor a versión do protocolo $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "O servidor admite as versións de protocolo entre $1 e $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Só admítese a versión de protocolo $1."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "Só admítense as versións de protocolo entre $1 e $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Dependencias:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Desactivar todo"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Desactivar paq. de mods"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Activar todo"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Activar paq. de mods"
+
+#: 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 ""
+"Erro ao activar o mod \"$1\" porque conteñe caracteres non autorizados. Só "
+"permítense os caracteres [a-z e 0-9]."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "Buscar máis mods"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Mod:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Sen dependencias (opcionais)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Non se forneceu a descripción do xogo."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Sen dependencias importantes"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Non se forneceu a descripción do paquete de mods."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Sen dependencias opcionais"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dependencias opcionais:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Gardar"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Mundo:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "activado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" xa existe. Desexa substituílo?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Instalaranse as dependencias $1 e $2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 por $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 descargando,\n"
+"$2 en cola"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "Descargando $1..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "Non se puido atopar as dependencias requeridas para $1 ."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "Instalarase $1 e omitiranse as dependencias de $2."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Todos os paq."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Xa está instalado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Volver ao menú principal"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Xogo base:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB non está dispoñible cando Minetest compilouse sen cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Descargando..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Erro ao descargar $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Xogos"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instalar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Instalar $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Instalar dependencias faltantes"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"Instalación: Formato de ficheiro \"$1\" non compatible ou ficheiro corrupto"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mods"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Non se puido recuperar ningún paquete"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Non hai resultados"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Sen actualizacións"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Non atopado"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Sobrescribir"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Verifica que o xogo base esté correcto."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "En cola"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Paq. de text."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Actualizar"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Actualizar Todo [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Ver máis información nun navegador web"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Xa existe un mundo chamado \"$1\""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Terreo adicional"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Frío de altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Sequedade en altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Mestura de biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Cavernas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Covas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Crear"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Decoracións"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Aviso: O Test de Desenvolvemento está destinado aos desenvolvedores."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Calabozos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Terreo chan"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Terreos flotantes no ceo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Terreos flotantes (experimental)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Xerar terreo non fractal: Océanos e subsolo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Outeiros"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Ríos húmidos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Incrementa a humidade arredor dos ríos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Instalar $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Lagos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"A baixa humidade e a calor elevada provocan ríos pouco profundos ou secos"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Xerador de mundos"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Parámetros do xerador de mundos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Parámetros específicos do xerador de mundos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Montañas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Fluxo de lodo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Rede de túneis e covas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Ningunha partida seleccionada"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Reduce a calor coa altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Reduce a humidade coa altitude"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Ríos"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Ríos ao nivel do mar"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Semente"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Transición suave entre biomas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Estruturas que aparecen no terreo (sen efecto nas árbores e no céspede da "
+"xungla que creou a v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Estruturas que aparecen no terreo, xeralmente árbores e plantas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Temperado, Deserto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Temperado, Deserto, Xungla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Temperado, Deserto, Xungla, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Erosión superficial do terreo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Árbores e céspede da xungla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Variar a profundidade do río"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Cavernas moi grandes nas profundidades do subsolo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Nome do mundo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Non tes xogos instalados."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Desexa eliminar \"$1\"?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Eliminar"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: erro ao eliminar \"$1\""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: ruta \"$1\" non válida"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Eliminar o mundo \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Confirmar contrasinal"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Nome do xerador de mundos"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nome"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Contrasinal"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Os contrasinais non coinciden!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Rexistrarse e unirse"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Aceptar"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "Renomear paquete de mods:"
+
+#: 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 ""
+"Este paquete de mods ten un nome explícito no seu modpack.conf que non "
+"permitirá cambios de nome aquí."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(Ningunha descripción da configuración dada)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Ruído 2D"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "<Volver á configuración"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Explorar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Contido"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Contido"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Editar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Activado"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr "Lacunaridade"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Oitavas"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Desprazamento"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr "Persistencia"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Introduce un número enteiro válido."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Introduce un número válido."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "Restaurar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Escala"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Procurar"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Seleccionar directorio"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Seleccionar ficheiro"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Mostrar nomes técnicos"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "O valor debe ser polo menos $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "O valor non debe ser máis grande que $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Amplitude X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Amplitude Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Amplitude Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "Valor absoluto"
+
+#. ~ "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 "Predefinido"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "Suavizado"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Activado)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mods"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Error ao instalar $1 en $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Instalación do mod: Non se puido atopar o nome real do mod para: $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Instalación do mod: Non se puido atopar un nome de cartafol adecuado para o "
+"paquete de mods $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Non se puido atopar un mod ou paquete de mods válido"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Non se puido instalar $1 como paquete de texturas"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Non se puido instalar un xogo como $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Non se puido instalar un mod como $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Non se puido instalar un paquete de mods como $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Cargando..."
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "A lista de servidores públicos está desactivada"
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr ""
+"Tente volver activar a lista de servidores públicos e verifique a súa "
+"conexión a Internet."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Acerca de"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Colaboradores activos"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Renderizador activo:"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Desenvolvedores principais"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Abrir dir. datos de usuario"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Abre o directorio que contén mundos, xogos, mods fornecidos polo usuario\n"
+"e paquetes de textura nun xestor de ficheiros ou explorador."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Colaboradores anteriores"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Desenvolvedores principais anteriores"
+
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Mostrar información de depuración"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Explorar contido en liña"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Contido"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Desactivar paq. de texturas"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Información:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Paquetes instalados:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Sen dependencias."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "A descripción do paquete non está dispoñible"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Renomear"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Desinstalar paquete"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Usar paquete de texturas"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Anunciar servidor"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Ligazón de enderezo"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Modo creativo"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Activar danos"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Hospedar xogo"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Hospedar servidor"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Instalar xogos do ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Novo"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Ningún mundo creado ou seleccionado!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Xogar"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Porto"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Seleccionar mods"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Seleccionar mundo:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Porto do servidor"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Xogar só"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Enderezo"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Limpar"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Modo creativo"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Dano / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Favoritos"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Servidores incompatibles"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Xogar en liña"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Servidores públicos"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Actualizar"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Porto remoto"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Descripción do servidor"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "Nubes 3D"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Toda a configuración"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Suavizado:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Autogardar tam. pantalla"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Filtrado bilineal"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Configurar teclas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "Vidro unificado"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Sombras dinámicas"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Sombras dinámicas: "
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Follas detalladas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Alto"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Baixo"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Medio"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmap + Filtro aniso."
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Sen filtros"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr "Sen Mipmap"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Resaltar nodos"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Marcar nodos"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Ningún"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Follas opacas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Auga opaca"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Partículas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Pantalla:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Configuración"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "Sombreadores"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Sombreadores (experimental)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Sombreadores (non dispoñible)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Follas simples"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Iluminación suave"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Texturización:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr "Mapeado de tons"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Nivel de sensibilidade ao toque (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Filtro trilineal"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Very High"
+msgstr "Moi alto"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr "Moi baixo"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Movemento das follas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Movemento dos líquidos"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Movemento das plantas"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Erro de conexión (tempo esgotado?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Esgotouse o tempo de conexión."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Feito!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Iniciando nodos"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Iniciando nodos..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Cargando texturas..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Reconstruíndo sombreadores..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Erro de conexión (tempo esgotado?)"
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr "Non se puido atopar ou cargar o xogo: "
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "Especificación do xogo non válida."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Menú principal"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Ningún mundo seleccionado e ningún enderezo fornecido. Nada que facer."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Nome do xogador demasiado longo."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Escolle un nome!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "O ficheiro do contrasinal fornecido non se puido abrir: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "O camiño do mundo fornecido non existe: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"Verifique debug.txt para obter detalles."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Enderezo: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Modo: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Porto: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Público: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Nome do servidor: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Ocurreu un erro:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Acceso negado. Motivo: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Avance automático desactivado"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Avance automático activado"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Lím. bloques ocultos"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Límites de bloque mostrados para todos os bloques"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Límites de bloques mostrados para o bloque actual"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Límites de bloques mostrados para bloques pretos"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Actualización da cámara desactivada"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Actualización da cámara activada"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Non se puido mostrar os límites de bloco (é preciso o permiso 'basic_debug')"
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Cambiar contrasinal"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Modo cinematográfico desactivado"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Modo cinematográfico activado"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Cliente desconectado"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "O scripting de cliente está desactivado"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Conectando ao servidor..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Erro na conexión por un motivo descoñecido"
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Continuar"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Controis:\n"
+"- %s: ir cara adiante\n"
+"- %s: ir cara atrás\n"
+"- %s: ir cara esquerda\n"
+"- %s: ir cara dereita\n"
+"- %s: saltar/escalar\n"
+"- %s: romper bloque/golpear\n"
+"- %s: colocar/usar\n"
+"- %s: agacharse/abaxaise\n"
+"- %s: soltar obxecto\n"
+"- %s: inventario\n"
+"- Rato: virarse/ver\n"
+"- Roda do rato: seleccionar obxecto\n"
+"- %s: chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Non se puido resolver o enderezo: %s"
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Creando cliente..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Creando servidor..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Información de depuración e gráfico de análise do mundo ocultos"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Info de depuración mostrada"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+"Info de depuración, gráfico de análise do mundo e estrutura de arames ocultos"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+"Controis por defecto:\n"
+"Menú oculto:\n"
+"- Un clic: activa botón\n"
+"- Dobre clic: colocar/usar\n"
+"- Deslizar dedo: mirar arredor\n"
+"Menú/inventario visible:\n"
+"- Dobre clic: (fóra do menú/inventario):\n"
+" -->pechar\n"
+"- Clic no obxecto e logo clic nun compartimento:\n"
+" --> mover obxecto\n"
+"- Clic e arrastar, e logo clic con os dous dedos\n"
+" --> colocar un só obxecto\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Campo de visión ilimitada desactivado"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Campo de visión ilimitada activado"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Creando cliente..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Saír ao menú"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Saír do xogo"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Modo rápido desactivado"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Modo rápido activado"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Modo rápido activado (nota: sen permiso 'rápido')"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Modo voo desactivado"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Modo voo activado"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Modo voo activado (nota: sen permiso de 'voo')"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Néboa desactivada"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Néboa activada"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Información do xogo:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Xogo pausado"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Servidor anfitrión"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Definicións dos obxectos..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Multimedia..."
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "O minimapa está actualmente desactivado polo xogo ou mod"
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Xogar en liña"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Modo espectador desactivado"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Modo espectador activado"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Modo espectador activado (nota: sen permiso 'noclip')"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definicións de nodos..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Desactivado"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "Activado"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Modo de movemiento rotación vertical desactivado"
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Modo de movemiento de rotación vertical activado"
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Gráfico de análise do mundo mostrado"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Servidor remoto"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Resolvendo enderezo..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Cerrando..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Un xogador"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volume do son"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Sonido silenciado"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "O sistema de son está desactivado"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "O sistema de son non é compatible con esta versión"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Son reactivado"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "É posible que o servidor esté executando unha versión diferente de %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Non se puido conectar a %s porque o IPv6 está desactivado"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Non se puido escoitar %s porque o IPv6 está desactivado"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Campo de visión cambiada a %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "O campo de visión está ao máximo: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "O campo de visión está ao mínimo: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Volume cambiado a %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Estrutura de arames mostrada"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "O zoom está actualmente desactivado polo xogo ou mod"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ok"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Chat oculto"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Chat visible"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD oculto"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD visible"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Análise do mundo oculta"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Análise do mundo visible (páx. %d de %d)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Aplicaciones"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Retroceso"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Bloq Maiús"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Control"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Abaixo"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "Fin"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Borrar EOF"
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "Executar"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "Axuda"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "Inicio"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Aceptar IME"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Converter IME"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Saír do IME"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Cambiar modo do IME"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "Non converter IME"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Inserir"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Esquerda"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "Botón esquerdo"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Ctrl esq."
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "Menú esquerdo"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "Shift esq."
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Win. esq."
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "Menú"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "Botón central"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr "Bloq. núm."
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr "Teclado numérico *"
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr "Teclado numérico +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr "Teclado numérico -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Teclado numérico ."
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr "Teclado numérico /"
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr "Teclado numérico 0"
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr "Teclado numérico 1"
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr "Teclado numérico 2"
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr "Teclado numérico 3"
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "Teclado numérico 4"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr "Teclado numérico 5"
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr "Teclado numérico 6"
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr "Teclado numérico 7"
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "Teclado numérico 8"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr "Teclado numérico 9"
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr "Limpar OEM"
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Avance páx."
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Retroceso pax."
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Pausa"
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Xogar"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "Impr. pant."
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "Enter"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Dereita"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "Botón dereito"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "Ctrl der."
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "Menú dereito"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "Shift der."
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "Win. der."
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr "Bloq. Despr."
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "Seleccionar"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "Shift"
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Suspender"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "Instantánea"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Espazo"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "Tabulador"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Arriba"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr "X Botón 1"
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr "X Botón 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Minimapa oculto"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimapa en modo radar, Zoom x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minimapa en modo superficie, Zoom x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Minimapa en modo textura"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Erro ao abrir páxina web"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Abrindo páxina web"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Continuar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = baixar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Avance automático"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Salto automático"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Atrás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Lím. bloques"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Cambiar cámara"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Comando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Consola"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Dism. alcance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Baixar volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Con 2 veces \"saltar\" voas"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Soltar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Adiante"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Aum. alcance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Subir volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventario"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Saltar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "A tecla xa está en uso"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Comando local"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Silenciar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Seg. obxecto"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Obxecto ant."
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Sel. alcance"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Captura"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Ir agachado"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Alt. HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Alt. rexistro chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Alt. correr"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Alt. voo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Alt. néboa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Alt. minimapa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Modo espectar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Alt. rot. vertical"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Unha tecla"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Novo"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Anterior contrasinal"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Os contrasinais non coinciden!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Pechar"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Silenciado"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Son: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "gl"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Escolle un nome!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Corrixe a posición do joystick virtual.\n"
+"Se está desactivado, o joystick virtual centrarase na posición do primeiro "
+"toque."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Use o joystick virtual para activar o botón \"Aux1\".\n"
+"Se está activado, o joystick virtual tamén tocará o botón \"Aux1\" cando "
+"estea fóra do círculo principal."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+"(X,Y,Z) compensación do fractal do centro do mundo en unidades de 'escala'.\n"
+"Pódese usar para mover un punto desexado a (0, 0) e para crear un\n"
+"punto de reaparición adecuado, ou para permitir \"aproximarse\" a un\n"
+"punto desexado aumentando a \"escala\".\n"
+"O valor predeterminado está axustado para un punto de aparición adecuado "
+"para Mandelbrot\n"
+"conxuntos con parámetros predeterminados, pode ser necesario modificar "
+"noutras\n"
+"situacións.\n"
+"Intervalo aproximadamente entre -2 e 2. Multiplique por \"escala\" para a "
+"compensación nos nós."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"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) Escala fractal en nós\n"
+"O tamaño real do fractal será de 2 a 3 veces maior.\n"
+"Estes números poden ser moi grandes, pero o fractal\n"
+"non ten que caber no mundo.\n"
+"Aumenta estes valores para indagar nos detalles do fractal.\n"
+"O valor por defecto é para axustar verticalmente a forma e que sexa "
+"adecuada\n"
+"para unha illa, establece os 3 números iguais para a forma inicial."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Ruído 2D que controla a forma/tamaño das montañas escarpadas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Ruído 2D que controla a forma/tamaño dos outeiros."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Ruído 2D que controla a forma/tamaño das montañas inclinadas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "Ruído 2D que controla o tamaño/frecuencia das cordilleiras montañosas."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Ruído 2D que controla o tamaño/frecuencia dos outeiros."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "Ruído 2D que controla o tamaño/frecuencia das cordilleiras de paso."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Ruído 2D que localiza os vales fluviais e canles dos ríos."
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "Nubes 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr "Modo 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Forza de paralaxe en modo 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Ruído 3D que define cavernas xigantes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Ruído 3D que define a estrutura e a altura da montaña.\n"
+"Tamén define a estrutura do terreo montañoso flotante."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Ruído 3D que define a estrutura dos terreos flotantes.\n"
+"Se se modifica a partir do valor por defecto, é posible que necesite a "
+"\"escala\" de ruído (0,7 por defecto).\n"
+"para ser axustado, xa que o tapering flotante funciona mellor cando este "
+"ruído ten\n"
+"un intervalo de valores de aproximadamente -2,0 a 2,0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Ruído 3D que define a estrutura das paredes do canón do río."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Ruído 3D que define o terreo."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Ruído 3D que define saíntes de montañas, acantilados, etc. Normalmente "
+"pequenas variacións."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Ruído 3D que determina a cantidade de calabozos por chunk."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"Soporte 3D.\n"
+"Modos admitidos actualmente:\n"
+"- none: ningún efecto 3D.\n"
+"- anaglyph: sistema de cor Ciano/Magenta (lentes 3D azul e vermelho).\n"
+"- interlaced: sistema interlazado (lentes polarizadas).\n"
+"- topbottom: divide a pantalla en dous: unha encima e a outra debaixo.\n"
+"- sidebyside: divide a pantalla en dous: lado a lado.\n"
+" - crossview: 3D de ollos cruzados.\n"
+" - pageflip: quadbuffer basado en 3D.\n"
+"Ten en conta que o modo interlazado precisa que os sombreadores estean "
+"activados."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+"Semente aleatoria para un novo mundo (deixar en branco para que sexa "
+"aleatoria).\n"
+"Será sustituída ao crearse un novo mundo no menú principal."
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr "Mostrarase unha mensaxe a todos os clientes cando o servidor falle."
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr "Mostrarase unha mensaxe a todos os clientes cando o servidor peche."
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr "Intervalo ABM"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Límite de tempo para MBA"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Límite absoluto de bloques en proceso de emerxer"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr "Aceleración no aire"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Aceleración da gravidade, en nós por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr "Modificadores de bloques activos"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr "Intervalo de administración de bloques activos"
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr "Rango de bloque activo"
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr "Rango de envío en obxetos activos"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+"Enderezo ao que se conectar.\n"
+"Deixa isto en branco para iniciar un servidor local.\n"
+"Teña en conta que o campo de enderezo do menú principal anula esta "
+"configuración."
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Añade partículas ao excavar un nó."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+"Axusta a configuración de ppp á túa pantalla (no X11/Android non) p. ex. "
+"para pantallas 4K."
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Axusta a densidade de visualización detectada, usada para escalar os "
+"elementos da IU."
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+"Axusta a densidade da capa flotante.\n"
+"Aumentar o valor para aumentar a densidade. Pode ser positivo ou negativo.\n"
+"Valor = 0,0: o 50 % do volume é terreo flotante.\n"
+"Valor = 2.0 (pode ser maior dependendo de 'mgv7_np_floatland', probar\n"
+"para estar seguro) crea una capa sólida de terreo flotante."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Añadir nome de obxeto"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Altera a curva de luz aplicándolle \"corrección gamma\".\n"
+"Os valores máis altos fan que os niveis de luz medio e inferior sexan máis "
+"brillantes.\n"
+"O valor \"1,0\" deixa a curva de luz inalterada.\n"
+"Isto só ten máis efecto na luz do día e na artificia,\n"
+"ten moi pouco efecto sobre a luz nocturna natural."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Sempre voar e correr"
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr "Oclusión ambiental gamma"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Cantidade de mensaxes que un xogador pode enviar en 10 segundos."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Amplifica os vales."
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr "Filtrado anisotrópico"
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr "Anunciar o servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr "Anuncar en esta lista de servidores."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Añadir nome de obxeto"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Añadir nome do obxecto á descripción."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Ruído das maceiras"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Inercia do brazo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Inercia do brazo proporciona un movementomáis realista\n"
+"do brazo cando a cámara se move."
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr "Preguntar para reconectar logo dunha caída de conexión"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"A esta distancia, o servidor optimizará de forma agresiva a que bloques se "
+"envían\n"
+"clientes.\n"
+"Os valores pequenos poden mellorar moito o rendemento, a costa de\n"
+"fallos visibles de renderizado (algúns bloques non se mostrarán baixo a auga "
+"nin nas covas,\n"
+"así como ás veces en chán).\n"
+"Establecer isto nun valor maior que \"max_block_send_distance\" desactiva "
+"isto\n"
+"optimización.\n"
+"Indicado en bloques de mapas (16 nós)."
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Tecla de avance automático"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Saltar obstáculos de un só no automáticamente."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Informar automáticamente á lista do servidor."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Autogardar o tamaño da pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Modo de autoescalado"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Tecla Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Tecla Aux1 para escalar/descender"
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr "Tecla retroceso"
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr "Nivel do chán base"
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr "Altura base do terreo."
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr "Permisos básicos"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Ruído da praia"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Límite de ruído de praia"
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr "Filtrado bilineal"
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr "Vincular enderezo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parámetros de ruído de humidade e temperatura da API de bioma"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Ruído de bioma"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Distancia de optimización do envío de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Camiño das fontes negras e cursivas"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Camiño das fontes negras e cursivas monoespaciadas"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Camiño das fontes negras"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Camiño das fontes negras monoespaciadas"
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr "Colocar bloque na posición do xogador"
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr "Integrado"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Cambiar cámara"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Distancia do plano próximo á cámara en nós, entre 0 e 0,25\n"
+"Só funciona en plataformas GLES. A maioría dos usuarios non terán que "
+"cambiar isto.\n"
+"Aumentalo pode reducir a aparición de artefactos en GPU máis débiles.\n"
+"0,1 = Por defecto, 0,25 = Bo valor para tabletas débiles."
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "Suavizado de cámara"
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr "Suavizado de cámara en modo cinematográfico"
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr "Alt. actualización de cámara"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Ruído de covas"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr "Ruído de covas #1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr "Sonido de covas #2"
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr "Ancho da cova"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr "Sonido de cova1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Sonido de cova2"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Limite da cova"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Ruído da cova"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Conicidade da cova"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Límite da cova"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Límite superior da cova"
+
+#: 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 ""
+"Rango de aumento do centro da curva de luz.\n"
+"0,0 é o nível mínimo de luz, 1,0 é o nível máximo."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Límite de tempo de mensaxe de comando de chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Comandos do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Tamaño da fonte do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Tecla do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Nivel de rexistro do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Límite de mensaxes do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Formato da mensaxe do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Límite da mensaxe de expulsión"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Lonxitude máxima da mensaxe do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Alt. chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Ligazóns web do chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr "Tamaño do chunk"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr "Modo cinematográfico"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr "Tecla para modo cinematográfico"
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr "Limpar texturas transparentes"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Ligazóns da web que se poden clicar (clic do medio ou Ctrl + botón "
+"esquerdo). Actívanse na saída da consola do chat."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr "Cliente e servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr "Personalización do cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Restricións para modear no lado do cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Restrición do rango de busca do nodo do lado do cliente"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Personalización do cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Velocidade de escalada"
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr "Radio de nubes"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr "Nubes"
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr "As nubes son un efecto do lado do cliente."
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr "Nubes no menú"
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr "Néboa colorida"
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr "Sombras coloridas"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Lista de marcas separadas por comas para ocultar no repositorio de contido.\n"
+"\"Non libre\" pódese usar para ocultar paquetes que non sexan \"software "
+"libre\",\n"
+"segundo a definición da Free Software Foundation.\n"
+"Tamén podes especificar clasificacións de contido.\n"
+"Estas marcas son independentes das versións de Minetest,\n"
+"así que consulta unha lista completa en https://content.minetest.net/help/"
+"content_flags/"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+"Lista separada por comas de mods que poden acceder ás API de HTTP, que\n"
+"permiten cargar e descargar datos a/desde Internet."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+"Lista separada por comas de mods de confianza que poden acceder funcións "
+"inseguras\n"
+"incluso cando a seguridade mod está activada (cía "
+"request_insecure_environment())."
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr "Tecla comando"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivel de compresión para usar ao gardar mundos no disco.\n"
+"-1 - usa o nivel de compresión por defecto\n"
+"0 - menor compresión, máis rápido\n"
+"9 - mellor compresión, máis lenta"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Nivel de compresión para usar ao mandar mundos ao cliente:\n"
+"-1 - usa o nivel de compresión por defecto\n"
+"0 - menor compresión, máis rápido\n"
+"9 - mellor compresión, máis lenta"
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr "Unificar vidro"
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr "Conectar a un servidor multimedia externo"
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr "Unifica o vidro se o bloque é compatible."
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr "Opacidade da consola"
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr "Cor da consola"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "Altura da consola"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Contido do repositorio en liña"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Lista negra de marcas de ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Descargas máximas simultáneas para ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "Ligazón URL de ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr "Avance contínuo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Movemento contínuo cara diante. Actívase coa tecla de autoavance.\n"
+"Preme a tecla de autoavance outra vez ou retrocede para desactivar."
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr "Controis"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+"Controla a duración do ciclo de día/noite.\n"
+"Exemplos:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = Día/noite permanece inalterado."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr "Controla a inclinación/profundidade dos lagos."
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr "Controla a inclinación/altura dos outeiros."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Controla o ancho dos túneis. Un valor menor crea túneis máis anchos.\n"
+"Valor >= 10.0 desactiva completamente a xeración de túneis e evita\n"
+"cálculos intensivos de ruído."
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr "Mensaxe de erro"
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr "Creativo"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr "Opacidade do cursor"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Opacidade do cursor (entre 0 e 255).\n"
+"Tamén pasa o menos con a cruz do obxecto."
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr "Cor da cruz"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+"Cor da cruz (R, G, B)\n"
+"Tamén pasa o mesmo coa cruz do obxecto"
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr "DPI"
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr "Dano"
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr "Alt. inf. para depuración"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Límite do tamaño do ficheiro de información de depuración"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr "Nivel de rexistro de depuración"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Tecla baixar volume"
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr "Intervalo de servidor dedicado"
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr "Aceleración por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr "Xogo por defecto"
+
+#: 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 ""
+"Xogo por defecto ao crear un novo mundo.\n"
+"Sobreescribirase ao crear un mundo desde o menú principal."
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr "Contrasinal por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr "Permisos por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr "Formato de reporte por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Tamaño do agrupamento de obxectos por defecto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+"Define a calidade do filtrado de sombras.\n"
+"Isto simula un efecto de sombras suaves aplicando un PCF ou Poisson disk\n"
+"pero tamén consume máis recursos."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr "Define as áreas onde as árbores teñen mazás."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Define áreas con praias areosas."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+"Define a distribución de terreos más elevados e a inclinación de acantilados."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Define a distribución de terreos elevados."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+"Define o tamaño de covas. Valores máis baixos crean covas máis grandes."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Define estruturas de canles fluviais a gran escala."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Define a localización e terreo de outeiros e lagos opcionais."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Define o nivel base do terreo."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Define a profundidade da canle do río."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+"Define a distancia máxima de transferencia de xogadores en bloques (0 = "
+"ilimitado)."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr "Define a largura da canle do río."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Define a largura do val do río."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Define as áreas arbóreas e a densidade das árbores."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+"Atraso entre as actualizacións de mallas do cliente en ms. Incrementar isto "
+"consegue\n"
+"reducir a cantidade de actualizacións de mallas, reducindo así a "
+"inestabilidade nos clientes máis lentos."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Atraso no envío de bloques logo de construír"
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr "Atraso para mostrar información de herramientas, en milisegundos."
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr "Manexo de funcións de API Lua obsoletas"
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "Profundidade na que atoparás cavernas xigantes."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr "Profundidade na que atoparás covas grandes."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+"Descripción do servidor. Móstrase na lista de servidores e cando os "
+"xogadores únense."
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr "Límite do ruído do deserto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+"Os desertos aparecen cando np_biome supera este valor.\n"
+"Cando a marca 'snowbiomes' actívase, isto é ignorado."
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr "Desincronizar a animación dos bloques"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Decoracións"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr "Tecla romper bloque"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Partículas ao excavar"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Desactivar anticheat"
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr "Non permitir contrasinais baleiros"
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Factor de escala de densidade de exposición"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr "Nome do servidor. Mostrarase na lista de servidores."
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr "Pulsar dúas veces \"salto\" para voar"
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr "Pulsar dúas veces \"salto\" serve para activar e desactivar o voo."
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr "Tecla para soltar obxecto"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Mostrar información de depuración do xerador de terreos."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Nº máx. de calabozos Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Nº mín. de calabozos Y"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Sonido de calabozos"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Activar axuda IPv6 (para o cliente e o servidor).\n"
+"É preciso para que as conexións IPv6 funcionen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Activar a axuda de mods de Lua no cliente.\n"
+"Isto é experimental e a API pode cambiar."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Activar filtrado \"poisson disk\".\n"
+"Utiliza o \"poisson disk\" para proxectar sombras suaves cando o valor sexa "
+"verdadero. Senón, utiliza o filtrado PCF."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"Activar sombras coloridas.\n"
+"Se o valor é verdadeiro, os bloques traslúcidos proxectarán sombras "
+"coloridas. Esta opción precisa de moitos recursos."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Activar a xanela da consola"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Activar o modo creativo para todos os xogadores"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Activar joysticks"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Activar axuda para as canles de mods."
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr "Activar seguridade dos mods"
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr "Activar dano e morte dos xogadores."
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr "Activar a entrada de comandos aleatoria (só para tests)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+"Activar a iluminación suave con oclusión de ambiente simple.\n"
+"Desactivar para velocidade ou vistas diferentes."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+"Activar para impedir a conexión de clientes antigos.\n"
+"Os clientes máis antigos son compatibles porque non fallarán ao conectarse\n"
+"a novos servidores, pero é posible que non sexan compatibles todas as "
+"funcións novas que esperan."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+"Activa o uso do servidor multimedia remoto (se o proporciona o servidor).\n"
+"Os servidores remotos ofrecen unha forma máis rápida de descargar datos (por "
+"exemplo, texturas)\n"
+"ao conectarse ao servidor."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+"Activar os objectos buffer de vértice.\n"
+"Isto debería mellorar muito o rendimento gráfico."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Activa o balanceo de vista e canto o fai.\n"
+"Por exemplo: 0 para nada de balanceo; 1.0 para o normal; 2.0 para o dobre."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+"Activa/desactiva a execución dun servidor IPv6.\n"
+"Ignorado se establécese bind_address.\n"
+"É preciso enable_ipv6 para activalo."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Activa o mapeo de tons fílmicos 'Uncharted 2' de Hable.\n"
+"Simula a curva de ton da película fotográfica e como esta se aproxima á\n"
+"aparición de imaxes de alto rango dinámico. O contraste de gama media é\n"
+"un poulllo mellor, pois as luces e as sombras comprímense gradualmente."
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr "Activa a animación de obxetos no inventario."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Activa o rexistro de mallas xiradas."
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr "Activa o minimapa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+"Activa o son.\n"
+"Se está desactivado, deixarán de escoitarse todos os sons e os sons do xogo\n"
+"xa non funcionarán.\n"
+"Para cambiar esta configuración, é necesario reiniciar."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+"Permite compensar para reducir a carga da CPU ou aumenta o desempeño de "
+"renderización\n"
+"a costa de pequenos falllos visuais que non afectan á hora de xogar."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Perfil dos vales"
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr "Intervalo de exposición dos datos da perfilaxe do motor"
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr "Métodos de entidade"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+"Expoñente do estreitamento da terreo flotante. Altera este comportamento.\n"
+"O valor = 1,0 crea un estrechamento uniforme e lineal.\n"
+"Os valores > 1.0 crean un afilamento suave adecuado para a separación "
+"predeterminada\n"
+"cháns flotantes.\n"
+"Os valores < 1,0 (por exemplo 0,25) crean un nivel de superficie máis "
+"definido con\n"
+"cháns baixas máis planas, adecuadas para unha capa sólida de terreo flotante."
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr "FPS cando está en segundo plano ou pausado"
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr "FSAA"
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr "Factor de ruído"
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr "Factor de balanceo en caída"
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr "Camiño da fonte alternativa"
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr "Tecla de correr"
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr "Aceleración no modo rápido"
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr "Velocidade do modo rápido"
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr "Movemento rápido"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+"Movemento rápido (vía tecla \"Aux1\").\n"
+"É preciso o permiso \"fast\" no servidor."
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr "Campo de visión"
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr "Campo de visión en grados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+"Ficheiro no cartafol client/serverlist/ que contén os seus servidores "
+"favoritos.\n"
+"Móstranse na xanela de Xogar en liña."
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr "Profundidade de recheo"
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr "Ruído da profundidade de recheo"
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr "Mapa de tons fílmico"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+"As texturas filtradas poden combinar valores RGB con áreas totalmente "
+"transparentes.\n"
+"que os optimizadores PNG adoitan descartar, a miúdo resultando en\n"
+"bordos claros ou escuros en texturas transparentes. Aplique un filtro para "
+"limpalo\n"
+"no tempo de carga da textura. Isto habilitarase automaticamente se o "
+"\"mipmapping \"está activado."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Suavizado:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Primeiro de 4 ruídos 2D que xuntos definen a altura de outeiros/montañas."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Primeiro de 2 ruídos 3D que xuntos definen túneis."
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr "Semente de mapa fixa"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Joystick virtual fixo"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Densidade dos terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Valor máximo de Y dos terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Valor mínimo de Y dos terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Ruído de terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Expoñente de conicidade de terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Distancia cónica de terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Nivel da auga de terreos flotantes"
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr "Tecla de voo"
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr "Voar"
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr "Néboa"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Inicio de néboa"
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr "Alt. néboa"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "Tamaño da fonte"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Fonte en negra por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Fonte en cursiva por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr "Sombra da fonte"
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr "Opacidade da sombra da fonte"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Tamaño da fonte"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr "Tamaño da fonte divisible por"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Tamaño da fonte por defecto. 1 unidade = 1 píxel en 96 DPI"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Tamaño da fonte monoespacial. 1 unidade = 1 píxel en 96 DPI"
+
+#: 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 ""
+"Tamaño da fonte do texto do chat reciente e do indicador do chat en puntos "
+"(pt).\n"
+"O valor 0 utilizará o tamaño de fonte por defecto."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"Para fontes de estilo píxel que non se escalan ben, isto garante que se "
+"utilicen os tamaños de letra\n"
+"con este tipo de letra sempre serán divisible por este valor, en píxeles. "
+"Por exemplo,\n"
+"un tipo de letra de 16 píxeles de alto debería ter este valor establecido en "
+"16, polo que só o será\n"
+"tamaño 16, 32, 48, etc., polo que un mod que solicite un tamaño de 25 obterá "
+"32."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Formato dos mensajes do chat do xogador. As seguintes cadeas son válidas:\n"
+"@name, @message, @timestamp (opcional)"
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr "Formato das capturas de pantalla."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Cor de fondo por defecto para formularios"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Opacidade de fondo por defecto para formularios"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Cor de fondo para formularios en pantalla completa"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Opacidade dos formularios en pantalla completa"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Cor de fondo por defecto para os formularios (R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Opacidade por defecto do fondo dos formularios (entre 0 e 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Cor de fondo para os formularios en pantalla completa(R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "Opacidade de fondo por defecto para os formularios (entre 0 e 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr "Tecla avance"
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr "Cuarto de 4 ruídos 2D que xuntos definen a altura das montañas."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Tipo de fractal"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "Fracción de distancia visible na que a néboa comeza a aparecer"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+"Distancia máxima de xeración de bloques para clientes, en mapblocks (16x3 "
+"bloques)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+"Distancia máxima de envío de bloques para clientes, en mapblocks (16 nós)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"Onde ata os clientes receben información dos obxectos, indicado en bloques "
+"(16 nós).\n"
+"\n"
+"Establecer isto máis grande que active_block_range tamén fará que o "
+"servidor\n"
+"manteña os obxectos activos ata esta distancia na dirección que o\n"
+"xogador está mirando. (Isto pode evitar que os enemigos desaparezan "
+"repentinamente)"
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr "Pantalla completa"
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr "Modo de pantalla completa."
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr "Escala de IGU"
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr "Filtro de escala de IGU"
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr "Filtro de escala de IGU \"txr2img\""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Xogos"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr "Chamadas de retorno globais"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Atributos globais do xerador de mundos.\n"
+"En Mapgen v6 o marcador \"decoracións\" controla todas as decoracións "
+"excepto as árbores\n"
+"e herba da selva, en todos os demais xeradores de mundos este marcador "
+"controla todas as decoracións."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Gradiente da curva de luz no nivel máximo de luz.\n"
+"Controla o contraste dos niveis de luz máis altos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Gradiente da curva de luz no nivel mímino de luz.\n"
+"Controla o contraste dos niveis de luz máis baixos."
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr "Gráficos"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Gráficos"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Gráficos"
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr "Gravidade"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr "Nivel do chán"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Ruído do chán"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "Mods HTTP"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Escala de IGU"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr "Alt. HUD"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Manexo de chamadas obsoletas da API de Lua:\n"
+"- none: non rexistrar chamadas obsoletas\n"
+"- log: imitar e rexistrar o rexistro de chamadas obsoletas (por defecto).\n"
+"- error: abortar ao usar a chamada obsoleta (suxerido para desenvolvedores "
+"do mod)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+"Ter o propio instrumento de análise do mundor:\n"
+"* Instrumentar unha función baleira.\n"
+"Isto estima a sobrecarga que a instrumentación está engadindo (chamada de "
+"función +1).\n"
+"* Instrumentar a mostraxe que se utiliza para actualizar as estatísticas."
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr "Ruído de mestura de calor"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Ruído da calor"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Componente de altura do tamaño inicial xanela inicial. Ignórase en pantalla "
+"completa."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Altura do ruído"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Altura do ruído seleccionado"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Desnivel do outeiro"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Límites do outeiro"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Sonido de outeiros 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Sonido de outeiros 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Sonido de outeiros 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Sonido de outeiros 4"
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "Páxina web do servidor. Mostrarase na lista de servidores."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Aceleración horizontal no aire ao saltar ou caer,\n"
+"en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+"Aceleración horizontal e vertical en modo rápido,\n"
+"en nodos 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 ""
+"Aceleración horizontal e vertical no chán ou ao escalar,\n"
+"en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Tecla de próximo obxecto na barra principal"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Tecla de obxecto anterior na barra principal"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Tecla de rañura 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Tecla de rañura 10"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Tecla de rañura 11"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Tecla de rañura 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Tecla de rañura 13"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Tecla de rañura 14"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Tecla de rañura 15"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Tecla de rañura 16"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Tecla de rañura 17"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Tecla de rañura 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Tecla de rañura 19"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Tecla de rañura 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Tecla de rañura 20"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Tecla de rañura 21"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Tecla de rañura 22"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Tecla de rañura 23"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Tecla de rañura 24"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Tecla de rañura 25"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Tecla de rañura 26"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Tecla de rañura 27"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Tecla de rañura 28"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Tecla de rañura 29"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Tecla de rañura 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Tecla de rañura 30"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Tecla de rañura 31"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Tecla de rañura 32"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Tecla de rañura 4"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Tecla de rañura 5"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Tecla de rañura 6"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Tecla de rañura 7"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Tecla de rañura 8"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Tecla de rañura 9"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Profundidade dos ríos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Velocidade das ondas dos líquidos. Máis alto = máis rápido.\n"
+"Se o valor é negativo, as ondas moveranse cara atrás.\n"
+"É necesario activar a ondulación dos líquidos."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+"Tempo de espera do servidor en eliminar bloques non utilizados.\n"
+"Canta maior resolución maior fluidez, aínda que consume máis memoria RAM."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Diminúe isto para aumentar a resistencia do líquido ao movemento."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Largura dos ríos."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Ruído de mestura da humidade"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Ruído da humidade"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variación da humidade dos biomas."
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "Servidor IPv6"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+"Se os FPS fosen máis altos que isto, limítaos suspendendo o programa\n"
+"para non gastar a potencia da CPU innecesariamente."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+"Se está desactivado, a tecla \"Aux1\" usarase para voar rápido se o modo voo "
+"e rápido están\n"
+"ativados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Se está activado, o servidor realizará a eliminación de oclusión de bloques "
+"de mapa baseándose\n"
+"na posición dos ollos do xogador. Isto pode reducir o número de bloques\n"
+"enviado ao cliente entre un 50 % e un 80 %. O cliente xa non recibirá o máis "
+"invisible,\n"
+"de xeito que se reduce a utilidade do modo espectador."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+"Se se activa xunto co modo voar, o xogador poderá voar a través de nós "
+"sólidos.\n"
+"Isto require o permiso \"noclip\" no servidor."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"Se está activada, a tecla \"Aux1\" utilízase en lugar da tecla \"Agacharse\" "
+"para baixar e\n"
+"descender."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Activar confirmación de rexistro ao se conectar ao servidor\n"
+"Se está desactivado, rexistrarase unha nova conta automáticamente."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+"Se está activado, as accións rexístranse para logo podelas desfacer.\n"
+"Esta opción só funciona cando se inicia o servidor."
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+"Se está activado, o sistema de prevención de trampas no modo de xogo en liña "
+"desactivarase."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+"Se está activado, os datos non válidos do mundo non farán que o servidor "
+"peche.\n"
+"Actívao só se sabes o que fas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Se está activado, fai direccións de movemento relativas á rotación vertical "
+"do xogador cando voa ou nada."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+"Se está activado, os novos xogadores non poderán unirse con contrasinais "
+"baleiros."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Se está activado, pode colocar bloques na posición (pés + nivel dos ollos) "
+"onde está.\n"
+"Isto é útil cando se traballa con caixas de nós en áreas pequenas."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Se a restrición CSM para o intervalo de nodos está activada, as chamadas "
+"get_node están limitadas\n"
+"a esta distancia do xogador ao nó."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Se a execución dun comando de chat leva máis tempo do que o especificado en\n"
+"segundos, engade a información da hora á mensaxe de comando de chat"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Se o tamaño do ficheiro de debug.txt supera o número de megabytes "
+"especificado en\n"
+"esta configuración cando se abre, o ficheiro móvese a debug.txt.1,\n"
+"eliminando un debug.txt.1 máis antigo se existe.\n"
+"debug.txt só se move se esta configuración ten un valor positivo."
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+"Se isto se establece, os xogadores sempre (re) aparecerán na posición "
+"indicada."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Ignorar erros do mundo"
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr "Opacidade do fondo da consola do chat no xogo (entre 0 e 255)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr "Cor do fondo da consola do chat no xogo (R, G, B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "Altura da consola do chat no xogo, entre 0,1 (10 %) e 1,0 (100 %)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Tecla para aumentar o volume"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Velocidade vertical ao saltar, en nodos por segundo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+"Instrumento aplicado.\n"
+"Isto case sempre só o necesitan os contribuidores principais"
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr "Instrumento de comandos do chat no rexistro."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+"Instrumentación das funcións de chamadas de retorno globais no rexistro.\n"
+"(todo o que pasee a unha función minetest.register_*())"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+"Instrumenta a función de acción dos modificadores de bloque activos no "
+"rexistro."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+"Instrumenta e función de acción de carga de modificadores de bloque no "
+"rexistro."
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr "Instrumenta os métodos das entidades durante o rexistro."
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+"Intervalo para gardado de cambios importantes no mundo, indicado en segundos."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Intervalo de envío da hora do dia aos clientes."
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr "Animacións dos obxectos do inventario"
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr "Tecla de inventario"
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr "Inverter rato"
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr "Inverter o movemento vertical do rato."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Ruta da fonte cursiva"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Ruta da fonte monoespaciada en cursiva"
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr "TTL da entidade obxecto"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Iteracións"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Iteracións da función recursiva.\n"
+"Aumentar isto aumenta a cantidade de pequenos detalles, pero tamén\n"
+"aumenta a carga de procesamento.\n"
+"En iteracións = 20 este xerador de mundos ten unha carga similar ao da V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID do joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr "Intervalo de repetición do botón do joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Zona morta do joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr "Sensibilidade do gatillo do joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Tipo de joystick"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+"Só conxunto de Julia.\n"
+"Compoñente W da constante hipercomplexa.\n"
+"Altera a forma do fractal.\n"
+"Non ten efecto nos fractais 3D.\n"
+"Rango de aproximadamente -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+"Só conxunto de Julia.\n"
+"Compoñente X da constante hipercomplexa.\n"
+"Altera a forma do fractal.\n"
+"Rango de aproximadamente -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+"Só conxunto de Julia.\n"
+"Compoñente Y da constante hipercomplexa.\n"
+"Altera a forma do fractal.\n"
+"Rango de aproximadamente -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+"Só conxunto de Julia.\n"
+"Compoñente Z da constante hipercomplexa.\n"
+"Altera a forma do fractal.\n"
+"Rango de aproximadamente -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Julia x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Julia y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Julia z"
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr "Tecla de salto"
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr "Velocidade de salto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para disminuir o campo de visión.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para disminuir o volume.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para romper bloques.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para soltar o obxecto seleccionado.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para aumentar o campo de visión.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para aumentar o volume.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para saltar.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para moverse máis axilmente en modo rápido.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para mover o xogador cara atrás.\n"
+"Tamén desactivará o desprazamento automático cando estea activo.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para moverse cara adiante.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para moverse cara esquerda.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para moverse cara dereita.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para silenciar o xogo.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para abrir a xanela do chat e escribir comandos.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para abrir a xanela do chat e escribir comandos locales.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para abrir a xanela do chat.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para abrir o inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para colocar un obxecto.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 11 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 12 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 13 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 14 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 15 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 16 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 17 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 18 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 19 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 20 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 21 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 22 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 23 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 24 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 25 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 26 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 27 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 28 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 29 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 30 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 31 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 32 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 8 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 5 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 1 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 4 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar o seguinte obxecto na barra de acceso directo do "
+"inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 9 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar o obxecto anterior na barra de acceso directo do "
+"inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 2 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 7 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 6 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 10 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para seleccionar a rañura 3 do inventario.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para agacharse.\n"
+"Tamén serve para descender dentro da auga se aux1_descends está "
+"desactivado.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para cambiar entre a cámara en primeira e terceira persoa.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para facer capturas.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar avance automático.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar modo cinemático.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar visualización do minimapa.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar modo rápido.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar voo.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar modo espectador.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar modo de rotación horizontal.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar actualización da cámara. Usado só para o "
+"desenvolvemento.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar chat.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar visualización de información de depuración.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar a visualización da néboa.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar visualización do HUD.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar visualización do chat de consola largo.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar a análise do mundo. Emprégase para o desenvolvemento.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para alternar campo de visión ilimitado.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tecla para facer zoom cando sexa posible.\n"
+"Ver http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "Expulsar xogadores que enviaron máis de X mensaxes cada 10 segundos."
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr "Inclinación dos lagos"
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr "Límite de lagos no mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr "Idiomas"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr "Profundidade das covas grandes"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr "Número máximo de covas grandes"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr "Número mínimo de covas grandes"
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr "Proporción de covas grandes inundadas"
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr "Tecla da consola do chat grande"
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr "Apariencia das follas"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+"Apariencia das follas:\n"
+"- Detalladas: todas as caras son visibles\n"
+"- Simples: só vense as caras externas, se se utilizan special_tiles "
+"definidos\n"
+"- Opacas: desactiva a transparencia"
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr "Tecla esquerda"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"Duración do tick do servidor e o intervalo no que os obxetos actualízanse "
+"polo xeral\n"
+"na rede."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Lonxitude das ondas de líquidos.\n"
+"É necesario que a ondulación dos líquidos estea activa."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Periodo de tempo entre os ciclos de execución dos ABM"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Periodo de tempo entre os ciclos de execución de NodeTimer"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Periodo de tempo entre os ciclos de xestión de bloques activos"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+"Nivel de rexistro que se gardará en debug.txt:\n"
+"- <nothing> (sen rexistro)\n"
+"- none (mensaxes sen nivel)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr "Impulso da curva da luz"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr "Centro de impulso da curva de luz"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr "Dispersión de impulso de curva de luz"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr "Gamma da curva de luz"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr "Gradiente alto da curva de luz"
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr "Gradiente baixo da curva de luz"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Iluminación suave"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Límite de xeración de mundos, en nós, nas 6 direccións desde (0, 0, 0).\n"
+"Só se xeran fragmentos do mundo dentro do límite.\n"
+"O valor almacénase por mundo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+"Limita o número de solicitudes paralelas HTTP. Afecta:\n"
+"- Recuperación de medios se o servidor usa a configuración "
+"\"remote_media\".\n"
+"- Descarga da lista de servidores e anuncio do servidor.\n"
+"- Descargas realizadas polo menú principal (por exemplo, xestor de mods).\n"
+"Só ten efecto se se compila con cURL."
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr "Fluidez dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr "Suavizado da fluidez dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr "Límite de procesamento de líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr "Tempo para eliminar filas de líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr "Afundimento en líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr "Intervalo de actualización de líquidos en segundos."
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr "Periodo de actualización dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr "Cargar a análise do mundo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Carga a análise do mundo para recoller datos.\n"
+"Ofrece un comando /profiler para acceder ao perfil compilado.\n"
+"É útil para desenvolvedores de mods e operadores de servidores."
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr "Carga de modiificadores de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr "Límite inferior Y de calabozos."
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr "Límite inferior Y de terreos flotantes."
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr "Script do menú principal"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+"Facer que as cores da néboa e do ceo dependan do día (amencer/posta de sol) "
+"e da dirección da vista."
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr "Fai que todos os líquidos sexan opacos"
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr "Nivel de compresión do mapa para almacenamiento de disco"
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr "Nivel de compresión do mapa para tranferencias pola rede"
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr "Directorio de mapas"
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+"Atributos de xeración de mundos específicos do xerador de mundos carpatianos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+"Atributos de xeración de mapas específicos de mundos planos.\n"
+"Os lagos e outeiros pódense engadir ao mundo plano ás veces."
+
+#: src/settings_translation_file.cpp
+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 xeración de mundos específicos de mundos planos.\n"
+"'terreo' permite a xeración de terreos non fractales:\n"
+"océanos, illas e subterráneos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+"Atributos de xeración de mapas específicos de xerador de mundos con vales.\n"
+"'altitude_chill': reduce a calor coa altitude.\n"
+"'humid_rivers': aumenta a humidade arredor dos ríos.\n"
+"'vary_river_depth': se está activado, a baixa humidade e a alta calor fan os "
+"ríos\n"
+"máis profundos e ocasionalmente secos.\n"
+"'altitude_dry': reduce a humidade coa altitude."
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Atributos de xeración de mundos específicos do xerador de mundos v5."
+
+#: src/settings_translation_file.cpp
+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 xeración de mundos específicos do xerador de mundos v6.\n"
+"O marcador \"snowbiomes\" activa o novo sistema de 5 biomas.\n"
+"Cando o marcador \"snowbiomes\" está activado, as selvas están habilitadas "
+"automaticamente e\n"
+"o marcador \"selvas\" é ignorado."
+
+#: src/settings_translation_file.cpp
+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 xeración de mapas específicos do xerador de mundos v7.\n"
+"'cristas': ríos.\n"
+"'floatlands': masas terrestres flotantes na atmosfera.\n"
+"'cavernas': covas xigantes no subsolo."
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr "Límite de xeración de mapas"
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr "Intervalo de gardado de mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr "Tempo de actualización das sombras do mapa"
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr "Límite do mapa de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr "Retraso da xeración da malla do mapa de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+"Tamaño da caché do mapa de bloques do xerador da malla do mapa de bloques en "
+"MB"
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr "Tempo límite de eliminación do mapa de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr "Xerador de mundos carpatianos"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr "Parámetros específicos de mundos carpatianos"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr "Xerador de mundos planos"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr "Parámetros específicos de mundos planos"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr "Xerador de mundos fractais"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr "Parámetros específicos de mundos fractais"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr "Xerador de mundos v5"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr "Parámetros específicos do xerador de mundos v5"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr "Xerador de mundos v6"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr "Parámetros específicos do xerador de mundos v6"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr "Xerador de mundos v7"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr "Parámetros específicos do xerador de mundos v7"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr "Xerador de mundos con vales"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr "Parámetros espcíficos o xerador de mundos con vales"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr "Depuración do xerador de mundos"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr "Nome do xerador de mundos"
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr "Distancia máxima de xeración de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr "Distancia máxima de envío de bloques"
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr "Máximo de líquidos procesados por paso."
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr "Max. clearobjects bloques extra"
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr "Máx. paquetes por iteración"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr "FPS máximos"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+"FPS máximos cando a xanela non está enfocada ou cando o xogo está en pausa."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Distancia máxima para renderizar as sombras."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr "Máximo de bloques cargados de maneira forzada"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr "Largura máxima da barra do inventario"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "Límite máximo de covas grandes aleatorias por chunk."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "Límite máximo de covas pequenas aleatorias por chunk."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+"Resistencia máxma a líquidos. Controla a desaceleración ao entrar en "
+"líquidos a\n"
+"alta velocidade."
+
+#: src/settings_translation_file.cpp
+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úmero máximo de bloques que se envían simultaneamente por cliente.\n"
+"O reconto total máximo calcúlase de forma dinámica:\n"
+"max_total = ceil((#clientes + max_users) * por_cliente / 4)"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr "Número máximo de bloques que se poden poñer en cola para a súa carga."
+
+#: 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 ""
+"Número máximo de bloques a poñer en cola que se van xerar.\n"
+"Este límite aplícase por xogador."
+
+#: src/settings_translation_file.cpp
+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 bloques que se deben poñer en cola que se van cargar desde "
+"o ficheiro.\n"
+"Este límite aplícase por xogador."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+"Número máximo de descargas simultáneas. As descargas que superen este límite "
+"poñeranse en cola.\n"
+"Debería ser inferior a curl_parallel_limit."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr "Número máximo de bloques de mapa cargados de maneira forzada."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+"Número máximo de bloques de mapas para que o cliente os manteña na memoria.\n"
+"Establecese en -1 para cantidade ilimitada."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+"Número máximo de paquetes enviados por etapa de envío. Se tes unha conexión "
+"lenta\n"
+"intenta reducilo, pero non ata un número inferior ao dobre do que ten por "
+"obxectivo o cliente."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "Número máximo de xogadores que se poden conectar simultaneamente."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Número máximo de mensaxes de chat recientes para mostrar"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr "Número máximo de obxectos almacenados estáticamente nun bloque."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr "Obxectos máximos por bloque"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+"Proporción máxima da xanela actual que se utilizará para a barra do "
+"inventario.\n"
+"Útil se hai algo para mostrar á dereita ou á esquerda da barra."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr "Número máximo de envíos de bloques simultáneos por cliente"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr "Tamaño máximo da cola de saída do chat"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+"Tamaño máximo da fila de chat de saída.\n"
+"0 para desactivar a cola e -1 para que o tamaño da cola sexa ilimitado."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+"Tempo máximo que pode tardar unha descarga dun ficheiro (por exemplo, un "
+"mod), expresado en milisegundos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Tempo máximo que pode tardar unha solicitude interactiva (por exemplo, a "
+"recuperación da lista de servidores), expresado en milisegundos."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Usuarios máximos"
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr "Caché de malla"
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr "Mensaxe do día"
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr "Mensaxe do día mostrada aos xogadores que se conectan."
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr "Método usado para resaltar o obxecto seleccionado."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Nivel mínimo de rexistro para escribir no chat."
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr "Minimapa"
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr "Tecla do minimapa"
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr "Altura de escaneo do minimapa"
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Ruído 3D que determina a cantidade de calabozos por chunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Límite mínimo do número aleatorio de covas pequenas por chunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Tamaño mínimo de textura"
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr "Mapeado do relieve"
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Análise do mundo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Security"
+msgstr "Seguridade"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr "Canais de mod"
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr "Modifica o tamaño dos elementos do HUD."
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr "Ruta da fonte monoespaciada"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr "Tamaño da fonte monoespaciada"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Tamaño da fonte monoespaciada divisible por"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Ruído da altura das montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Ruído das montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Variación do ruído das montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Nivel cero das montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr "Sensibilidade do rato"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr "Multiplicador da sensibilidade do rato."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Ruído do lodo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Multiplicador para balanceo dos brazos en caída.\n"
+"Por exemplo: 0 para velos estáticos; 1.0 para normal; 2.0 para o dobre."
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr "Tecla para silenciar"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Silenciar son"
+
+#: src/settings_translation_file.cpp
+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 xerador de mundos que se utilizará ao crear un mundo novo.\n"
+"Crear un mundo no menú principal substituirá isto.\n"
+"Xeradores de mundos actuais nun estado moi inestable:\n"
+"- Os terreos flotantes opcionais de v7 (desactivados por defecto)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+"Nome do xogador.\n"
+"Cando se executa un servidor, os clientes que se conectan con este nome son "
+"administradores.\n"
+"Ao comezar desde o menú principal, isto substitúese."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+"Nome do servidor, que se mostrará na lista de servidores e cando os "
+"xogadores se unan."
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr "Plano cercano"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+"Porto de rede para recibir ratos (UDP).\n"
+"Este valor substituirase ao comezar desde o menú principal."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Rede"
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr "Os novos usuarios deben introducir este contrasinal."
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr "Modo espectador"
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr "Tecla para modo espectador"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Resaltar nodos"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr "Resaltado dos nós"
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr "Intervalo NodeTimer"
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr "Ruídos"
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr "Número de fíos emerxentes"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"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 fíos emerxentes a usar.\n"
+"Valor 0:\n"
+"- Selección automática. O número de fíos emerxentes será\n"
+"- \"número de procesadores - 2\", cun límite inferior de 1.\n"
+"Calquera outro valor:\n"
+"- Especifica o número de fíos emerxentes, cun límite inferior de 1.\n"
+"AVISO: aumentar o número de fíos emerxentes aumenta o mundo do motor\n"
+"velocidade, pero isto pode prexudicar o rendemento do xogo ao interferir con "
+"outros\n"
+"procesos, especialmente en modo único e/ou cando se executa código Lua\n"
+"'on_xerado'. Para moitos usuarios, a configuración óptima pode ser \"1\"."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+"Número de bloques adicionais que se poden cargar con /clearobjects á vez.\n"
+"Esta é unha compensación entre a sobrecarga de transaccións de SQLite e\n"
+"consumo de memoria (4096=100MB, como regra xeral)."
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr "Líquidos opacos"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+"Opacidade (alfa) da sombra detrás do tipo de letra por defecto, entre 0 e "
+"255."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+"Abre o menú de pausa cando se perda o foco da xanela. Non se detén se hai "
+"unha especificación de formulario\n"
+"aberto."
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr "Substitución opcional da cor da ligazón web do chat."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+"Camiño da fonte alternativa. Debe ser un tipo de letra TrueType.\n"
+"Emprégarase para certos idiomas ou se o tipo de letra por defecto non está "
+"dispoñible."
+
+#: 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 ""
+"Camiño onde gardar capturas de pantalla. Pode ser un camiño absoluto ou "
+"relativo.\n"
+"O cartafol crearase se aínda non existe."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+"Camiño ao directorio dos sombreadores. Se non se define ningún, utilizarase "
+"a localización por defecto."
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "Camiño ao directorio de texturas. Primeiro búscanse alí."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Camiño ao tipo de letra por defecto. Debe ser un tipo de letra TrueType.\n"
+"Usarase o tipo de letra alternativo se non se pode cargar."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Camiño ao tipo de letra monoespacial. Debe ser un tipo de letra TrueType.\n"
+"Este tipo de letra úsase para, por exemplo, a consola e a pantalla da "
+"análise do mundo."
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr "Pausa cando se perfe o foco da pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Límite por xogador de carga de bloques en cola desde o disco"
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Límite por xogador de bloques en cola que xerar"
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr "Físicas"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr "Tecla de voo libre"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "Modo de rotación vertical"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr "Tecla para colocar obxectos"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Intervalo de repetición da acción \"colocar\""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+"O xogador é capaz de voar sen ser afectado pola gravidade.\n"
+"Isto require o permiso \"fly\" no servidor."
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr "Distancia de transferencia do xogador"
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr "Xogador contra xogador"
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr "Filtrado de Poisson"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+"Porto para conectarse á (UDP).\n"
+"Ten en conta que o campo do porto do menú principal substitúe esta "
+"configuración."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Evita que a acción de romper e colocar bloques se repitan cando se manteñen "
+"os botóns do rato.\n"
+"Activa isto se rompes ou colocas bloques por accidente moitas veces."
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+"Evita que os mods fagan cousas perigosas como executar comandos de shell."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+"Expor os datos da perfilaxe en intervalos regulares (en segundos).\n"
+"0 = desactivar. Útil para desenvolvedores."
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr "Permisos que poden conceder os xogadores con basic_privs"
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr "Análise do mundo"
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr "Alt. análise do mundo"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr "Enderezo do Prometheus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+"Enderezo do Prometheus.\n"
+"Se Minetest se compila coa opción ENABLE_PROMETHEUS activada,\n"
+"habilita a obteción de métricas para Prometheus nese enderezo.\n"
+"As métricas pódense obter en http://127.0.0.1:30000/metrics"
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Proporción de covas grandes que conteñen líquido."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+"Rango da área de nubes indicado nun número de 64 cadrados de nubes de nós.\n"
+"Os valores superiores a 26 comezarán a producir cortes nítidos nas esquinas "
+"da área de nubes."
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Eleva o terreo para facer vales arredor dos ríos."
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr "Entrada aleatoria"
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr "Tecla de campo de visión"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Mensaxes do chat recientes"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Camiño da fonte regular"
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr "Medios remotos"
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr "Porto remoto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+"Elimina os códigos de cores das mensaxes de chat entrantes\n"
+"Usa isto para evitar que os xogadores poidan usar cor nas súas mensaxes"
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr "Substitúe o menú principal por defecto por un personalizado."
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr "Directorio para logs"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Restrinxe o acceso de algunhas funcións do cliente en servidores.\n"
+"Combine isto de abaixo para restrinxir recursos aos clientes ou coloque 0 "
+"para que non haxa restriccións:\n"
+"LOAD_CLIENT_MODS: 1 (desactiva a carga de mods no cliente)\n"
+"CHAT_MESSAGES: 2 (desactiva a chamada \"send_chat_message\" no cliente)\n"
+"READ_ITEMDEFS: 4 (desactiva a chamada \"get_item_def\" no cliente)\n"
+"READ_NODEDEFS: 8 (desactiva a chamada \"get_node_def\" no cliente)\n"
+"LOOKUP_NODES_LIMIT: 16 (desactiva a chamada \"get_node\" no cliente para "
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (desactiva a chamada \"get_player_names\" no cliente)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Ruído de extensión do cume de montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Ruído da cresta da montaña"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Ruído das cristas debaixo da auga"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Ruído do tamaño das dorsais das montañas"
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr "Tecla dereita"
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr "Profundidade da canle do río"
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr "Largura da canle do río"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr "Profundidade do río"
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr "Ruído do río"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr "Tamaño do río"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Largura do val do río"
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr "Rexistro das accións"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Tamaño do ruído de outeiros redondeados"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Ruído espallado de outeiros redondeados"
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr "Minimapa circular"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Remover e colocar obxectos de maneira segura"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Aparecen praias areosas cando \"np_beach\" supera este valor."
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr "Gardar o mapa recibido polo cliente no disco."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Gardar automaticamente o tamaño da xanela cando é modificado."
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr "Gardar mapa recibido do servidor"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+"Escala a GUI por un valor especificado polo usuario.\n"
+"Use o filtro antialias de veciño máis próximo para escalar a GUI.\n"
+"Isto suavizará algúns dos bordos ásperos e mestura\n"
+"píxeles ao reducir a escala, a costa de difuminar algúns\n"
+"píxeles de bordo cando as imaxes son escaladas por tamaños non enteiros."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Pantalla:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr "Altura da xanela"
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr "Largura da xanela"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr "Cartafol das capturas"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr "Formato de captura de pantalla"
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr "Calidade de captura de pantalla"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+"Calidade da captura de pantalla. Só se usa para formato JPEG.\n"
+"1 é a peor calidade; 100 é a mellor calidade.\n"
+"Usa 0 para a calidade por defecto."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Captura"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr "Sonido do fondo marino"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Segundo de 4 ruídos 2D que xuntos definen a altura de outeiros/montañas."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Segundo de 2 ruídos 3D que xuntos definen túneis."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Ver https://www.sqlite.org/pragma.html#pragma_synchronous"
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr "Cor dos bordes da caixa de selección (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr "Cor da caixa de selección"
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr "Largura da caixa de selección"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Escolle un dos 18 tipos de fractais:\n"
+"1 = Conxunto 4D de Mandelbrot \"Roundy\".\n"
+"2 = Conxunto 4D de Julia \"Roundy\".\n"
+"3 = Conxunto 4D de Mandelbrot \"Squarry”.\n"
+"4 = Conxunto 4D de Julia \"Squarry”.\n"
+"5 = Conxunto 4D de Mandelbrot \"Mandy Cousin\".\n"
+"6 = Conxunto 4D de Julia \"Mandy Cousin\".\n"
+"7 = Conxunto 4D de Mandelbrot \"Variation\".\n"
+"8 = Conxunto 4D de Julia \"Variation\".\n"
+"9 = Conxunto 4D de Mandelbrot \"Mandelbrot/Mandelbar\".\n"
+"10 = Conxunto 3D de Julia \"Mandelbrot/Mandelbar”.\n"
+"11 = Conxunto 3D de Mandelbrot \"Christmas Tree\".\n"
+"12 = Conxunto 3D de Julia \"Christmas Tree\".\n"
+"13 = Conxunto 3D de Mandelbrot \"Mandelbulb\".\n"
+"14 = Conxunto 3D de Julia \"Mandelbulb\".\n"
+"15 = Conxunto 3D de Mandelbrot \"Cosine Mandelbulb\".\n"
+"16 = Conxunto 3D de Julia \"Cosine Mandelbulb\".\n"
+"17 = Conxunto 3D de Mandelbrot \"Mandelbulb\".\n"
+"18 = Conxunto 3D de Julia \"Mandelbulb\"."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL do servidor"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Nome do servidor"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Descripción do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr "URL do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr "Enderezo do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr "Descripción do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr "Nome do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr "Porto do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Determinar bloques invisibles do lado do servidor"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Porto do servidor"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr "URL da lista de servidores"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "URL da lista de servidores"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr "Ficheiro da lista de servidores"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+"Establece o idioma. Deixa o campo baleiro para usar o idioma do sistema.\n"
+"É necesario reiniciar despois de cambiar isto."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Establece a lonxitude máxima de caracteres dunha mensaxe de chat enviada "
+"polos clientes."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Establece a forza da sombra.\n"
+"Un valor máis baixo son sombras máis claras, un valor máis alto son sombras "
+"máis escuras."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Establece o tamaño do raio de sombras suaves.\n"
+"Os valores máis baixos son sombras máis nítidas, os valores maiores "
+"significan son máis suaves.\n"
+"Valor mínimo: 1,0; valor máximo: 10,0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Establece a inclinación da órbita Sol/Lúa en graos.\n"
+"O valor de 0 é sen inclinación/órbita vertical.\n"
+"Valor mínimo: 0,0; valor máximo: 60,0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Establece o valor verdadeiro para activar o mapeado de sombras.\n"
+"É necesario que os sombreadores estean activados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Establece o valor verdadeiro para activar o movemento das follas.\n"
+"É necesario que os sombreadores estean activados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Establece o valor verdadeiro para activar o movemento dos líquidos (auga, "
+"por exemplo).\n"
+"É necesario que os sombreadores estean activados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Establece o valor verdadeiro para activar o movemento das plantas.\n"
+"É necesario que os sombreadores estean activados."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Establece a calidade da textura da sombra en 32 bits.\n"
+"En valor falso, utilizarase textura de 16 bits.\n"
+"Isto pode causar moitos máis detalles na sombra."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Camiño dos sombreadores"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Os sombreadores permiten efectos visuais avanzados e poden aumentar o "
+"rendemento nalgunhas\n"
+"tarxetas de vídeo.\n"
+"Isto só funciona con o modo de vídeo OpenGL."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Calidade do filtro de sombras"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr "Distancia do mapa de sombras en nós para renderizar sombras"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "Textura do mapa de sombras en 32 bits"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Tamaño da textura do mapa de sombras"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+"Desfase de sombra (en píxeles) da fonte por defecto. Se é 0, non se fará a "
+"sombra."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Intensidade da sombra"
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "Forma do minimapa. Activado = redondo, desactivado = cadrado."
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr "Mostrar información de depuración"
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr "Mostrar as caixas de selección de entidades"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Mostrar as caixas de selección de entidades\n"
+"É necesario reiniciar despois de cambiar isto."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Mostra os fondos das etiquetas de nome por defecto"
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr "Mensaxe de desconexión"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+"Tamaño dos chunks que creou o xerador de terreos, indicado en bloques (16 "
+"nós).\n"
+"AVISO!: Non hai ningún beneficio, e hai varios perigos, ao\n"
+"aumentar este valor por riba de 5.\n"
+"Reducir este valor aumenta a densidade de covas e calabozos.\n"
+"Modificar este valor é para uso especial. Recoméndase non modificalo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+"Tamaño da caché do xerador de terreos do xerador de malla. Isto fai que\n"
+"aumentae o % de acertos da caché, reducindo os datos que se copian do fío\n"
+"principal, reducindo así a fluctuación."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Inclinación da órbita do ceo"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "Porción w"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Pendente e recheo traballan xuntos para modificar as alturas."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Cantidade máxima de covas pequenas"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Cantidade mínima de covas pequenas"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+"Variación de humidade a pequena escala para mesturar biomas nos bordes."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+"Variación de temperatura a pequena escala para mesturar biomas nos bordes."
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr "Iluminación suave"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+"Suaviza a cámara ao mirar arredor. Tamén se chama suavización do rato.\n"
+"Útil para gravar vídeos."
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr "Suaviza a rotación da cámara en modo cinemático. 0 para desactivar."
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr "Suaviza a rotación da cámara. 0 para desactivar."
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr "Tecla para agacharse"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Velocidade ao estar agachado"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Velocidade ao se agachar, en nós por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Radio das sombras suaves"
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr "Son"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+"Especifica o URL do que o cliente obtén os medios en lugar de usar UDP.\n"
+"$filename debe ser accesible desde $remote_media$filename a través de cURL\n"
+"(obviamente, remote_media debería rematar cunha barra).\n"
+"Os ficheiros que non están presentes buscaranse do xeito habitual."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Especifica a cantidade por defecto na que se agrupan os nós, obxectos e "
+"ferramentas.\n"
+"Ten en conta que algúns xogos ou mods poden especificar unha cantidade na "
+"que agrupar algúns (ou todos) os obxectos."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Distribuír unha actualización completa do mapa de sombras sobre unha "
+"determinada cantidade de fotogramas.\n"
+"Os valores máis altos poden facer que as sombras sexan latentes e os valores "
+"máis baixos\n"
+"consumirán máis recursos.\n"
+"Valor mínimo: 1; Valor máximo 16"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Difusión do intervalo de aumento da curva de luz.\n"
+"Controla a largura do intervalo que se quere aumentar.\n"
+"A desviación estándar da curva de luz gaussiana aumenta."
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr "Punto de aparición estático"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "Ruído das pendentes"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Ruído do tamaño das montañas de paso"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Ruído doespallamento das montañas de paso"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Intensidade do modo de paralaxe 3D."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ampliación da curva de luz.\n"
+"Os 3 parámetros de \"impulso\" definen un rango da curva\n"
+"de luz que aumenta o brillo."
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr "Verificación estricta do protocolo"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Eliminar códigos de cores"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Nivel superficial de auga opcional colocado sobre unha capa sólida de terreo "
+"flotante.\n"
+"A auga está desactivada por defecto e só se colocará se se establece este "
+"valor\n"
+"arriba 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (o inicio do\n"
+"afilamento superior).\n"
+"***ADVERTENCIA, PERIGO POTENCIAL PARA OS MUNDOS E O RENDEMENTO DO "
+"SERVIDOR***:\n"
+"Ao activar a colocación de auga débense configurar e probar os terreos "
+"flotantes\n"
+"para ser unha capa sólida configurando 'mgv7_floatland_density' en 2.0 (ou "
+"outro\n"
+"valor necesario en función de 'mgv7_np_floatland'), para evitar\n"
+"fluxo de auga extremo intensivo en servidores e evitar grandes inundacións "
+"do\n"
+"superficie do mundo abaixo."
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr "SQLite sincrónico"
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr "Variación de temperatura para biomas."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Configuración"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Ruído alternativo do terreo"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Ruído base do terreo"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Altura do terreo"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Maior ruído do terreo"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Ruído do terreo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+"Limiar de ruído do terreo para outeiros.\n"
+"Controla a proporción da superficie do mundo cuberta por outeiros.\n"
+"Axusta cara a 0,0 para unha proporción maior."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+"Limiar de ruído do terreo para lagos.\n"
+"Controla a proporción da superficie do mundo cuberta por lagos.\n"
+"Axusta cara a 0,0 para unha proporción maior."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Ruído de persistencia do terreo"
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr "Camiño dos packs de textura"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Tamaño da textura para renderizar o mapa de sombras.\n"
+"Este debe ser un poder de dous.\n"
+"Os números máis grandes crean mellores sombras pero tamén consume máis."
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"As texturas dun nodo poden estar aliñadas co nó ou co mundo.\n"
+"O primeiro modo se adapta mellor a cousas como máquinas, mobles, etc., "
+"mentres\n"
+"este último fai que as escaleiras e os microbloques se adapten mellor ao "
+"contorno.\n"
+"Non obstante, como esta posibilidade é nova, non pode ser utilizada por "
+"servidores máis antigos,\n"
+"esta opción permite aplicala para certos tipos de nodos. Ten en conta que\n"
+"que se considera EXPERIMENTAL e pode non funcionar correctamente."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "O URL do repositorio de contido"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "A zona morta do joystick"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The default format in which profiles are being saved,\n"
+"when calling `/profiler save [format]` without format."
+msgstr ""
+"O formato por defecto no que se gardan as análises do mundo,\n"
+"ao chamar a `/profiler save [format]` sen formato."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr "A profundidade da chán ou outro nó de recheo do bioma."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"O camiño do ficheiro relativa ao camiño do mundo no que se gardarán os "
+"perfís."
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr "O identificador do joystick que se vai utilizar"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+"A lonxitude en píxeles que tarda en iniciar a interacción da pantalla táctil."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Altura máxima da superficie de líquidos con ondas.\n"
+"4.0 = Altura da onda é dous nós.\n"
+"0.0 = A onda non se move.\n"
+"Por defecto é 1.0 (medio nó).\n"
+"É necesario activar os líquidos con ondas."
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr "A interface de rede na que o servidor agarda a conexión."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+"Os permisos que obteñen automaticamente os novos usuarios.\n"
+"Consulta /privs no xogo para ver unha lista completa do teu servidor e da "
+"configuración do mod."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+"O radio do volume de bloques ao redor de cada xogador que está suxeito ao\n"
+"material de bloque activo, indicado en bloques de mapas (16 nós).\n"
+"Nos bloques activos cárganse obxectos e execútanse os ABM.\n"
+"Este é tamén o intervalo mínimo no que se manteñen os obxectos activos "
+"(mobs).\n"
+"Isto debería configurarse xunto con active_object_send_range_blocks."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"O motor de renderizado.\n"
+"É necesario un reinicio logo de cambiar isto.\n"
+"Nota: en Android, segue con OGLES1 se non está seguro. A aplicación pode non "
+"iniciarse doutro xeito.\n"
+"Noutras plataformas recoméndase OpenGL.\n"
+"Os sombreadores son compatibles con OpenGL (só para escritorio) e OGLES2 "
+"(experimental)"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+"A sensibilidade dos eixes do joystick para mover o\n"
+"vista no xogo frustum ao redor."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+"A intensidade (escuridade) do sombreado de oclusión ambiental do nó\n"
+"Abaixo é máis escuro, máis alto é máis claro. O intervalo de valores válido "
+"para isto\n"
+"a configuración é de 0,25 a 4,0 inclusive. Se o valor está fóra do intervalo "
+"será\n"
+"establecer o valor válido máis próximo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+"O tempo (en segundos) que a cola de líquidos pode crecer máis alá da "
+"capacidade\n"
+"de procesamento ata que se intente diminuír o seu tamaño eliminando a cola "
+"antiga de\n"
+"elementos. Un valor de 0 desactiva isto."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+"O tempo permitido aos ABM para executarse en cada paso\n"
+"(como unha fracción do intervalo ABM)"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+"O tempo en segundos que tarda entre eventos repetidos\n"
+"ao manter premida unha combinación de botóns do joystick."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+"O tempo en segundos que tarda entre colocacións repetidas de nodos cando se "
+"mantén presionado\n"
+"o botón de colocar obxectos."
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr "O tipo de joystick"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+"A distancia vertical sobre a que a calor cae 20 se é 'altitude_chill'\n"
+"activado. Tamén a distancia vertical na que a humidade cae 10 se\n"
+"'altitude_dry' está activado."
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Terceiro de 4 ruídos 2D que xuntos definen a altura de outeiros/montañas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+"Tempo en segundos para que a entidade de obxecto (obxectos tirados) viva.\n"
+"Axustándoo a -1 desactiva a función."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "Hora do día en que se inicia un novo mundo, en milihoras (0-23999)."
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr "Intervalo de envío de tempo"
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr "Velocidade do tempo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+"Tempo de espera para que o cliente elimine os datos do mapa non utilizados "
+"da memoria."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+"Para reducir a latencia, as transferencias en bloque son máis lentas cando "
+"un xogador está a construír algo.\n"
+"Isto determina canto tempo se ralentizan despois de colocar ou eliminar un "
+"nó."
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr "Tecla para alternar o modo cámara"
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr "Atraso da información sobre ferramentas"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Límite da pantalla táctil"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Límite da pantalla táctil"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Compensacións para o rendemento"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Ruído das árbores"
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr "Filtrado trilineal"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+"Verdadeiro = 256\n"
+"Falso = 128\n"
+"Pódese usar para facer o minimapa máis suave en ordenadores máis lentos."
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr "Mods seguros"
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "URL á lista de servidores que aparece na xanela Xogo en liña."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Submostraxe"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+"A submostraxe é semellante ao uso dunha resolución de pantalla inferior, "
+"pero aplícase\n"
+"só para o mundo, mantendo a GUI intacta.\n"
+"Debería dar un aumento máis significativo do rendemento a costa dunha imaxe "
+"menos detallada.\n"
+"Os valores máis altos dan como resultado unha imaxe menos detallada."
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr "Distancia de transferencia de xogador ilimitada"
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr "Eliminar datos do servidor non utilizados"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Límite Y superior dos calabozos."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Límite Y superior dos terreos flotantes."
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr "Activa as nubes 3D en lugar de nubes 2D (planas)."
+
+#: src/settings_translation_file.cpp
+msgid "Use a cloud animation for the main menu background."
+msgstr "Usa unha animación de nube para o fondo do menú principal."
+
+#: src/settings_translation_file.cpp
+msgid "Use anisotropic filtering when viewing at textures from an angle."
+msgstr "Usa o filtro anisótropo ao ver texturas desde un ángulo."
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr "Usa o filtro bilineal ao escalar texturas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Usa o mipmapping para escalar texturas. Pode aumentar lixeiramente o "
+"rendemento,\n"
+"sobre todo cando se usa un paquete de texturas de alta resolución.\n"
+"Non se admite a redución de escala correcta gamma."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+"Use o suavizado de varias mostras (MSAA) para suavizar os bordos do bloque.\n"
+"Este algoritmo suaviza a ventana 3D mentres mantén a imaxe nítida,\n"
+"pero non afecta o interior das texturas\n"
+"(nótase especialmente con texturas transparentes).\n"
+"Aparecen espazos visibles entre os nós cando os sombreadores están "
+"desactivados.\n"
+"Se se establece en 0, MSAA está desactivado.\n"
+"É necesario reiniciar logo de cambiar esta opción."
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr "Usa o filtro trilineal ao escalar texturas."
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr "VBO"
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr "Sincronizaión vertical"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr "Profundade dos vales"
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr "Recheo dos vales"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "Perfil dos vales"
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr "Inclinación dos vales"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr "Variación da profundidade do recheo do bioma."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variación da altura máxima da montaña (en nós)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variación do número de covas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+"Variación da escala vertical do terreo.\n"
+"Cando o ruído é < -0,55 o terreo é case plano."
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "Variación da profundidade dos nós da superficie do bioma."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+"Varía a rugosidade do terreo.\n"
+"Define o valor de \"persistencia\" para os ruídos \"chánin_base\" e "
+"\"chánin_alt\"."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Varía a pendiente dos acantilados."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Velocidade de escalada vertical, en nós por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr "Sincronización de pantalla vertical."
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr "Controlador de vídeo"
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr "Ver o factor de balance"
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr "Distancia de visión en nós."
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr "Ver a tecla de diminución do intervalo"
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr "Ver a tecla de aumento do intervalo"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Ver tecla de zoom"
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr "Campo de visión"
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "O joystick virtual activa o botón Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr "Volume"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Todos os sons.\n"
+"É necesario que o son do sistema estea activado."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+"Coordenada W da porción 3D xerada dun fractal 4D.\n"
+"Determina que parte 3D da forma 4D se xera.\n"
+"Altera a forma do fractal.\n"
+"Non ten efecto sobre os fractais 3D.\n"
+"Rango de aproximadamente -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Velocidade ao camiñar e voar, en nós por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr "Velocidade ao camiñar"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Velocidade ao camiñar, voar e escalar no modo rápido, en nós por segundo."
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr "Nivel da auga"
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr "Nivel da superficie da auga no mundo."
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr "Bloques ondulantes"
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr "Movemento das follas"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr "Ondas dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr "Altura das ondas dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr "Velocidade de movemento das ondas dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr "Movemento das ondas dos líquidos"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr "Movemento das plantas"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "Cor de ligazóns web"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+"Cando gui_scaling_filter ten valor verdadeiro, todas as imaxes da GUI deben "
+"ser\n"
+"filtradas no software, pero algunhas imaxes xéranse directamente\n"
+"ao hardware (por exemplo, renderizado en textura para nós do inventario)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+"Cando gui_scaling_filter_txr2img teña un valor verdadeiro, copia esas "
+"imaxes\n"
+"do hardware ao software para escalar. Cando sexa falso, retrocede\n"
+"ao método de escala antigo para controladores de vídeo que non o fan\n"
+"admite correctamente a descarga de texturas desde o hardware."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+"Cando se usan filtros bilineais/trilineais/anisótropos, texturas de baixa "
+"resolución\n"
+"poden ser borrosas, polo que amplíaos automaticamente co veciño máis "
+"próximo\n"
+"interpolación para preservar píxeles nítidos. Isto establece o tamaño mínimo "
+"de textura\n"
+"para as texturas mejoradas; valores máis altos parecen máis nítidos, pero "
+"requiren máis\n"
+"memoria. Recoméndase potencias de 2. Esta configuración só se aplica se\n"
+"O filtrado bilineal/trilineal/anisótropo está activado.\n"
+"Tamén se usa como tamaño de textura do nodo base para aliñados ao mundo\n"
+"autoescalado de texturas."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
+msgstr ""
+"Indica se os fondos das etiquetas de nome deberían mostrarse por defecto.\n"
+"Os mods aínda poden establecer un fondo."
+
+#: src/settings_translation_file.cpp
+msgid "Whether node texture animations should be desynchronized per mapblock."
+msgstr ""
+"Indica se as animacións de textura de nós deben desincronizarse por bloque "
+"de mapas."
+
+#: 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 ""
+"Indica se os xogadores son mostrados aos clientes sen límites.\n"
+"Se non, utiliza a configuración player_transfer_distance no seu lugar."
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr "Se permitir que os xogadores se danen e se maten entre si."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+"Indica se pedir aos clientes volverse conectar logo dun fallo (Lua).\n"
+"Establece isto como verdadeiro se o teu servidor está configurado para "
+"reiniciarse automaticamente."
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr "Indica se hai que poñar néboa ao final da zona visible."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+"Indica se hai que silenciar os sons. Podes activar o son en calquera "
+"momento, a non ser que\n"
+"esté desactivado (enable_sound=false).\n"
+"No xogo podes cambiar o estado de silencio coa tecla de silencio ou no\n"
+"menú de pausa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+"Debe mostrarse a información de depuración do cliente (premer F5 fai o "
+"mesmo)."
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Componente de largura do tamaño inicial da xanela. Ignórase en pantalla "
+"completa."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr "Largura das liñas do bloque de selección arredor dos nós."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Só sistemas Windows: Inicia Minetest coa xanela da liña de comandos en "
+"segundo plano.\n"
+"Contén a mesma información que o ficheiro debug.txt (nome por defecto)."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+"Directorio do mundo (todo almacénase aquí).\n"
+"Non é necesario se comeza desde o menú."
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Horario de inicio do mundo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"As texturas aliñadas ao mundo pódense escalar para abarcar varios nós. Non "
+"obstante,\n"
+"é posible que o servidor non envíe a escala que desexa, especialmente se "
+"usa\n"
+"un paquete de texturas especialmente deseñado; con esta opción, o cliente "
+"tenta\n"
+"determinar a escala automaticamente baseándose no tamaño da textura.\n"
+"Consulte tamén texture_min_size.\n"
+"Aviso: esta opción é EXPERIMENTAL!"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "Modo de texturas aliñadas ao mundo"
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr "Y de terreo chán."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"Y da densidade do gradiente nivel cero das montañas. Úsase para mover "
+"montañas verticalmente."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Límite Y máximo das covas grandes."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Distancia Y sobre a cal as cavernas expándense até o seu tamaño total."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+"Distancia Y sobre a cal os terreos flotantes estrechanse desde a densidade "
+"total ata nada.\n"
+"A diminución comeza a esta distancia do límite Y.\n"
+"Para unha capa sólida de terreo flotante, isto controla a altura dos "
+"outeiros/montañas.\n"
+"Debe ser menor ou igual á metade da distancia entre os límites Y."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Nivel Y da superficie media do terreo."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Nivel Y do límite superior da caverna."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Nivel Y de terreo que crea acantilados."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Nivel Y do terreo inferior e do solo oceánico."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Nivel Y do fondo do mar."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "Tempo límite de descarga do ficheiro por cURL"
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "Tempo limite de cURL"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "Límite paralelo de cURL"
+
+#~ msgid "Basic"
+#~ msgstr "Básico"
+
+#~ msgid "Connect"
+#~ msgstr "Conectar"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Controla a velocidade de afundimento en líquidos."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Eliminar fav."
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Descarga un xogo como Minetest Game en minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Descarga un en minetest.net"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Activar confirmación de rexistro"
+
+#~ msgid "Enter "
+#~ msgstr "Introducir: "
+
+#~ msgid "Filtering"
+#~ msgstr "Filtrado"
+
+#~ msgid "Game"
+#~ msgstr "Xogo"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "Factor de escala HUD"
+
+#~ msgid "In-Game"
+#~ msgstr "No xogo"
+
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentación"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr "Combinacións de teclas"
+
+#~ msgid "Menus"
+#~ msgstr "Menús"
+
+#~ msgid "Player name"
+#~ msgstr "Nome do xogador"
+
+#~ msgid "Profiling"
+#~ msgstr "Perfilaxe"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Servidor / Un xogador"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Estás a piques de unirte ao servidor \"%s\" por primeira vez.\n"
+#~ "Se continúas, crearase unha nova conta neste servidor usando as túas "
+#~ "credenciais.\n"
+#~ "Reescribe o teu contrasinal e fai clic en \"Rexistrarse e unirse\" para "
+#~ "confirmar a creación da conta ou fai clic en \"Cancelar\" para deter o "
+#~ "proceso."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Morreches"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/he/minetest.po b/po/he/minetest.po
index 6e238bbeb..f396cc0ba 100644
--- a/po/he/minetest.po
+++ b/po/he/minetest.po
@@ -1,51 +1,148 @@
-# Hebrew translations for minetest package.
-# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the minetest package.
-# Automatically generated, 2015.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Hebrew (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-05-26 21:01+0000\n"
-"Last-Translator: yuval hreman <huckvrni@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2021-04-17 07:27+0000\n"
+"Last-Translator: Omer I.S. <omeritzicschwartz@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/minetest/minetest/"
"he/>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.7-dev\n"
+"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
+"n % 10 == 0) ? 2 : 3));\n"
+"X-Generator: Weblate 4.6-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "פקודות צ'אט"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "יציאה לתפריט"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "פקודה מקומית"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "שחקן יחיד"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "שחקן יחיד"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "הזדמן"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "מתת"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "פקודה מקומית"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "פקודה מקומית"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "אישור"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "אירעה שגיאה בקוד לואה (Lua), כנראה באחד המודים:"
+msgid "An error occurred in a Lua script:"
+msgstr "אירעה שגיאה בתסריט Lua:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "התרחשה שגיאה:"
+msgid "An error occurred:"
+msgstr "אירעה שגיאה:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "תפריט ראשי"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "אישור"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
-msgstr "התחבר מחדש"
+msgstr "התחברות מחדש"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "השרת מבקש שתתחבר מחדש:"
+msgstr "השרת מבקש התחברות מחדש:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "טוען..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "בחירת שיפורים"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -53,15 +150,15 @@ msgstr "שגיאה בגרסאות הפרוטוקול. "
#: builtin/mainmenu/common.lua
msgid "Server enforces protocol version $1. "
-msgstr "השרת יפעיל את פרוטוקול גרסה $1. בכוח "
+msgstr "השרת מחייב שימוש בגרסת פרוטוקול $1. "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
msgstr "השרת תומך בפרוטוקולים בין גרסה $1 וגרסה $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
-msgstr "נסה לצאת והכנס מחדש לרשימת השרתים ובדוק את חיבור האינטרנט שלך."
+msgid "Visit website"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -71,54 +168,89 @@ msgstr "אנו תומכים רק בגירסה 1$ של הפרוטוקול."
msgid "We support protocol versions between version $1 and $2."
msgstr "אנו תומכים בגרסאות בין 1$ ל-2$ של הפרוטוקול."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "ביטול"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "תלוי ב:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "תלויות:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr ""
+msgid "Disable all"
+msgstr "להשבית הכול"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr ""
+msgid "Disable modpack"
+msgstr "השבתת ערכת השיפורים"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "אפשר הכל"
+msgstr "להפעיל הכול"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "הפעלת ערכת השיפורים"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"טעינת המוד \"1$\" נכשלה מכיוון שהוא מכיל תווים לא חוקיים. רק התווים [a-"
+"הפעלת השיפור \"1$\" נכשלה מכיוון שהוא מכיל תווים לא חוקיים. רק התווים [a-"
"z0-9_] מותרים."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "הסתר משחק"
+msgid "Find More Mods"
+msgstr "חיפוש שיפורים נוספים"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr ""
+msgid "Mod:"
+msgstr "שיפור:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr "מוד:"
+msgid "No (optional) dependencies"
+msgstr "אין תלויות (רשות)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "לא סופק תיאור משחק."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "ללא תלויות קשות"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "לא סופק תיאור לערכת השיפורים."
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No optional dependencies"
+msgstr "אין תלויות רשות"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "תלויות אופציונאליות:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
-msgstr "שמור"
+msgstr "שמירה"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
@@ -128,471 +260,908 @@ msgstr "עולם:"
msgid "enabled"
msgstr "מופעל"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" כבר קיים. האם תרצה להחליף אותו?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "התלויות $1 ו $2 יותקנו."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 ליד $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 מוריד,\n"
+"$2 ממתין"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 כעת בהורדה..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "לא ניתן למצוא תלות חובה של $1."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 יותקן ו $2 תלויות שידולגו."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "כל החבילות"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "כבר מותקן"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "חזרה לתפריט הראשי"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "משחק בסיסי:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "בסיס נתוני התוכן לא זמין כאשר מיינטסט מקומפל בלי cUrl"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "כעת בהורדה..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "הורדת $1 נכשלה"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "משחקים"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "התקנה"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "התקנת $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "מתקין תלויות חסרות"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "התקנה: סוג קובץ לא נתמך \"$1\" או שהארכיב פגום"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "שיפורים"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "לא ניתן להביא את החבילות"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "אין תוצאות"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "אין עדכונים"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "לא נמצא"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "דרוס"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "אנא בדוק שמשחק הבסיס תקין."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "נכנס לתור"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "חבילות טקסטורה (מרקם)"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "הסרה"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "עדכון"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "עדכן הכל [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "צפה במידע נוסף בדפדפן האינטרנט"
+
#: 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"
+msgstr "שטח נוסף"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "קור בגבהים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "יובש בגבהים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "מיזוג ביומים (אקולוגי)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "ביומים (צמחיה אקולוגית)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "מערות (טבעיות בחלקן מוארות)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "מערות (ללא אור שמש)"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
-msgstr "ליצור"
+msgstr "יצירה"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "הורד מפעיל משחק, למשל \"minetest_game\", מהאתר: minetest.net"
+msgid "Decorations"
+msgstr "קישוטים"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "הורד אחד מ-\"minetest.net\""
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "אזהרה: מצב בדיקת הפיתוח נועד למפתחים."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "משחק"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "מבוכים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "עולם שטוח"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "גושי אדמה צפים בשמים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "אדמה צפה (נסיוני)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "צור שטח לא פרקטלי: אוקיינוסים ותת קרקעי"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "גבעות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "נהרות לחים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "הגברת הלחות בסביבת נהרות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "התקנת $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "אגמים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+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 "אפשרויות מנוע מפות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "אפשרויות ספציפיות למנוע מפות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "הרים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "זרימת בוץ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "רשת מערות ומחילות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "לא נבחר משחק"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "הפחתה בחום בגובה רב"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "לא נבחר שם לעולם או שאף מפעיל משחק לא נבחר"
+msgid "Reduces humidity with altitude"
+msgstr "הפחתת הלחות בגובה רב"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "נהרות"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "נהרות בגובה פני הים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr ""
+msgstr "זרע"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "מעבר חלק בין אזורי אקלים שונים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr "מבנים המופיעים בשטח (אין השפעה על עצים ועשבי ג'ונגל שנוצרו על ידי v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "מבנים המופיעים בשטח, בדרך כלל עצים וצמחים"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "ממוזג, מדברי"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "ממוזג, מדברי, ג'ונגל"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "ממוזג, מדברי, ג'ונגל, טונדרה, טייגה"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "סחף פני השטח"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "עצים ודשא של ג׳ונגל"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "אזהרה: מצב המפתחים נועד למפתחים!."
+msgid "Vary river depth"
+msgstr "עומק נהרות משתנה"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "מערות גדולות מאוד עמוק מתחת לאדמה"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "שם העולם"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "אין לך אף מפעיל משחק מותקן."
+msgid "You have no games installed."
+msgstr "אין לך משחקים מותקנים."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "האם ברצונך למחוק את \"$1\"?"
+msgstr "האם אכן ברצונך למחוק את \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
-msgstr "מחק"
+msgstr "מחיקה"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: מחיקת \"$1\" נכשלה"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: נתיב לא חוקי \"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "למחוק עולם \"$1\"?"
+msgstr "למחוק את העולם \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "אשר סיסמה"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "שם"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "סיסמה"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "סיסמאות לא תואמות!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "הרשם והצטרף"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
-msgstr "קבל"
+msgstr "הסכמה"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr ""
+msgstr "שינוי שם ערכת השיפורים:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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.conf שלה שיעקוף כל שינוי שם "
+"מכאן."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr ""
+msgstr "(לא נוסף תיאור להגדרה)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "רעש דו-מיימדי"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "חזור לדף ההגדרות >"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "דפדף"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "תוכן"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "תוכן"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr ""
+msgstr "מושבת"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "עריכה"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
-msgstr ""
+msgstr "מופעל"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
+msgid "Lacunarity"
+msgstr "מרווחיות"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "אוקטבות"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "היסט"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "משחקים"
+#, fuzzy
+msgid "Persistence"
+msgstr "התמדה"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "מודים"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "הכנס מספר שלם חוקי."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+msgid "Please enter a valid number."
+msgstr "הכנס מספר חוקי."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Restore Default"
+msgstr "שחזור לברירת המחדל"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "קנה מידה"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "חיפוש"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr ""
+msgid "Select directory"
+msgstr "נא לבחור תיקיה"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr ""
+msgid "Select file"
+msgstr "נא לבחור קובץ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "הצגת שמות טכניים"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr ""
+msgid "The value must be at least $1."
+msgstr "הערך חייב להיות לפחות $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr ""
+msgid "The value must not be larger than $1."
+msgstr "הערך לא יכול להיות גדול מ־$1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr ""
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr ""
+msgid "X spread"
+msgstr "מרווחיות X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr ""
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr ""
+msgid "Y spread"
+msgstr "מרווחיות Y"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "מרווחיות Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr ""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "ערך מוחלט"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-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 "ברירת מחדל"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "החלקת ערכים"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (מופעל)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 שיפורים"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "החקן"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "התקנת $1 אל $2 נכשלה"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "התקנת שיפור: לא ניתן למצוא את שם השיפור האמיתי עבור: $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "דירוג"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr "התקנת שיפור: לא ניתן למצוא שם תיקייה מתאים לערכת השיפורים $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "חפש"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "אין אפשרות למצוא שיפור או ערכת שיפורים במצב תקין"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "שם קצר:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "לא ניתן להתקין $1 כחבילת טקסטורות"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "הותקן בהצלחה:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "לא ניתן להתקין משחק בתור $1"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "אין אפשרות להתקין שיפור בשם $1"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "התקן מחדש"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "אין אפשרות להתקין ערכת שיפורים בשם $1"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Active Contributors"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+"נא לנסות לצאת ולהיכנס מחדש לרשימת השרתים ולבדוק את החיבור שלך לאינטרנט."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Core Developers"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "קרדיטים"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "תורמים פעילים"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Active renderer:"
+msgstr "טווח שליחת אובייקט פעיל"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Core Developers"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "מפתחים עיקריים"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "נא לבחור תיקיית משתמש"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
+#: builtin/mainmenu/tab_about.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_mods.lua
-msgid "No mod description available"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "תורמים קודמים"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "מפתחי ליבה קודמים"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "עיון בתוכן מקוון"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "תוכן"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "כתובת / פורט"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "השבתת חבילת המרקם"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "קלינט"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "מידע:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "התחבר"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "חבילות מותקנות:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "אין תלויות."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "אין תיאור חבילה זמין"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "שנה שם"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "הסרת החבילה"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "שם/סיסמה"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "שימוש בחבילת המרקם"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP אפשר"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "הכרז על השרת"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr ""
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "קביעת תצורה"
+msgstr "הצמד כתובת"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr "משחק יצירתי"
+msgstr "מצב יצירתי"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "אפשר נזק"
+msgstr "לאפשר חבלה"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "אירוח משחק"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "אכסון שרת"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "שם/סיסמה"
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "התקנת משחק מContentDB"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "חדש"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "אין עולם נוצר או נבחר!"
+msgstr "אין עולם שנוצר או נבחר!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "להתחיל לשחק"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "פורט"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "ציבורי"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "בחירת שיפורים"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
-msgstr "בחר עולם:"
-
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "שרת"
+msgstr "נא לבחור עולם:"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
-msgstr ""
+msgstr "פורט לשרת"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
-msgstr "התחל משחק"
+msgstr "התחלת המשחק"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- כתובת: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "נקה"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "מצב יצירתי"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "חבלה"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "מועדף"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "הצטרפות למשחק"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "פינג"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "הכרז על השרת"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "מחק מועדף"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "פורט לשרת"
#: builtin/mainmenu/tab_settings.lua
-msgid "2x"
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+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 "Advanced Settings"
-msgstr "הגדרות מתקדמות"
+msgid "All Settings"
+msgstr "כל ההגדרות"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "החלקת קצוות (AA):"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr ""
+msgid "Autosave Screen Size"
+msgstr "שמור אוטומטית גודל מסך"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr ""
+msgstr "פילטר בילינארי"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "שנה מקשים"
#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
+msgid "Connected Glass"
+msgstr "זכוכיות מחוברות"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+msgid "Dynamic shadows:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Connected Glass"
-msgstr "התחבר"
+msgid "Fancy Leaves"
+msgstr "עלים מגניבים"
#: builtin/mainmenu/tab_settings.lua
-msgid "Fancy Leaves"
+msgid "High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
+msgid "Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
+msgid "Medium"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "לא"
+msgid "Mipmap"
+msgstr "מיפמאפ"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+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 ""
-
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr ""
+msgstr "הדגשת מסגרת קוביות"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
+msgid "None"
+msgstr "ללא"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr ""
+msgstr "עלים אטומים"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
+msgstr "מים אטומים לאור"
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "חלקיקים"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "שרת"
+msgid "Screen:"
+msgstr "מסך:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -600,186 +1169,298 @@ msgstr "הגדרות"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr ""
+msgstr "שיידרים"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "שיידרים (נסיוני)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+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 ""
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
+msgstr "טקסטורות:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr ""
+msgstr "מיפוי גוונים"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr ""
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "סף נגיעה: (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr ""
+msgstr "פילטר תלת לינארי"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
+msgid "Very High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
+msgid "Very Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr ""
+msgid "Waving Leaves"
+msgstr "עלים מתנופפים"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "כן"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "שחק"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "שחקן יחיד"
+msgid "Waving Liquids"
+msgstr "נוזלים עם גלים"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "צמחים מתנוענעים"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "חבילות מרקם"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "בעיה בחיבור (נגמר זמן ההמתנה?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr ""
+msgstr "זמן המתנה לחיבור אזל."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr ""
+msgstr "הסתיים!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr ""
+msgstr "מאתחל קוביות"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr ""
+msgstr "מאתחל קוביות..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr ""
+msgstr "טוען טקסטורות..."
-#: src/client.cpp
+#: 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 ""
+#, fuzzy
+msgid "Could not find or load game: "
+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 "Provided world path doesn't exist: "
-msgstr ""
+msgid "Please choose a name!"
+msgstr "נא לבחור שם!"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr ""
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "הסיסמה שניתנה לא פתחה: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "נתיב העולם שניתן לא קיים: "
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
+"\n"
+"בדוק את debug.txt לפרטים נוספים."
-#: src/game.cpp
-msgid "Change Keys"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- כתובת: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- מצב: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- פורט: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- ציבורי: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- קרב: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- שם שרת: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "אירעה שגיאה:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
msgstr ""
-#: src/game.cpp
-msgid "Change Password"
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "התקדמות אוטומטית קדימה מבוטלת"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "תנועה קדימה אוטומטית מופעל"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
msgstr ""
-#: src/game.cpp
-msgid "Connecting to server..."
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
msgstr ""
-#: src/game.cpp
-msgid "Continue"
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
msgstr ""
-#: src/game.cpp
-msgid "Creating client..."
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
msgstr ""
-#: src/game.cpp
-msgid "Creating server..."
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "עדכון מצלמה מבוטל"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "עדכון מצלמה מופעל"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
msgstr ""
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "שנה סיסמה"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "מצב קולנועי מבוטל"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "מצב קולנועי מופעל"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "קלינט"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "סקריפטים בצד לקוח מבוטלים"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "מתחבר לשרת..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "המשך"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
+"- %s: chat\n"
+msgstr ""
+"פקדים:\n"
+"- %s: כדי לזוז קדימה\n"
+"- %s: כדי לזוז אחורה\n"
+"- %s: כדי לזוז שמאלה\n"
+"- %s: כדי לזוז ימינה\n"
+"- %s: כדי לקפוץ או לטפס למעלה\n"
+"- %s: כדי לחפור או לחבוט\n"
+"- %s: כדי להניח או להשתמש\n"
+"- %s: כדי להתכופף או לטפס למטה\n"
+"- %s: כדי לזרוק פריט\n"
+"- %s: כדי לפתוח את תיק החפצים\n"
+"- עכבר: כדי להסתובב או להסתכל\n"
+"- גלגלת העכבר: כדי לבחור פריט\n"
+"- %s: כדי לפתוח את הצ׳אט\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "יוצר לקוח..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "יוצר שרת..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "מידע דיבאג וגרף פרופיילר מוסתר"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "מידע דיבאג מוצג"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "מידע דיבאג, גרף פרופיילר, ומצב שלד מוסתר"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -794,497 +1475,875 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-
-#: src/game.cpp
+"פקדי ברירת מחדל:\n"
+"לא נראה תפריט:\n"
+"- לחיצה בודדת: הפעלת כפתור\n"
+"- הקשה כפולה: מקום / שימוש\n"
+"- החלק אצבע: הביט סביב\n"
+"תפריט / מלאי גלוי:\n"
+"- לחיצה כפולה (בחוץ):\n"
+"--> סגור\n"
+"- מחסנית מגע, חריץ מגע:\n"
+"--> הזז מחסנית\n"
+"- גע וגרור, הקש על האצבע השנייה\n"
+"--> מקם פריט יחיד לחריץ\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "ביטול טווח ראיה בלתי מוגבל"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "הפעלת טווח ראיה בלתי מוגבל"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "יוצר לקוח..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr ""
+msgstr "יציאה לתפריט"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr ""
+msgstr "יציאה למערכת ההפעלה"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "מצב המהירות מושבת"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "מצב המהירות מופעל"
-#: src/game.cpp
-msgid "Media..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "מצב המהירות מופעל (לתשומת ליבך: אין הרשאת \"fast\")"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "מצב התעופה מושבת"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "מצב התעופה מופעל"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "מצב התעופה מופעל (לתשומת ליבך: אין הרשאת \"fly\")"
-#: src/game.cpp
-msgid "Respawn"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "ערפל מבוטל"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "ערפל מופעל"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr ""
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "מידע על המשחק:"
-#: src/game.cpp
-msgid "You died."
-msgstr ""
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "המשחק הושהה"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr ""
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "שרת אירוח"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr ""
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "הגדרות פריט..."
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr ""
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "‏KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr ""
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "מדיה..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr ""
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "מגהבייט/שניה"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr ""
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "מיפמאפ כרגע מבוטל ע\"י המשחק או המוד"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr ""
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "שחקן יחיד"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "מעבר דרך קירות מבוטל"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "מעבר דרך קירות מופעל"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "מעבר דרך קירות מופעל (שים לב, אין הרשאת 'noclip')"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr ""
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "הגדרות קוביה..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr ""
+#: src/client/game.cpp
+msgid "Off"
+msgstr "מכובה"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr ""
+#: src/client/game.cpp
+msgid "On"
+msgstr "דולק"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "תנועה לכיוון מבט מכובה"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "תנועה לכיוון מבט מופעל"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr ""
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "גרף פרופיילר מוצג"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr ""
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "שרת מרוחק"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr ""
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "מפענח כתובת..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr ""
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "מכבה..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr ""
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "שחקן יחיד"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "ווליום שמע"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "שמע מושתק"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "מערכת שמע לא מופעלת"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "מערכת שמע לא נתמכת בבניה הנוכחית"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "מערכת שמע מופעלת"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "טווח ראיה השתנה ל %d"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "טווח ראיה הגיע למקסימום: %d"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "טווח ראיה הגיע למינימום: %d"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "עוצמת שמע שונתה ל %d%%"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr ""
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "מסגרת שלדית מוצגת"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr ""
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "המבט מקרוב מושבת על ידי המשחק או השיפור"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr ""
+#: src/client/game.cpp
+msgid "ok"
+msgstr "אוקיי"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "צ'אט מוסתר"
-#: src/keycode.cpp
-msgid "Back"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "צ'אט מוצג"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "מידע-על-מסך מוסתר"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "מידע-על-מסך מוצג"
-#: src/keycode.cpp
-msgid "Comma"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "פרופיילר מוסתר"
-#: src/keycode.cpp
-msgid "Control"
-msgstr ""
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "פרופיילר מוצג (עמוד %d מתוך %d)"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "אפליקציות"
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
-#: src/keycode.cpp
-msgid "Down"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "End"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "קונטרול"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "למטה"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "End"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "מחק EOF"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Final"
-msgstr ""
+msgstr "בצע"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr ""
+msgstr "עזרה"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
-msgstr ""
+msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "קבל IME"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "המרת IME"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "יציאת IME"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "שינוי מצב IME"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME ללא המרה"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "שמאלה"
+
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr ""
+msgstr "הלחצן השמאלי"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
-msgstr ""
+msgstr "מקש Control השמאלי"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr ""
+msgstr "תפריט שמאלי"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
-msgstr ""
+msgstr "מקש Shift השמאלי"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr ""
+msgstr "מקש Windows השמאלי"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
-msgstr ""
+msgstr "תפריט"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr ""
+msgstr "כפתור אמצעי"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
-msgstr ""
+msgstr "נעילה נומרית"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr ""
+msgstr "מקלדת נומרית *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr ""
+msgstr "מקלדת נומרית +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr ""
+msgstr "מקלדת נומרית -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "מקלדת נומרית ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr ""
+msgstr "מקלדת נומרית /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr ""
+msgstr "מקלדת נומרית 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr ""
+msgstr "מקלדת נומרית 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr ""
+msgstr "מקלדת נומרית 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr ""
+msgstr "מקלדת נומרית 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr ""
+msgstr "מקלדת נומרית 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr ""
+msgstr "מקלדת נומרית 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr ""
+msgstr "מקלדת נומרית 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr ""
+msgstr "מקלדת נומרית 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr ""
+msgstr "מקלדת נומרית 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr ""
+msgstr "מקלדת נומרית 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
-msgstr ""
+msgstr "ניקוי OME"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page down"
-#: src/keycode.cpp
-msgid "Pause"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page up"
-#: src/keycode.cpp
-msgid "Period"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Pause"
-#: src/keycode.cpp
-msgid "Plus"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "שחק"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Prior"
-msgstr ""
+msgstr "PrintScreen"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
-msgstr ""
+msgstr "Enter"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "ימינה"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr ""
+msgstr "הלחצן הימני"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
-msgstr ""
+msgstr "מקש Control הימני"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
-msgstr ""
+msgstr "תפריט ימני"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
-msgstr ""
+msgstr "מקש Shift הימני"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr ""
+msgstr "מקש Windows הימני"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
-msgstr ""
+msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr ""
+msgstr "Select"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
-msgstr ""
+msgstr "שינה"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
-msgstr ""
+msgstr "צילום רגעי"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
-msgstr ""
+msgstr "רווח"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
-msgstr ""
+msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
-msgstr ""
+msgstr "למעלה"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
-msgstr ""
+msgstr "X כפתור 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
+msgstr "X כפתור 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "זום"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "מפה קטנה מוסתרת"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "מפה קטנה במצב מכ״ם, יחס תצוגה x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "מפה קטנה במצב שטח, זום x %d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "מפה קטנה במצב טקסטורה"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "הורדת $1 נכשלה"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "להמשיך"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "\"מיוחד\" = טפס למטה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "קדימה אוטומטי"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "קפיצה אוטומטית"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "אחורה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "שנה מצלמה"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "צ'אט"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "פקודה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "קונסולה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "הקטן טווח"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "הנמך ווליום"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "לחיצה כפולה על \"קפיצה\" כדי לכבות או להדליק את מצב התעופה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "הפל"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "קדימה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "הגדל טווח"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "הגבר ווליום"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "תיק חפצים"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "קפיצה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "מקש כבר בשימוש"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "פקודה מקומית"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "השתק"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "הפריט הבא"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "הפריט הקודם"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "בחר טווח"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "צילום מסך"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "התכופף"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "מתג מידע על מסך"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "מתג צא'ט לוג"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "מתג מצב מהיר"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "מתג תעופה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "מתג ערפל"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "מתג מפה קטנה"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "מתג מעבר דרך קירות"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "מתג תנועה לכיוון מבט"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "לחץ מקש"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "שנה"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "סיסמה חדשה"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "סיסמה ישנה"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "סיסמאות לא תואמות!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "יציאה"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "מושתק"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "עוצמת שמע: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "he"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "נא לבחור שם!"
+
+#: src/settings_translation_file.cpp
+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
+#, fuzzy
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) השתמש בג'ויסטיק וירטואלי כדי להפעיל את כפתור \"aux\".\n"
+"אם הוא מופעל, הג'ויסטיק הווירטואלי ילחץ גם על כפתור \"aux\" כשהוא מחוץ למעגל "
+"הראשי."
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"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 ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"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 "רעש דו-ממדי השולט על צורתם / גודל ההרים המחורצים."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "רעש דו-ממדי השולט על צורתם / גודל הגבעות המתונות."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "רעש דו-ממדי השולט על צורתם / גודל ההרים הנישאים."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "רעש דו-ממדי השולט על תדירות/ גודל רכסי ההרים."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "רעש דו-ממדי השולט על תדירות/גודל הגבעות המתונות."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "רעש דו-ממדי השולט על תדירות/גודל רכסי ההרים."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "רעש דו-ממדי שמאתר את עמקי הנהרות ותעלותיהם."
#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr ""
+msgstr "עננים תלת מימדיים"
#: src/settings_translation_file.cpp
msgid "3D mode"
+msgstr "מצב תלת־ממד"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "חוזק פרלקסה במצב תלת ממדי"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+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 ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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 "מבנה מגדיר רעש תלת ממדי של קירות קניון הנהר."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "רעש תלת ממדי המגדיר שטח."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr "רעש תלת ממדי להרים תלויים, צוקים וכו'בדרך כלל וריאציות קטנות."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "רעש תלת ממדי הקובע את מספר הצינוקים בנתח מפה."
#: src/settings_translation_file.cpp
msgid ""
@@ -1295,7 +2354,23 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- 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 "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1303,42 +2378,52 @@ 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 "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "אינטרוול ABM"
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
-msgstr ""
+msgid "ABM time budget"
+msgstr "הקצאת זמן ABM"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "מגבלה מוחלטת של בלוקים בתור שיופיעו"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Acceleration in air"
+msgstr "תאוצה באויר"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "האצת כוח הכבידה, בקוביות לשנייה בריבוע."
#: src/settings_translation_file.cpp
msgid "Active Block Modifiers"
-msgstr ""
+msgstr "משניי בלוק פעיל"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+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 ""
@@ -1346,199 +2431,427 @@ 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 "הוסף חלקיקים כשחופרים בקוביה."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
+msgstr "התאם את תצורת dpi למסך שלך (לא X11 / Android בלבד) למשל. למסכי 4k."
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
msgstr ""
#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"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
+#, fuzzy
+msgid "Admin name"
+msgstr "הוסף שם פריט"
#: src/settings_translation_file.cpp
msgid "Advanced"
-msgstr ""
+msgstr "מתקדם"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"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 ""
+#, fuzzy
+msgid "Always fly fast"
+msgstr "תמיד לעוף ומהר"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "גמא חסימה סביבתית"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr ""
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "כמות ההודעות ששחקן עשוי לשלוח לכל 10 שניות."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+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.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
+msgid "Announce to this serverlist."
+msgstr "הכרז לרשימת השרתים."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "הוסף שם פריט"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "הוסף את שם הפריט לטיפ הכלים."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "רעש עצי תפוחים"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "אינרציה בזרוע"
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+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 "שאל האם להתחבר מחדש לאחר קריסה"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"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 "Automaticaly report to the serverlist."
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Automatic forward key"
+msgstr "מקש התקדמות אוטומטית"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "קפיצה אוטומטית של מכשולים בקוביה יחידה."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "דווח אוטומטית לרשימת השרתים."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "שמור אוטומטית גודל מסך"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "מצב סקאלה אוטומטית (Autoscale)"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "מקש הקפיצה"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr ""
+msgstr "מקש התזוזה אחורה"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr ""
+msgid "Base ground level"
+msgstr "מפלס בסיס האדמה"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr ""
+msgid "Base terrain height."
+msgstr "גובה השטח."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr ""
+msgid "Basic privileges"
+msgstr "הרשאות בסיסיות"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "רעש חופים"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+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
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "פרמטרי רעש טמפרטורה ולחות של Biome API"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "רעש Biome"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "אופטימיזצית שליחת בלוק"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Bobbing"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "נתיב גופן עבה/מוטה"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "נתיב גופן עם מרווח אחיד עבה/מוטה"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "נתיב גופן עבה"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+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
+#, fuzzy
+msgid "Camera"
+msgstr "שנה מצלמה"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
+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"
-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 "רעש מערות"
#: 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 "Caves and tunnels form at the intersection of the two noises"
-msgstr ""
+msgid "Cave1 noise"
+msgstr "רעש מערה1"
#: src/settings_translation_file.cpp
-msgid "Chat key"
-msgstr ""
+msgid "Cave2 noise"
+msgstr "רעש מערה2"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr ""
+msgid "Cavern limit"
+msgstr "גבול מנהרות"
#: src/settings_translation_file.cpp
-msgid "Chatcommands"
-msgstr ""
+msgid "Cavern noise"
+msgstr "רעש מנהרות"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "מחדד מערות"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "סף מערות"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "גבול עליון מערות"
#: src/settings_translation_file.cpp
msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+"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
+msgid "Chat command time message threshold"
+msgstr "סף בעיטה להודעות צ'אט"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "פקודות צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "גודל גופן צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "מקש צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "רמת לוג צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "הגבלת מספר הודעות צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "פורמט הודעות צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "סף בעיטה להודעות צ'אט"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "אורך הודעת צ'אט מקסימלי"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "מתג הפעלת צ'אט"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+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 "טקסטורות נקיות ושקופות"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "לקוח"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr ""
+msgstr "שרת ולקוח"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
+#, fuzzy
+msgid "Client modding"
+msgstr "קלינט"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client side modding restrictions"
+msgstr "קלינט"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cloud height"
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "קלינט"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1562,6 +2875,21 @@ msgid "Colored fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
@@ -1578,6 +2906,22 @@ msgid "Command key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr ""
@@ -1598,7 +2942,23 @@ msgid "Console color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Console key"
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1606,7 +2966,9 @@ msgid "Continuous forward"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1616,14 +2978,14 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1635,7 +2997,10 @@ msgid "Controls steepness/height of hills."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1643,51 +3008,55 @@ msgid "Crash message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+msgid "Creative"
+msgstr "יצירתי"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha"
+msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color"
+msgid "DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
+msgid "Damage"
+msgstr "חבלה"
#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid "Debug info toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "DPI"
+msgid "Debug log file size threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Damage"
+msgid "Debug log level"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug info toggle key"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug log level"
+msgid "Dec. volume key"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1721,15 +3090,50 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+msgid "Default stack size"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1737,6 +3141,24 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Delay in sending blocks after building"
msgstr ""
@@ -1749,21 +3171,27 @@ msgid "Deprecated Lua API handling"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1771,30 +3199,36 @@ msgid "Desynchronize block animation"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "קישוטים"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "מקש התזוזה ימינה"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Digging particles"
+msgstr "חלקיקים"
#: src/settings_translation_file.cpp
msgid "Disable anticheat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1803,7 +3237,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr ""
+msgstr "הקשה כפולה על \"קפיצה\" לתעופה"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
@@ -1814,17 +3248,65 @@ msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "אפשר בכל"
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "הפעלת המצב היצירתי עבור כל השחקנים"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1832,7 +3314,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr ""
+msgstr "לאפשר חבלה ומוות של השחקנים."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
@@ -1845,6 +3327,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1863,29 +3349,37 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1894,56 +3388,62 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
+msgid "Engine profiling data print interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+msgid "Entity methods"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
+msgid "Fallback font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1964,7 +3464,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
@@ -1973,27 +3473,22 @@ msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2003,13 +3498,22 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "החלקת קצוות (AA):"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2017,6 +3521,38 @@ msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2029,11 +3565,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2045,15 +3593,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2061,11 +3637,51 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
+msgstr "מקש התזוזה קדימה"
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2081,7 +3697,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2089,12 +3709,8 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "מצב מסך מלא."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
@@ -2109,15 +3725,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "משחקים"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2128,10 +3745,19 @@ msgstr ""
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2139,23 +3765,48 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "HTTP Mods"
+msgid "HTTP mods"
msgstr "מודים"
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "מידע-על-מסך מוצג"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2169,15 +3820,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "רכיב רוחב של גודל החלון הראשוני."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Hilliness2 noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2185,36 +3870,205 @@ msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2225,12 +4079,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2238,8 +4101,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2259,7 +4129,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2270,15 +4148,32 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2290,13 +4185,25 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2320,15 +4227,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2348,13 +4251,31 @@ msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2362,47 +4283,75 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Jump key"
+msgid "Julia w"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Jumping speed"
+msgid "Julia x"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr "מקש הקפיצה"
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr "מהירות הקפיצה"
+
+#: src/settings_translation_file.cpp
msgid ""
"Key for decreasing the viewing range.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
@@ -2411,6 +4360,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2425,6 +4388,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2440,6 +4410,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2467,7 +4438,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2481,6 +4452,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2495,623 +4473,745 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Left key"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu script"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
+msgid "Language"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Large cave depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
+msgid "Large chat console key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+msgid "Left key"
+msgstr "מקש התזוזה שמאלה"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "החלקת תאורה"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Loading Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
+msgid "Main menu script"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
+msgid "Mapgen Carpathian"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Flat"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal specific flags"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V5"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V6"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V7"
+msgstr "מנוע מפות"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
+msgid "Mapgen Valleys"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
+msgid "Mapgen Valleys specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
+msgid "Mapgen debug"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3139,7 +5239,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3151,11 +5255,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+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 ""
#: src/settings_translation_file.cpp
@@ -3165,13 +5282,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3192,7 +5316,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3214,19 +5342,29 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Menus"
+msgid "Maximum users"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3246,6 +5384,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3258,23 +5400,39 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Mipmapping"
+msgstr "מיפמאפינג"
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Security"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3286,6 +5444,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3294,21 +5472,29 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3324,7 +5510,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3334,6 +5520,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3346,6 +5536,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "הבלטת קוביות"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3354,91 +5549,119 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Pitch move key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3448,16 +5671,17 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "סינון בילינארי"
#: src/settings_translation_file.cpp
msgid ""
@@ -3466,13 +5690,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3488,7 +5718,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3499,7 +5741,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3511,6 +5753,14 @@ msgid "Range select key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr ""
@@ -3519,6 +5769,12 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
@@ -3527,27 +5783,61 @@ msgid "Report path"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Right key"
+msgstr "מקש התזוזה ימינה"
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3555,20 +5845,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3576,15 +5886,16 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "מסך:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
+msgid "Screen height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screenshot"
+msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3607,11 +5918,24 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "צילום מסך"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3627,8 +5951,42 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "שרת"
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "אכסון שרת"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "שרת / שחקן יחיד"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "פורט לשרת"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3651,10 +6009,23 @@ msgid "Server port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "פורט לשרת"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr ""
@@ -3666,27 +6037,100 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"עוצמת הקול של כל הצלילים.\n"
+"דורש הפעלת מערכת הקול."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3702,17 +6146,62 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3738,6 +6227,18 @@ msgid "Sneak key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr ""
@@ -3750,15 +6251,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3766,7 +6304,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3774,7 +6326,32 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "הגדרות"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3792,11 +6369,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3806,13 +6408,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3826,13 +6444,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3852,22 +6487,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3877,6 +6525,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -3885,7 +6537,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3905,6 +6557,26 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
msgstr ""
@@ -3912,7 +6584,7 @@ msgstr ""
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3924,6 +6596,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -3932,6 +6617,14 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -3948,11 +6641,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use key"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3960,7 +6663,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3968,82 +6671,138 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley fill"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley profile"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Vertical screen synchronization."
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Video driver"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View range decrease key"
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View range increase key"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Viewing range"
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr "טווח ראיה בקוביות."
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr "מקש הקטנת טווח ראיה"
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr "מקש הגדלת טוחח ראיה"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "מקש זום (משקפת)"
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr "טווח ראיה"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "מקש הפעלת ג'ויסטיק וירטואלי"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
+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 ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Walking speed"
+msgid "Walking and flying speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr ""
+msgid "Walking speed"
+msgstr "מהירות הליכה"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+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"
@@ -4054,23 +6813,27 @@ msgid "Waving leaves"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving plants"
+msgid "Waving liquids"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water"
+msgid "Waving liquids wave height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+msgid "Waving liquids wave speed"
+msgstr "מהירות גל של נוזלים עם גלים"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr ""
+msgid "Waving liquids wavelength"
+msgstr "אורך גל של נוזלים עם גלים"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr "צמחים מתנופפים"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4092,26 +6855,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4126,7 +6881,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "האם לאפשר לשחקנים להרוג אחד־את־השני."
#: src/settings_translation_file.cpp
msgid ""
@@ -4140,23 +6895,40 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "רכיב רוחב של גודל החלון הראשוני."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4166,27 +6938,185 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "שם העולם"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "מצב טקסטורות מיושרות לעולם"
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
+msgstr "Y לקרקע שטוחה."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr "Y של צפיפות הרים שיפוע רמת אפס. משמש להעברת הרים אנכית."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Y של הגבול העליון של מערות גדולות."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "מרחק Y שעליו מתרחבות מערות לגודל מלא."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid "Y-level of average terrain surface."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL file download timeout"
+msgid "Y-level of cavern upper limit."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "Y-level of higher terrain that creates cliffs."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "Y-level of lower terrain and seabed."
msgstr ""
-#~ msgid "Public Serverlist"
-#~ msgstr "רשימת שרתים פומבי"
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "(cURL) זמן להורדה נגמר"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "cURL interactive timeout"
+msgstr "(cURL) מגבלת זמן"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "(cURL) מגבלה לפעולות במקביל"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- מצב יצירתי: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- חבלה: "
+
+#~ msgid "Address / Port"
+#~ msgstr "כתובת / פורט"
+
+#~ msgid "Basic"
+#~ msgstr "בסיסי"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "ביטים לפיקסל (עומק צבע) במצב מסך מלא."
+
+#~ msgid "Configure"
+#~ msgstr "קביעת תצורה"
+
+#~ msgid "Connect"
+#~ msgstr "התחברות"
+
+#~ msgid "Credits"
+#~ msgstr "תודות"
+
+#~ msgid "Damage enabled"
+#~ msgstr "נזק מופעל"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "הורדת משחק, כמו משחק Minetest, מאתר minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "הורד אחד מאתר minetest.net"
+
+#, fuzzy
+#~ msgid "Enable VBO"
+#~ msgstr "אפשר בכל"
+
+#~ msgid "Enter "
+#~ msgstr "הכנס "
+
+#~ msgid "Game"
+#~ msgstr "משחק"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "התקנה: מקובץ: \"$1\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr "קישור מקשים (אם התפריט מתקלקל, הסר דברים מminetest.conf)"
+
+#~ msgid "Main menu style"
+#~ msgstr "סגנון התפריט הראשי"
+
+#~ msgid "Name / Password"
+#~ msgstr "שם/סיסמה"
+
+#~ msgid "No"
+#~ msgstr "לא"
+
+#~ msgid "Ok"
+#~ msgstr "אישור"
+
+#~ msgid "PvP enabled"
+#~ msgstr "לאפשר קרבות"
+
+#, fuzzy
+#~ msgid "Reset singleplayer world"
+#~ msgstr "שרת"
+
+#~ msgid "Special"
+#~ msgstr "מיוחד"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "כדי לאפשר שיידרים יש להשתמש בדרייבר של OpenGL."
+
+#~ msgid "View"
+#~ msgstr "תצוגה"
+
+#~ msgid "Yes"
+#~ msgstr "כן"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "אתה עומד להצטרף לשרת זה עם השם \"%s\" בפעם הראשונה.\n"
+#~ "אם תמשיך, ייווצר חשבון חדש באמצעות אישוריך בשרת זה.\n"
+#~ "אנא הקלד מחדש את הסיסמה שלך ולחץ על 'הירשם והצטרף' כדי לאשר את יצירת "
+#~ "החשבון, או לחץ על 'ביטול' כדי לבטל."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "מתת"
-#~ msgid "No of course not!"
-#~ msgstr "לא ברור שלא!"
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/hi/minetest.po b/po/hi/minetest.po
new file mode 100644
index 000000000..dc79d1c87
--- /dev/null
+++ b/po/hi/minetest.po
@@ -0,0 +1,7083 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"hi/>\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"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-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "बंद करके मेनू पर जाएं"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "लोकल कमांड"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "एक-खिलाडी"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "एक-खिलाडी"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "वापस ज़िंदा होएं"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "आपकी मौत हो गयी"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "लोकल कमांड"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "लोकल कमांड"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "ठीक है"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua कोड में यह परेशानी हुई :"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "एक खराबी हो गयी :"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "मुख्य पृष्ठ"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "वापस कनेक्ट करें"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "सर्वर वापस कनेक्ट करना चाहता है :"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "दुनिया चुन्हें :"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "प्रोटोकॉल संख्या एक नहीं है। "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "सर्वर केवल प्रोटोकॉल $1 लेता है। "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "सर्वर केवल प्रोटोकॉल $1 से $2 ही लेता है। "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "हम केवल प्रोटोकॉल $1 ही लेते हैं।"
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "हम प्रोटोकॉल $1 से $2 ही लेते हैं।"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "रोकें"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "निर्भरताएं :"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "प्रत्येक रोकें"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "माॅडपैक रोकें"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "प्रत्येक चालू करें"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "माॅडपैक चालू करें"
+
+#: 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 ""
+"मना किए गए वर्णों के कारण माॅड \"$1\" चालू नहीं हो सका। कृपया [a-z0-9] अंग्रेजी वर्ण का "
+"ही प्रयोग करें।"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "और मोड खोजें"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "माॅड :"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "कोई (अनावश्यक) निर्भरताएं नहीं हैं"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "खेल ने अपने बारे में कुछ नहीं बताया।"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "कोई आवश्यक निर्भरताएं नहीं"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "माॅडपैक ने अपने बारे में कुछ नहीं बताया।"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "कोई अनावश्यक निर्भरताएं नहीं"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "अनावश्यक निर्भरताएं :"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "सेव करें"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "दुनिया :"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "चालू"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "लोड हो रहा है ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "सभी पैकेज"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Already installed"
+msgstr "की पहले से इस्तेमाल में है"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "वापस मुख्य पृष्ठ पर जाएं"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "खेल चलाएं"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "cURL के बगैर कंपाइल होने के कारण Content DB उपलब्ध नहीं है"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "लोड हो रहा है ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1 का डाऊनलोड असफल हुआ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "अनेक खेल"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "इन्स्टाल करें"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "इन्स्टाल करें"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "अनावश्यक निर्भरताएं :"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "इन्स्टाल : \"$1\" का फाईल टाईप अंजान है याफिर आरकाइव खराब है"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "माॅड"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "कोई पैकेज नहीं ला पाया गया"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "कुछ नहीं मिला"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "नया संस्करण इन्स्टाल करें"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "कला संकुल"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "हटाऐं"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "नया संस्करण इन्स्टाल करें"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "\"$1\" नामक दुनिया पहले से ही है"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "अतिरिक्त भूमि"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "ऊंचाई की ठंडक"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "ऊंचाई का सूखापन"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "बायोम परिवर्तन नज़र न आना (Biome Blending)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "बायोम"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "गुफाएं"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "गुफाएं"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "बनाइए"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "सजावट"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr ""
+"चेतावनी : न्यूनतम विकास खेल (Minimal development test) खेल बनाने वालों के लिए है।"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "कालकोठरियां"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "समतल भूमि"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "आसमान में तैरते हुए भूमि-खंड"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "फ्लोटलैंड्स (आसमान में तैरते हुए भूमि-खंड) (प्रायोगिक)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Non-fractal भूमि तैयार हो : समुद्र व भूमि के नीचे"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "छोटे पहाड़"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "नम नदियाँ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "नदियों के आसपास नमी बढ़ाता है"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "इन्स्टाल करें"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "झीलें"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "कम आर्द्रता और उच्च गर्मी की वजह से नदियाँ उथली या सूखी हो जाती है"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "नक्शा स्रोत"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "पहाड़ों"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "कीचड़ का बहाव"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "सुरंगों और गुफाओं का नेटवर्क"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "कोई खेल चूना नहीं गया है"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "ऊंचाई के साथ गर्मी कम करता है"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "ऊंचाई के साथ नमी कम करता है"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "नदियाँ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "समुद्र तल की नदियाँ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "बीज"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "बायोम के बीच में धीरे-धीरे परिवर्तन"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr "भूमि पर बनावटें (v6 के पेड़ व जंगली घास पर कोई असर नहीं)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "इलाके में दिखने वाली संरचनाएं, आमतौर पर पेड़-पौधे"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "शीतोष्ण, रेगिस्तान"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "शीतोष्ण, रेगिस्तान, जंगल"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "शीतोष्ण, रेगिस्तान, जंगल, टुंड्रा, तायगा"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "इलाके की सतह का कटाव"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "पेड़ और जंगल की घास"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "नदी की गहराईयों में अंतर"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "दुनिया का नाम"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "आपने कोई खेल इन्स्टाल नहीं किया है।"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "क्या आप सचमुच \"$1\" को रद्द करना चाहते हैं?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "रद्द करें"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: \"$1\" रद्द नहीं किया जा सका"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: \"$1\" फाईल पार गलत है"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "दुनिया रद्द करें?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "पासवर्ड दोबारा लिखें"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "नया पासवर्ड"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "पासवर्ड अलग-अलग हैं!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "पंजीकरण व खेलें"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "हां"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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.conf फाईल में इस माॅडपैक को जो नाम दिया गया है वही माना जाएगा।"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(सेटिंग के बारे में कुछ नहीं बताया गया है)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "द्वि आयामी नॉइस"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "वापस सेटिंग पृष्ठ पर जाएं"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "ढूंढें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "वस्तुएं"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "वस्तुएं"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "रुका हुआ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "बदलें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "चालू"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr "लैकुनारिटी"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "सप्टक (आक्टेव)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "आफसेट"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Persistence"
+msgstr "हठ (पर्सिस्टेन्स)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "कृपया एक पूर्णांक (integer) भरें।"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "कृपया एक अंक भरें।"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "मूल चुनें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "स्केल"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "ढूंढें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "फाईल पाथ चुनें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "फाईल चुनें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "तकनीकी नाम देखें"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "इसका मूल्य कम-से-कम $1 होना चाहिए।"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "इसका मूल्य $1 से अधिक नहीं होना चाहिए।"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "एक्स"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "X स्प्रेड"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "वाई"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Y स्प्रेड"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "जेड"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z स्प्रेड"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 "डीफाल्ट"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "आरामदायक (ईज़्ड)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "($1) चालू"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 यह सब मॉड"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "$2 में $1 को इन्स्टाल नहीं किया जा सका"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "इन्स्टाल मॉड: $1 का असल नाम नहीं जान पाया गया"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr "माॅड इन्स्टाल: माॅडपैक $1 के लिए सही फोल्डर नहीं ढूंढा जा सका"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "सही माॅड या माॅडपैक नहीं ढूंढ पाया गया"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1 कला संकुल के रूप में इन्स्टाल नहीं किया जा सका"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "खेल को $1 के रूप में इन्स्टाल नहीं किया जा सका"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "मॉड को $1 के रूप में इन्स्टाल नहीं किया जा सका"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+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_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "सक्रिय सहायक"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "मुख्य डेवेलपर"
+
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "फाईल पाथ चुनें"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "पूर्व सहायक"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "पूर्व मुख्य डेवेलपर"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "नेट पर वस्तुएं ढूंढें"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "वस्तुएं"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "कला संकुल रोकें"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "जानकारी :"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "इन्स्टाल किये गये पैकेज :"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "कोई निर्भर्ताएं नहीं हैं|"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "पैकेज के बारे में कुछ नहीं बताया गया है"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "नाम बदलें"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "पैकेज हटाएं"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "कला संकुल चालू करें"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "सर्वर सार्वजनिक सर्वर सूची (server list) में दिखे"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "बाईंड एड्रेस"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "असीमित संसाधन"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "हानि व मृत्यु हो सकती है"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "खेल चलाएं"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "सर्वर चलाएं"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "नया"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "कोई दुनिया उपस्थित या चुनी गयी नहीं है !"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "खेल खेलें"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "पोर्ट"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "दुनिया चुन्हें :"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "दुनिया चुन्हें :"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "सर्वर पोर्ट"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "खेल शुरू करें"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- एड्रेस : "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "खाली करें"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "असीमित संसाधन"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "- हानि : "
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "पसंद"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "खेल में शामिल होएं"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "पिंग"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "सर्वर सार्वजनिक सर्वर सूची (server list) में दिखे"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "पसंद हटाएं"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "सर्वर पोर्ट"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "दुग्ना"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "त्रिविम दृश्यन बादल"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "चार गुना"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "आठ गुना"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "सभी सेटिंग देखें"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "ऐन्टी एलियासिंग :"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "स्क्रीन परिमाण स्वयं सेव हो"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "द्विरेखिय फिल्टर"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "की बदलें"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "जुडे शिशे"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "रोचक पत्ते"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "मिपमैप"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "मिपमैप व अनीसो. फिल्टर"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "कोई फिल्टर नहीं"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr "मिपमैप नहीं हो"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "डिब्बें उजाले हों"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "डिब्बों की रूपरेखा"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "कुछ नहीं"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "अपारदर्शी पत्ते"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "अपारदर्शी पानी"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "कण"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "स्क्रीन :"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "सेटिंग"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "छाया बनावट"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "फ्लोटलैंड्स (आसमान में तैरते हुए भूमि-खंड) (प्रायोगिक)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "छाया बनावट (अनुपलब्ध)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "मामूली पत्ते"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "चिकना उजाला"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "कला बनावट :"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr "टोन मैपिंग"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "छूने की त्रिज्या : (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "त्रिरेखीय फिल्टर"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "पत्ते लहराएं"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "पानी में लहरें बनें"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "पाैधे लहराएं"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "कनेक्शन खराबी (समय अंत?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "कनेक्शन समय अंत|"
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "हो गया !"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "डीब्बे बन रहे हें"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "डिब्बे बन रहें हैं ..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "कला लोड हो रही है ..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "छायाएं वापस बन रहीं हैं ..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "कनेक्शन खराबी (समय अंत?)"
+
+#: src/client/clientlauncher.cpp
+#, fuzzy
+msgid "Could not find or load game: "
+msgstr "खेल ढूंढा ना जा सका या लोड नहीं किया जा सका \""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "गलत गेमस्पेक कोड।"
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "मुख्य पृ़ष्ठ"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "कोई दुनिया नहीं चुनी गयी है, ना ही पता दिया गया है। कुछ नहीं करना।"
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "खिलाडी का नाम अधिक लंबा है|"
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "कृपया एक नाम चुनें!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "पासवर्ड फाईल नहीं खुला :- "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "दुनिया का फाईल पाथ नहीं है : "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"अधिक जानकारी के लिए debug.txt देखें।"
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- एड्रेस : "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- तकनीक : "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- पोर्ट : "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- सार्वजनिक : "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- खिलाड़ियों में मारा-पीटी : "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- सर्वर का नाम : "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "एक खराबी हो गयी :"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "स्वचाल रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "स्वचाल चालू"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "कैमरा रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "कैमरा चालू"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "पासवर्ड बदलें"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "सिनेमा चाल रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "सिनेमा चाल चालू"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "क्लाइंट की तरफ से स्क्रिप्ट लगाना मना है"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "सर्वर से कनेक्ट हुआ जा रहा है ..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "आगे बढ़ें"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"कंट्रोल्स:\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
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "क्लाइंट बनाया जा रहा है ..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "सर्वर बनाया जा रहा है ..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "डीबग जानकारी व प्रोफाइल गायब"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "डीबग जानकारी दिखाई दे रही है"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "डीबग जानकारी, प्रोफाइलर व रूपरेखा गायब"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- 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 "दृष्टि सीमित"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "दृष्टि असीमित"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "क्लाइंट बनाया जा रहा है ..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "बंद करके मेनू पर जाएं"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "बंद करके ओ॰ एस॰ में जाएं"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "तेज चलन रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "तेज जलन चालू"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "तेज चैनल चालू (सूचना: आपके पास 'तेज' विशेषाधिकार नहीं है)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "उड़ान अनुपलब्ध है"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "उड़ान उपलब्ध है"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "उड़ान उपलब्ध है (सूचना: आपके पास 'उड़ान' विशेषाधिकार नहीं है)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "कोहरा रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "कोहरा चालू"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "खेल की जानकारी :"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "खेल रुका हुआ है"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "सर्वर चलन"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "वस्तुओं के अर्थ ..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "कि॰बी॰/एस॰"
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "कला एवं आवाज़ें ..."
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "एम॰ आई॰ बी॰/ एस॰"
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "खेल या मॉड़ के वजह से छोटा नक्शा मना है"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "एक-खिलाडी"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "तरल चाल रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "तरल चाल चालू"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "तरल चाल चालू (सूचना: आपके पास तरल विशेषाधिकार नहीं है)"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "डिब्बों का अर्थ ..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "ऑफ"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "ऑन"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "पिच चलन रुका हुआ"
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "पिच चलन चालू"
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "प्रोफाईलर दिखाई दे रहा है"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "बाहर का सर्वर"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "एड्रेस समझा जा रहा है ..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "शट डाउन हो रहा है ..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "एक-खिलाडी"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "आवाज़ वॉल्यूम"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "आवाज़ बंद"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "आवाज चालू"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "दृष्टि सीमा बदलकर %d है"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "दृष्टि सीमा अधिकतम : %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "दृष्टि सीमा न्यूनतम : %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "वॉल्यूम को बदलकर %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "डिब्बे रेखांकित"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "खेल या मॉड़ के वजह से इस समय ज़ूम मना है"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ठीक है"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "बातें दिखाई नहीं देंगी"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "बातें दिखाई देंगी"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "हे॰अ॰डि॰ दिखाई नहीं देंगी"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "हे॰अ॰डि॰ दिखाई देंगी"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "प्रोफाइलर नहीं दिखाई देगा"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "प्रोफाईलर दिखाई दे रही है (पृष्ठ %d %d पृष्ठों में से)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "एप्स"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "बैकस्पेस"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "कैप्स लाक"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "कंट्रोल"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "नीचे"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "एंड"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "ई.ओ.एफ खाली करें"
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "एग्सीक्यूट"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "हेल्प"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "होम"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "आई एम ई एक्सेप्ट"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "आई एम ई कन्वर्ट"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "आई एम ई एस्केप"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "आई एम ई मोड चेंज"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "आई एम ई नानकन्वर्ट"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "इन्सर्ट"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "बायां"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "बायां बटन"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "बायां कंट्रोल"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "बायां मेनू"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "लेफ्ट शिफ्ट"
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "लेफ्ट विंडोज"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "मेनू (कीबोर्ड)"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "बीच का बटन"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr "नम लाक"
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr "नम्पैड *"
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr "नम्पैड +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr "नम्पैड -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "नम्पैड ."
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr "नम्पैड /"
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr "नम्पैड ०"
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr "नम्पैड १"
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr "नम्पैड २"
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr "नम्पैड ३"
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "नम्पैड ४"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr "नम्पैड ५"
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr "नम्पैड ६"
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr "नम्पैड ७"
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "नम्पैड ८"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr "नम्पैड ९"
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr "ओ ई एम क्लीयर"
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "पेज डाऊन"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "पेज अप"
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "पॉज़"
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "खेलें"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "प्रिन्ट बटन"
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "रिटर्न बटन"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "दाहिना"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "दाहिना बटन"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "दाहिना"
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "दाहिना मेनू"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "राईट शिफ्ट"
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "राईट विंडोज"
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr "स्क्रोल लाक"
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "सिलेक्ट"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "शिफ्ट"
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "स्लीप"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "स्नैपशॉट"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "स्पेसबार"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "टैब बटन"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "ऊपर"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr "X बटन १"
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr "X बटन २"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "ज़ूम"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "छोटा नक्शा गायब"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "छोटा नक्शा रेडार मोड, 1 गुना ज़ूम"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "छोटा नक्शा जमीन मोड, 1 गुना ज़ूम"
+
+#: src/client/minimap.cpp
+#, fuzzy
+msgid "Minimap in texture mode"
+msgstr "छोटा नक्शा जमीन मोड, 1 गुना ज़ूम"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "$1 का डाऊनलोड असफल हुआ"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "आगे बढ़े"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "\"स्पेशल\" = नीचे उतरना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "स्वचालन"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "कूदने के लिए बटन दबाना अनावश्यक"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "पीछे जाएं"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "कैमरा बदलना"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "बातें"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "आज्ञा"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "कन्सोल"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "दृष्टि सीमा कम"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "आवाज़ कम"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "उड़ने के लिए दो बार कूदें"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "वस्तु गिराना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "आगे जाएं"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "दृष्टि सीमा अधिक"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "आवाज अधिक"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "वस्तु सूची"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "कूदना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "की पहले से इस्तेमाल में है"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "लोकल कमांड"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "आवाज बंद"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "अगला वस्तु"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "पिछली वस्तु"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "दृष्टि सीमा चुनना"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "स्क्रीनशॉट"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "संभल के चलना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "हे. अ. डि"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "बातें दिखना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "तेज चलन"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "उड़ना"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "कोहरा"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "छोटा नक्शा"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "तरल चाल"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "पिच चलन"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "की दबाएं"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "बदलें"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "नया पासवर्ड"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "पुराना पासवर्ड"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "पासवर्ड अलग-अलग हैं!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "निकास"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "चुप"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "आवाज "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "hi"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "कृपया एक नाम चुनें!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "दुनिया का नाम"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Always fly fast"
+msgstr "हमेशा उड़ान और तेज"
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "चलने उतरने के लिए स्पेशल की"
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr "खिलाडी पर डिब्बे डालना"
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "कैमरा बदलना"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr "केमरा चिकनाई"
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr "सिनेमा मोड में केमरा चिकनाई"
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "आज्ञा"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "बातें दिखाई देंगी"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr "सिनेमा मोड"
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr "कंट्रोल्स"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "सजावट"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr "उड़ने के लिए दो बार कूदें"
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr "दो बार कूदने से उड़ान चलन चालू हो जाता है।"
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr "तेज चलन"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+"स्पेशल की दबाने पर आप बहुत तॆज चलने लगेंगे |\n"
+"इसके लिये \"तेज\" विषेशाधिकार आवश्यक है |"
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "ऐन्टी एलियासिंग :"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr "उडना"
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "अनेक खेल"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "हे॰अ॰डि॰ दिखाई देंगी"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+"अगर यह रुका हुआ हुआ तो तेज उड़ने के लिए\n"
+"स्पेशल की दबानी पड़ेगी |"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+"अगर यह उडान के साथ चालू होगा तो आप हर चीज़ के आर-पार उड पाएंगे |\n"
+"इसके लिये \"तरल चाल\" विषेशाधिकार आवश्यक है |"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"अगर यहां चालू हुआ तो नीचे उतरने के लिए स्पेशल\n"
+"की का इस्तेमाल होगा।"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr "चालू होने पर आप जहां देखेंगे उस दिशा को सामने माना जाएगा (पिच चलन)|"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr "माउस उल्टा"
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr "माउस ऊपर करने पर केमरा नीचे जाएगा, और नीचे करने पर ऊपर |"
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "चिकना उजाला"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr "माउस संवेदनशीलता"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr "माउस संवेदनशीलता गुणक।"
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr "तरल चाल"
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "डिब्बें उजाले हों"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "पिच चलन"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "राइट क्लिक के दोहराने का समय"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+"खिलाडी के असर से मुक्त उड सकेगा |\n"
+"इसके लिये \"उडान\" विषेशाधिकार आवश्यक है |"
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "स्क्रीन :"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "स्क्रीनशॉट"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "सर्वर चलाएं"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- सर्वर का नाम : "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "सर्वर पोर्ट"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "सर्वर पोर्ट"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+"आपका माउस चिकने तरीके से हिलेगा | इसे माउस या दृष्टि चिकनाई भी कहा जाता है |\n"
+"विडियो बनाते वख़्त काम आ सकता है |"
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr "सिनेमा मोड में केमरा चिकने तरीके से मुडेगा | मना करने के लिये 0."
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr "केमरा के मुडने की चिकनाई. मना करने के लिये 0."
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "सेटिंग"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- असीमित साधन "
+
+#~ msgid "- Damage: "
+#~ msgstr "- हानि : "
+
+#~ msgid "Address / Port"
+#~ msgstr "ऐडरेस / पोर्ट"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "क्या आप सचमुच अपने एक-खिलाडी दुनिया रद्द करना चाहते हैं?"
+
+#~ msgid "Back"
+#~ msgstr "पीछे"
+
+#~ msgid "Bump Mapping"
+#~ msgstr "टकराव मैपिंग"
+
+#~ msgid "Config mods"
+#~ msgstr "मॉड कॆ सेटिंग बदलें"
+
+#~ msgid "Configure"
+#~ msgstr "सेटिंग बदलें"
+
+#~ msgid "Connect"
+#~ msgstr "कनेक्ट करें"
+
+#~ msgid "Credits"
+#~ msgstr "आभार सूची"
+
+#~ msgid "Damage enabled"
+#~ msgstr "हानि व मृत्यु हो सकती है"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "मैनटेस्ट खेल जैसे अन्य खेल minetest.net से डाऊनलोड किए जा सकते हैं"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "आप किसी भी खेल को minetest.net से डाऊनलोड कर सकते हैं"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 का डाऊनलोड व इन्स्टाल चल रहा है, कृपया ठहरें ..."
+
+#~ msgid "Enter "
+#~ msgstr "डालें "
+
+#~ msgid "Game"
+#~ msgstr "खेल"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "मामूली नक्शे बनाएं"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "इन्स्टाल : फाईल : \"$1\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "कीबोर्ड सेटिंग (अगर यह मेनू खराब हो जाए तो minetest.conf से सब कुछ खाली कर दें)"
+
+#~ msgid "Main"
+#~ msgstr "मुख्य"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "छोटा नक्शा रेडर मोड, दोगुना जूम"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "छोटा नक्शा रेडार मोड, 4 गुना ज़ूम"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "छोटा नक्शा जमीन मोड, दोगुना जूम"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "छोटा नक्शा जमीन मोड, 4 गुना जून"
+
+#~ msgid "Name / Password"
+#~ msgstr "नाम/पासवर्ड"
+
+#~ msgid "Name/Password"
+#~ msgstr "नाम/पासवर्ड"
+
+#~ msgid "No"
+#~ msgstr "नहीं"
+
+#~ msgid "Ok"
+#~ msgstr "ठीक है"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "पेरलेक्स ऑक्लूजन"
+
+#~ msgid "PvP enabled"
+#~ msgstr "खिलाडियों में मारा-पीटी की अनुमती है"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "एक-खिलाडी दुनिया रीसेट करें"
+
+#~ msgid "Special"
+#~ msgstr "स्पेशल"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "एक-खिलाडी शुरू करें"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "छाया बनावट कॆ लिये OpenGL ड्राईवर आवश्यक हैं|"
+
+#~ msgid "View"
+#~ msgstr "दृश्य"
+
+#~ msgid "Yes"
+#~ msgstr "हां"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "आप \"%s\" नाम से इस सरवर में पहली बार आने वाले हैं। अगर आप आगे बढ़ते हैं तो आपके लिए "
+#~ "इस सर्वर पर एक अकाउंट बनाया जाएगा।\n"
+#~ "\n"
+#~ "आगे बढ़ने ए लिखें कृपया अपने पासवर्ड को वापस लिखें और फिर 'पंजीकरण व खेलें' दबाएं, अथवा "
+#~ "'रोकें' दबाएं।"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "आपकी मौत हो गयी"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/hu/minetest.po b/po/hu/minetest.po
index 6534266c0..7bc6b5258 100644
--- a/po/hu/minetest.po
+++ b/po/hu/minetest.po
@@ -1,15 +1,10 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Hungarian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-05-07 03:17+0000\n"
-"Last-Translator: Kisbenedek Márton <martonkisbenedek@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-06-05 13:19+0000\n"
+"Last-Translator: Ács Zoltán <acszoltan111@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/minetest/"
"minetest/hu/>\n"
"Language: hu\n"
@@ -17,108 +12,237 @@ 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 2.7-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Kimenő üzenetek sorának törlése"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Üres parancs."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Kilépés a főmenübe"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Érvénytelen parancs: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Kiadott parancs: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Online játékosok listázása"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Online játékosok: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "A kimenő üzenetek sora jelenleg üres."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Ezt a parancsot a szerver letiltotta."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Újraéledés"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Meghaltál"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Elérhető parancsok:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Elérhető parancsok: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "A parancs nem elérhető: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Segítség kérése a parancsokhoz"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"További információkhoz adja ki a '.help <cmd>' parancsot, vagy az összes "
+"kilistázásához a '.help all' parancsot."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "OK"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Hiba történt egy Lua scriptben (egy modban):"
+msgid "<none available>"
+msgstr "<nincs elérhető>"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred in a Lua script:"
+msgstr "Hiba történt egy Lua parancsfájlban:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
msgstr "Hiba történt:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Főmenü"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "OK"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
-msgstr "Újracsatlakozás"
+msgstr "Újrakapcsolódás"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "A szerver újracsatlakozást kért:"
+msgstr "A szerver újrakapcsolódást kért:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Betöltés..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Modok kiválasztása"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
-msgstr "Protokoll verzió eltérés. "
+msgstr "Protokollverzió-eltérés. "
#: builtin/mainmenu/common.lua
msgid "Server enforces protocol version $1. "
-msgstr ""
+msgstr "A szerver által megkövetelt protokollverzió: $1. "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr "A szerver $1 és $2 protokoll verzió közötti verziókat támogat. "
+msgstr "A szerver $1 és $2 protokollverzió közötti verziókat támogat. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Próbáld újra engedélyezni a nyilvános szerverlistát és ellenőrizd az "
-"internetkapcsolatot."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr "Csak $1 protokoll verziót támogatjuk."
+msgstr "Csak $1 protokollverziót támogatjuk."
#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
-msgstr "$1 és $2 közötti protokoll verziókat támogatunk."
+msgstr "$1 és $2 közötti protokollverziókat támogatjuk."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Mégse"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Függ:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Függőségek:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Modpakk letiltás"
+msgid "Disable all"
+msgstr "Összes letiltása"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Modpakk engedélyez"
+msgid "Disable modpack"
+msgstr "Modcsomag letiltása"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Mind engedélyez"
+msgstr "Összes engedélyezése"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Modcsomag engedélyezése"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"A \"$1\" mod engedélyezése nem sikerült, mert rossz karaktereket tartalmaz. "
-"Csak az [0-z0-9_] karakterek engedélyezettek."
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Játék elrejtés"
+"A(z) „$1” mod engedélyezése sikertelen, mert nem engedélyezett karaktereket "
+"tartalmaz. Csak az [a-z0-9_] karakterek engedélyezettek."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Modpakk tartalom elrejtés"
+msgid "Find More Mods"
+msgstr "További modok keresése"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Nincsenek (választható) függőségek"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Nincs elérhető játékleírás."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Nincsenek kötelező függőségek"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Nincs elérhető modcsomag-leírás."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Nincsenek választható függőségek"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Választható függőségek:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Mentés"
@@ -128,136 +252,461 @@ msgstr "Világ:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
-msgstr "Engedélyez"
+msgstr "engedélyezve"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" már létezik. Szeretné felülírni?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "$1 és $2 függőségek telepítve lesznek."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 az $2-ből"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 letöltése,\n"
+"$2 sorba állítva"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 Letöltése…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "Ehhez szükséges függőségek nem találhatók: $1."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 telepítve lesz, és $2 függőségek ki lesznek hagyva."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Minden csomag"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Már telepítve"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Vissza a főmenübe"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Alapjáték:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "A ContentDB nem elérhető, ha a Minetest cURL nélkül lett lefordítva"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Letöltés…"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1 letöltése nem sikerült"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Játékok"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Telepítés"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "$1 telepítése"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "hiányzó függőségek telepitése"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Telepítés: nem támogatott fájltípus vagy sérült archívum"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Modok"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "A csomagok nem nyerhetők vissza"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Nincs találat"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Nincsenek frissítések"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Nem található"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Felülírás"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Az alapjáték ellenörzése szükséges ."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Sorbaállítva"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Textúracsomagok"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Eltávolítás"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Frissítés"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Összes frissítése [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "További információ megtekintése böngészőben"
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "\"$1\" nevű világ már létezik"
+msgstr "Már létezik egy „$1” nevű világ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "További terep"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Hőmérséklet-csökkenés a magassággal"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Páratartalomcsökkenés a magassággal"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Biom keverés"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomok"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Üregek"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Barlangok"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
-msgstr "Létrehoz"
+msgstr "Létrehozás"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Tölts le egy al-játékot (mint a Minetest Game) a minetest.net-ről"
+msgid "Decorations"
+msgstr "Dekorációk"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Letöltés a minetest.net-ről"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Figyelmeztetés: a Development Test fejlesztők számára készült."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Játék"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Tömlöcök"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Lapos terep"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Lebegő földtömegek az égben"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Lebegő földek (kísérleti)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Nem-fraktál terep generálása: Óceánok és földalatti rész"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Dombok"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Párás folyók"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Megnöveli a páratartalmat a folyók körül"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "$1 telepítése"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Tavak"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+"Az alacsony páratartalom és a magas hőmérséklet sekélyesíti vagy ki is "
+"száríthatja a folyókat"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
-msgstr "Térkép generátor"
+msgstr "Térkép generálás"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Térképgenerátor zászlók"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Térképgenerátor különleges zászlói"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Hegyek"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Iszapáramlás"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Alagutak és barlangok hálózata"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Nincs játékmód kiválasztva"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "A magassággal csökken a hőmérséklet"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "A magassággal csökken a páratartalom"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Folyók"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Nincs megadva a világ neve, vagy nincs kiválasztva játék"
+msgid "Sea level rivers"
+msgstr "Tengerszinti folyók"
#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr "Seed"
+msgstr "Kezdőérték"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Lágy átmenet a biomok között"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
msgstr ""
-"Figyelmeztetés: A \"minimal development test\" csak fejlesztőknek ajánlott."
+"A terepen megjelenő struktúrák (nincs hatása a fákra és a dzsungelfűre, "
+"amelyet a v6 készített)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "A terepen megjelenő struktúrák, általában fák és növények"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Mérsékelt, Sivatag"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Mérsékelt, Sivatag, Dzsungel"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Mérsékelt, Sivatag, Dzsungel, Tundra, Tajga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Terepfelület erózió"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Fák és dzsungelfű"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Változatos folyómélység"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Nagyon nagy üregek mélyen a föld alatt"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Világ neve"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Nincsenek aljátékok telepítve."
+msgid "You have no games installed."
+msgstr "Nincsenek játékok telepítve."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "Biztosan törölni akarod: \"$1\"?"
+msgstr "Biztosan törölni szeretnéd ezt: „$1”?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Törlés"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: \"$1\" törlése meghiúsult"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmr: a(z) „$1” törlése sikertelen"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: érvénytelen mod útvonal: \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: érvénytelen útvonal: „$1”"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "\"$1\" világ törlése?"
+msgstr "Törlöd a(z) „$1” világot?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Jelszó megerősítése"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Térképgenerátor neve"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Név"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Jelszó"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "A jelszavak nem egyeznek!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Regisztráció és belépés"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
-msgstr "Elfogad"
+msgstr "Elfogadás"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr "Modpakk átnevezés:"
+msgstr "Modcsomag átnevezése:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
+"Ennek a modcsomagnak a neve a modpack.conf fájlban meghatározott, ami "
+"felülír minden itteni átnevezést."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(Nincs megadva leírás a beállításhoz)"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D zaj"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr "< Vissza a Beállítások oldalra"
+msgstr "< Vissza a Beállításokra"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr "Keres"
+msgstr "Tallózás"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Tartalom"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Tartalom"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Letiltva"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr "Szerkeszt"
+msgstr "Szerkesztés"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
msgstr "Engedélyezve"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr "A formátum 3 szám vesszőkkel elválasztva, zárójelek között."
+msgid "Lacunarity"
+msgstr "Hézagosság"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "Oktávok"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Játékok"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Modok"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Eltolás"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Persistence"
+msgstr "Folytonosság"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -268,232 +717,338 @@ msgid "Please enter a valid number."
msgstr "Írj be egy érvényes számot."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Lehetséges értékek: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
-msgstr "Alapértelmezett visszaállítás"
+msgstr "Alapértelmezés visszaállítása"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Mérték"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Keresés"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Útvonal kiválasztás"
+msgid "Select directory"
+msgstr "Útvonal kiválasztása"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Fájl kiválasztása"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
-msgstr "Technikai nevek mutatása"
+msgstr "Technikai nevek megjelenítése"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Az értéknek nagyobbnak kell lennie ennél: $1."
+msgid "The value must be at least $1."
+msgstr "Az érték nem lehet kisebb mint $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Az értéknek kisebbnek kell lennie ennél: $1."
+msgid "The value must not be larger than $1."
+msgstr "Az érték nem lehet nagyobb mint $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Mod telepítés: \"$1\" nem támogatott fájltípus, vagy hibás archívum"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "X kiterjedés"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Y kiterjedés"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z kiterjedés"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "abszolút érték"
+
+#. ~ "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 "alapértelmezett"
-#: builtin/mainmenu/modmgr.lua
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "könyített"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Engedélyezve)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 modok"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "$1 telepítése meghiúsult ide: $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Mod telepítés: fájl: \"$1\""
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Mod telepítése: nem található megfelelő mod név ehhez: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Mod telepítése: nem található valódi mod név ehhez: $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Mod telepítése: nem található megfelelő mappanév ehhez a modpakk-hoz: $1"
+"Mod telepítése: nem található megfelelő mappanév ehhez a modcsomaghoz: $1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Áruház bezárása"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Nem található érvényes mod vagy modcsomag"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "$1 letöltése, kérlek várj..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1 textúracsomag telepítése meghiúsult"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Telepítés"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "$1 aljáték telepítése meghiúsult"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Oldal $1 ennyiből: $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "$1 mod telepítése meghiúsult"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Értékelés"
-
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Keresés"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "$1 modcsomag telepítése meghiúsult"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Rövid név:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Betöltés…"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Sikeresen telepítve:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "A nyilvános szerverlista le van tiltva"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Rendezetlen"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr ""
+"Próbáld újra engedélyezni a nyilvános szerverlistát, és ellenőrizd az "
+"internetkapcsolatot."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Újratelepítés"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Névjegy"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
-msgstr "Tevékeny hozzájárulók"
+msgstr "Aktív közreműködők"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Aktív renderelő:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
-msgstr "Belső fejlesztők"
+msgstr "Játékmotor-fejlesztők"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Felhasználói adatok mappája"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Készítők"
+#: builtin/mainmenu/tab_about.lua
+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
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
-msgstr "Korábbi hozzájárulók"
+msgstr "Korábbi közreműködők"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
-msgstr "Korábbi belső fejlesztők"
+msgstr "Korábbi játékmotor-fejlesztők"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Telepített modok:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Mod ismertető:"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Hibakereső információ megjelenítése"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Nincs elérhető mod leírás"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Online tartalmak böngészése"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Átnevez"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Tartalom"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Mod fájl kiválasztása:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Textúracsomag kikapcsolása"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Kiválasztott mod törlése"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Információ:"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Kiválasztott modpakk törlése"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Telepített csomagok:"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Cím / Port"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Nincsenek függőségek."
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Kliens"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Csatlakozás"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kreatív mód"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Nincs elérhető csomagleírás"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Sérülés engedélyezve"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Kedvenc törlés"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Átnevezés"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Kedvenc"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Csomag eltávolítása"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Név / Jelszó"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Textúracsomag használata"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP engedélyezve"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Szerver nyilvánossá tétele"
-#: builtin/mainmenu/tab_server.lua
-#, fuzzy
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr "Bind Address"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Beállít"
+msgstr "Cím csatolása"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Kreatív mód"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Sérülés engedélyezése"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Név/jelszó"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Játék megosztása"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Szerver felállítása"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Játékok telepítése ContentDB-ről"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Új"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Nincs létrehozva, vagy kiválasztva világ!"
+msgstr "Nincs létrehozott vagy kiválasztott világ!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Játék indítása"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Port"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Nyilvános"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Modok kiválasztása"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Világ kiválasztása:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Szerver"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
-msgstr "Szerver port"
+msgstr "Szerver portja"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
-msgstr "Játék indítása"
+msgstr "Indítás"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Cím"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Törlés"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Kreatív mód"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Sérülés / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Kedvencek"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Nem kompatibilis szerverek"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Csatlakozás játékhoz"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Nyilvános szerverek"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Frissítés"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Távoli port"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Szerver leírása"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
@@ -512,51 +1067,61 @@ msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Haladó beállítások"
+msgid "All Settings"
+msgstr "Minden beállítás"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "Élsimítás:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Biztosan visszaállítod az egyjátékos világod?"
+msgid "Autosave Screen Size"
+msgstr "Képernyőméret megjegyzése"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "Bilineáris szűrés"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "Bumpmapping"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Gombok megváltoztatása"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Gombok változtatása"
+msgid "Connected Glass"
+msgstr "Csatlakoztatott üveg"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Dinamikus árnyékok"
#: builtin/mainmenu/tab_settings.lua
-msgid "Connected Glass"
-msgstr "Csatlakozó üveg"
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Dinamikus árnyékok: "
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Szép levelek"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "High"
+msgstr "Magas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Alacsony"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Közepes"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "Mipmap"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Mipmap + Aniso. Filter"
-msgstr "Mipmap + Aniso. Filter"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Nem"
+msgstr "Mipmap + anizotróp szűrés"
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
@@ -564,25 +1129,21 @@ msgstr "Nincs szűrés"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
-msgstr "Nincs Mipmap"
+msgstr "Nincs mipmap"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Highlighting"
-msgstr "Blokk kiemelés"
+msgstr "Kockák kiemelése"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
-msgstr "Node körvonalazás"
+msgstr "Kockák körvonala"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Nincs"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "Átlátszatlan levelek"
@@ -590,18 +1151,13 @@ msgstr "Átlátszatlan levelek"
msgid "Opaque Water"
msgstr "Átlátszatlan víz"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax Occlusion"
-msgstr "Parallax Occlusion"
-
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Részecskék"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Egyjátékos világ visszaállítása"
+msgid "Screen:"
+msgstr "Képernyő:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -609,7 +1165,15 @@ msgstr "Beállítások"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr "Shaderek"
+msgstr "Árnyalók"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Árnyalók (kísérleti)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Árnyalók (nem elérhető)"
#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
@@ -617,111 +1181,86 @@ msgstr "Egyszerű levelek"
#: builtin/mainmenu/tab_settings.lua
msgid "Smooth Lighting"
-msgstr "Simított megvilágítás"
+msgstr "Lágy megvilágítás"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
msgstr "Textúrázás:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "A shaderek engedélyezéséhez OpenGL driver használata szükséges."
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr ""
+msgstr "Színleképezés"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
msgstr "Érintésküszöb (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr "Tri-lineáris szűrés"
+msgstr "Trilineáris szűrés"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Hullámzó levelek"
+#, fuzzy
+msgid "Very High"
+msgstr "Nagyon magas"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Hullámzó növények"
+msgid "Very Low"
+msgstr "Nagyon alacsony"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Hullámzó víz"
+msgid "Waving Leaves"
+msgstr "Ringatózó lombok"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Igen"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Modok beállítása"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Fő"
+msgid "Waving Liquids"
+msgstr "Hullámzó folyadékok"
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Egyjátékos mód indítása"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Játék"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Egyjátékos"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Nincs elérhető információ"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Textúrapakk kiválasztása:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Ringatózó növények"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Textúra pakkok"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Kapcsolódási hiba (időtúllépés?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Csatlakozási idő lejárt."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Kész!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr "Csomópontok inicializálása"
+msgstr "Kockák előkészítése"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Csomópontok inicializálása..."
+msgstr "Kockák előkészítése…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr "Textúrák betöltése..."
+msgstr "Textúrák betöltése…"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Shaderek újraépítése..."
+msgstr "Árnyalók újraépítése…"
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
-msgstr "Csatlakozási hiba (idő lejárt?)"
+msgstr "Kapcsolódási hiba (időtúllépés?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Nem lehet betölteni, vagy nem található játék \""
+msgid "Could not find or load game: "
+msgstr "Nem található vagy nem betölthető a játék: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
-msgstr "Nem valós játék spec."
+msgstr "Érvénytelen játékmeghatározás."
#: src/client/clientlauncher.cpp
msgid "Main Menu"
@@ -733,76 +1272,191 @@ msgstr "Nincs világ kiválasztva és nincs cím megadva. Nincs mit tenni."
#: src/client/clientlauncher.cpp
msgid "Player name too long."
-msgstr "Túl hosszú játékosnév."
+msgstr "A játékosnév túl hosszú."
#: src/client/clientlauncher.cpp
-msgid "Provided world path doesn't exist: "
-msgstr "A megadott világ útvonala nem létezik: "
+msgid "Please choose a name!"
+msgstr "Válassz egy nevet!"
-#: src/fontengine.cpp
-#, fuzzy
-msgid "needs_fallback_font"
-msgstr "needs_fallback_font"
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "A megadott jelszófájlt nem sikerült megnyitni: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "A megadott útvonalon nem létezik világ: "
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Részletekért tekintsd meg a debug.txt fájlt."
+"A részletekért tekintsd meg a debug.txt fájlt."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Gombok változtatása"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Cím: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Mód: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Port: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Nyilvános: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Szerver neve: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Hiba történt a sorosítás közben:"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Hozzáférés megtagadva. Oka: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Önjárás letiltva"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Önjárás engedélyezve"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Blokkhatárok elrejtve"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Blokkhatárok mutatása minden blokk esetén"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Blokkhatárok mutatása az aktuális blokk esetén"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Közeli blokkok blokkhatárainak megjelenítése"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Kamera frissítés letiltva"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Kamera frissítés engedélyezve"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Blokkhatárok mutatása nem lehetséges ('basic_debug' jogosultság szükséges)"
+
+#: src/client/game.cpp
msgid "Change Password"
-msgstr "Jelszó változtatás"
+msgstr "Jelszó módosítása"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Operatőr mód letiltva"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Operatőr mód engedélyezve"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Kliens lecsatlakozott"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Kliens oldali szkriptek letiltva"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "Csatlakozás a szerverhez..."
+msgstr "Kapcsolódás szerverhez..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Kapcsolat megszakadt ismeretlen okból"
+
+#: src/client/game.cpp
msgid "Continue"
-msgstr "Tovább"
+msgstr "Folytatás"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Irányítás:\n"
+"- %s: mozgás előre\n"
+"- %s: mozgás hátra\n"
+"- %s: mozgás balra\n"
+"- %s: mozgás jobbra\n"
+"- %s: ugrás/mászás\n"
+"- %s: ásás/ütés\n"
+"- %s: letevés/használat\n"
+"- %s: lopakodás/lefelé mászás\n"
+"- %s: tárgy eldobása\n"
+"- %s: felszerelés\n"
+"- Egér: forgás/nézelődés\n"
+"- Egérgörgő: tárgy kiválasztása\n"
+"- %s: csevegés\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Cím feloldása sikertelen: %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr "Kliens létrehozása..."
+msgstr "Kliens létrehozása…"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "Szerver létrehozása..."
+msgstr "Szerver létrehozása…"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Alapértelmezett irányítás:\n"
-"- WASD: Mozgás\n"
-"- Space: Ugrás/Mászás\n"
-"- Shift: Lopakodás/Lefelé\n"
-"- Q: Tárgy eldobása\n"
-"- I: Eszköztár\n"
-"- Egér: Forgás/Nézelődés\n"
-"- Bal-egér: Ásás/Ütés\n"
-"- Jobb-egér: Helyez/Használ\n"
-"- Egér görgő: Tárgy kiválaszt\n"
-"- T: Csevegés\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Hibakereső információ és pofiler elrejtése"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Hibakereső információ engedélyezve"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Hibakereső információk, profilgrafika, hálós rajz rejtett"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -818,516 +1472,823 @@ msgid ""
" --> place single item to slot\n"
msgstr ""
"Alapértelmezett irányítás:\n"
-"Nem látható menü:\n"
-"- egy érintés: gomb aktivál\n"
-"- dupla érintés: helyez/használ\n"
-"- ujj csúsztatás: körbenéz\n"
-"Menü/Eszköztár látható:\n"
-"- dupla érintés (külső):\n"
-" -->bezár\n"
-"- stack, vagy slot érintése:\n"
-" --> stack mozgatás\n"
-"- érint&megfogás, érintés 2. ujjal\n"
-" --> egy elem slotba helyezése\n"
-
-#: src/game.cpp
+"Ha nem látható menü:\n"
+"- egy érintés: gomb aktiválás\n"
+"- dupla érintés: lehelyezés/használat\n"
+"- ujj csúsztatás: körbenézés\n"
+"Ha a Menü/Felszerelés látható:\n"
+"- dupla érintés (kívül):\n"
+" -->bezárás\n"
+"- köteg, vagy hely érintése:\n"
+" --> köteg mozgatás\n"
+"- \"érint&húz\", érintés 2. ujjal\n"
+" --> letesz egyetlen tárgyat a helyre\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Korlátlan látótáv letiltása"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Korlátlan látótáv engedélyezése"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Kliens létrehozása…"
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr "Kilépés a menübe"
+msgstr "Kilépés a főmenübe"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr "Bezárás"
+msgstr "Kilépés a játékból"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr "Elem definíciók..."
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Gyors mód letiltva"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr "KiB/mp"
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Gyors mód engedélyezve"
-#: src/game.cpp
-msgid "Media..."
-msgstr "Média..."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Gyors mód engedélyezve (de nincs jogosultságod)"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr "MiB/mp"
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Repülés letiltva"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Csomópont definíciók..."
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Repülés engedélyezve"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Cím feloldása..."
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Repülés engedélyezve (de nincs jogosultságod)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Újraéledés"
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Köd letiltva"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Leállítás..."
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "köd engedélyezve"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Hangerő"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Játékinformációk:"
-#: src/game.cpp
-msgid "You died."
-msgstr "Meghaltál."
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Játék szüneteltetve"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "Ok"
-
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Belépés "
-
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Folytatás"
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Szerver felállítása"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Használat\" = Lemászás"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Vissza"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Csevegés"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Parancs"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konzol"
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Tárgyak meghatározása…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Az \"ugrás\" gomb duplán a repüléshez"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Eldobás"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Tartalom..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Előre"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Eszköztár"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "A kistérkép letiltva (szerver, vagy mod által)"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Ugrás"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Többjátékos"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "A gomb már használatban van"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Noclip mód letiltva"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"Gombkiosztás. (Ha elfuserálod ezt a menüt, távolíts el néhány dolgot a "
-"minetest.conf-ból)"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Noclip mód engedélyezve"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Bal"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Noclip mód engedélyezve (de nincs jogosultságod)"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Halmok nyomtatása"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Kockák meghatározása…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Látótávolság választása"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Ki"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Jobb"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Be"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Lopakodás"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Pályamozgás mód letiltva"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Váltás \"cinematic\" módba"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Pályamozgás mód engedélyezve"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Gyorsaság bekapcsolása"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profilergrafika megjelenítése"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Repülés bekapcsolása"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Távoli szerver"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Váltás noclip-re"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Cím feloldása…"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Használat"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Leállítás…"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Nagyítás"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Egyjátékos"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "Nyomj meg egy gombot"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Hangerő"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Változtat"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Hang némítva"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "A hangrendszer letiltva"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "A hangrendszer nem támogatott ebben build-ben"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Hang visszahangosítva"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "A szerveren valószínűleg a %s másik verziója fut."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Nem lehet csatlakozni a %s-hoz mivel az IPv6 nincs engedélyezve"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Nem lehet figyelni a %s-t mert az IPv6 nincs engedélyezve"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "látótáv %d1"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "látótáv maximum %d1"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "látótáv minimum %d1"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Hangerő átállítva: %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Drótváz megjelenítése"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Nagyítás letiltva (szerver, vagy mod által)"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ok"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Jelszó megerősítés"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Csevegés elrejtve"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Új jelszó"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Csevegés megjelenítése"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Régi jelszó"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD elrejtése"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Nem egyeznek a jelszavak!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD megjelenítése"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Kilépés"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profiler elrejtése"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Hangerő: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profiler megjelenítése (lap: %d1 ennyiből: %d2)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Alkalmazások"
-#: src/keycode.cpp
-#, fuzzy
-msgid "Attn"
-msgstr "Attn"
-
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Vissza"
-
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Nagybetű"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Törlés"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Vessző"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-#, fuzzy
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Konvertálás"
-
-#: src/keycode.cpp
-#, fuzzy
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Le"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
-msgstr "Vége"
+msgstr "End"
-#: src/keycode.cpp
-#, fuzzy
-msgid "Erase OEF"
-msgstr "Erase OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Kilépés"
-
-#: src/keycode.cpp
-#, fuzzy
-msgid "ExSel"
-msgstr "ExSel"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "EOF törlése"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
-msgstr "Végrehajt"
+msgstr "Végrehajtás"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Befejezés"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Segítség"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
-msgstr "Otthon"
+msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Beilleszt"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Elfogadás"
-#: src/keycode.cpp
-#, fuzzy
-msgid "Junja"
-msgstr "Junjaa"
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME átalakítás"
-#: src/keycode.cpp
-#, fuzzy
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Kilépés"
-#: src/keycode.cpp
-#, fuzzy
-msgid "Kanji"
-msgstr "Kanjii"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME módváltás"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME nem átalakított"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Beszúrás"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Balra"
+
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Bal gomb"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Bal Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Bal menü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Bal Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Bal Windows"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Középső gomb"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Mínusz"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Mód váltás"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Következő"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nem konvertált"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
-msgstr "Numlock"
+msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr "Numerikus bill. *"
+msgstr "Numpad *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr "Numerikus bill. +"
+msgstr "Numpad +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr "Numerikus bill. -"
+msgstr "Numpad -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Numpad ."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr "Numerikus bill. /"
+msgstr "Numpad /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr "Numerikus bill. 0"
+msgstr "Numpad 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr "Numerikus bill. 1"
+msgstr "Numpad 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr "Numerikus bill. 2"
+msgstr "Numpad 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr "Numerikus bill. 3"
+msgstr "Numpad 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr "Numerikus bill. 4"
+msgstr "Numpad 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr "Numerikus bill. 5"
+msgstr "Numpad 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr "Numerikus bill. 6"
+msgstr "Numpad 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr "Numerikus bill. 7"
+msgstr "Numpad 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr "Numerikus bill. 8"
+msgstr "Numpad 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr "Numerikus bill. 9"
+msgstr "Numpad 9"
-#: src/keycode.cpp
-#, fuzzy
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-#, fuzzy
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page Down"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page Up"
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Szünet"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Pont"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plusz"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Játék"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr "Nyomtat"
-
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Elsődleges"
+msgstr "PrintScreen"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Enter"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Jobbra"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Jobb gomb"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Jobb Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Jobb menü"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Jobb Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Jobb Windows"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
-msgstr "ScrollLock"
+msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr "Kiválaszt"
+msgstr "Kiválasztás"
-#: src/keycode.cpp
-#, fuzzy
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Alvás"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Pillanatkép"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Szóköz"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabulátor"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Fel"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X gomb 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X Gomb 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Nagyítás"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Kistérkép letiltva"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimap radar módban, Nagyítás x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Kistérkép terület módban x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Kistérkép textúra módban"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Weblap megnyitása nem sikerült"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Weblap megnyitása"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Folytatás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = lemászás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Önjárás"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Automatikus ugrás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Hátra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Blokkhatárok"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Nézet váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Csevegés"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Parancs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konzol"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Látótáv csökkentése"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Halkítás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Nyomj duplán az „ugrásra” a repülés be-/kikapcsolásához"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Eldobás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Előre"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Látótáv növelése"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Hangosítás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Felszerelés"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Ugrás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "A gomb már használatban van"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Helyi parancs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Némítás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Következő tárgy"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Előző elem"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Látótávolság választása"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Képernyőkép"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Lopakodás"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Csevegésnapló váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Gyors mód váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Repülés váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Köd váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Kistérkép váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Noclip mód váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Pályamozgás mód váltása"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "Nyomj meg egy gombot"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Megváltoztatás"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Új jelszó"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Régi jelszó"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "A jelszavak nem egyeznek!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Kilépés"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Némitva"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Hangerő: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "hu"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Válassz egy nevet!"
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) A virtuális joystick helyének rögzítése.\n"
+"Ha le van tiltva, akkor a kijelző megérintésének kezdőpozíciója lesz a "
+"virtuális joystick középpontja."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Használd a virtuális joystickot az \"Aux1\" gomb működtetéséhez.\n"
+"Ha ez engedélyezve van, akkor a virtuális joystick fő körén kívülre húzáskor "
+"az \"Aux1\" gomb is lenyomódik."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"A fraktál (X,Y,Z) relatív pozíciója a világ közepéhez képest, egységekben "
+"mérve.\n"
+"Használható arra, hogy egy kívánt pontot a (0, 0)-ra tegyünk, hogy "
+"megfelelő\n"
+"játékoskezdőpontot készítsünk, vagy hogy \"rázoomoljunk\" egy kívánt pontra\n"
+"az egység növelése által.\n"
+"Az alapérték úgy lett meghatározva, hogy megfelelő játékoskezdőpontot adjon\n"
+"az alapparaméterekkel generált Mandelbrot-halmazokhoz, de egyéb esetben\n"
+"lehet, hogy meg kell változtatni.\n"
+"Nagyjából -2 és 2 közötti értékek. Kockákban mért pozícióhoz szorzunk az "
+"egységgel."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = parallax occlusion with slope information (gyorsabb).\n"
-"1 = relief mapping (lassabb, pontosabb)."
+"A fraktál (X,Y,Z) méretezési faktora kockatávolságban kifejezve.\n"
+"A fraktál tényleges mérete 2-3-szorosa lesz ennek.\n"
+"Ezek a számok nagyon nagyok is lehetnek, a fraktálnak\n"
+"nem kell elférnie a világban.\n"
+"Növelje meg, hogy \"rázoomoljon\" a fraktál részleteire.\n"
+"Az alapérték egy függőlegesen összenyomott alakot ad, amely\n"
+"szigetekhez alkalmas. Ha a 3 szám egyenlő, a nyers alakot kapjuk."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "2D zaj, amely a hegyvonulatok az alakját/méretét szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "2D zaj, amely a dombok alakját/méretét szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "2D zaj amely szabályozza a lépés hegyek formáját/méretét."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+"2D zaj, amely szabályozza az méretét/előfordulását a sziklás hegyláncoknak."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "2D zaj, amely a dombok méretét/előfordulását szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "2D zaj, amely a lépcsős hegységek méretét/előrordulását szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+"2D zaj, amely a folyóvölgyek és a folyómedrek elhelyezkedését szabályozza."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1338,6 +2299,51 @@ msgid "3D mode"
msgstr "3D mód"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "3D mód parallax hatásának erőssége"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Óriási üregeket meghatározó 3D zaj."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"A hegyek szerkezetét és magasságát meghatározó 3D zaj.\n"
+"A lebegő földek hegyeit is meghatározza."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"A lebegő földek szerkezetét meghatározó 3D zaj.\n"
+"Ha az alapértékekekt megváltoztatják, a zajszintet is át kell állítani\n"
+"(0,7 alapbeállításban), mivel a lebegő földeket vékonyítása akkor a\n"
+"leghatékonyabb, ha ez az érték körülbelül -2,0 és 2,0 közötti."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "A folyókanyonok falainak szerkezetét meghatározó 3D zaj."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3D zaj amely meghatározza a terepet."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"3D zaj a sziklapárkányokhoz, szirtekhez, stb. Általában kisebb változások."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "3D-s zaj, amely meghatározza a tömlöcök számát egy térképdarabkánként."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1346,23 +2352,31 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"3D támogatás.\n"
"Jelenleg támogatott:\n"
-"- none: nincs 3d kimenet.\n"
-"- anaglyph: cián/magenta színű 3d.\n"
-"- interlaced: odd/even line based polarisation screen support.\n"
-"- topbottom: osztott képernyő fent/lent.\n"
-"- sidebyside: osztott képernyő kétoldalt.\n"
-"- pageflip: quadbuffer based 3d."
+"- none: nincs 3d kimenet.\n"
+"- anaglyph: cián/magenta színű 3d.\n"
+"- interlaced: páros/páratlan soralapú polarizációs képernyő támogatás.\n"
+"- topbottom: osztott képernyő fent/lent.\n"
+"- sidebyside: osztott képernyő kétoldalt.\n"
+"- crossview: bandzsítva nézendő 3d\n"
+"- pageflip: quadbuffer alapú 3d.\n"
+"Ne feledje, hogy az interlaced üzemmód, igényli az árnyalók használatát."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
#: 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 ""
-"Egy választott map seed az új térképhez, véletlenszerűhöz hagyd üresen.\n"
+"Egy választott seed az új térképhez, a véletlenszerűhöz hagyd üresen.\n"
"Felül lesz írva új világ létrehozásánál a főmenüben."
#: src/settings_translation_file.cpp
@@ -1374,25 +2388,32 @@ msgid "A message to be displayed to all clients when the server shuts down."
msgstr "Az összes kliensen megjelenített üzenet a szerver leállításakor."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "ABM intervallum"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "ABM időgazdálkodás"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "A várakozó blokkok felbukkanásának határa"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Gyorsulás levegőben"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr "Aktív blokk kezelés időköze"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Gravitációs gyorsulás, kocka/másodperc/másodpercben."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr "Aktív blokk módosító időköze"
+msgid "Active Block Modifiers"
+msgstr "Aktív blokk módosítók"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Aktív blokk módosító időköze"
+msgid "Active block management interval"
+msgstr "Aktív blokk kezelés időköze"
#: src/settings_translation_file.cpp
msgid "Active block range"
@@ -1413,6 +2434,10 @@ msgstr ""
"Megjegyzés: a cím mező a főmenüben felülírja ezt a beállítást."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Részecskéket mutat a kockák ásásakor."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
@@ -1421,95 +2446,229 @@ msgstr ""
"képernyőkhöz."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Az észlelt képsűrűség kiigazítása a felhasználói felület elemeinek "
+"méretezéséhez."
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb fényerő.\n"
-"Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe."
+"A lebegő föld réteg sűrűségét szabályozza.\n"
+"Nagyobb sűrűséghez használjon nagyobb értéket. Lehet pozitív vagy negatív "
+"is.\n"
+"Érték = 0,0: a térfogat 50%-a lebegő föld.\n"
+"Érték = 2,0 (magasabb is lehet az 'mgv7_np_floatland'-től függően, a "
+"biztonság\n"
+"kedvéért mindig próbálja ki) egybefüggő lebegő föld réteget eredményez."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Elemnév hozzáadása"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Haladó"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
+"Módosítja a fénygörbét gamma korrekció hozzáadásával.\n"
+"Magasabb értékek esetén a közepes és alacsony fényszintek világosabbak.\n"
+"Az 1,0-ás érték a fénygörbét érintetlenül hagyja.\n"
+"Csak a nappali és a mesterséges fényt befolyásolja jelentősen,\n"
+"a természetes éjszakai fényre nagyon kis hatása van."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr "Repülés és gyorsaság mindig"
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Állandó repülés és gyors mód"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "Környezeti árnyékolás gamma"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Üzenetek száma / 10 s."
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Felerősíti a völgyeket"
+msgid "Amplifies the valleys."
+msgstr "Erősíti a völgyeket."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
-msgstr "Anizotrópikus szűrés"
+msgstr "Anizotróp szűrés"
#: src/settings_translation_file.cpp
msgid "Announce server"
-msgstr "Szerver kihirdetése"
+msgstr "Szerver hirdetése"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"Kihirdetés a szerverlistára.\n"
-"Ha ki akarod hirdetni az ipv6 címedet, használd ezt: serverlist_url = v6."
-"servers.minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Szerver kihirdetése erre a szerverlistára."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Append item name"
+msgstr "Elemnév hozzáadása"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Elem nevének hozzáadása az eszköztipphez."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Almafa zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Kar tehetetlenség"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
+"A kar tehetetlensége reálisabb mozgást biztosít\n"
+"a karnak, amikor a kamera mozog."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
msgstr "Összeomlás után újracsatlakozás kérése"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
-msgstr "Automatikus bejelentés a szerverlistára."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"Ennél a távolságnál a szerver agresszívan optimalizálja, hogy melyik "
+"blokkokat\n"
+"küldje a klienseknek.\n"
+"Kis értékek valószínűleg sokat javítanak a teljesítményen, látható "
+"megjelenítési\n"
+"hibák árán. (Néhány víz alatti és barlangokban lévő blokk nem jelenik meg,\n"
+"néha a felszínen lévők sem.)\n"
+"Ha ez az érték nagyobb, mint a \"max_block_send_distance\", akkor nincs\n"
+"optimalizáció.\n"
+"A távolság blokkokban értendő (16 kocka)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Önjárás gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Automatikusan felugrik az egy kocka magas akadályokra."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Automatikus bejelentés a szerverlistára."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Képernyőméret megjegyzése"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Automatikus méretezés mód"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1 gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Aux1 gomb a mászáshoz/ereszkedéshez"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Vissza gomb"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Alap terep magassága"
+msgid "Base ground level"
+msgstr "Talajszint"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Alap"
+msgid "Base terrain height."
+msgstr "Az elsődleges terep magassága."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
msgstr "Alap jogosultságok"
#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Tengerpart zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Tengerpart zaj határa"
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
msgstr "Bilineáris szűrés"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Bind address"
-msgstr "Bind Address"
+msgstr "Cím csatolása"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Biom API hőmérséklet- és páratartalom zaj paraméterei"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Biom zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Max blokk küldési távolság"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bit/pixel (vagyis színmélység) teljes képernyős módban."
+msgid "Bold and italic font path"
+msgstr "Félkövér dőlt betűtípus útvonal"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Félkövér dőlt monospace betűtípus útvonal"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Félkövér betűtípus útvonala"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Félkövér betűtípus útvonal"
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1517,108 +2676,191 @@ msgstr "Építés játékos helyére"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Beépített"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Bumpmapping"
-msgstr "Bumpmapping"
+msgid "Camera"
+msgstr "Nézet váltása"
+
+#: src/settings_translation_file.cpp
+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 ""
+"A kamera \"közelségi vágósíkjának\" kockákban mért távolsága 0 és 0,25 "
+"között.\n"
+"Csak GLES platformon működik. A legtöbb felhasználó változatlanul "
+"hagyhatja.\n"
+"Növelése csökkentheti a grafikai hibákat a gyengébb GPU-kon.\n"
+"0,1 = alapértelmezett, 0,25 = jóválasztás gyengébb tabletekhez."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
-msgstr "Kamera simítás"
+msgstr "Kamera stabilizálása"
#: src/settings_translation_file.cpp
msgid "Camera smoothing in cinematic mode"
-msgstr "Kamera simítás \"cinematic\" módban"
+msgstr "Lágy kameramozgás operatőr módban"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
-msgstr "Kamera frissítés váltás gomb"
+msgstr "Kamera frissítés váltása gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Barlang zaj"
#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr ""
+msgstr "1. Barlang zaj"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr ""
+msgstr "2. Barlang zaj"
#: src/settings_translation_file.cpp
msgid "Cave width"
msgstr "Barlang szélesség"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr "1. Barlang zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "2. Barlang zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Üreg korlát"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Üreg zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Üreg vékonyodás"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Üreg küszöb"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Üreg felső korlát"
+
+#: 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 ""
+"A fénygörbe közepének erősítési tartománya.\n"
+"Ahol 0,0 a minimális fényszint, 1,0 a maximális fényszint."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Csevegésparancs üzeneteinek időkorlátja"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Parancsok"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Chat betűméret"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Csevegés gomb"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Csevegés váltás gomb"
+msgid "Chat log level"
+msgstr "Chat napló szintje"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Parancs"
+msgid "Chat message count limit"
+msgstr "Csevegőüzenetek számának korlátozása"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
+msgid "Chat message format"
+msgstr "Üzenet formátum"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Sivatag zajának küszöbe"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "CSevegésüzenet maximális hossza"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Csevegés váltása gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Internetes linkek a csevegésben"
#: src/settings_translation_file.cpp
msgid "Chunk size"
-msgstr "Térképdarab (chunk) mérete"
+msgstr "Térképdarabka (chunk) mérete"
#: src/settings_translation_file.cpp
msgid "Cinematic mode"
-msgstr "Filmkészítő mód"
+msgstr "Operatőr mód"
#: src/settings_translation_file.cpp
msgid "Cinematic mode key"
-msgstr "Filmkészítő mód gomb"
+msgstr "Operatőr mód gomb"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
msgstr "Tiszta átlátszó textúrák"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Kattintható internetes hivatkozások (középső egérkattintás vagy Ctrl+bal "
+"klikk) engedélyezve az elküldött chatüzenetekben."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Kliens"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Kliens és szerver"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Mászás sebessége"
+msgid "Client modding"
+msgstr "Kliens modolás"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Kliens modolási korlátozások"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Felhő magasság"
+msgid "Client side node lookup range restriction"
+msgstr "A kockakeresési távolság kliensoldali korlátozása"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Kliens modolás"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Mászás sebessége"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
-msgstr "Felhő rádiusz"
+msgstr "Felhők sugara"
#: src/settings_translation_file.cpp
msgid "Clouds"
@@ -1626,7 +2868,7 @@ msgstr "Felhők"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr "A felhők egy kliens oldali effekt."
+msgstr "A felhő kliens oldali effektus."
#: src/settings_translation_file.cpp
msgid "Clouds in menu"
@@ -1637,14 +2879,36 @@ msgid "Colored fog"
msgstr "Színezett köd"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "Színezett árnyékok"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"A tartalomtárban elrejtendő jelölők vesszővel tagolt listája.\n"
+"\"nonfree\" használatával elrejthetők azok a csomagok, amelyek nem tartoznak "
+"a\n"
+"\"szabad szoftverek kategóriájába a Free Software Foundation meghatározása "
+"szerint.\n"
+"Megadhatja továbbá a tartalom besorolásait is.\n"
+"Ezek a jelölők függetlenek a Minetest verziótól, ezért nézze meg\n"
+"a teljes listát itt: https://content.minetest.net/help/content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
"Modok vesszővel elválasztott listája, melyeknek engedélyezett HTTP API-k "
"elérése, amik\n"
-"lehetővé teszik, hogy feltöltsenek és letöltsenek adatokat a netről/netre."
+"lehetővé teszik, hogy fel-letöltsenek adatokat a netről - netre."
#: src/settings_translation_file.cpp
msgid ""
@@ -1661,8 +2925,32 @@ msgid "Command key"
msgstr "Parancs gomb"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"A tömörítés foka a térképblokkok lemezre mentéséhez.\n"
+"-1 - alapértelmezett tömörítési fok\n"
+"0 - legkisebb tömörítés, leggyorsabb\n"
+"9 - legjobb tömörítés, leglassabb"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Tömörítés foka a térképblokkok kliensnek küldéséhez.\n"
+"-1 - alapértelmezett tömörítési fok\n"
+"0 - legkisebb tömörítés, leggyorsabb\n"
+"9 - legjobb tömörítés, leglassabb"
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
-msgstr "Üveg csatlakozása"
+msgstr "Üveg összeillesztése"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
@@ -1670,7 +2958,7 @@ msgstr "Csatlakozás külső médiaszerverhez"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr "Üveg csatlakoztatása ha a blokk támogatja."
+msgstr "Üvegfelületek egybeolvasztása, ha a kocka támogatja."
#: src/settings_translation_file.cpp
msgid "Console alpha"
@@ -1681,16 +2969,37 @@ msgid "Console color"
msgstr "Konzol szín"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Konzol gomb"
+msgid "Console height"
+msgstr "Konzol magasság"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Online tartalomtár"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "ContentDB zászló feketelista"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "ContentDB egyidejű letöltések maximális száma"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "ContentDB URL"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
-msgstr "Folyamatos előre"
+msgstr "Önjárás"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Folyamatos mozgás előre (csak tesztelésre használatos)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Az \"Önjárás\" gombbal aktiválható folyamatos előre mozgás.\n"
+"Nyomja meg az \"Önjárás\" vagy a hátrafelé gombot a kikapcsoláshoz."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1699,21 +3008,19 @@ msgstr "Irányítás"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
-"Nap/éjjel ciklus hossza.\n"
-"Példák: 72 = 20 perc, 360 = 4 perc, 1 = 24 óra, 0 = nappal/éjjel/bármelyik "
+"Nappal/éjjel ciklus hosszát határozza meg.\n"
+"Példák:\n"
+"72 = 20 perc, 360 = 4 perc, 1 = 24 óra, 0 = nappal/éjjel/bármelyik "
"változatlan marad."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Sivatagok és tengerpartok mérete a v6 térképgenerátorban.\n"
-"Amikor a havas területek engedélyezve vannak, 'mgv6_freq_desert' figyelmen "
-"kívül hagyva."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
@@ -1724,50 +3031,47 @@ msgid "Controls steepness/height of hills."
msgstr "A dombok meredekségét/magasságát állítja."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
-"A járatok szélességét határozza meg, alacsonyabb érték szélesebb járatokat "
-"hoz létre."
+"A csatornák szélességét irányítja, a kisebb érték szélesebb csatornát hoz "
+"létre.\n"
+"Érték >= 10.0 teljesen kikapcsolja a csatornák generálását és elkerüli az\n"
+"intenzív zajszámítást."
#: src/settings_translation_file.cpp
msgid "Crash message"
msgstr "Üzenet összeomláskor"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Kiszámíthatatlanná teszi a láva viselkedését a barlangokban.\n"
-"Ez megnehezítheti a bányászatot. Nulla érték kikapcsolja. (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Kiszámíthatatlanná teszi a víz viselkedését a barlangokban.\n"
-"Ez megnehezítheti a bányászatot. Nulla érték kikapcsolja. (0-10)"
+msgid "Creative"
+msgstr "Kreatív"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr "Célkereszt alfa"
+msgstr "Célkereszt átlátszóság"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Célkereszt alfa (átlátszatlanság, 0 és 255 között)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Célkereszt átlátszóság (0 és 255 között).\n"
+"Az objektum célkereszt színét is meghatározza."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
msgstr "Célkereszt színe"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Célkereszt színe (R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Sebesség guggoláskor"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+"Célkereszt szín (R,G,B).\n"
+"Az objektum célkereszt színét is állítja"
#: src/settings_translation_file.cpp
msgid "DPI"
@@ -1779,17 +3083,29 @@ msgstr "Sérülés"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr "Hibakereső infó váltás gomb"
+msgstr "Hibakereső információra váltás gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Hibakeresési naplófájl méretküszöbe"
#: src/settings_translation_file.cpp
msgid "Debug log level"
-msgstr "Hibakereső napló szint"
+msgstr "Hibakereső naplózás szintje"
#: src/settings_translation_file.cpp
-msgid "Dedicated server step"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Hangerő csökkentés gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr "Dedikált szerver lépés"
+
+#: src/settings_translation_file.cpp
msgid "Default acceleration"
msgstr "Alapértelmezett gyorsulás"
@@ -1815,27 +3131,88 @@ msgstr "Alap jogosultságok"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Alapértelmezett jelentésformátum"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Alapértelmezett kötegméret"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
+"Árnyékszűrők minőségének beállítása.\n"
+"Lágy árnyék effektus szimulálása PCF vagy Poisson disk eljárással,\n"
+"de egyéb erőforrásokat is használ."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Azokat a területeket adja meg, ahol a fák almát teremnek."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "A homokos tengerpartok területeit határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "A magasabb terep eloszlását, a szirtek meredekségét szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "A magasabb területek eloszlását határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Az üregek teljes méretét adja meg, a kisebb értékek nagyobb üregeket "
+"képeznek."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "A nagy léptékű folyómeder-struktúrát határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Az opcionális hegyek és tavak helyzetét és terepét határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Meghatározza az alap talajszintet."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "A folyómedrek mélységét határozza meg."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
+"A maximális játékos küldési távolság blokkokban megadva (0 = korlátlan)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "A folyómedrek szélességét határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "A folyóvölgy szélességét határozza meg."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Az erdős területeket és a fák sűrűségét szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"A világ modelljének frissítési időköze a klienseken. Ennek a megnövelése\n"
+"lelassítja a frissítéseket,így csökkenti a lassú kliensek szaggatását."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Késleltetés az építés és a blokk elküldése között"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
@@ -1843,69 +3220,78 @@ msgstr "Eszköztippek megjelenítésének késleltetése, ezredmásodpercben meg
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
-msgstr "A mélység, ami alatt nagy terjedelmű barlangokat találsz majd."
+msgstr "Elavult Lua API kezelése"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "A mélység, ami alatt masszív barlangokat találsz majd."
+msgid "Depth below which you'll find giant caverns."
+msgstr "A mélység, ami alatt óriási üregeket találsz majd."
#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Ereszkedés sebessége"
+msgid "Depth below which you'll find large caves."
+msgstr "A mélység, ami alatt nagy barlangokat találsz majd."
#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
-"A szerver leírása, ami a szerverlistában jelenik meg és amikor a játékosok "
+"A szerver leírása, amely a szerverlistában jelenik meg és amikor a játékosok "
"csatlakoznak."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Sivatag zaj küszöbe"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"A terep alakját határozza meg.\n"
-"A 3 szám a zárójelben határozza meg a terep \n"
-"méretarányát, a 3 számnak meg kell egyeznie."
+"Sivatag akkor keletkezik, ha az np_biome meghaladja ezt az értéket.\n"
+"Ha az új biom rendszer engedélyezve van, akkor ez mellőzésre kerül."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Csalás elleni védelem letiltása"
+msgid "Desynchronize block animation"
+msgstr "Blokkanimáció deszinkronizálása"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Dekorációk"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Dig key"
+msgstr "Ásás gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Ásási részecskék"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Csalás elleni védelem letiltása"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Üres jelszavak tiltása"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Képsűrűség méretezési faktor"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
msgstr "A szerver domain neve, ami a szerverlistában megjelenik."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr "Az \"ugrás\" gomb duplán a repüléshez"
+msgstr "Az ugrás gomb dupla megnyomása a repüléshez"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
@@ -1913,19 +3299,78 @@ msgstr "Az ugrás gomb kétszeri megnyomásával lehet repülés módba váltani
#: src/settings_translation_file.cpp
msgid "Drop item key"
-msgstr "Tárgy eldobás gomb"
+msgstr "Tárgy eldobása gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "A térképgenerátor hibakeresési információinak kiírása."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Tömlöc maximális Y magassága"
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dungeon minimum Y"
+msgstr "Tömlöc minimális Y magassága"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Tömlöc zaj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"IPv6 támogatás engedélyezése (a kliens és a szerver számára is).\n"
+"Szükséges, hogy az IPv6 kapcsolatok egyáltalán működjenek."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
msgstr ""
+"Lua modolás támogatás bekapcsolása a kliensen.\n"
+"Ez a támogatás még kísérleti fázisban van, így az API változhat."
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Poisson disk szűrés engedélyezése.\n"
+"Igazra állítás esetén Poisson disk eljárással képez lágy árnyékokat. "
+"Különben a PCF szűrőt használja."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
+"Színes árnyékok engedélyezése.\n"
+"Igaz érték esetén az áttettsző kockák színes árnyékot vetnek. "
+"Erőforrásigényes."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Konzolablak engedélyezése"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Kreatív mód engedélyezése az összes játékos számára"
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "VBO engedélyez"
+msgid "Enable joysticks"
+msgstr "Joystick engedélyezése"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "A mod csatornák támogatásának engedélyezése."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1938,16 +3383,22 @@ msgstr "Játékosok sérülésének és halálának engedélyezése."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
msgstr ""
+"Véletlenszerű felhasználói bemenet engedélyezése (csak teszteléshez "
+"használható)."
#: src/settings_translation_file.cpp
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
-"A simított megvilágítás engedélyezése egyszerű ambient occlusion-nel.\n"
+"A lágy megvilágítás engedélyezése egyszerű környezeti árnyékolással.\n"
"A sebesség érdekében vagy másféle kinézetért kikapcsolhatod."
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1974,94 +3425,131 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"IPv6 szerver futtatásának engedélyezése/letiltása. Egy IPv6 szerver "
-"lehetséges, hogy\n"
-"IPv6 kliensekre van korlátozva, a rendszer konfigurációtól függően.\n"
-"Nincs figyelembe véve, ha bind_address van beállítva."
+"Vertex buffer objektumok engedélyezése.\n"
+"Ez nagyban javíthatja a grafikus teljesítményt."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Az eszköztár elemeinek animációjának engedélyezése."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Bekapcsolja a fejbillegést és beállítja a mértékét.\n"
+"Pl: 0 nincs fejmozgás; 1.0 alapértelmezett fejmozgás van; 2.0 dupla "
+"fejmozgás van."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"IPv6 szerver futtatásának engedélyezése/letiltása.\n"
+"Nincs figyelembe véve, ha bind_address van beállítva.\n"
+"Szükséges hozzá, hogy az ipv6 engedélyezve legyen."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+"Engedélyezi Hable 'Uncharted 2' színtónusleképezését.\n"
+"A fotófilmek színgörbéjét szimulálja és utánozza a nagy dinamikatartományú\n"
+"képi megjelenést. A közepző színtartomány kontrasztját kissé\n"
+"erősíti, a világosabb és sötétebb részeket fokozatosan tömöríti."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr ""
+msgid "Enables animation of inventory items."
+msgstr "Az felszerelésben lévő tárgyak animációjának engedélyezése."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Az elforgatott hálók irányának gyorsítótárazásának engedélyezése."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr "Minitérkép engedélyezése."
+msgstr "Engedélyezi a kistérképet."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
+"Engedélyezi a hangrendszert.\n"
+"Ha ki van kapcsolva, teljesen kikapcsol minden hangot és a játék "
+"hangvezérlői\n"
+"nem fognak működni.\n"
+"Ennek a beállításnak a megváltoztatása a játék újraindítását igényli."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
+"Engedélyez olyan kompromisszimus megoldásokat, amelyek csökkentik a CPU "
+"terhelését vagy\n"
+"növelik a renderelési teljesítményt kisebb vizuális hibák árán, amelyek nem "
+"befolyásolják a játszhatóságot."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Völgyek profilja"
#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "Játékmotor profiler adatok kiírási időköze"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Entitás metódusok"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Kísérleti opció, látható rések jelenhetnek meg a blokkok között\n"
-"ha nagyobbra van állítva, mint 0."
-
-#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS a szünet menüben"
+"A lebegő földek vékonyításának kitevője. A vékonyítás módján változtat.\n"
+"Érték = 1,0 egyeneletes, lineáris vékonyítás.\n"
+"Értékek > 1,0 az alapértelmezett különálló lebegő földekhez illő könnyed\n"
+"vékonyítás.\n"
+"Értékek < 1,0 (például 0,25) határozottab felszínt képez laposabb "
+"alföldekkel,\n"
+"egybefüggű lebegő föld réteghez használható."
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr ""
+msgid "FPS when unfocused or paused"
+msgstr "FPS, amikor a játék meg van állítva, vagy nincs fókuszban"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Tartalék betűtípus"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Tartalék betűtípus árnyék"
+msgid "Factor noise"
+msgstr "Tényezőzaj"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Tartalék betűtípus árnyék alfa"
+msgid "Fall bobbing factor"
+msgstr "Leesés utáni fejrázkódási tényező"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Tartalék betűtípus méret"
+msgid "Fallback font path"
+msgstr "Tartalék betűtípus útvonala"
#: src/settings_translation_file.cpp
msgid "Fast key"
@@ -2081,65 +3569,109 @@ msgstr "Gyors mozgás"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Gyors mozgás (a használat gombbal).\n"
-"Szükséges hozzá a \"fast\" (gyorsaság) jogosultság a szerveren."
+"Gyors mozgás (az \"Aux1\" gombbal).\n"
+"Szükséges hozzá a gyors mód jogosultság a szerveren."
#: src/settings_translation_file.cpp
msgid "Field of view"
msgstr "Látótávolság"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "Látótávolság"
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr "Látóterület fokokban."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
-msgstr ""
-"Gyors mozgás (a használat gombbal).\n"
-"Szükséges hozzá a \"fast\" (gyorsaság) jogosultság a szerveren."
-
-#: src/settings_translation_file.cpp
msgid ""
"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"the\n"
+"Multiplayer Tab."
msgstr ""
"A client/serverlist/ mappában lévő fájl, ami tartalmazza a kedvenc "
-"szervereket, amik a Többjátékos fül alatt jelennek meg."
+"szervereidet,\n"
+"amik a Többjátékos fül alatt jelennek meg."
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+msgid "Filler depth"
+msgstr "A kitöltőanyag mélysége"
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr "Kitöltőanyag mélység zaj"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Filmes színhatás"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+"A szűrt textúrák vegyíthetik a teljesen átlátszó szomszédokkal rendelkező "
+"RGB értékeket,\n"
+"amit a PNG optimalizálók általában figyelmen kívül hagynak, és ez gyakran "
+"sötét vagy\n"
+"világos élekhez vezet az átlátszó textúráknál. Használjon szűrőt ezeknek a "
+"textúra betöltésekor\n"
+"történő eltüntetésére. Ez automatikusan bekapcsol, ha a mipmapping be van "
+"kapcsolva."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Élsimítás:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"Az első a négy 2D zajból, amelyek együttesen meghatározzák a dombságok/"
+"hegységek magasságát."
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Szűrés"
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+"Az első a két 3D zajból, amelyek együttesen meghatározzák az alagutakat."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
-msgstr ""
+msgstr "Fix térkép seed"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Rögzített virtuális joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Lebegő földek sűrűsége"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Lebegő földek maximális Y magassága"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Lebegő földek minimális Y magassága"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Lebegő földek zaja"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "A lebegő földek kúpkitevője"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "A lebegő földek kúpjainak távolsága"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Lebegő földek vízszintje"
#: src/settings_translation_file.cpp
msgid "Fly key"
@@ -2154,12 +3686,25 @@ msgid "Fog"
msgstr "Köd"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Köd indulás"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
-msgstr "Köd váltás gomb"
+msgstr "Köd váltása gomb"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Betűtípus helye"
+#, fuzzy
+msgid "Font"
+msgstr "Betűtípus mérete"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Félkövér betűtípus alapértelmezetten"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Dőlt betűtípus alapértelmezetten"
#: src/settings_translation_file.cpp
msgid "Font shadow"
@@ -2167,31 +3712,120 @@ msgstr "Betűtípus árnyéka"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
-msgstr "Betűtípus árnyék alfa"
+msgstr "Betűtípus árnyék átlátszósága"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
-msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)."
+msgid "Font size"
+msgstr "Betűtípus mérete"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
-msgstr "Betűtípus árnyék eltolás, ha 0, akkor nem lesz árnyék rajzolva."
+msgid "Font size divisible by"
+msgstr "Betűméret osztója"
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Betűtípus mérete"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+"Az alapértelmezett betűtípus betűmérete, ahol 1 egység = 1 pixel 96 DPI "
+"esetén"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+"A monospace betűtípus betűmérete, ahol 1 egység = 1 pixel 96 DPI esetén"
+
+#: 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 ""
+"A legutóbbi csevegésszövegek és üzenetek betűmérete pontban (pt).\n"
+"0 érték esetén az alapértelmezett betűméretet fogja használni."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"A pixeles stílusú betűtípusokhoz, amelyek nem méretezhetők olyan jól, ez "
+"biztosítja, hogy a használt\n"
+"betűméretek az ilyen betűtípus esetén mindig oszthatók legyenek ezzel az "
+"értékkel, pixelben. Például\n"
+"egy 16 pixel magas pixeles stílusú betűtípus esetén ezt 16-ra kell állítani, "
+"ezáltal csak 16, 32, 48 stb.\n"
+"lesz használható, ezért ha egy mod 25-ös méretet igényel, 32-est fog kapni."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"A játékos csevegési üzeneteinek formátuma. A következő karakterláncok "
+"érvényesek:\n"
+"@név, @üzenet, @időbélyeg (opcionális)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
msgstr "Képernyőmentések formátuma."
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Formspec panelek alapértelmezett háttérszíne"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Formspec panelek hátterének alapértelmezett átlátszósága"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Teljes képernyős Formspec panelek háttérszíne"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Teljes képernyős Formspec panelek hátterének átlátszósága"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Formspec panelek alapértelmezett háttérszíne (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+"Játékon belüli kezelőpanelek hátterének alfája (átlátszatlanság, 0 és 255 "
+"között)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+"Játékon belüli teljes képrenyős kezelőpanelek hátterének színe (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+"Játékon belüli csevegő konzol hátterének átlátszósága (0 és 255 között)."
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Előre gomb"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "Freetype betűtípusok"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"A negyedik a négy 2D zajból, amelyek együttesen meghatározzák a dombságok/"
+"hegységek magasságát."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Fraktál típusa"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "A látótávolságnak az a része, amelynél a köd renderelése kezdődik"
#: src/settings_translation_file.cpp
msgid ""
@@ -2199,31 +3833,37 @@ msgid ""
"nodes)."
msgstr ""
"Milyen távolságból generálódnak a blokkok a kliensek számára, "
-"térképblokkokban megadva (16 blokk)."
+"térképblokkokban megadva (16 kocka)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
"Milyen távolságból lesznek elküldve a blokkok a kliens számára, "
-"térképblokkokban megadva (16 blokk)."
+"térképblokkokban megadva (16 kocka)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
-"Milyen távolságból szereznek tudomást az objektumokról a kliensek, "
-"térképblokkokban megadva (16 blokk)."
+"Mekkora távolságból észleljék a kliensek az objektumokat, térképblokkokban "
+"mérve (16 kocka).\n"
+"\n"
+"Ha nagyobbra van állítva, mint az active_block_range, akkor a szervert arra "
+"kényszeríti, hogy\n"
+"az aktív objektumokat betöltve tartsa eddig a távolságig a játékos "
+"tekintetének irányában.\n"
+"(Ez megakadályozza, hogy a mobok hirtelen eltűnjenek a látómezőből)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Teljes képernyő"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "Teljes képernyő BPP"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Teljes képernyős mód."
@@ -2240,62 +3880,105 @@ msgid "GUI scaling filter txr2img"
msgstr "Felhasználói felület méretarány szűrő txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "Általános"
+#, fuzzy
+msgid "Gamepads"
+msgstr "Játékok"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Normálfelületek generálása"
+msgid "General"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Globális visszatérések"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+"Globális térképgenerálási jellemzők.\n"
+"A Mapgen v6 térképgenerátorban a 'decorations' jelző szabályozza az összes "
+"dekorációt,\n"
+"kivéve a fákat és a dzsungelfüvet, a többi térképgenerátornál pedig az "
+"összeset."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"A fénygörbe gradiense a legmagasabb fényszinten.\n"
+"A legmagasabb fényszintek kontrasztrját szabályozza."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
-"Térkép generálási jellemzők csak a Flat (lapos) térképgenerátor esetében.\n"
-"Esetenkénti tavak és dombok generálása a lapos világba.\n"
-"The default flags set in the engine are: none\n"
-"The flags string modifies the engine defaults.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with \"no\" are used to explicitly disable them."
+"A fénygörbe gradiense a legalacsonyabb fényszinten.\n"
+"A legalacsonyabb fényszintek kontrasztrját szabályozza."
#: src/settings_translation_file.cpp
msgid "Graphics"
msgstr "Grafika"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravitáció"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
+msgstr "Talajszint"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Talaj zaj"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
msgstr "HTTP Modok"
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Felhasználói felület méretaránya"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr "HUD váltás gomb"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
+"Az elavult Lua API hívások kezelése:\n"
+"-none: ne naplózza az elavult hívásokat\n"
+"-log: elavult hívás utánozása és naplózása (alapértelmezett).\n"
+"-error: megszakítja az elavult hívás használatát (javasolt a "
+"modfejlesztőknek)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2305,46 +3988,269 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Hagyja, hogy a profiler behangolja magát:\n"
+"* Üres függvény behangolása.\n"
+"Ezáltal mérhető, hogy a hangolás maga mennyi időbe telik (+1 "
+"függvényhívás).\n"
+"* A mintavevő hangolása a mutatószámok frissítésehez."
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr "Hőkeverési zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Hőzaj"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"A kezdőablak magassága. Teljes képernyős módban nem kerül figyelmbe vételre."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr "A kezdeti ablak méret magasság összetevője."
+msgid "Height noise"
+msgstr "Magasság zaj"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr "A felhők megjelenésének magassága."
+msgid "Height select noise"
+msgstr "A magasságot kiválasztó zaj"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "Nagy pontosságú FPU"
+msgid "Hill steepness"
+msgstr "Domb meredekség"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Domb küszöb"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "1. dombosság zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "2. dombosság zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "3. dombosság zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "4. dombosság zaj"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
msgstr "A szerver honlapja, ami a szerverlistában megjelenik."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
-msgstr "Milyen mélyek legyenek a folyók"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Vízszintes gyorsulás a levegőben ugráskor vagy leeséskor,\n"
+"kocka/másodperc/másodpercben."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Vízszintes és függőleges gyorsulás gyors módban,\n"
+"kocka/másodperc/másodpercben."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+"Vízszintes és függőleges gyorsulás a földön, vagy mászáskor,\n"
+"kocka/másodperc/másodpercben."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Gyorselérési sáv következő gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Gyorselérési sáv előző gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Gyorselérési sáv 1-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Gyorselérési sáv 10-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Gyorselérési sáv 11-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Gyorselérési sáv 12-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Gyorselérési sáv 13-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Gyorselérési sáv 14-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Gyorselérési sáv 15-ös hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Gyorselérési sáv 16-os hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Gyorselérési sáv 17-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Gyorselérési sáv 18-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Gyorselérési sáv 19-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Gyorselérési sáv 2-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Gyorselérési sáv 20-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Gyorselérési sáv 21-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Gyorselérési sáv 22-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Gyorselérési sáv 23-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Gyorselérési sáv 24-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Gyorselérési sáv 25-ös hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Gyorselérési sáv 26-os hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Gyorselérési sáv 27-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Gyorselérési sáv 28-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Gyorselérési sáv 29-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Gyorselérési sáv 3-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Gyorselérési sáv 30-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Gyorselérési sáv 31-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Gyorselérési sáv 32-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Gyorselérési sáv 4-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Gyorselérési sáv 5-ös hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Gyorselérési sáv 6-os hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Gyorselérési sáv 7-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Gyorselérési sáv 8-as hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Gyorselérési sáv 9-es hely gomb"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "A folyók mélysége."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Milyen gyorsan mozognak a folyadékhullámok. Magasabb = gyorsabb.\n"
+"Ha negatív, a folyadékhullámok hátrafelé mozognak.\n"
+"Engedélyezni kell a hullámzó folyadékokat hozzá."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
-"Mennyi ideig vár a szerver, mielőtt betöltetlenné teszi a nem használt "
+"Mennyi ideig vár a szerver, mielőtt eltávolítja a memóriából a nem használt "
"térképblokkokat.\n"
-"Magasabb érték egyenletesebb, de több RAM-ot használ."
+"Magasabb érték stabilabb, de több RAM-ot használ."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Csökkentse ezt hogy megnövelje a folyadék ellenállását."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "A folyók szélessége."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Páratartalom keverés zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Páratartalom zaj"
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr "Milyen szélesek legyenek a folyók"
+msgid "Humidity variation for biomes."
+msgstr "Páratartalom-változékonyság a biomokban."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2355,10 +4261,6 @@ msgid "IPv6 server"
msgstr "IPv6 szerver"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "IPv6 támogatás."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
@@ -2368,12 +4270,24 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
-"Ha le van tiltva, a használat (use) gomb lesz használatban a gyors "
-"repüléshez,\n"
-"ha a repülés és a gyors mód is engedélyezve van."
+"Ha le van tiltva, az \"Aux1\" gombbal lehet gyorsan repülni, ha a repülés és "
+"a gyors mód is engedélyezve van."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Ha engedélyezve, a szerver kiválogatja a takarásban lévő térképblokkokat\n"
+"a játékos szemszögének megfelelően. Ezáltal a kliensnek küldött blokkok\n"
+"száma 50-80%-kal csökkenthető. A klines nem kapja ezentúl a legtöbb nem\n"
+"látható blokkot, emiatt a noclip mód (falonátjárás) kevésbé lesz használható."
#: src/settings_translation_file.cpp
msgid ""
@@ -2381,23 +4295,36 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
-"Ha engedélyezve van együtt a repülés (fly) móddal, a játékos átrepülhet "
-"szilárd\n"
-"blokkokon. Szükséges hozzá a \"noclip\" jogosultság a szerveren."
+"Ha a repülés móddal együtt van engedélyezve, a játékos átrepülhet szilárd\n"
+"kockákon. Szükséges hozzá a noclip jogosultság a szerveren."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
-"Ha engedélyezve van, a \"használat\" (use) gomb lesz használatban a "
-"\"lopakodás\" (sneak) helyett lefelé mászáskor, vagy ereszkedéskor."
+"Ha engedélyezve van, az \"Aux1\" gombbal lehet lefelé mászni vagy "
+"leereszkedni a \"Lopakodás\" gomb helyett."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Ha be van kapcsolva, a regisztráció megerősítését kéri, amikor csatlakozik "
+"egy szerverhez.\n"
+"Ha ki van kapcsolva, az új fiók automatikusan regisztrálásra kerül."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Ha engedélyezve van, akkor a műveletek rögzülnek a visszavonhatóság "
+"érdekében.\n"
+"Ez az opció csak akkor van beolvasva, amikor a szerver elindul."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
@@ -2413,7 +4340,18 @@ msgstr ""
"Csak akkor engedélyezd, ha tudod, hogy mit csinálsz."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Ha engedélyezve van, a játékos abba az irányba megy, amerre néz, amikor "
+"úszik vagy repül."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr "Ha engedélyezve van, új játékosok nem csatlakozhatnak jelszó nélkül."
#: src/settings_translation_file.cpp
@@ -2422,11 +4360,43 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
-"Ha engedélyezve van, elhelyezhetsz blokkokat oda, ahol állsz (láb + "
+"Ha engedélyezve van, lehelyezhetsz kockákat oda, ahol állsz (láb + "
"szemmagasság).\n"
"Ez segít, ha kis területen dolgozol."
#: src/settings_translation_file.cpp
+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 ""
+"Ha a CSM-korlátozás be van kapcsolva az aktív kockák távolságára, akkor a "
+"get_node\n"
+"hívások korlátozva lesznek a játékostól e távolságon belül található "
+"kockákra."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Ha egy parancs végrehajtása tovább tart, mint az itt másodpercben megadott "
+"idő,\n"
+"az időadatok hozzá lesznek fűzve a parancs visszajelző üzenetéhez"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ha a debug.txt fájlmérete megabájtban meghaladja megnyitáskor az itt \n"
+"megadott számot, a fájl átnevezésre kerül debug.txt.1-re,\n"
+"és ha létezett egy régebbi debug.txt.1, az törlésre kerül.\n"
+"A debug.txt csak akkor lesz átnevezve, ha ez a beállítás engedélyzve van."
+
+#: src/settings_translation_file.cpp
msgid "If this is set, players will always (re)spawn at the given position."
msgstr ""
"Ha be van állítva, a játékosok mindig a megadott pozícióban élednek újra (és "
@@ -2434,55 +4404,66 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Ignore world errors"
-msgstr "Világ hibák figyelmen kívül hagyása"
-
-#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "Játékon belül"
+msgstr "Világhibák figyelmen kívül hagyása"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
-"Játékon belüli csevegő konzol hátterének alfája (átlátszatlanság, 0 és 255 "
-"között)."
+"Játékon belüli csevegő konzol hátterének átlátszósága (0 és 255 között)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
msgstr "Játékon belüli csevegő konzol hátterének színe (R,G,B)."
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+"Játékon belüli csevegéskonzol magassága 0,1 (10%) és 1,0 (100%) között."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Hangerő növelése gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Kezdeti függőleges sebesség ugráskor, kocka/másodpercben."
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Beépülő behangolása.\n"
+"Erre általában csak a játékmotor vagy a beépülők készítésében "
+"közreműködőknek van szükségük"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "Csevegésparancsok behangolása regisztrációkor."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"A globális callback függvények behangolása regisztrációkor.\n"
+"(bármi, amit átadsz egy minetest.register_*() függvénynek)"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Az aktív blokk módosítók akciófüggvényének behangolása regisztrációkor."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"A betöltendő blokk módosítók akciófüggvényének behangolása regisztrációkor."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Az entitások metódusainak hangolása regisztrációkor."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
@@ -2490,73 +4471,140 @@ msgstr ""
"Fontos változások mentésének időköze a világban, másodpercekben megadva."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "A napszak kliensnek való küldésének gyakorisága."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr "Eszköztár elemek animációi"
+msgstr "Felszerelésben lévő tárgyak animációi"
#: src/settings_translation_file.cpp
msgid "Inventory key"
-msgstr "Eszköztár gomb"
+msgstr "Felszerelés gomb"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr "Egér invertálása"
+msgstr "Egér megfordítása"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr "Függőleges egérmozgás invertálása."
+msgstr "Függőleges egérmozgás megfordítása."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Dőlt betűtípus útvonala"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Dőlt monospace betűtípus útvonala"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Elem entitás TTL"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Ismétlések"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+"A rekurzív függvény ismétlései.\n"
+"Ennek növelése növeli a finom részletek mennyiségét és\n"
+"növeli a feldolgozási terhelést.\n"
+" 20 ismétlésnél ez a térképgeneráló hasonló terheléssel rendelkezik, mint a "
+"V7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "Joystick ID"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick button repetition interval"
-msgstr "Jobb kattintás ismétlés időköz"
+msgstr "Joystick gomb ismétlési időköze"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Joystick holttér"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick frustum sensitivity"
-msgstr "Egér érzékenység"
+msgstr "Joystick látómező-érzékenység"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Joystick típusa"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Julia-halmaz.\n"
+"W komponens hiperkomplex állandó.\n"
+"Megváltoztatja a fraktál alakját.\n"
+"Nincs hatása a 3D Fraktálokra.\n"
+"Tartomány nagyjából -2 és 2 között."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Julia-halmaz.\n"
+"X komponens hiperkomplex állandó.\n"
+"Megváltoztatja a fraktál alakját.\n"
+"Tartomány nagyjából -2 és 2 között."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Julia-halmaz.\n"
+"Y komponens hiperkomplex állandó.\n"
+"Megváltoztatja a fraktál alakját.\n"
+"Tartomány nagyjából -2 és 2 között."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Csak Julia-halmaz.\n"
+"Hiperkomplex állandó Z összetevője.\n"
+"Megváltoztatja a fraktál alakját.\n"
+"Tartomány nagyjából -2 és 2 között."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "Julia W"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "Júlia X"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Júlia Y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Júlia Z"
#: src/settings_translation_file.cpp
msgid "Jump key"
@@ -2578,6 +4626,26 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a hangerő csökkentéséhez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb az ásáshoz.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2598,11 +4666,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a hangerő növeléséhez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Ugrás gombja.\n"
+"Gomb az ugráshoz.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2612,17 +4690,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a gyors mozgáshoz gyors (fast) módban.\n"
+"Gomb a gyors mozgáshoz gyors módban.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
"Gomb a játékos hátrafelé mozgásához.\n"
+"Kikapcsolja az önjárást is, ha aktív.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2633,7 +4713,7 @@ msgid ""
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
"Gomb a játékos előre mozgásához.\n"
-"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
@@ -2658,11 +4738,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a csevegő konzol megnyitásához.\n"
+"Gomb a játék némításához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2672,7 +4752,17 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a csevegő ablak megnyitásához, parancsok beírásához.\n"
+"Gomb a csevegőablak megnyitásához, parancsok beírásához.\n"
+"Lásd: //irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a csevegőablak megnyitásához, helyi parancsok beírásához.\n"
"Lásd: //irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2682,7 +4772,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a csevegő ablak megnyitásához.\n"
+"Gomb a csevegőablak megnyitásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2692,725 +4782,972 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb az Eszköztár megnyitásához.\n"
+"Gomb a felszerelés megnyitásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a lehelyezéshez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a lopakodáshoz (sneak).\n"
-"A lefelé mászáshoz és vízben történő ereszkedéshez is használt, ha a "
-"aux1_descends le van tiltva.\n"
+"Gomb a 11. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a belső és külső nézetű kamera váltáshoz.\n"
+"Gomb a 12. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb képernyőfelvétel készítéshez.\n"
+"Gomb a 13. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a gyors (fast) módra váltáshoz.\n"
+"Gomb a 14. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a \"cinematic\" mód (filmkészítés) bekapcsolásához.\n"
+"Gomb a 15. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a minitérkép megjelenítéséhez.\n"
+"Gomb a 16. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a gyors (fast) módra váltáshoz.\n"
+"Gomb a 17. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a repülés (fly) módra váltáshoz.\n"
+"Gomb a 18. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a noclip módra váltáshoz.\n"
+"Gomb a 19. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a kamerafrissítés bekapcsolásához. Csak fejlesztők számára.\n"
+"Gomb a 20. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a hibakeresési infók megjelenítéséhez.\n"
+"Gomb a 21. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a HUD megjelenítéséhez/kikapcsolásához.\n"
+"Gomb a 22. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a csevegő megjelenítéséhez.\n"
+"Gomb a 23. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a köd megjelenítésének ki/bekapcsolásához.\n"
+"Gomb a 24. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 25. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Gomb a végtelen látóterület bekapcsolásához.\n"
+"Gomb a 26. eszköztárhely kiválasztásához.\n"
"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "Gomb használat a mászás/ereszkedéshez"
-
-#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Nyelv"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 27. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
-msgstr "Nagy barlang mélység"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 28. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
-msgstr "Láva jellemzők"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 29. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
-msgstr "Levelek stílusa"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 30. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Levelek stílusa:\n"
-"- Szép (Fancy): minden oldal látható\n"
-"- Egyszerű (Simple): csak a külső oldalak láthatók, if defined "
-"special_tiles are used\n"
-"- Átlátszatlan (Opaque): átlátszóság kikapcsolása"
+"Gomb a 31. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Bal gomb"
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 32. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 8. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 5. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 1. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 4. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a következő elem kiválasztásához az eszköztárban.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 9. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb az előző elem kiválasztásához az eszköztárban.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
-msgstr "Folyadék folyékonysága"
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 2. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
-msgstr "Folyadék folyékonyságának simítása"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 7. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 6. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a 10. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
-msgstr "Folyadék süllyedés"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a 3. eszköztárhely kiválasztásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a lopakodáshoz.\n"
+"A lefelé mászáshoz és vízben történő ereszkedéshez is ezt lehet használni, "
+"ha az aux1_descends le van tiltva.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a belső és külső nézetre váltáshoz.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb képernyőkép készítéshez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb az automatikus előrehaladás bekapcsolásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Aktív blokk módosító időköze"
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb az operatőr mód kapcsolgatásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
-msgstr "Főmenü játék kezelő"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a kistérkép váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Főmenü mod kezelő"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a gyors mód váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Főmenü script"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a repülés mód váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"A köd és ég színe függjön a napszaktól (hajnal/naplemente) és a látószögtől."
+"Gomb a noclip mód váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Lehetővé teszi, hogy a DriectX működjön a LuaJIT-tel. Tiltsd le, ha "
-"problémákat okoz."
+"Gomb pályamozgás mód váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
-msgstr "Térkép mappája"
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a kamerafrissítés váltásához. Csak fejlesztők számára.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Térkép generálási jellemzők a Mapgen Valleys esetében.\n"
-"Az 'altitude_chill' a magasabb helyeket hűvösebbé teszi, ami biome "
-"problémákat okozhat.\n"
-"A 'humid_rivers' a folyók környéki páratartalmat módosítja, és ott, ahol "
-"medencék alakulnak ki,\n"
-"ütközhet a finoman beállított biome-okkal.\n"
-"The default flags set in the engine are: altitude_chill, humid_rivers\n"
-"The flags string modifies the engine defaults.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a csevegés megjelenítéséhez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: 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.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Térkép generálási jellemzők csak a Flat (lapos) térképgenerátor esetében.\n"
-"Esetenkénti tavak és dombok generálása a lapos világba.\n"
-"The default flags set in the engine are: none\n"
-"The flags string modifies the engine defaults.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with \"no\" are used to explicitly disable them."
+"Gomb a hibakeresési információ megjelenítéséhez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Térképgenerálási jellemzők csak a v6 térképgenerátor esetében.\n"
-"When snowbiomes are enabled jungles are enabled and the jungles flag is "
-"ignored.\n"
-"The default flags set in the engine are: biomeblend, mudflow\n"
-"The flags string modifies the engine defaults.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with \"no\" are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a köd váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Térkép generálási jellemzők csak a Flat (lapos) térképgenerátor esetében.\n"
-"Esetenkénti tavak és dombok generálása a lapos világba.\n"
-"The default flags set in the engine are: none\n"
-"The flags string modifies the engine defaults.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with \"no\" are used to explicitly disable them."
+"Gomb a HUD váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
-msgstr "Térkép generálási korlát"
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a nagy csevegéskonzol megjelenítéséhez.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
-msgstr "Térkép mentésének időköze"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"A profiler kijelzőjének kapcsológombja. Fejlesztéshez használatos.\n"
+"Lásd http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
-msgstr "Térképblokk korlát"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Gomb a végtelen látóterület váltásához.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Gomb a nagyításhoz amikor lehetséges.\n"
+"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Valleys térképgenerátor"
+msgid "Keyboard and Mouse"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
+"Azon játékosok kirúgása, akik 10 másodpercenként több mint X üzenetet "
+"küldtek."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Tó meredekség"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Tó küszöb"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Térkép generátor hibakereső"
+msgid "Language"
+msgstr "Nyelv"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr ""
+msgid "Large cave depth"
+msgstr "Nagy barlang mélység"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "Flat (lapos) térképgenerátor"
+msgid "Large cave maximum number"
+msgstr "Nagy barlangok maximális száma"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
-msgstr "Flat (lapos) térképgenerátor barlang szélesség"
+msgid "Large cave minimum number"
+msgstr "Nagy barlangok minimális száma"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large cave proportion flooded"
+msgstr "A nagy barlangok egy része elárasztott"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Nagy csevegéskonzol gomb"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Levelek stílusa"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Levelek stílusa:\n"
+"- fancy: (szép) minden oldal látható\n"
+"- simple: (egyszerű) csak a külső oldalak láthatók, a special_tiles-t "
+"használja, ha meg van adva\n"
+"- opaque: (átlátszatlan) átlátszóság kikapcsolása"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
-msgstr "Flat (lapos) térképgenerátor talaj szint"
+msgid "Left key"
+msgstr "Bal gomb"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr "Flat (lapos) térképgenerátor domb meredekség"
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"A szerver órajelének hossza és az az intervallum, amely alatt az "
+"objektumokat általánosan\n"
+"frissíti a hálózaton."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr "Flat (lapos) térképgenerátor domb küszöb"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Folyadékhullámok hossza.\n"
+"A hullámzó folyadékok engedélyezése szükséges hozzá."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr "Flat (lapos) térképgenerátor tó meredekség"
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Az Aktív Blokk módosító (ABM) végrehajtási ciklusok közötti időtartam"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr "Flat (lapos) térképgenerátor tó küszöb"
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Két NodeTimer végrehajtás között eltelt idő"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr "Flat (lapos) térképgenerátor nagy barlang mélység"
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Két aktív blokk kezelési fázis között eltelt idő"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"A debug.txt fájlba írandó naplózási szint:\n"
+"-semmi (nincs naplózás)\n"
+"-minimális (szint nélküli üzenetek)\n"
+"-hiba\n"
+"-figyelmeztetés\n"
+"-művelet\n"
+"-információ\n"
+"-fecsegő"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "Fractal térképgenerátor"
+msgid "Light curve boost"
+msgstr "Fénygörbe kiemelés"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
-msgstr "Fractal térképgenerátor barlang szélesség"
+msgid "Light curve boost center"
+msgstr "Fénygörbe kiemelés középpontja"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve boost spread"
+msgstr "Fénygörbe kiemelés kiterjedése"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "Fénygörbe kiemelés gammája"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "A fénygörbe tetejének gradiense"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+msgid "Light curve low gradient"
+msgstr "A fénygörbe aljának gradiense"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Lágy megvilágítás"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"A térképgenerálás határa, kockákban, mind a 6 irányban a (0, 0, 0) "
+"pozíciótól kezdve.\n"
+"Csak a teljesen a térképgenerálási határon belül lévő térképdarabkák "
+"generálódnak le.\n"
+"Az érték világonként külön tárolódik."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"A párhzamos HTTP-kérések számának korlátja. Hatása:\n"
+"- Médialekérések, ha a szerver remote_media beállítást használ.\n"
+"- Szerverlista letöltés és szerverközzététel.\n"
+"- Letöltések a főmenüből (pl. mod manager).\n"
+"Csak akkor van hatása, ha cURL-lel lett összeállítva."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Folyadék folyékonysága"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Folyadékok egyenletesebb folyása"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr ""
+msgid "Liquid loop max"
+msgstr "Folyadékhullámzás maximum"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr ""
+msgid "Liquid queue purge time"
+msgstr "Folyadék sortisztítási ideje"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "Folyadék süllyedés"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr ""
+msgid "Liquid update interval in seconds."
+msgstr "A folyadékok frissítési időköze másodpercben."
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Folyadékfrissítés tick"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Térkép generátor neve"
+msgid "Load the game profiler"
+msgstr "Játék profiler betöltése"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "Térkép generátor v5"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"A játék profiler betöltése hogy játékprofílozási adatokat gyűjtsön.\n"
+"Elérhetővé teszi a /profiler parancsot, amellyel elérhetők az összeállított "
+"profilok.\n"
+"Hasznos lehet modfejelsztőknek és szerverüzemeltetőknek."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
-msgstr "v5 térképgenerátor barlang szélesség"
+msgid "Loading Block Modifiers"
+msgstr "Betöltendő blokk módosítók"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of dungeons."
+msgstr "A tömlöcök alsó Y határa."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "A lebegő földek alsó Y határa."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Főmenü szkript"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"A köd és az ég színe függjön a napszaktól (hajnal/naplemente) és a "
+"látószögtől."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Az összes folyadékot átlátszatlanná teszi"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "Térkép generátor v6"
+msgid "Map Compression Level for Disk Storage"
+msgstr "A térkép tömörítésének foka merevlemezen való tároláshoz"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map Compression Level for Network Transfer"
+msgstr "A térkép tömörítésének foka hálózati átvitelhez"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr "V6 térképgenerátor tengerpart gyakoriság"
+msgid "Map directory"
+msgstr "Térkép mappája"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "A Kárpátok térképgenerátorra vonatkozó térképgenerálási beállítások."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"A Lapos térképgenerátor sajátos tulajdonságai.\n"
+"Alkalmanként tavak és dombok hozzáadódhatnak a lapos világhoz."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"A Fraktál térképgenerátor sajátos jellemzői.\n"
+"A 'terrain' engedélyezi a nem-fraktál terep generálását,\n"
+"mint az óceán, szigetek és a földalatti részek."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"A Völgyek térképgenerátor sajátos jellemzői.\n"
+"'altitude_chill': csökkenti a hőmérsékletet a magassággal.\n"
+"'humid_rivers': megnöveli a páratartalmat a folyók körül.\n"
+"'vary_river_depth': ha engedélyezve van, az alacsony páratalom és a magas\n"
+"hőmérséklet hatására a folyók sekélyebbé válnak, és lehet, hogy "
+"kiszáradnak.\n"
+"'altitude_dry': csökkenti a páratartalmat a magassággal."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr "V6 térképgenerátor sivatag gyakoriság"
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "A v5 térképgenerátor sajátos tulajdonságai."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
+"A v6 térképgenerátor sajátos jellemzői.\n"
+"A 'snowbiomes' zászló engedélyezi az új 5 biomos rendszert.\n"
+"Amikor a 'snowbiomes' zászló engedélyezett a dzsungelek automatikusan "
+"engedélyezve vannak\n"
+"és a 'jungles' zászló figyelmen kívül van hagyva."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
+"Térkép generálási jellemzők csak a v7 térképgenerátor esetében.\n"
+"'ridges': folyók.\n"
+"'floatlands': lebegő földtömegek a légkörben.\n"
+"'caverns': óriási barlangok mélyen a föld alatt."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Térkép generálási korlát"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Térkép mentésének időköze"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+msgid "Map shadows update frames"
+msgstr "Árnyéktérkép frissítési idő"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Térképblokk korlát"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Térképblokk háló generálási késleltetés"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Térképblokk hálógenerátor MapBlock gyorsítótár mérete MB-ban"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "Térkép generátor v7"
+msgid "Mapblock unload timeout"
+msgstr "Térképblokk memóriaürítésének időkorlátja"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr "v7 térképgenerátor barlang szélesség"
+msgid "Mapgen Carpathian"
+msgstr "Kárpátok térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Kárpátok térképgenerátor különleges zászlói"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Lapos térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Lapos térképgenerátor különleges zászlói"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Fraktál térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Fraktál térképgenerátor domb meredekség"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "V5 térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Lapos térképgenerátor különleges zászlók"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "V6 térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "V6 térképgenerátor különleges zászlói"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "V7 térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "V7 térképgenerátor különleges zászlói"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Völgyek térképgenerátor"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr "Masszív barlang mélység"
+msgid "Mapgen Valleys specific flags"
+msgstr "Völgyek térképgenerátor különleges zászlói"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Térképgenerátor hibakereső"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr "Masszív barlangok innentől."
+msgid "Mapgen name"
+msgstr "Térképgenerátor neve"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3418,45 +5755,69 @@ msgstr "Max blokk generálási távolság"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Max blokk-küldési távolság"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Max folyadék feldolgozva lépésenként."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "Max. objektumtakarítás az extra blokkora"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "Maximum csomagok ismétlésenként"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
msgstr "Maximum FPS (képkocka/mp)"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr "Maximum FPS a játék szüneteltetésekor."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr "Maximum FPS, amikor a játék szüneteltetve van, vagy nincs fókuszban."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Az árnyékok renderelésének maximális távolsága."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "Az erőltetett betöltésű blokkok maximuma"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
-msgstr "Maximum hotbar szélesség"
+msgstr "Gyorselérési sáv maximális szélessége"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent in total."
-msgstr "Az egy időben csatlakozó játékosok maximális száma."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+"A véletlenszerűen egy térképdarabkára jutó nagy barlangok számának maximális "
+"korlátja."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
-msgstr "Maximum blokkok száma, amik sorban állhatnak betöltésre."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+"A véletlenszerűen egy térképdarabkára jutó kis barlangok számának maximális "
+"korlátja."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+"Maximális közegellenállás folyadékban. A nagy sebességgel folyadékba való\n"
+"belépéskor bekövetkező lassulást szabályozza."
+
+#: src/settings_translation_file.cpp
+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 ""
+"A szimultán küldött blokkok maximális száma kliensenként.\n"
+"A maximális összértéket így számoljuk dinamikusan:\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."
@@ -3465,22 +5826,32 @@ msgstr "Maximum blokkok száma, amik sorban állhatnak betöltésre."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
"Maximum blokkok száma, amik sorban állhatnak generálásra.\n"
-"Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség."
+"Ez a korlát játékosonként van kényszerítve."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
"Maximum blokkok száma, amik sorban állhatnak egy fájlból való betöltésre.\n"
-"Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség."
+"Ez a korlát játékosonként van kényszerítve."
#: src/settings_translation_file.cpp
-msgid "Maximum number of forceloaded mapblocks."
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
+"Az egyszerre folyó letöltések maximális száma. A korláton túli letöltéseket "
+"várólistára teszi.\n"
+"A curl_parallel_limit-nél kisebbnek kell lennie."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr "Az erőltetetten betöltött térképblokkok maximális száma."
#: src/settings_translation_file.cpp
msgid ""
@@ -3496,55 +5867,73 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
+"A lépésenként küldött csomagok maximális száma,\n"
+"ha lassú kapcsolattal rendelkezel, próbáld csökkenteni,\n"
+"de ne csökkentsd a kívánt kliensszám duplája alá."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
msgstr "Az egy időben csatlakozó játékosok maximális száma."
#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "A megjelenítendő csevegésüzenetek maximális száma"
+
+#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
msgstr "Statikusan tárolt objektumok maximális száma egy térképblokkban."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum objects per block"
-msgstr "Maximum objektum térképblokkonként"
+msgstr "Maximum objektumok térképblokkonként"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
-"Az aktuális ablak maximum hányada a hotbar számára.\n"
-"Hasznos, ha valamit el kell helyezni a hotbar jobb, vagy bal oldalán."
+"Az aktuális ablak maximum hányada a gyorselérési sáv számára.\n"
+"Hasznos, ha valamit el kell helyezni a sáv jobb, vagy bal oldalán."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum simultaneous block sends per client"
msgstr "Az egyidejűleg a kliensenként küldött térképblokkok maximális száma"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum simultaneous block sends total"
-msgstr "Egyidejűleg küldött térképblokkok maximális száma összesen"
+msgid "Maximum size of the out chat queue"
+msgstr "Kimenő üzenetek sorának maximális mérete"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+"A kimenő üzenetek sorának maximális mérete.\n"
+"0 letiltja a várolistára helyezést, míg -1 korlátlanná teszi a sor méretét."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
"Egy fájl letöltésének maximum ideje (milliszekundumban), amíg eltarthat (pl. "
"mod letöltés)."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr "Maximum felhasználók"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Az interaktív kérések (pl. szerverlista lekérése) számára rendelkezésre álló "
+"maximális idő milliszekundumban."
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Menük"
+msgid "Maximum users"
+msgstr "Maximum felhasználók"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "Poligonháló cashe"
#: src/settings_translation_file.cpp
msgid "Message of the day"
@@ -3559,37 +5948,62 @@ msgid "Method used to highlight selected object."
msgstr "Kijelölt objektum kiemelésére használt módszer."
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "A naplózás csevegésbe írásának minimális szintje."
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr "Minitérkép"
+msgstr "Kistérkép"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr "Minitérkép gomb"
+msgstr "Kistérkép gomb"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr "Minitérkép letapogatási magasság"
+msgstr "Kistérkép letapogatási magasság"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr "Minimum textúra méret a szűrőknek"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+"A véletlenszerűen egy térképdarabkára jutó nagy barlangok számának minimális "
+"korlátja."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+"A véletlenszerűen egy térképdarabkára jutó kis barlangok számának minimális "
+"korlátja."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Minimum textúra méret"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Mipmapping"
-msgstr "Mip-mapping"
+msgstr "Mipmapping"
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Profiler"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
-msgstr "Mod áruház részletek URL"
+#, fuzzy
+msgid "Mod Security"
+msgstr "Biztonság"
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr "Mod áruház letöltés URL"
+msgid "Mod channels"
+msgstr "Mod csatornák"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr "Mod áruház mod lista URL"
+msgid "Modifies the size of the HUD elements."
+msgstr "A HUD elemméretét módosítja."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
@@ -3597,35 +6011,67 @@ msgstr "Monospace betűtípus útvonal"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr "Monospace betűtípus méret"
+msgstr "Monospace betűméret"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Monospace betűméret osztója"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Hegy magasság zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Hegy zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Hegy változékonyság zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Hegyek legkisebb szintje"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr "Egér érzékenység"
+msgstr "Egér érzékenysége"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr "Egér érzékenység szorzó."
+msgstr "Egér érzékenységi faktora."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Iszap zaj"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"A zuhanás utáni fejbillenés szorzója.\n"
+"Például: 0 nincs biccentés; 1,0 normál; 2,0 dupla."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "Némítás gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Hang némítása"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
-"A használni kívánt térképgenerátor neve új világ létrehozásakor.\n"
-"A főmenüben történő világ létrehozás ezt felülírja."
+"Az új világ létrehozásakor használandó térképgenerátor neve.\n"
+"Új világ főmenüben történő létrehozása felülírja ezt.\n"
+"Jelenleg a következő térképgenerátorok nagyon instabilak:\n"
+"- Az opcionális lebegő földek a v7-ben (alapértelmezés szerint tiltott)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3645,14 +6091,21 @@ msgstr ""
"csatlakoznak."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr "Hálózat"
+msgid "Near plane"
+msgstr "Majdnem mint a repülőgép"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"Figyelt hálózati port (UDP).\n"
+"Főmenüből való indításkor felülíródik ez az érték."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Hálózat"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
@@ -3660,111 +6113,178 @@ msgstr "Az új felhasználóknak ezt a jelszót kell megadniuk."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr ""
+msgstr "Noclip"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr "Noclip gomb"
+msgstr "Noclip mód gomb"
#: src/settings_translation_file.cpp
-msgid "Node highlighting"
-msgstr "Blokk kiemelés"
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Kockák kiemelése"
#: src/settings_translation_file.cpp
-msgid "NodeTimer interval"
-msgstr ""
+msgid "Node highlighting"
+msgstr "Kockák kiemelése"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "NodeTimer interval"
+msgstr "NodeTimer időköz"
#: src/settings_translation_file.cpp
msgid "Noises"
-msgstr ""
+msgstr "Zajok"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
-msgstr ""
+msgid "Number of emerge threads"
+msgstr "A térképblokk betöltő szálak száma"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+"A térképblokkok betöltésére használt szálak száma.\n"
+"Érték 0:\n"
+"- Automatikus választás. A térképblokkok betöltését végző szálak száma\n"
+"- \"processzorok száma - 2\" lesz, de legalább 1.\n"
+"Bármilyen más érték:\n"
+"- Meghatározza a térképblokkbetöltő szálak számát, amelynek alsó korlátja "
+"1.\n"
+"FIGYELEM: A térképblokkbetöltő szálak számának növelése növeli a játékmotor "
+"mapgen\n"
+"folyamatainak sebességét, de csökkentheti a játékteljesítményt azáltal, hogy "
+"más\n"
+"folyamatokat akadályoznak, különösen egyjátékos módban és/vagy Lua kódok "
+"futtatásakor\n"
+"az 'on_generated' eseményben. Sok játékos számára valószínűleg az 1 az "
+"optimális beállítás."
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"A /clearobjects parancs által egyidejűleg betölthető extra blokkok száma.\n"
+"Kompromisszum az SQLite tranzakciók erőforrásigénye és a\n"
+"memóriahasználat között (4096=100MB hüvelykujjszabályként)."
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "Átlátszatlan folyadékok"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
+"Az alapértelmezett betűtípus mögötti árnyék átlátszatlansága (alfa) 0 és 255 "
+"között."
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"Megnyitja a szünet menüt, ha az ablak kikerül a fókuszból. Nem szünetel, ha "
+"nyitva van\n"
+"egy formspec panel."
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr "A csevegésben lévő internetes linkek színének opcionális felülírása."
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
+"A tartalék betűtípus elérési útvonala. TrueType betűtípusnak kell lenni.\n"
+"Bizonyos nyelvek ezt a betűtípust használják vagy ha az alapértelmezett "
+"betűtípus nem elérhető."
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+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 ""
+"A képernyőképek mentésének elérési útvonala. Lehet abszolút vagy relatív "
+"elérési út.\n"
+"Ha még nem létezik a mappa, létre lesz hozva."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"Az árnyalókat tartalmazó mappa elérési útvonala. Ha nincs beállítva, az "
+"alapértelmezett útvonalat használja."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion"
-msgstr "Parallax Occlusion"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "Textúra mappa útvonala. Először minden textúrát itt keres a játék."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion Scale"
-msgstr "Parallax Occlusion skála"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Az alapértelmezett betűtípus elérési útja. TrueType betűtípusnak kell "
+"lenni.\n"
+"Ha nem lehet betölteni a betűtípust, a tartalék betűtípust fogja használni."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
+"A monospace betűtípus elérési útvonala. TrueType betűtípusnak kell lenni.\n"
+"Ezt a betűtípust használja pl. a konzol és a profiler képernyő."
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr "Szüneteltetés ha az ablak kikerül a fókuszból"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
+"A merevlemezről várólistára töltött blokkok számának korlátja játékosonként"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion mode"
-msgstr "Parallax Occlusion mód"
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+"A várólistára töltött létrehozandó blokkok számának korlátja játékosonként"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion strength"
-msgstr "Parallax Occlusion ereje"
+msgid "Physics"
+msgstr "Fizika"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala."
+msgid "Pitch move key"
+msgstr "Pályamozgás mód gomb"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr "Képernyőmentések mappája."
+msgid "Pitch move mode"
+msgstr "Tekintet irányába mozgás"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr "Textúra mappa útvonala. Először minden textúrát itt keres a játék."
+msgid "Place key"
+msgstr "Lehelyezés gomb"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr "Fizika"
+msgid "Place repetition interval"
+msgstr "Lehelyezés-ismétlési időköz"
#: src/settings_translation_file.cpp
msgid ""
@@ -3772,19 +6292,19 @@ msgid ""
"This requires the \"fly\" privilege on the server."
msgstr ""
"A játékos képes repülni, nem hat rá a gravitáció.\n"
-"Szükséges hozzá a repülés jogosultság (fly) a szerveren."
+"Szükséges hozzá a repülés jogosultság a szerveren."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Játékos neve"
+msgid "Player transfer distance"
+msgstr "Játékosátviteli távolság"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "Játékos játékos ellen"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr "Játékos játékos ellen (PvP)"
+msgid "Poisson filtering"
+msgstr "Poisson szűrés"
#: src/settings_translation_file.cpp
msgid ""
@@ -3795,16 +6315,29 @@ msgstr ""
"A főmenü port mezője ezt a beállítást felülírja."
#: src/settings_translation_file.cpp
+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 ""
+"Ásás és lehelyezés ismétlődésének megakadályozása, amikor nyomva tartod az "
+"egérgombokat.\n"
+"Engedélyezd, ha túl gyakran fordul elő, hogy véletlenül lehelyezel vagy "
+"kiásol blokkokat."
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
-"Annak megelőzése, hogy a modok nem biztonágos dolgokat futtassanak, pl. "
+"Annak megelőzése, hogy a modok nem biztonságos dolgokat futtassanak, pl. "
"shell parancsok."
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"A játékmotor profiladatainak kiírása szabályos időközökben "
+"(másodpercekben).\n"
+"0 a kikapcsoláshoz. Hasznos fejlesztőknek."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
@@ -3812,15 +6345,32 @@ msgstr "Jogosultságok, amiket a basic_privs adhat a játékosoknak"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Profiler"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr ""
+msgstr "Profiler váltó gomb"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr "Prometheus figyelési cím"
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
+"Prometheus figyelési cím.\n"
+"Ha a Minetest-et az ENABLE_PROMETHEUS opció engedélyezésével állítták "
+"össze,\n"
+"elérhetővé válnak a Prometheus mérőszám figyelői ezen a címen.\n"
+"A mérőszámok itt érhetők el: http://127.0.0.1:30000/metrics"
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "Nagy barlangok aránya amelyek folyadékot tartalmaznak."
#: src/settings_translation_file.cpp
msgid ""
@@ -3828,20 +6378,30 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"A felhők kiterjedése 64 kockás felhőnégyzetek számában mérve.\n"
+"26-nál nagyobb értékek éles határt eredményeznek a felhők sarkainál."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül"
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "Véletlenszerű bemenet"
#: src/settings_translation_file.cpp
msgid "Range select key"
msgstr "Látóterület választása gomb"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Legutóbbi csevegésüzenetek"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Betűtípus útvonala"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr "Távoli média"
@@ -3850,70 +6410,147 @@ msgid "Remote port"
msgstr "Távoli port"
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+"Színkódok eltávolítása a bejövő csevegésüzenetekből\n"
+"Használd ezt hogy megakadályozd, hogy a játékosok színeket használjanak az "
+"üzeneteikben"
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr "Az alapértelmezett főmenüt lecseréli egy másikkal."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Betűtípus helye"
+msgstr "Napló útvonala"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Korlátozza bizonyos kliensoldali függvényekhez a hozzáférést a szerveren.\n"
+"Kombináld az alábbi bájtcímkéket a kliensoldali képességek korlátozásához,\n"
+"vagy állítsd 0-ra a korlátozások eltávolításához:\n"
+"LOAD_CLIENT_MODS: 1 (letitlja a kliensoldali modok betöltését)\n"
+"CHAT_MESSAGES: 2 (letiltja a send_chat_message hívásokat kliensoldalon)\n"
+"READ_ITEMDEFS: 4 (letiltja a get_item_def hívásokat kliensoldalon)\n"
+"READ_NODEDEFS: 8 (letiltja a get_node_def hívásokat kliensoldalon)\n"
+"LOOKUP_NODES_LIMIT: 16 (korlátozza a get_node hívásokat kliensoldalon a\n"
+"csm_restriction_noderange esetén)\n"
+"READ_PLAYERINFO: 32 (letiltja a get_player_names hívásokat kliensoldalon)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "A hegyvonulatok kiterjedésének zaja"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Hegygerinc zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Víz alatti hegygerinc zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Hegyvonulatok méretének zaja"
#: src/settings_translation_file.cpp
msgid "Right key"
msgstr "Jobb gomb"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr "Jobb kattintás ismétlés időköz"
+msgid "River channel depth"
+msgstr "Folyómeder mélysége"
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
+msgstr "Folyómeder szélessége"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
msgstr "Folyó mélység"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr ""
+msgid "River noise"
+msgstr "Folyó zaj"
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River size"
msgstr "Folyó méret"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "River valley width"
+msgstr "Folyóvölgy szélessége"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
-msgstr ""
+msgstr "Visszavonási pontok rögzítése"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Dombok méret zaja"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Dombok kiterjedés zaja"
#: src/settings_translation_file.cpp
msgid "Round minimap"
-msgstr "Kör alakú minitérkép"
+msgstr "Kerek kistérkép"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Biztonságos ásás és lehelyezés"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Homokos partok képződnek, ha az np_beach meghaladja ezt az értéket."
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr "A kliens által fogadott térkép mentése lemezre."
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Ablakméret automatikus mentése amikor módosítva van."
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr "A szerverről fogadott térkép mentése"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
"A felhasználói felület méretezése egy meghatározott értékkel.\n"
-"A legközelebbi szomszédos anti-alias szűrőt használja a GUI méretezésére.\n"
-"Ez elsimít néhány durva élt, és elhajlít pixeleket a méretezés "
+"A legközelebbi-szomszéd-élsimítás szűrőt használja a GUI méretezésére.\n"
+"Ez elsimít néhány durva élt, és elhajlítja a pixeleket a méret "
"csökkentésekor,\n"
-"de ennek az az ára, hogy elhomályosít néhány szélső pixelt, ha a képek nem\n"
+"de ennek az ára, hogy elhomályosít néhány szélső pixelt, ha a képek nem\n"
"egész számok alapján vannak méretezve."
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Képernyő:"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr "Képernyő magasság"
@@ -3922,10 +6559,6 @@ msgid "Screen width"
msgstr "Képernyő szélesség"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Képernyőkép"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr "Képernyőkép mappa"
@@ -3948,11 +6581,27 @@ msgstr ""
"Használd a 0-t az alapértelmezett minőséghez."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "Biztonság"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Képernyőkép"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Seabed noise"
+msgstr "Folyómeder zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"A második a négy 2D zajból, amelyek együttesen meghatározzák a dombságok/"
+"hegységek magasságát."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+"A második a két 3D zajból, amelyek együttesen meghatározzák az alagutakat."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr "Lásd: http://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
@@ -3965,11 +6614,64 @@ msgstr "Kijelölő doboz színe"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr "Kijelölő doboz szélesség"
+msgstr "Kijelölő doboz szélessége"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"18 fraktál választható, 9 formulából.\n"
+"1 = 4D \"Gömbölyded\" Mandelbrot-halmaz.\n"
+"2 = 4D \"Gömbölyded\" Julia-halmaz.\n"
+"3 = 4D \"Négyszögletes\" Mandelbrot-halmaz.\n"
+"4 = 4D \"Négyszögletes\" Julia-halmaz.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot-halmaz.\n"
+"6 = 4D \"Mandy Cousin\" Julia-halmaz.\n"
+"7 = 4D \"Variáció\" Mandelbrot-halmaz.\n"
+"8 = 4D \"Variáció\" Julia-halmaz.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot-halmaz.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia-halmaz.\n"
+"11 = 3D \"Karácsonyfa\" Mandelbrot-halmaz.\n"
+"12 = 3D \"Karácsonyfa\" Julia-halmaz.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot-halmaz.\n"
+"14 = 3D \"Mandelbulb\" Julia-halmaz.\n"
+"15 = 3D \"Koszinusz Mandelbulb\" Mandelbrot-halmaz.\n"
+"16 = 3D \"Koszinusz Mandelbulb\" Julia-halmaz.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot-halmaz.\n"
+"18 = 4D \"Mandelbulb\" Julia-halmaz."
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Szerver / Egyjátékos"
+#, fuzzy
+msgid "Server"
+msgstr "Szerver URL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Szerver név"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Szerver leírása"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -3985,17 +6687,31 @@ msgstr "Szerver leírása"
#: src/settings_translation_file.cpp
msgid "Server name"
-msgstr "Szerver neve"
+msgstr "Szerver név"
#: src/settings_translation_file.cpp
msgid "Server port"
-msgstr "Szerver port"
+msgstr "Szerver portja"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Takarásban lévő térképblokkok szerveroldali kiválogatása"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Szerver portja"
#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr "Szerverlista URL"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Szerverlista URL"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr "Szerverlista fájl"
@@ -4008,53 +6724,152 @@ msgstr ""
"A változtatás után a játék újraindítása szükséges."
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr "A csevegés maximális szöveghossza amelyet a kliensek küldhetnek."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Az árnyékok kivehetőségét szabályozza.\n"
+"Kisebb érték világosabb, magasabb érték sötétebb árnyékokat jelent."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Az árnyékok lágy szélének kiterjedését szabályozza.\n"
+"Kisebb érték élesebb, nagyobb érték lágyabb árnyékokat jelent.\n"
+"Minimális érték: 1,0; maximális érték: 10,0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"A Nap/Hold pályájának fokokban mért döntési szögét szabályozza.\n"
+"A 0 érték azt jelenti, hogy nincs döntés / függőleges a pályájuk.\n"
+"Minimális érték: 0,0; maximális érték: 60,0"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
-"A \"true\" beállítás engedélyezi a levelek hullámzását.\n"
-"A shaderek engedélyezése szükséges hozzá."
+"Állítsa igazra az árnyéktérképezés (Shadow Mapping) engedélyezéséhez.\n"
+"Az árnyalók engedélyezése szükséges hozzá."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
-"A \"true\" beállítás engedélyezi a növények hullámzását.\n"
-"A shaderek engedélyezése szükséges hozzá."
+"A \"true\" beállítás engedélyezi a levelek hullámzását.\n"
+"Az árnyalók engedélyezése szükséges hozzá."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
"A \"true\" beállítás engedélyezi a víz hullámzását.\n"
-"A shaderek engedélyezése szükséges hozzá."
+"Az árnyalók engedélyezése szükséges hozzá."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"A \"true\" beállítás engedélyezi a növények hullámzását.\n"
+"Az árnyalók engedélyezése szükséges hozzá."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Az árnyék textúrájának minőségét 32 bitesre állítja.\n"
+"Ha hamis, 16 bites textúrát fog használni.\n"
+"Ez sokkal több grafikai hibát okoz az árnyékon."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Árnyaló útvonala"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
-"A shaderek fejlett vizuális effekteket engedélyeznek és növelhetik a "
-"teljesítményt néhány videókártya esetében.\n"
+"Az árnyalók fejlett vizuális effekteket tesznek lehetővé és növelhetik a "
+"teljesítményt\n"
+"néhány videókártya esetében.\n"
"Csak OpenGL-el működnek."
#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Árnyék szűrő minőség"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr "Az árnyéktérkép maximális renderelési távolsága kockákban"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "32 bites árnyéktérkép textúra"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Árnyéktérkép textúra méret"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "Betűtípus árnyékának eltolása. Ha 0, akkor nem lesz árnyék rajzolva."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Árnyék kivehetősége"
+
+#: src/settings_translation_file.cpp
msgid "Shape of the minimap. Enabled = round, disabled = square."
msgstr ""
-"A minitérkép alakja. Engedélyezve (enabled) = kerek, letiltva (disabled) = "
+"A kistérkép alakja. Engedélyezve (enabled) = kerek, letiltva (disabled) = "
"négyzet."
#: src/settings_translation_file.cpp
msgid "Show debug info"
-msgstr "Hibakereső infó mutatása"
+msgstr "Hibakereső információ megjelenítése"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
-msgstr "Entitások kijelölő dobozának mutatása"
+msgstr "Entitások kijelölő dobozának megjelenítése"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Entitás hitboxok megjelenítése.\n"
+"A változtatás után a játék újraindítása szükséges."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Névcédulák háttere alapértelmezésben látszik"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
@@ -4062,43 +6877,102 @@ msgstr "Leállítási üzenet"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+"A mapgen által generált térképdarabka mérete térképblokkokban (16 kocka) "
+"mérve.\n"
+"FIGYELEM!: Nincs értelme és bizonyos veszélyekkel is jár ennek az értéknek\n"
+"5 fölés emelése.\n"
+"Ha csökkentjük ezt az értéket, gyakrabban fordulnak elő barlangok és "
+"tömlöcök.\n"
+"Változtasd meg, ha valami különleges okból kell, de ajánlott\n"
+"változatlanul hagyni."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+"A poligonhálót generáló MapBlock cache mérete. Növelése megnöveli a\n"
+"cache kiszolgálási teljesítményét, ezáltal csökken a fő szálból másolt "
+"adatok\n"
+"mennyisége, és ezáltal csökken a szaggatás."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Égitestek pályájának döntése"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "W szelet"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "A lejtés és a kitöltés együtt módosítja a magasságot."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Kis barlangok maximális száma"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Kis barlangok minimális száma"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
msgstr ""
-"Az egyszerre generált térképblokkok mérete, térképblokkokban megadva (16 "
-"blokk)."
+"A biomok közötti átmeneti határra vonatkozó kisléptékű páratartalom-"
+"ingadozás."
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
+"A biomok közötti átmeneti határra vonatkozó kisléptékű hőmérséklet-ingadozás."
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
-msgstr "Simított megvilágítás"
+msgstr "Lágy megvilágítás"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
-"Kamera mozgásának simítása mozgáskor és körbenézéskor.\n"
-"Videofelvételekhez hasznos."
+"Kamera mozgásának lágyítása körbenézéskor. Nézet- vagy egérstabilizálásnak "
+"is hívják.\n"
+"Hasznos videók felvételénél."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
-msgstr ""
-"A kamera forgását simítja a cinematic (filmkészítés) módban. 0 = letiltás."
+msgstr "A kameraforgást lágyítja operatőr módban. 0 a letiltáshoz."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr "Kamera forgás simítása. 0 = letiltás."
+msgstr "Kameraforgás lágyítása. 0 = letiltás."
#: src/settings_translation_file.cpp
msgid "Sneak key"
msgstr "Lopakodás gomb"
#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Lopakodás sebessége"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Lopakodás sebessége kocka/másodpercben."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Lágy árnyék sugara"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr "Hang"
@@ -4109,41 +6983,157 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
+"Meghatározza, mely URL-ről töltse le a kliens a médiatartalmat az UDP "
+"helyett.\n"
+"$filename -nek elérhetőnek kell lennie a $remote_media$filename helyről "
+"cURL\n"
+"használatával (nyilván, a remote_media elérési útnak perjelre kell "
+"végződni).\n"
+"A nem elérhető fájlokat a normál módon fogja letölteni."
#: src/settings_translation_file.cpp
-msgid "Static spawnpoint"
-msgstr "Statikus feléledési (spawn) pont"
+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 ""
+"A kockák, tárgyak és eszközök alapértelmezett kötegméretét szabályozza.\n"
+"Megjegyzendő, hogy a modok vagy játékok kifejezetten meghatározhatják a "
+"kötegek méretét bizonyos vagy az összes tárgy esetén."
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
-msgstr "Generált normálfelületek erőssége."
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Az árnyéktérkép firssítését széthúzza a megadott számú képkockára.\n"
+"Magasabb érték esetén az árnyékok késhetnek, alacsabb érékek\n"
+"viszont több erőforrást igényelnek.\n"
+"Minimális érték: 1; maximális érték: 16"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 ""
+"A fénygörbe kiemelésének hatósugara.\n"
+"A kiemelendő tartomány szélességét szabályozza.\n"
+"A fénygörbe kiemelés Gauss-görbéjének szórása."
#: src/settings_translation_file.cpp
-msgid "Strict protocol checking"
+msgid "Static spawnpoint"
+msgstr "Statikus újraéledési pont"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "Meredekség zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Lépcsős hegyek méretének zajossága"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Lépcsős hegy kiterjedésének zaja"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "3D mód parallax hatásának erőssége."
+
+#: src/settings_translation_file.cpp
+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 ""
+"A fénygörbe kiemelésének erőssége.\n"
+"A 3 'boost' parameter a fénygörbe egy tartományát\n"
+"határozza meg, amelyeken erősebbek a fények."
#: src/settings_translation_file.cpp
-msgid "Support older servers"
-msgstr "Régebbi szerverek támogatása"
+msgid "Strict protocol checking"
+msgstr "Szigorú protokollellenőrzés"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Színkódok kinyerése"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Az egybefüggő lebegő föld rétegre opcionálisan helyezhető vízfelület "
+"szintje.\n"
+"Alapértelmezésben a víz nem engedélyezett és csak akkor helyezi le, ha ez "
+"az\n"
+"érték nagyobb, mint 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (a "
+"vékonyítás\n"
+"felső részének kezdete).\n"
+"***FIGYELEM! VESZÉLYES LEHET A VILÁGOKRA ÉS A SZERVERTELJESÍTMÉNYRE***:\n"
+"Ha endgedélyezve van a vízlehelyezés, úgy kell konfigurálni a lebegő "
+"földeket és\n"
+"tesztelni kell, hogy valóban egybefüggő réteget alkosson, az "
+"'mgv7_floatland_density'\n"
+"értékének 2,0-nak (vagy az 'mgv7_np_floatland'-től függően más szükséges "
+"értéknek)\n"
+"kell lenni, hogy elkerülhető legyen a szervert leterhelő extrém vízfolyás és "
+"az alatta lévő\n"
+"földfelszín elárasztása."
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
-msgstr ""
+msgstr "Szinkron SQLite"
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr "Hőmérséklet-változékonyság a biomokban."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Beállítások"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Terep alternatív zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Terep alapzaj"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Terrain height"
msgstr "Terep magasság"
#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Terep legmagasabb zaj"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Terepzaj"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"A dombok terep zajküszöbe.\n"
+"A világ dombokkal fedett területének arányát szabályozza.\n"
+"Állítsd 0,0-hoz közelebb, hogy az arány növekedjen."
#: src/settings_translation_file.cpp
msgid ""
@@ -4151,34 +7141,101 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"A tavak terep zajküszöbe.\n"
+"A világ tavakkal fedett területének arányát szabályozza.\n"
+"Állítsd 0,0-hoz közelebb, hogy az arány növekedjen."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Terep folytonossági zaj"
#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr "Textúrák útvonala"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
-msgstr "A magasság, ahol a hőmérséklet 20 fokkal csökken"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Az árnyéktérkép rendereléséhez használt textúraméret.\n"
+"Kettő hatványának kell lennie.\n"
+"Nagyobb számok nagyobb árnyékokat hoznak létre, de ez egyben "
+"erőforrásigényesebb is."
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"Egy kocka textúráját lehet a kockához vagy a világhoz igazítani.\n"
+"Az első megoldás jobban illik olyan dolgokhoz, mint a gépek, bútorok stb.,\n"
+"míg a másodikkal jobban beleillenek a környezetükbe a lépcsők és "
+"mikroblokkok.\n"
+"Mivel azonban ez a lehetőség még új, és így a régebbi szerverek még nem "
+"használják,\n"
+"ezzel az opcióval ki lehet kényszeríteni ezt bizonyos kockákra. Meg kell "
+"azonban\n"
+"jegyezni, hogy ez még KÍSÉRLETI fázisban van és lehet, hogy nem működik "
+"helyesen."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "Az URL a tartalomtárhoz"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "A joystick holttere"
#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"A profilok mentéséhez használt alapértelmezett formátum, amikor\n"
+"formátum nélkül kerül meghívásra a `/profiler save [format]` parancs."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr "A föld vagy egyéb biomkitöltő kockaréteg mélysége."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"A profilok mentésének relatív elérési útja a világod elérési útjához képest."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The identifier of the joystick to use"
+msgstr "A használni kívánt joystick azonosítója"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
+"Az érintőképernyős interakció aktiválódásához szükséges távolság pixelekben."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"A hullámzó folyadékok felszínének maximális magassága.\n"
+"4,0 = A hullámok magasága két kocka.\n"
+"0,0 = A hullámok egyáltalán nem mozognak.\n"
+"Az alapértelmezett érték 1,0 (1/2 kocka).\n"
+"A hullámzó folyadék engedélyezése szükséges hozzá."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr ""
+msgstr "A hálózati interfész, amelyen a szerver figyel."
#: src/settings_translation_file.cpp
msgid ""
@@ -4190,14 +7247,47 @@ msgstr ""
"szervereden."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
msgstr ""
+"A játékosok körüli blokktérfogat sugara, amelyen belül érvényesülnek\n"
+"az aktív blokkok dolgai. Térképblokkban (16 kocka) mérve.\n"
+"Az aktív blokkokban betöltődnek az objektumok és ABM-ek futnak.\n"
+"Ez egyben az a legkisebb sugár is, amelyen belül az aktív objektumokról "
+"(mobok) gondoskodik a játék.\n"
+"Ezt a beállítást az active_object_send_range_blocks-szal összhangban kell "
+"megadni."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"A renderelő háttérprogram.\n"
+"Ha ezt megváltoztatod, újraindítás szükséges.\n"
+"Megjegyzés: Androidon, hagyd OGLES1-en, ha bizonytalan vagy! Lehet, hogy nem "
+"indul az app különben.\n"
+"Más platformokon az OpenGL az ajánlott.\n"
+"Az árnyalókat az OpenGL (csak asztali rendszeren) és OGLES2 (kísérleti) "
+"támogatja"
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
+"A jostick tengelyeinek érzékenysége, amely a játékbeli látómező mozgatását "
+"befolyásolja."
#: src/settings_translation_file.cpp
msgid ""
@@ -4206,6 +7296,12 @@ 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 ""
+"A körülvett, illetve takarásban lévő kockák árnyékolásának erőssége "
+"(sötétsége).\n"
+"Alacsonyabb érték sötétebb, magasabb érték világosabb. E beállítás érvényes\n"
+"értéktartománya 0,25-től 4,0-ig terjed. Ha a tartományon kívüli értéket "
+"adunk meg,\n"
+"a legközelebbi érvényes értékre lesz állítva."
#: src/settings_translation_file.cpp
msgid ""
@@ -4213,51 +7309,83 @@ 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 ""
+"A másodpercben megadott idő, ameddig a folyadékok várólistája a számítási\n"
+"teljesítmény fölé nőhet, és ezután megpróbálja csökkenteni a méretét "
+"azáltal,\n"
+"hogy törli a régóta sorbanálló elemeket. A 0 érték letiltja ezt a funkciót."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+"Az ABM-ek rendelkezésére álló lépésenkénti végrehajtási időkeret\n"
+"(az ABM intervallum törtrésze)"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
-"Ennyi másodperc szükséges az ismételt jobb kattintáshoz a jobb egérgomb "
+"Ennyi másodperc szükséges az esemény megismétléséhez a joystick gombok "
"nyomva tartásakor."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
-"Ennyi másodperc szükséges az ismételt jobb kattintáshoz a jobb egérgomb "
+"Ennyi másodperc szükséges az ismételt kockalehelyezéshez a lehelyezés gomb "
"nyomva tartásakor."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr "Ezt a betűtípust bizonyos nyelvek használják."
+msgid "The type of joystick"
+msgstr "A joystick típusa"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+"Az a függőleges távolság, amely során a hőmérséklet 20 fokkal csökken, ha az "
+"'altitude_chill'\n"
+"be van kapcsolva. Ugyanez a távolság, amely során a páratartalom esik 10 "
+"egységgel, ha az\n"
+"'altitude_dry' be van kapcsolva."
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
+"A harmadik a négy 2D zajból, amelyek együttesen meghatározzák a dombságok/"
+"hegységek magasságát."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
-"Annak az ideje, hogy mennyi ideig \"élnek\" az eldobott tárgyak.\n"
+"Annak az ideje, hogy mennyi ideig maradnak meg az eldobott tárgyak.\n"
"-1-re állítás kikapcsolja ezt a funkciót."
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "Az új világ létrehozásakor érvényes napszak milliórában (0-23999)."
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
-msgstr ""
+msgstr "Idő küldési gyakoriság"
#: src/settings_translation_file.cpp
msgid "Time speed"
msgstr "Idő sebessége"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
+"A kliens rendelkezésére álló időkorlát, hogy eltávolítsa a használaton "
+"kívüli térképadatokat a memóriából."
#: src/settings_translation_file.cpp
msgid ""
@@ -4266,10 +7394,10 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
-"A lag (késés) csökkentéséért a blokkok lerakása le van lassítva, ha a "
-"játékos épít valamit.\n"
-"Ez azt határozza meg, hogy mennyire van lelassítva blokkok elhelyezésekor, "
-"vagy eltávolításakor."
+"A lag (késés) csökkentése érdekében a kockainformációk küldése le van "
+"lassítva, ha a játékos épít valamit.\n"
+"Ez azt határozza meg, hogy mennyire van lelassítva a küldés a kockák "
+"lehelyezése, vagy eltávolítása után."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
@@ -4280,18 +7408,39 @@ msgid "Tooltip delay"
msgstr "Eszköztipp késleltetés"
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Érintőképernyő érzékenysége"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Érintőképernyő érzékenysége"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Teljesítménybeli kompromisszumok"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Fa zaj"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Tri-lineáris szűrés"
+msgstr "Trilineáris szűrés"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
"True = 256\n"
"False = 128\n"
-"Arra használható, hogy simábbá tegye a minitérképet lassabb gépeken."
+"Arra használható, hogy egyenletesebbé tegye a minitérképet lassabb gépeken."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
@@ -4302,16 +7451,43 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr "A Többjátékos fül alatt megjelenített szerverlista URL-je."
#: src/settings_translation_file.cpp
-msgid "Unlimited player transfer distance"
+msgid "Undersampling"
+msgstr "Alulmintavételezés"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
+"Az alulmintavételezés olyan, mintha kisebb képernyőfelbontást használnál, "
+"de\n"
+"csak a játék világára van hatással, a GUI-t változatlanul hagyja.\n"
+"Sokkal jobb teljesítmény érhető el vele annak árán, hogy a kép kevésbé\n"
+"részletgazdaggá válik. Magasabb értékek kevésbé részletes képet "
+"eredményeznek."
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr "Korlátlan játékosátviteli távolság"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr ""
+msgstr "A használaton kívüli szerveradatok eltávolítása a memóriából"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "A tömlöcök felső Y határa."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "A lebegő földek felső Y határa."
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr "3D felhő kinézet használata lapos helyett."
+msgstr "3D felhők használata lapos helyett."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
@@ -4319,53 +7495,111 @@ msgstr "Felhő animáció használata a főmenü háttereként."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
-msgstr "Anizotropikus szűrés használata, ha egy szögből nézzük a textúrákat."
+msgstr "Anizotróp szűrés használata, ha egy szögből nézzük a textúrákat."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
msgstr "Bilineáris szűrés a textúrák méretezésekor."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Használat gomb"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Mipmapping használata a textúrák méretezéséhez. Kis mértékben növelheti a\n"
+"teljesítményt, különösen nagy felbontású textúracsomagok használatakor.\n"
+"Gamma-megőrző zsugorítás nem támogatott."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
-"Mip mapping használata a textúrák méretezéséhez. Kicsit növelheti a "
-"teljesítményt."
+"Többmintás élsimítás (MSAA) használata a blokkélek simításához.\n"
+"Ez az algoritmus kisimítja a 3D látómezőt miközben a kép éles marad,\n"
+"a textúrák beljsejét azonban nem módosítja\n"
+"(ami főleg az átlátszó textúráknál vehető észre).\n"
+"A kockák között látható rések jelennek meg, ha az árnyalók nincsenek\n"
+"engedélyezve. Ha 0-ra van állítva, az MSAA tiltva van.\n"
+"E beállítás megváltoztatása után újraindítás szükséges."
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
msgstr "Trilineáris szűrés a textúrák méretezéséhez."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
-msgstr ""
+msgstr "VBO"
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr "Függőleges szinkron"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "Valley depth"
msgstr "Völgyek mélysége"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr ""
+msgid "Valley fill"
+msgstr "Völgyek kitöltése"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
-msgstr ""
+msgid "Valley profile"
+msgstr "Völgyek profilja"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
msgstr "Völgyek meredeksége"
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Variation of biome filler depth."
+msgstr "A biom töltőanyag mélységének változékonysága."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "A legnagyobb eltérés a hegyek magasságában (hány kocka)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "A barlangok számának változása."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
+"A terep függőleges kiterjedésének mozgástere.\n"
+"Ha a zaj < -0,55, akkor a terep szinte lapos."
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "A biomok felületét képező kockaréteg mélységét variálja."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+"A terep töredezettségét variálja.\n"
+"Meghatározza a terrain_base és terrain_alt zajok folytonosságának értékét."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "A szirtek meredekségét variálja."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Függőleges mászási sebesség kocka/másodpercben."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
@@ -4376,48 +7610,70 @@ msgid "Video driver"
msgstr "Videó driver"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "Fejbillegési faktor"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
-"Látótávolság blokkokban megadva.\n"
-"Min = 20"
+msgid "View distance in nodes."
+msgstr "Látótávolság kockában megadva."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
-msgstr "Látóterület csökkentés gomb"
+msgstr "Látóterület csökkentése gomb"
#: src/settings_translation_file.cpp
msgid "View range increase key"
-msgstr "Látóterület növelés gomb"
+msgstr "Látóterület növelése gomb"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Nagyítás gomb"
#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr "Látóterület"
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "A virtuális joystick működteti az Aux1 gombot"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr "Hangerő"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Az összes hang hangereje.\n"
+"A hangrendszer engedélyezésére van szükség hozzá."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"A 4D fraktál generált 3D szeletének W koordinátája.\n"
+"Meghatározza, hogy a 4D-s alakzat mely 3D-s szeletét kell generálni.\n"
+"Megváltoztatja a fraktál alakját.\n"
+"Nincs hatása a 3D fraktálokra.\n"
+"Nagyjából -2 és 2 közötti az értéktartománya."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Sétálás és repülés sebessége kocka/másodpercben."
#: src/settings_translation_file.cpp
msgid "Walking speed"
-msgstr "Járás sebessége"
+msgstr "Sétálás sebessége"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Víz jellemzők"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr "Sétálás, repülés és mászás sebessége gyors módban kocka/másodpercben."
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4429,31 +7685,35 @@ msgstr "A világ vízfelszínének szintje."
#: src/settings_translation_file.cpp
msgid "Waving Nodes"
-msgstr "Hullámzó blokkok"
+msgstr "Hullámzó kockák"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
-msgstr "Hullámzó levelek"
+msgstr "Ringatózó levelek"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Hullámzó növények"
+msgid "Waving liquids"
+msgstr "Hullámzó folyadékok"
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr "Hullámzó folyadékok hullámmagassága"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Hullámzó víz"
+msgid "Waving liquids wave speed"
+msgstr "Hullámzó folyadékok hullámsebessége"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Hullámzó víz magassága"
+msgid "Waving liquids wavelength"
+msgstr "Hullámzó folyadékok hullámhossza"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "Hullámzó víz szélessége"
+msgid "Waving plants"
+msgstr "Ringatózó növények"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Hullámzó víz sebessége"
+msgid "Weblink color"
+msgstr "Internetes hivatkozások színe"
#: src/settings_translation_file.cpp
msgid ""
@@ -4461,6 +7721,9 @@ msgid ""
"filtered in software, but some images are generated directly\n"
"to hardware (e.g. render-to-texture for nodes in inventory)."
msgstr ""
+"Ha a gui_scaling_filter értéke igaz, minden GUI képet szoftveres\n"
+"szűrő fogja kezelni, de néhány kép közvetlenül a harverre\n"
+"generálódik (pl. a felszerelésben lévő kockák textúrára renderelése)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4469,55 +7732,61 @@ msgid ""
"to the old scaling method, for video drivers that don't\n"
"properly support downloading textures back from hardware."
msgstr ""
+"Ha a gui_scaling_filter_txr2img be van kapcsolva, ezeket a képeket\n"
+"a hardverről a szoftverbe másolja méretezésre. Ha ki van kapcsolva,\n"
+"a régi méretezési módszert használja, azoknál a videó drivereknél,\n"
+"amelyek nem megfelelően támogatják a textúra hardverről való letöltését."
#: src/settings_translation_file.cpp
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
+"A bilineáris/trilineáris/anizotróp szűrők használatakor, a kis felbontású "
+"textúrák\n"
+"homályosak lehetnek, ezért automatikusan felskálázza őket legközelebbi\n"
+"szomszéd módszerrel, hogy megőrizze az éles pixeleket. Ez a beállítás "
+"meghatározza\n"
+"a minimális textúraméretet a felnagyított textúrákhoz; magasabb értéknél "
+"élesebb,\n"
+"de több memóriát igényel. 2 hatványait ajánlott használni. CSAK akkor "
+"érvényes ez a\n"
+"beállítás, ha a bilineáris/trilineáris/anizotróp szűrés engedélyezett.\n"
+"Ez egyben azon kockák alap textúraméreteként is használatos, amelyeknél a "
+"világhoz\n"
+"igazítva kell méretezni a textúrát."
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
-"Hol áll meg a térkép generálás.\n"
-"Fontos:\n"
-"- 31000 -re van korlátozva (ha magasabbra állítjuk, nem lesz eredménye).\n"
-"- A térképgenerátor 80x80x80-as csoportokban dolgozik (5x5x5-ös térkép "
-"blokkok).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
-msgstr ""
-"Használatban vannak-e freetype betűtípusok. Szükséges a beépített freetype "
-"támogatás."
+"Látszódjon-e a névcédulák háttere alapértelmezésként.\n"
+"A modok ettől még a beállíthatják a hátteret."
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr ""
+"Legyen-e független a kockák textúraanimációinak időzítése az egyes "
+"térképblokkokban."
#: 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 ""
+"Lássák-e a játékosokat a kliensek mindenféle távolsági korlát nélkül.\n"
+"Elavult, használd a player_transfer_distance beállítást ehelyett."
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr "Engedélyezve van-e, hogy a játékosok sebezzék, ill. megöljék egymást."
+msgstr "Engedélyezve van-e, hogy a játékosok sebezzék és megöljék egymást."
#: src/settings_translation_file.cpp
msgid ""
@@ -4533,254 +7802,531 @@ msgstr "A látható terület vége el legyen-e ködösítve."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
-msgstr "A hibakereső infó mutatása (ugyanaz a hatás, ha F5-öt nyomunk)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+"Némítsuk-e le a hangokat. Bármikor visszakapcsolhatod a hangokat, kivéve,\n"
+"ha a hangrendszer le van tiltva (enable_sound=false).\n"
+"A játékon belül a némítás állapotát a némítás gombbal vagy a szünet\n"
+"menüben tudod beállítani."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr "Kezdeti ablak méret szélessége."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+"A hibakereső információ megjelenítése (ugyanaz a hatás, ha F5-öt nyomunk)."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
-msgstr "A kijelölődoboz vonalainak szélessége a blokkok körül."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"A kezdőablak szélessége. Teljes képernyős módban nem kerül figyelmbe vételre."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr "A kijelölésdoboz vonalainak szélessége a kockák körül."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Csak Windows rendszeren: Minetest indítása parancssorral a háttérben.\n"
+"Ugyanazokat az információkat tartalmazza, mint a debug.txt fájl "
+"(alapértelmezett név)."
#: src/settings_translation_file.cpp
msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
-"Világ (world) mappa (minden itt tárolódik ami a világban van).\n"
-"Ez nem szükséges, ha a főmenüből indítunk."
+"Világ mappája (minden itt tárolódik ami a világban van).\n"
+"Ez nem szükséges, ha a főmenüből indítják."
#: src/settings_translation_file.cpp
-msgid "Y of flat ground."
-msgstr ""
+msgid "World start time"
+msgstr "Világ-kezdőidő"
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
msgstr ""
+"A világhoz igazított textúrák több kockára is ki kiterjedhetnek. A szerver\n"
+"azonban nem biztos, hogy az általad kívánt módon terjeszti ki azt, "
+"különösen,\n"
+"ha egyedi tervezésű textúracsomagról van szó; ezzel a beállítással a kliens\n"
+"megpróbálja automatikusan meghatározni a méretezést a textúra mérete "
+"alapján.\n"
+"Lásd még texture_min_size.\n"
+"Figyelem: Ez KÍSÉRLETI beállítás!"
#: src/settings_translation_file.cpp
-msgid "cURL file download timeout"
+msgid "World-aligned textures mode"
+msgstr "Világhoz igazított textúrakezelési mód"
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr "Lapos föld Y magassága."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
+"A hegyek sűrűséggradiensének alapsíkjának Y koordinátája. A hegyek "
+"függőleges eltolásához használatos."
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "Y of upper limit of large caves."
+msgstr "Nagy barlangok felső Y határa."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Y-távolság, amelyen az üregek teljes méretre kinyúlnak."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+"Az az Y irányú távolság, amely során a lebegő földek a maximális sűrűségtől "
+"kezdve teljesen elvékonyodnak.\n"
+"A vékonyítás ennél az Y határtól való távolságnál kezdőik.\n"
+"Egybefüggő lebegő föld rétegek esetén, ez a beállítás szabályozza a dombok/"
+"hegyek magasságát.\n"
+"Kisebbnek vagy egyenlőnek kell lennie az Y határok közötti távolság felénél."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "A terep átlagos Y szintje."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Az üregek felső Y határa."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Magas terep Y szintje amely szirteket hoz létre."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Alacsony terep és tengerfenék Y szintje."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Tengerfenék Y szintje."
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL"
msgstr ""
-#~ msgid "Item textures..."
-#~ msgstr "Elem textúrák..."
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr "cURL fájlletöltés időkorlát"
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "cURL interaktív időtúllépés"
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr "cURL párhuzamossági korlát"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kreatív mód: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Sérülés: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = parallax occlusion with slope information (gyorsabb).\n"
+#~ "1 = relief mapping (lassabb, pontosabb)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Cím / Port"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb "
+#~ "fényerő.\n"
+#~ "Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Biztosan visszaállítod az egyjátékos világod?"
+#~ msgid "Back"
+#~ msgstr "Vissza"
+
+#~ msgid "Basic"
+#~ msgstr "Alap"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bit/pixel (vagyis színmélység) teljes képernyős módban."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Bump mapping"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Bumpmappolás"
+
+#, fuzzy
+#~ 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 ""
+#~ "Megváltoztatja a főmenü felhasználói felületét:\n"
+#~ "- Teljes: Több egyjátékos világ, játékválasztás, textúracsomag-választó "
+#~ "stb.\n"
+#~ "- Egyszerű: Egy egyjátékos világ, nincs játék- vagy textúracsomag-"
+#~ "választó.\n"
+#~ "Szükséges lehet a kisebb képernyőkhöz."
+
+#~ msgid "Config mods"
+#~ msgstr "Modok beállítása"
+
+#~ msgid "Configure"
+#~ msgstr "Beállítás"
+
+#~ msgid "Connect"
+#~ msgstr "Kapcsolódás"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Folyadékban a süllyedési sebességet szabályozza."
+
+#, fuzzy
#~ msgid ""
-#~ "Enable a bit lower water surface, so it doesn't \"fill\" the node "
-#~ "completely.\n"
-#~ "Note that this is not quite optimized and that smooth lighting on the\n"
-#~ "water surface doesn't work with this."
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
#~ msgstr ""
-#~ "Kicsivel alacsonyabb víz felszín engedélyezése, hogy ne töltse meg "
-#~ "teljesen a blokkot.\n"
-#~ "Megjegyzés: ez nem teljesen optimalizált, és a simított megvilágítás\n"
-#~ "így nem működik a víz felszínén."
+#~ "A lebegő szigetek hegységeinek sűrűségét szabályozza.\n"
+#~ "Az \"np_mountain\" zaj értékéhez hozzáadott eltolás."
-#~ msgid "Enable selection highlighting for nodes (disables selectionbox)."
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
#~ msgstr ""
-#~ "Kijelölés kiemelés (kivilágítás) engedélyezése a blokkoknál (letiltja a "
-#~ "kijelölődobozt)."
+#~ "A járatok szélességét határozza meg, alacsonyabb érték szélesebb "
+#~ "járatokat hoz létre."
+
+#~ msgid "Credits"
+#~ msgstr "Köszönetnyilvánítás"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Célkereszt színe (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Sérülés engedélyezve"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "a sötétség élessége"
#~ msgid ""
-#~ "Key for decreasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
#~ msgstr ""
-#~ "A látóterület csökkentésének gombja. A minimum látóterületet módosítja.\n"
-#~ "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "A cURL alapértelmezett időkorlátja ezredmásodpercekben.\n"
+#~ "Csak akkor van hatása, ha a program cURL-lel lett lefordítva."
#~ msgid ""
-#~ "Key for increasing the viewing range. Modifies the minimum viewing "
-#~ "range.\n"
-#~ "See http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
#~ msgstr ""
-#~ "A látóterület növelésének gombja. A minimum látótávolságot módosítja.\n"
-#~ "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr."
-#~ "html#a54da2a0e231901735e3da1b0edf72eb3"
+#~ "A lebegő szigetek sima területeit határozza meg.\n"
+#~ "Lapos szigetek ott fordulnak elő, ahol a zaj értéke pozitív."
#~ msgid ""
-#~ "Maximum distance above water level for player spawn.\n"
-#~ "Larger values result in spawn points closer to (x = 0, z = 0).\n"
-#~ "Smaller values may result in a suitable spawn point not being found,\n"
-#~ "resulting in a spawn at (0, 0, 0) possibly buried underground."
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
#~ msgstr ""
-#~ "Maximum távolság a vízszinttől, ahol a játékosok újraéledhetnek/"
-#~ "megjelenhetnek csatlakozáskor (spawn).\n"
-#~ "Magasabb értékek közelebb visznek az (x = 0, z = 0)-hoz.\n"
-#~ "Alacsonyabb értékek azt eredményezhetik, hogy nem lesz megfelelő pont a "
-#~ "feléledéshez,\n"
-#~ "(0,0,0) pozícióban történő feléledést, ami valószínűleg a föld alatt lesz."
+#~ "A textúrák mintavételezési lépésközét adja meg.\n"
+#~ "Nagyobb érték simább normal map-et eredményez."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Kedvenc törlése"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Játék (mint a minetest_game) letöltése a minetest.net címről"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Letöltés a minetest.net címről"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 letöltése és telepítése, kérlek várj…"
+
+#~ msgid "Enable VBO"
+#~ msgstr "VBO engedélyez"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Regisztráció megerősítés engedélyezése"
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "filmes tónus effektek bekapcsolása"
-#, fuzzy
#~ msgid ""
-#~ "Minimum wanted FPS.\n"
-#~ "The amount of rendered stuff is dynamically set according to this. and "
-#~ "viewing range min and max."
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Minimum kívánt FPS.\n"
-#~ "A renderelt cuccok mennyisége dinamikusan ez alapján állítódik be (és a "
-#~ "látórerület min és max)."
+#~ "Parallax occlusion mapping bekapcsolása.\n"
+#~ "A shaderek engedélyezve kell hogy legyenek."
-#~ msgid "New style water"
-#~ msgstr "Új stílusú víz"
+#~ msgid "Enter "
+#~ msgstr "Belépés "
-#~ msgid "Preload inventory textures"
-#~ msgstr "Eszköztár textúráinak előtöltése"
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Kísérleti opció, látható rések jelenhetnek meg a blokkok között\n"
+#~ "ha nagyobbra van állítva, mint 0."
-#~ msgid "Vertical initial window size."
-#~ msgstr "Függőleges kezdeti ablak méret."
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS a szünet menüben"
-#~ msgid "Vertical spawn range"
-#~ msgstr "Az (újra)éledés függőleges irányú területe"
+#~ msgid "Fallback font shadow"
+#~ msgstr "Tartalék betűtípus árnyéka"
-#~ msgid "Viewing range minimum"
-#~ msgstr "Minimum látóterület"
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Tartalék betűtípus árnyék átlátszósága"
-#~ msgid "Wanted FPS"
-#~ msgstr "Kívánt FPS"
+#~ msgid "Fallback font size"
+#~ msgstr "Tartalék betűtípus mérete"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "A méretarány alkalmazva a menü elemekre: "
+#~ msgid "Filtering"
+#~ msgstr "Szűrés"
#, fuzzy
-#~ msgid "Touch free target"
-#~ msgstr "Touch free target"
+#~ msgid "Floatland base height noise"
+#~ msgstr "A lebegő hegyek alapmagassága"
#, fuzzy
-#~ msgid "Downloading"
-#~ msgstr "Le"
+#~ msgid "Floatland mountain height"
+#~ msgstr "Lebegő hegyek magassága"
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr "Ball gomb: Tárgyak mozgatása, Jobb gomb: egy tárgyat mozgat"
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)."
-#~ msgid "is required by:"
-#~ msgstr "kell neki:"
+#~ msgid "FreeType fonts"
+#~ msgstr "FreeType betűtípusok"
-#~ msgid "Configuration saved. "
-#~ msgstr "Beállítások mentve. "
+#~ msgid "Full screen BPP"
+#~ msgstr "Teljes képernyő BPP"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Figyelem: A beállítások nem egyformák. "
+#~ msgid "Game"
+#~ msgstr "Játék"
-#~ msgid "Cannot create world: Name contains invalid characters"
-#~ msgstr "Nem sikerült a világ létrehozása: A névben nem jó karakterek vannak"
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
-#~ msgid "Show Public"
-#~ msgstr "Publikus mutatása"
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Normál felületek generálása"
-#~ msgid "Show Favorites"
-#~ msgstr "Kedvencek mutatása"
+#~ msgid "Generate normalmaps"
+#~ msgstr "Normálfelületek generálása"
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Hagyd el a nevét, hogy helyi szervert indíts."
+#~ msgid "HUD scale factor"
+#~ msgstr "Vezérlőelemek mérete"
-#~ msgid "Create world"
-#~ msgstr "Világ létrehozása"
+#~ msgid "High-precision FPU"
+#~ msgstr "Nagy pontosságú FPU"
-#~ msgid "Address required."
-#~ msgstr "Cím szükséges."
+#~ msgid "IPv6 support."
+#~ msgstr "IPv6 támogatás."
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Nem törölhető a világ: Nincs kiválasztva"
+#~ msgid "In-Game"
+#~ msgstr "Játékon belül"
-#~ msgid "Files to be deleted"
-#~ msgstr "A fájl törölve lett"
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Fájl telepítése: \"$1\""
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Nem sikerült a világot létrehozni: Nem található a játék"
+#~ msgid "Instrumentation"
+#~ msgstr "Behangolás"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Nem sikerült a világ beállítása: Nincs kiválasztva"
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Billentyűzetkiosztás. (Ha ez a menü összeomlik, távolíts el néhány dolgot "
+#~ "a minetest.conf-ból)"
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Hiba az összes világ törlése közben"
+#, fuzzy
+#~ msgid "Lava depth"
+#~ msgstr "Nagy barlang mélység"
#, fuzzy
-#~ msgid "Finite Liquid"
-#~ msgstr "Végtelen folyadék"
+#~ msgid "Lightness sharpness"
+#~ msgstr "Fényélesség"
-#~ msgid "Preload item visuals"
-#~ msgstr "Előretöltött tárgy láthatóság"
+#~ msgid "Main"
+#~ msgstr "Fő"
-#, fuzzy
-#~ msgid "Password"
-#~ msgstr "Régi jelszó"
+#~ msgid "Main menu style"
+#~ msgstr "Főmenü stílusa"
-#, fuzzy
-#~ msgid "Game Name"
-#~ msgstr "Játék"
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "Lehetővé teszi, hogy a DirectX működjön a LuaJIT-tel. Tiltsd le, ha "
+#~ "problémákat okoz."
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "A driver változások életbe lépéséhez indítsd újra a Minetestet"
+#~ msgid "Menus"
+#~ msgstr "Menük"
-#~ msgid "Rendering:"
-#~ msgstr "Renderelés:"
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Kistérkép radar módban x2"
-#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "Engedélyez"
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Kistérkép radar módban x4"
-#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Csomag letiltás"
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Kistérkép terület módban x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Kistérkép terület módban x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Név / Jelszó"
+
+#~ msgid "Name/Password"
+#~ msgstr "Név/jelszó"
+
+#~ msgid "No"
+#~ msgstr "Nem"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax Occlusion ( domború textúra )"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Parallax Occlusion effekt"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Parallax Occlusion módja"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Parallax Occlusion mértéke"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala."
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Képernyőmentések mappája."
+
+#~ msgid "Player name"
+#~ msgstr "Játékos neve"
+
+#~ msgid "Profiling"
+#~ msgstr "Pfolilozás"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP engedélyezve"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Egyjátékos világ visszaállítása"
+
+#~ msgid "Select Package File:"
+#~ msgstr "csomag fájl kiválasztása:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Szerver / Egyjátékos"
#, fuzzy
+#~ msgid "Shadow limit"
+#~ msgstr "Térképblokk korlát"
+
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen Valleys.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them.\n"
-#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome "
-#~ "issues.\n"
-#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where "
-#~ "water would tend to pool. It may interfere with delicately adjusted "
-#~ "biomes."
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
#~ msgstr ""
-#~ "Térkép generálási jellemzők csak a Valleys térképgenerátor esetében.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them.\n"
-#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome "
-#~ "issues.\n"
-#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where "
-#~ "water would tend to pool. It may interfere with delicately adjusted "
-#~ "biomes."
-
-#~ msgid "No!!!"
-#~ msgstr "Nem!!!"
-
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Normálfelületek generálása"
+#~ "Tartalék betűtípus árnyékának eltolása. Ha 0, akkor nem lesz árnyék "
+#~ "rajzolva."
+
+#~ msgid "Special"
+#~ msgstr "Különleges"
+
+#~ msgid "Special key"
+#~ msgstr "Különleges gomb"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Egyjátékos mód indítása"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Generált normálfelületek erőssége."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Ezt a betűtípust bizonyos nyelvek használják."
-#~ msgid "Public Serverlist"
-#~ msgstr "Nyilvános szerverlista"
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Az árnyalók engedélyezéséhez OpenGL driver használata szükséges."
-#~ msgid "No of course not!"
-#~ msgstr "Persze, hogy nem!"
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Váltás „mozi” módba"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Mod fejlesztőknek hasznos."
+#~ msgid "View"
+#~ msgstr "Megtekintés"
-#~ msgid "Detailed mod profile data. Useful for mod developers."
-#~ msgstr "Részletes mod profil adat. Mod fejlesztőknek hasznos."
+#~ msgid "Waving Water"
+#~ msgstr "Hullámzó víz"
+
+#~ msgid "Waving water"
+#~ msgstr "Hullámzó víz"
+
+#~ 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 ""
+#~ "Használhatók-e FreeType betűtípusok. Szükséges a beépített FreeType "
+#~ "támogatás.\n"
+#~ "Ha ki van kapcsolva, bittérképes és XML vektoros betűtípusok lesznek "
+#~ "használva helyette."
+
+#~ msgid "Yes"
+#~ msgstr "Igen"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Most először csatlakozol erre a szerverre a \"%s\" névvel.\n"
+#~ "Ha folytatod, akkor a hitelesítő adataiddal egy új fiók jön létre a "
+#~ "szerveren.\n"
+#~ "Kérlek írd be újra a jelszavad, majd kattints a \"Regisztráció és "
+#~ "Bejelentkezés\"-re, hogy megerősítsd a fióklétrehozást, vagy kattints a "
+#~ "\"Mégse\" gombra a megszakításhoz."
+
+#~ msgid "You died."
+#~ msgstr "Meghaltál."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/id/minetest.po b/po/id/minetest.po
index 28f264ebc..d3a32b87f 100644
--- a/po/id/minetest.po
+++ b/po/id/minetest.po
@@ -1,15 +1,10 @@
-# Indonesian translation for minetest-c55 package.
-# Copyright (C) 2014 srifqi
-# This file is distributed under the same license as the PACKAGE package.
-# Muhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>, 2014.
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Indonesian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-06-23 16:06+0000\n"
-"Last-Translator: Muhammad Rifqi Priyo Susanto "
-"<muhammadrifqipriyosusanto@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-02-05 02:53+0000\n"
+"Last-Translator: Linerly <linerly@protonmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/minetest/"
"minetest/id/>\n"
"Language: id\n"
@@ -17,52 +12,147 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.7-dev\n"
+"X-Generator: Weblate 4.11-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Bersihkan antrean obrolan keluar"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Perintah kosong."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Kembali ke menu utama"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Perintah tidak sah "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Perintah yang dikeluarkan: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Daftar pemain daring"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Pemain daring: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "Antran obrolan keluar sudah dibersihkan."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Perintah ini dinonaktifkan oleh server."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Bangkit kembali"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Anda mati"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Perintah yang ada:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Perintah yang ada: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Perintah tidak tersedia: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Dapatkan bantuan untuk perintah-perintah"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Pakai '.help <cmd>' untuk mendapatkan informasi lanjut atau '.help all' "
+"untuk menampilkan semuanya."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[semua | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Oke"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<tiada yang tersedia>"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Sebuah kesalahan terjadi di sebuah skrip Lua, seperti sebuah mod:"
+msgid "An error occurred in a Lua script:"
+msgstr "Suatu galat terjadi pada suatu skrip Lua:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "Kesalahan muncul:"
+msgid "An error occurred:"
+msgstr "Sebuah galat terjadi:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Menu utama"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Oke"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Sambung ulang"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "Server ini meminta penyambungan ulang:"
+msgstr "Server ini meminta untuk menyambung ulang:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Memuat..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Pilih Mod"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
-msgstr "Versi protokol tidak cocok. "
+msgstr "Versi protokol tidak sesuai. "
#: builtin/mainmenu/common.lua
msgid "Server enforces protocol version $1. "
-msgstr "Server memberlakukan protokol versi $1. "
+msgstr "Server mengharuskan protokol versi $1. "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
msgstr "Server mendukung protokol antara versi $1 dan versi $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Cobalah mencentang ulang daftar server publik dan cek koneksi internet Anda."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
@@ -72,56 +162,87 @@ msgstr "Kami hanya mendukung protokol versi $1."
msgid "We support protocol versions between version $1 and $2."
msgstr "Kami mendukung protokol antara versi $1 dan versi $2."
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Batal"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Bergantung pada:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Dependensi:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Nonaktifkan PM"
+msgid "Disable all"
+msgstr "Matikan semua"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Aktifkan PM"
+msgid "Disable modpack"
+msgstr "Matikan paket mod"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Aktifkan semua"
+msgstr "Nyalakan semua"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Nyalakan paket mod"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Gagal mengaktifkan mod \"$1\" karena terdapat karakter terlarang. Hanya "
+"Gagal menyalakan mod \"$1\" karena terdapat karakter terlarang. Hanya "
"karakter [a-z0-9_] yang dibolehkan."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr ""
-"Sembunyikan\n"
-"permainan"
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr ""
-"Sembunyikan\n"
-"konten pm"
+msgid "Find More Mods"
+msgstr "Cari Mod Lainnya"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr "Tiada dependensi (opsional)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Tiada keterangan permainan yang tersedia."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Tiada dependensi wajib"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Tiada keterangan paket mod yang tersedia."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Tiada dependensi opsional"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dependensi opsional:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Simpan"
@@ -131,75 +252,391 @@ msgstr "Dunia:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
-msgstr "diaktifkan"
+msgstr "dinyalakan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" telah ada. Apakah Anda mau menimpanya?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Dependensi $1 dan $2 akan dipasang."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+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
+msgid "$1 downloading..."
+msgstr "$1 mengunduh..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+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 "$1 akan dipasang dan $2 dependensi akan dilewati."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Semua paket"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Telah terpasang"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Kembali ke menu utama"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Permainan Dasar:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB tidak tersedia ketika Minetest tidak dikompilasi dengan cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Mengunduh..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Gagal mengunduh $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Permainan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Pasang"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Pasang $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Pasang dependensi yang belum ada"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Pemasangan: Tipe berkas tidak didukung atau arsip rusak"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Mod"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Tiada paket yang dapat diambil"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Tiada hasil"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Tiada pembaruan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Tidak ditemukan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Timpa"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Harap pastikan bahwa permainan dasar telah sesuai."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "Diantrekan"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Paket tekstur"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Copot"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Perbarui"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Perbarui Semua [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Lihat informasi lebih lanjut di peramban web"
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Dunia bernama \"$1\" telah ada"
+msgstr "Dunia yang bernama \"$1\" telah ada"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Medan tambahan"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Dingin di ketinggian"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Kering di ketinggian"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Pemaduan bioma"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Bioma"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Gua besar"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Gua"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Buat"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Unduh sebuah sub-permainan, seperti minetest_game, dari minetest.net"
+msgid "Decorations"
+msgstr "Dekorasi"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Unduh satu dari minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Peringatan: Development Test ditujukan untuk para pengembang."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Permainan"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Dungeon"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Medan datar"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Tanah mengambang di langit"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Floatland (tahap percobaan)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Buat medan nonfraktal: Samudra dan bawah tanah"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Bukit"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Sungai lembap"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Tambah kelembapan di sekitar sungai"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Pasang $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Danau"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Kelembapan rendah dan suhu tinggi membuat sungai dangkal atau kering"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
-msgstr "Generator peta"
+msgstr "Pembuat peta"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Flag pembuat peta"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "Flag khusus pembuat peta"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Pegunungan"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Aliran tanah"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Jaringan terowongan dan gua"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Tiada permainan yang dipilih"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Mengurangi suhu di ketinggian"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Tidak ada dunia atau permainan yang dipilih"
+msgid "Reduces humidity with altitude"
+msgstr "Mengurangi kelembapan di ketinggian"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Sungai"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Sungai setinggi permukaan laut"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Seed"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Peringatan: minimal development test ditujukan untuk pengembang."
+msgid "Smooth transition between biomes"
+msgstr "Pergantian halus antarbioma"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Struktur muncul pada permukaan (tidak berdampak pada pohon dan rumput hutan "
+"rimba yang dibuat oleh v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Struktur muncul pada permukaan, biasanya pohon dan tanaman"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Iklim Sedang, Gurun"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Iklim Sedang, Gurun, Hutan Rimba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Iklim Sedang, Gurun, Hutan Rimba, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Erosi permukaan medan"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Pohon dan rumput hutan rimba"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Variasi kedalaman sungai"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Gua sangat besar di kedalaman bawah tanah"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Nama dunia"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Anda tidak punya sub-permainan terpasang."
+msgid "You have no games installed."
+msgstr "Anda tidak punya permainan yang terpasang."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "Anda yakin ingin menghapus \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Hapus"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Pengelola mod: gagal untuk menghapus \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: gagal menghapus \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Pengelola mod: jalur mod tidak sah \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: jalur tidak sah \"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "Hapus Dunia \"$1\"?"
+msgstr "Hapus dunia \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Konfirmasi kata sandi"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Nama pembuat peta"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nama"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Kata sandi"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Kata sandi tidak cocok!"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Daftar dan Gabung"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Setuju"
@@ -207,25 +644,43 @@ msgstr "Setuju"
msgid "Rename Modpack:"
msgstr "Ganti nama paket mod:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" bukan sebuah flag yang sah."
+#: 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 ""
+"Paket mod ini memiliki nama tersurat yang diberikan dalam modpack.conf yang "
+"akan menimpa penggantian nama yang ada."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr "(Tidak ada keterangan dari pengaturan yang diberikan)"
+msgstr "(Tiada keterangan pengaturan yang diberikan)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Noise 2D"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr "< Halaman Pengaturan"
+msgstr "< Halaman pengaturan"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
msgstr "Jelajahi"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Konten"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Konten"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr "Dinonaktifkan"
+msgstr "Dimatikan"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
@@ -233,39 +688,23 @@ msgstr "Sunting"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
-msgstr "Diaktifkan"
+msgstr "Dinyalakan"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
-"Format adalah 3 angka yang dipisahkan oleh koma dan di dalam tanda kurung."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Lacunarity"
+msgstr "Lakuna (celah)"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Permainan"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mod"
+msgid "Octaves"
+msgstr "Oktaf"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-"Lacunarity (celah, opsional) dapat ditambahkan dengan awalan tanda koma."
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Pergeseran"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Silakan masukan daftar flag yang dipisahkan dengan tanda koma."
+msgid "Persistence"
+msgstr "Kegigihan"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -273,236 +712,341 @@ msgstr "Mohon masukkan sebuah bilangan bulat yang sah."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid number."
-msgstr "Mohon masukkan sebuah angka yang sah."
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "Nilai yang mungkin adalah: "
+msgstr "Mohon masukkan sebuah bilangan yang sah."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
-msgstr "Atur ke Bawaan"
+msgstr "Atur ke bawaan"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Skala"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Cari"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Pilih jalur"
+msgid "Select directory"
+msgstr "Pilih direktori"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Pilih berkas"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr "Tampilkan nama teknis"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Nilai harus lebih besar dari $1."
+msgid "The value must be at least $1."
+msgstr "Nilai tidak boleh lebih kecil dari $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Nilai harus lebih kecil dari $1."
+msgid "The value must not be larger than $1."
+msgstr "Nilai tidak boleh lebih besar dari $1."
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Pemasangan Mod: tipe berkas tidak didukung \"$1\" atau kerusakan pada arsip"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "Gagal untuk memasang $1 ke $2"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Persebaran X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Persebaran Y"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Pemasangan Mod: berkas: \"$1\""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Persebaran Z"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "nilai mutlak"
+
+#. ~ "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 "bawaan"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "kehalusan (eased)"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Pemasangan Mod: tidak dapat mencari nama yang sebenarnya dari: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Dinyalakan)"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 mod"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Gagal memasang $1 ke $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Pemasangan mod: Tidak dapat mencari nama yang sebenarnya dari: $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-"Pemasangan Mod: tidak dapat mencari nama folder yang sesuai untuk paket mod "
+"Pemasangan mod: Tidak dapat mencari nama folder yang sesuai untuk paket mod "
"$1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Tutup toko"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Tidak dapat mencari mod atau paket mod yang sah"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Mengunduh $1, mohon tunggu..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Gagal memasang $1 sebagai paket tekstur"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Pasang"
-
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Halaman $1 dari $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Gagal memasang permainan sebagai $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Peringkat"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Gagal memasang mod sebagai $1"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Cari"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Gagal memasang paket mod sebagai $1"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Nama pendek:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Memuat..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Berhasil dipasang:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "Daftar server publik dimatikan"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Tidak diurutkan"
+#: 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."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Pasang ulang"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Tentang"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
-msgstr "Kontributor Aktif"
+msgstr "Penyumbang Aktif"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Penggambar aktif:"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Pengembang Inti"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Penghargaan"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Pilih direktori"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.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 berisi dunia, permainan, mod, dan paket tekstur\n"
+"dari pengguna dalam pengelola/penjelajah berkas."
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
-msgstr "Kontributor Sebelumnya"
+msgstr "Penyumbang Sebelumnya"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Pengembang Inti Sebelumnya"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Mod Terpasang:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Informasi mod:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Tidak ada deskripsi mod tersedia"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Ganti nama"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Pilih Berkas Mod:"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Tampilkan info awakutu"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Copot pemasangan mod terpilih"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Jelajahi konten daring"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Copot pemasangan paket mod terpilih"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Konten"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Alamat / Port"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Matikan paket tekstur"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Klien"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informasi:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Sambung"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Paket yang terpasang:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Mode kreatif"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Tidak bergantung pada mod lain."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Kerusakan diaktifkan"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Tiada keterangan paket tersedia"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Hapus Favorit"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Ganti nama"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Favorit"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Copot paket"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Nama / Kata sandi"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Gunakan paket tekstur"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP diaktifkan"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Umumkan Server"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Alamat Sambungan"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Konfigurasi"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Mode Kreatif"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "Aktifkan Kerusakan"
+msgstr "Nyalakan Kerusakan"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nama/Kata sandi"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Host Permainan"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Host Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Pasang permainan dari ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Baru"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Tidak ada dunia yang dibuat atau dipilih!"
+msgstr "Tiada dunia yang dibuat atau dipilih!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Mainkan Permainan"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
-msgstr "Port"
+msgstr "Porta"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Publik"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Pilih Mod"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Pilih Dunia:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Server"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Port Server"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "Mulai Permainan"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Alamat"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Clear"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Mode kreatif"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Kerusakan/PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Favorit"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Server Tidak Kompatibel"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Gabung Permainan"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Server Publik"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Segarkan"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Port utk Kendali Jarak Jauh"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Keterangan Server"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
msgstr "2x"
@@ -520,48 +1064,61 @@ msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Pengaturan Lanjutan"
+msgid "All Settings"
+msgstr "Semua Pengaturan"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "Antialiasing:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Apakah Anda yakin ingin mengatur ulang dunia Anda?"
+msgid "Autosave Screen Size"
+msgstr "Simpan Ukuran Layar"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr "Bilinear Filter"
+msgstr "Filter Bilinear"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Bump Mapping"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Ubah tombol"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Ubah Tombol"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
msgstr "Kaca Tersambung"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Bayangan dinamis"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Bayangan dinamis: "
+
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "Daun Megah"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "Tinggi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "Rendah"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "Menengah"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "Mipmap"
#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap + Aniso. Filter"
-msgstr "Mipmap + Aniso. Filter"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Tidak"
+msgstr "Filter Aniso. + Mipmap"
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
@@ -572,23 +1129,16 @@ msgid "No Mipmap"
msgstr "Tanpa Mipmap"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Highlighting"
-msgstr "Node Highlighting"
+msgstr "Sorot Nodus"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Node Outlining"
-msgstr "Node Outlining"
-
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr "Tidak ada"
+msgstr "Garis Bentuk Nodus"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Normal Mapping"
-msgstr "Normal Mapping"
+msgid "None"
+msgstr "Tidak Ada"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
@@ -596,20 +1146,15 @@ msgstr "Daun Opak"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr "Air Buram"
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax Occlusion"
-msgstr "Parallax Occlusion"
+msgstr "Air Opak"
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Partikel"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "Atur ulang dunia pemain tunggal"
+msgid "Screen:"
+msgstr "Layar:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -620,6 +1165,14 @@ msgid "Shaders"
msgstr "Shader"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Shader (tahap percobaan)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Shader (tidak tersedia)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "Daun Sederhana"
@@ -629,103 +1182,78 @@ msgstr "Pencahayaan Halus"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
-msgstr "Penteksturan:"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Untuk mengaktifkan shaders OpenGL driver harus digunakan."
+msgstr "Peneksturan:"
#: 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)"
-msgstr "Batas sentuhan (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Batas Sentuhan: (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr "Trilinear Filter"
+msgstr "Filter Trilinear"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Daun Melambai"
+#, fuzzy
+msgid "Very High"
+msgstr "Ultratinggi"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Tanaman Berayun"
+msgid "Very Low"
+msgstr "Sangat Rendah"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Air Berombak"
+msgid "Waving Leaves"
+msgstr "Daun Melambai"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Ya"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Konfigurasi mod"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Beranda"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Mulai Pemain Tunggal"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Mainkan"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Pemain Tunggal"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Tidak ada informasi tersedia"
+msgid "Waving Liquids"
+msgstr "Air Berombak"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Pilih paket tekstur:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Tanaman Berayun"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Paket Tekstur"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Galat sambungan (terlalu lama?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr "Koneksi kehabisan waktu."
+msgstr "Sambungan kehabisan waktu."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Selesai!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr "Menginisialisasi node"
+msgstr "Menyiapkan nodus"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Menginisialisasi node..."
+msgstr "Menyiapkan nodus..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "Memuat tekstur..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Membangun ulang shaders..."
+msgstr "Membangun ulang shader..."
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
-msgstr "Koneksi rusak (terlalu lama?)"
+msgstr "Galat sambungan (terlalu lama?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Tidak dapat mencari atau memuat permainan \""
+msgid "Could not find or load game: "
+msgstr "Tidak dapat mencari atau memuat permainan: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
@@ -737,79 +1265,194 @@ msgstr "Menu Utama"
#: src/client/clientlauncher.cpp
msgid "No world selected and no address provided. Nothing to do."
-msgstr "Tidak ada dunia yang dipilih dan tidak ada alamat yang diberikan."
+msgstr "Tiada dunia yang dipilih dan tiada alamat yang diberikan."
#: src/client/clientlauncher.cpp
msgid "Player name too long."
msgstr "Nama pemain terlalu panjang."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Tolong pilih sebuah nama!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Berkas kata sandi yang diberikan gagal dibuka: "
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "Jalur dunia yang diberikan tidak ada: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Cek debug.txt untuk detail."
+"Periksa debug.txt untuk detail."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Ubah Tombol"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Alamat: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Mode: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Porta: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Publik: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Nama Server: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Sebuah galat serialisasi terjadi:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Akses ditolak. Alasan: %s"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Maju otomatis dimatikan"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Maju otomatis dinyalakan"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Batasan blok disembunyikan"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "Batasan blok ditampilkan untuk semua blok"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "Batasan blok ditampilkan untuk blok saat ini"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "Batasan blok ditampilkan untuk blok sekitar"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Pembaruan kamera dimatikan"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Pembaruan kamera dinyalakan"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr "Tidak bisa menampilkan batasan blok (butuh hak 'basic_debug')"
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Ganti Kata Sandi"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Mode sinema dimatikan"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Mode sinema dinyalakan"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Klien terputus"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Skrip sisi klien dimatikan"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "Menghubungkan ke server..."
+msgstr "Menyambung ke server..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Sambungan gagal karena sebab yang tak diketahui"
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Lanjutkan"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Kontrol:\n"
+"- %s: maju\n"
+"- %s: mundur\n"
+"- %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"
+"- Roda tetikus: pilih barang\n"
+"- %s: obrolan\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Tidak bisa menyelesaikan alamat: %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
msgstr "Membuat klien..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
msgstr "Membuat server..."
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Kontrol Bawaan:\n"
-"- WASD: bergerak\n"
-"- Space: lompat/panjat\n"
-"- Shift: menyelinap/turun\n"
-"- Q: jatuhkan barang\n"
-"- I: inventaris\n"
-"- Mouse: belok/melihat\n"
-"- Mouse kiri: gali/pukul\n"
-"- Mouse kanan: taruh/pakai\n"
-"- Roda mouse: pilih barang\n"
-"- T: obrolan\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Info awakutu dan grafik profiler disembunyikan"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Info awakutu ditampilkan"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Info awakutu, grafik profiler, dan rangka kawat disembunyikan"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -824,505 +1467,818 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"Kontrol Bawaan:\n"
+"Kontrol bawaan:\n"
"Tanpa menu yang tampak:\n"
"- ketuk sekali: tekan tombol\n"
"- ketuk ganda: taruh/pakai\n"
"- geser: melihat sekitar\n"
-"Menu/Inventaris tampak:\n"
+"Menu/inventaris tampak:\n"
"- ketuk ganda (di luar):\n"
" -->tutup\n"
-"- tekan tumpukan, tekan wadah:\n"
+"- sentuh tumpukan, sentuh wadah:\n"
" --> pindah tumpukan\n"
-"- tekan&geser, ketuk jari kedua\n"
+"- sentuh & geser, ketuk jari kedua\n"
" --> taruh barang tunggal ke wadah\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Matikan jarak pandang tak terbatas"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Nyalakan jarak pandang tak terbatas"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Membuat klien..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Menu Utama"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Tutup Aplikasi"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr "Definisi barang..."
-
-#: src/game.cpp
-msgid "KiB/s"
-msgstr "KiB/s"
-
-#: src/game.cpp
-msgid "Media..."
-msgstr "Media..."
-
-#: src/game.cpp
-msgid "MiB/s"
-msgstr "MiB/s"
-
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Definisi node..."
-
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Mencari alamat..."
-
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Bangkit"
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Mode cepat dimatikan"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Mematikan..."
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Mode cepat dinyalakan"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Volume Suara"
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Mode cepat dinyalakan (catatan: tanpa hak \"fast\")"
-#: src/game.cpp
-msgid "You died."
-msgstr "Anda mati."
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Mode terbang dimatikan"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "oke"
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Mode terbang dinyalakan"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Masuk "
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Mode terbang dinyalakan (catatan: tanpa hak \"fly\")"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Lanjut"
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Kabut dimatikan"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Pakai\" = turun"
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Kabut dinyalakan"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Mundur"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Informasi permainan:"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Obrolan"
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Permainan dijeda"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Perintah"
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Membuat server"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Konsol"
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Definisi barang..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Tekan ganda \"lompat\" untuk terbang"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Jatuhkan"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Media..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Maju"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventaris"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Peta mini sedang dilarang oleh permainan atau mod"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Lompat"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multipemain"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Tombol telah terpakai"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Mode tembus blok dimatikan"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"Pengaturan tombol. (Jika menu ini kacau, hapus pengaturan kontrol dari "
-"minetest.conf)"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Mode tembus blok dinyalakan"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Kiri"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Mode tembus blok dinyalakan (catatan: tanpa hak \"noclip\")"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Cetak tumpukan"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definisi nodus..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Jarak pandang"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Mati"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Kanan"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Nyala"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Menyelinap"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Mode gerak sesuai pandang dimatikan"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Mode sinema"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Mode gerak sesuai pandang dinyalakan"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Gerak cepat"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Grafik profiler ditampilkan"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Terbang"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Server jarak jauh"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Tembus blok"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Mencari alamat..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Pakai"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Mematikan..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoom"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Pemain tunggal"
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "tekan tombol"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volume Suara"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Ubah"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Suara dibisukan"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Sistem suara dimatikan"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Sistem suara tidak didukung dalam buatan ini"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Suara dibunyikan"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Server ini mungkin menjalankan versi %s yang berbeda."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Tidak bisa menyambung ke %s karena IPv6 dimatikan"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Tidak bisa mendengarkan %s karena IPv6 dimatikan"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Jarak pandang diubah menjadi %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Jarak pandang pada titik maksimum: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Jarak pandang pada titik minimum: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Volume diubah ke %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Rangka kawat ditampilkan"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Zum sedang dilarang oleh permainan atau mod"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "oke"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Konfirmasi Kata Sandi"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Obrolan disembunyikan"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Kata Sandi Baru"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Obrolan ditampilkan"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Kata Sandi Lama"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD disembunyikan"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Kata sandi tidak cocok!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD ditampilkan"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Keluar"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profiler disembunyikan"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Volume Suara: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profiler ditampilkan (halaman %d dari %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
-msgstr "Tombol Menu"
-
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
+msgstr "Aplikasi"
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+msgid "Backspace"
msgstr "Backspace"
-#: src/keycode.cpp
-msgid "Capital"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Bersihkan"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Koma"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
-msgstr "Ctrl"
+msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convert"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Turun"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "End"
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
msgstr "Erase OEF"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Esc"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Execute"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr "Help"
+msgstr "Bantuan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insert"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Accept"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME Convert"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME Mode Change"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME Nonconvert"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Kiri"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Klik Kiri"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Ctrl Kiri"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr "Left Menu"
+msgstr "Menu Kiri"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Shift Kiri"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr "Start Kiri"
+msgstr "Windows Kiri"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
-msgstr "Alt"
+msgstr "Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Klik Tengah"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Kurang"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Pergantian Mode"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Page Up"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nonconvert"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Numpad *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Numpad +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Numpad -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Numpad ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Numpad /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Numpad 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Numpad 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Numpad 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Numpad 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Numpad 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Numpad 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Numpad 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Numpad 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Numpad 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Numpad 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page down"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page up"
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Titik"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Tambah"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Play"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Print"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Page Down"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
-msgstr "Enter"
+msgstr "Return"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Kanan"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Klik Kanan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Ctrl Kanan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
-msgstr "Right Menu"
+msgstr "Menu Kanan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Shift Kanan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr "Start Kanan"
+msgstr "Windows Kanan"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Select"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Sleep"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Snapshot"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Spasi"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Atas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "Tombol X 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "Tombol X 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zum"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Peta mini disembunyikan"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Peta mini mode radar, perbesaran %dx"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Peta mini mode permukaan, perbesaran %dx"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Peta mini mode tekstur"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Gagal membuka laman web"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Membuka laman web"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Lanjut"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Aux1\" = turun"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Maju otomatis"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Lompat otomatis"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Mundur"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Batasan blok"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Ubah kamera"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Obrolan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Perintah"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsol"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Turunkan jangkauan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Turunkan volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Tekan ganda \"lompat\" untuk terbang"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Jatuhkan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Maju"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Naikkan jangkauan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Naikkan volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventaris"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Lompat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Tombol telah terpakai"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Perintah lokal"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Bisukan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Barang selanjutnya"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Barang sebelumnya"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Jarak pandang"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Tangkapan layar"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Menyelinap"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Alih HUD"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Alih log obrolan"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Gerak cepat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Terbang"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Alih kabut"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Alih peta mini"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Tembus nodus"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Gerak sesuai pandang"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "tekan tombol"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Ubah"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Kata sandi baru"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Kata sandi lama"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Kata sandi tidak cocok!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Keluar"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Dibisukan"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volume Suara: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "id"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Tolong pilih sebuah nama!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Tetapkan posisi joystick virtual.\n"
+"Jika dimatikan, joystick virtual akan menengah di posisi sentuhan pertama."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Gunakan joystick virtual untuk mengetuk tombol \"Aux1\".\n"
+"Jika dinyalakan, joystick virtual juga akan mengetuk tombol \"Aux1\" saat "
+"berada di luar lingkaran utama."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"Pergeseran (X,Y,Z) fraktal dari tengah dunia dalam satuan \"scale\".\n"
+"Dapat digunakan untuk memindahkan titik yang diinginkan ke (0, 0)\n"
+"untuk membuat titik bangkit atau untuk \"zum masuk\" pada titik yang\n"
+"diinginkan dengan menaikkan \"scale\".\n"
+"Nilai bawaan telah diatur agar cocok untuk Mandelbrot set dengan\n"
+"parameter bawaan, ini mungkin butuh diganti untuk keadaan lain.\n"
+"Jangkauan sekitar -2 ke 2. Kalikan dengan \"scale\" untuk pergeseran\n"
+"dalam satuan nodus."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = parallax occlusion with slope information (cepat).\n"
-"1 = relief mapping (pelan, lebih akurat)."
+"Skala (X,Y,Z) fraktal dalam nodus.\n"
+"Ukuran fraktal sebenarnya bisa jadi 2 hingga 3 kali lebih besar.\n"
+"Angka-angka ini dapat dibuat sangat besar, fraktal tidak harus\n"
+"cukup di dalam dunia.\n"
+"Naikkan nilai ini untuk \"zum\" ke dalam detail dari fraktal.\n"
+"Nilai bawaannya untuk bentuk pipih vertikal yang cocok\n"
+"untuk pulau, atur ketiga angka menjadi sama untuk bentuk mentah."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Noise 2D yang mengatur bentuk/ukuran punggung gunung."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Noise 2D yang mengatur bentuk/ukuran perbukitan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Noise 2D yang mengatur bentuk/ukuran teras gunung."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "Noise 2D yang mengatur ukuran/kemunculan punggung pegunungan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Noise 2D yang mengatur ukuran/kemunculan perbukitan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "Noise 2D yang mengatur ukuran/kemunculan teras pegunungan."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Noise 2D yang mengatur letak sungai dan kanal."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1333,6 +2289,51 @@ msgid "3D mode"
msgstr "Mode 3D"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Kekuatan mode paralaks 3D"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Noise 3D yang mengatur gua besar."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Noise 3D yang mengatur struktur dan ketinggian gunung.\n"
+"Juga mengatur struktur dari medan gunung floatland."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Noise 3D yang membentuk struktur floatland.\n"
+"Jika diubah dari bawaan, skala noise (bawaannya 0.7) mungkin butuh\n"
+"disesuaikan karena fungsi penirus floatland berfungsi baik ketika\n"
+"noise ini bernilai antara -2.0 hingga 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Noise 3D yang mengatur struktur dari dinding ngarai sungai."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Noise 3D yang mengatur medan."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Noise 3D untuk gunung menggantung, tebing, dll. Biasanya variasi kecil."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Noise 3D yang mengatur jumlah dungeon per mapchunk."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1341,15 +2342,24 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Dukungan 3D.\n"
-"Didukung saat ini:\n"
+"Yang didukung saat ini:\n"
"- none: tidak ada keluaran 3d.\n"
-"- anaglyph: 3d berwarna cyan/magenta.\n"
-"- interlaced: garis ganjil/genap berdasarkan polarisasi dukungan layar.\n"
+"- anaglyph: 3d berwarna sian/magenta.\n"
+"- interlaced: garis ganjil/genap berdasarkan polarisasi layar.\n"
"- topbottom: pisahkan layar atas/bawah.\n"
-"- sidebyside: pisahkan layar berdampingan."
+"- sidebyside: pisahkan layar kiri/kanan.\n"
+"- crossview: 3d pandang silang\n"
+"- pageflip: 3d dengan quadbuffer.\n"
+"Catat bahwa mode interlaced membutuhkan penggunaan shader."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1357,11 +2367,11 @@ msgid ""
"Will be overridden when creating a new world in the main menu."
msgstr ""
"Seed peta terpilih untuk peta baru, kosongkan untuk nilai acak.\n"
-"Akan diganti ketika menciptakan dunia baru dalam menu utama."
+"Akan diganti ketika menciptakan dunia baru lewat menu utama."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr "Sebuah pesan yang akan ditampilkan ke semua klien ketika server crash."
+msgstr "Sebuah pesan yang akan ditampilkan ke semua klien ketika server gagal."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
@@ -1369,28 +2379,32 @@ msgstr ""
"Sebuah pesan yang akan ditampilkan ke semua klien ketika server dimatikan."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Absolute limit of emerge queues"
-msgstr "Batas absolut dari antrian muncul"
+msgid "ABM interval"
+msgstr "Selang waktu ABM"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Anggaran waktu ABM"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Batas mutlak antrean kemunculan blok"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Percepatan di udara"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Management interval"
-msgstr "Batas blok aktif"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Percepatan gravitasi dalam nodus per detik per detik."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifier interval"
-msgstr "Batas blok aktif"
+msgid "Active Block Modifiers"
+msgstr "Pengubah Blok Aktif"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Batas blok aktif"
+msgid "Active block management interval"
+msgstr "Selang waktu pengelola blok aktif"
#: src/settings_translation_file.cpp
msgid "Active block range"
@@ -1406,110 +2420,242 @@ msgid ""
"Leave this blank to start a local server.\n"
"Note that the address field in the main menu overrides this setting."
msgstr ""
-"Alamat untuk menghubungkan.\n"
+"Alamat tujuan sambungan.\n"
"Biarkan kosong untuk memulai sebuah server lokal.\n"
"Perhatikan bahwa bidang alamat dalam menu utama menimpa pengaturan ini."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Tambahkan partikel saat menggali nodus."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
-"Atur konfigurasi dpi ke layar Anda (non X11/Android saja) misalkan untuk "
+"Atur konfigurasi dpi ke layar Anda (selain X11/Android saja) misalnya untuk "
"layar 4K."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Menyesuaikan kepadatan tampilan yang dideteksi, dipakai untuk mengatur skala "
+"elemen UI."
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Sesuaikan encoding gamma untuk tabel cahaya. Angka yang lebih rendah lebih "
-"terang.\n"
-"Pengaturan ini untuk klien saja dan diabaikan oleh server."
+"Sesuaikan kepadatan lapisan floatland.\n"
+"Tambahkan nilai untuk menambah kepadatan. Dapat positif atau negatif.\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)."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Sisipkan nama barang"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Lanjutan"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Dingin di Ketinggian"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Ubah kurva cahaya dengan menerapkan penyesuaian gama.\n"
+"Nilai yang lebih tinggi menerangkan tingkatan cahaya rendah\n"
+"dan menengah. Nilai \"1.0\" membiarkan kurva cahaya seperti\n"
+"asalnya. Ini hanya berpengaruh kepada cahaya siang dan cahaya\n"
+"buatan. Ini punya pengaruh kecil kepada cahaya malam alami."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+#, fuzzy
+msgid "Always fly fast"
msgstr "Selalu terbang dan bergerak cepat"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Ambient occlusion gamma"
msgstr "Ambient occlusion gamma"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Memperbesar lembah"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Jumlah pesan yang dapat dikirim pemain per 10 detik."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "Memperbesar lembah."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Anisotropic filtering"
-msgstr "Anisotropic filtering"
+msgstr "Pemfilteran anisotropik"
#: src/settings_translation_file.cpp
msgid "Announce server"
msgstr "Umumkan server"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"Mengumumkan kepada daftar server ini.\n"
-"Jika Anda ingin mengumumkan alamat IPv6 Anda, gunakan serverlist_url = v6."
-"servers.minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Umumkan ke daftar server ini."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Sisipkan nama barang"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Sisipkan nama barang pada tooltip."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Noise pohon apel"
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Memperkirakan skala (X,Y,Z) dari fraktal pada node."
+msgid "Arm inertia"
+msgstr "Kelembaman tangan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Kelembaman tangan memberikan gerakan tangan\n"
+"yang lebih nyata saat kamera bergerak."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
msgstr "Minta untuk menyambung ulang setelah crash"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
-msgstr "Secara otomatis melaporkan ke daftar server."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"Pada jarak ini, server akan melakukan optimasi dengan agresif terhadap\n"
+"blok yang dikirim kepada klien.\n"
+"Nilai yang kecil dapat meningkatkan kinerja dengan glitch pada tampilan\n"
+"(beberapa blok di bawah air dan dalam gua tidak akan digambar,\n"
+"terkadang juga di darat).\n"
+"Nilai yang lebih besar daripada max_block_send_distance mematikan\n"
+"optimasi ini.\n"
+"Dalam satuan blok peta (16 nodus)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Tombol maju otomatis"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Lompati otomatis halangan satu nodus."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Secara otomatis melaporkan ke daftar server ini."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Simpan ukuran layar"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Mode penyekalaan otomatis"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Tombol Aux1"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Tombol Aux1 untuk memanjat/turun"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
msgstr "Tombol mundur"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Tinggi dasar medan"
+msgid "Base ground level"
+msgstr "Ketinggian dasar tanah"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Dasar"
+msgid "Base terrain height."
+msgstr "Ketinggian dasar medan."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr "Izin Dasar"
+msgid "Basic privileges"
+msgstr "Hak-hak dasar"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Noise pantai"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Ambang batas noise pantai"
#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
-msgstr "Bilinear filtering"
+msgstr "Pemfilteran bilinear"
#: src/settings_translation_file.cpp
msgid "Bind address"
msgstr "Alamat sambungan"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bit per piksel (alias kedalaman warna) dalam mode layar penuh."
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parameter noise suhu dan kelembapan Biome API"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Noise bioma"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Jarak optimasi pengiriman blok"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Jalur fon tebal dan miring"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Jalur fon monospace tebal dan miring"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Jalur fon tebal"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Jalur fon monospace tebal"
#: src/settings_translation_file.cpp
msgid "Build inside player"
@@ -1517,11 +2663,24 @@ msgstr "Bangun di dalam pemain"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Terpasang bawaan"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Ubah kamera"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Bumpmapping"
+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 ""
+"Jarak bidang dekat kamera dalam nodus, antara 0 dan 0.5\n"
+"Hanya untuk GLES. Kebanyakan pengguna tidak perlu mengganti ini.\n"
+"Menaikkan nilai dapat mengurangi cacat pada GPU yang lebih lemah.\n"
+"0.1 = Bawaan, 0.25 = Bagus untuk tablet yang lebih lemah."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1536,6 +2695,10 @@ msgid "Camera update toggle key"
msgstr "Tombol beralih pembaruan kamera"
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Noise gua"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr "Noise #1 gua"
@@ -1548,63 +2711,84 @@ msgid "Cave width"
msgstr "Lebar gua"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Gua dan terowongan terbentuk di persimpangan antara dua noise"
+msgid "Cave1 noise"
+msgstr "Noise gua1"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "Noise gua2"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "Batas gua besar"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "Noise #1 gua besar"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Kelancipan gua"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Ambang batas gua besar"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Batas atas gua besar"
+
+#: 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 ""
+"Pertengahan rentang penguatan kurva cahaya.\n"
+"Nilai 0.0 adalah minimum, 1.0 adalah maksimum."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr "Ambang batas waktu pesan perintah obrolan"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Perintah obrolan"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Ukuran fon obrolan"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "Tombol obrolan"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Tombol beralih obrolan"
+msgid "Chat log level"
+msgstr "Tingkat log obrolan"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Perintah"
+msgid "Chat message count limit"
+msgstr "Batas jumlah pesan obrolan"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"18 pilihan fraktal dari 9 rumus.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat message format"
+msgstr "Format pesan obrolan"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Ambang batas jumlah pesan sebelum ditendang keluar"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Panjang maksimum pesan obrolan"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Tombol beralih obrolan"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Tautan web obrolan"
#: src/settings_translation_file.cpp
msgid "Chunk size"
@@ -1623,16 +2807,41 @@ msgid "Clean transparent textures"
msgstr "Bersihkan tekstur transparan"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Tautan web yang bisa diklik (klik-tengah atau Ctrl+klik-kiri) dibolehkan "
+"dalam konsol obrolan."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Klien"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Klien dan Server"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Kecepatan memanjat"
+msgid "Client modding"
+msgstr "Mod klien"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Pembatasan mod sisi klien"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Tinggi awan"
+msgid "Client side node lookup range restriction"
+msgstr "Batas jangkauan pencarian nodus sisi klien"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Mod klien"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "Kelajuan memanjat"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1644,7 +2853,7 @@ msgstr "Awan"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr "Awan adalah efek dari klien."
+msgstr "Awan adalah efek sisi klien."
#: src/settings_translation_file.cpp
msgid "Clouds in menu"
@@ -1655,13 +2864,35 @@ msgid "Colored fog"
msgstr "Kabut berwarna"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "Bayangan berwarna"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Daftar yang dipisahkan dengan koma dari flag yang akan disembunyikan dalam "
+"gudang konten.\n"
+"\"nonfree\" dapat digunakan untuk menyembunyikan paket yang tidak tergolong\n"
+"\"perangkat lunak bebas gratis\" seperti yang ditetapkan oleh Free Software "
+"Foundation.\n"
+"Anda juga dapat menentukan sensor konten.\n"
+"Flag-flag ini tidak bergantung pada versi Minetest,\n"
+"maka lihat daftar lengkap di https://content.minetest.net/help/content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"Daftar yang dipisahkan koma dari mod yang dibolehkan untuk mengakses\n"
-"HTTP API, membolehkan mereka untuk mengunggah dan mengunduh data\n"
+"Daftar yang dipisahkan dengan koma dari mod yang dibolehkan untuk\n"
+"mengakses HTTP API, membolehkan mereka untuk mengunggah dan mengunduh data "
"ke/dari internet."
#: src/settings_translation_file.cpp
@@ -1670,7 +2901,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
@@ -1678,36 +2909,81 @@ msgid "Command key"
msgstr "Tombol perintah"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Tingkat kompresi saat menyimpan blok peta ke diska.\n"
+"-1 - tingkat kompresi bawaan\n"
+"0 - kompresi sedikit, tercepat\n"
+"9 - kompresi terbaik, terlambat"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Tingkat kompresi saat mengirimkan blok peta kepada klien.\n"
+"-1 - tingkat kompresi bawaan\n"
+"0 - kompresi sedikit, tercepat\n"
+"9 - kompresi terbaik, terlambat"
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr "Sambungkan kaca"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr "Menyambungkan ke server media eksternal"
+msgstr "Sambungkan ke server media eksternal"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr "Sambungkan kaca jika didukung oleh node."
+msgstr "Sambungkan kaca jika didukung oleh nodus."
#: src/settings_translation_file.cpp
msgid "Console alpha"
-msgstr "Alpha konsol"
+msgstr "Keburaman konsol"
#: src/settings_translation_file.cpp
msgid "Console color"
msgstr "Warna konsol"
#: src/settings_translation_file.cpp
-msgid "Console key"
+msgid "Console height"
msgstr "Tombol konsol"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Gudang konten daring"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Daftar Hitam Flag ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Jumlah Maks Pengunduhan ContentDB Bersamaan"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "URL ContentDB"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr "Maju terus-menerus"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Gerakan maju terus-menerus (hanya digunakan untuk pengujian)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Gerakan maju terus-menerus, diatur oleh tombol maju otomatis.\n"
+"Tekan tombol maju otomatis lagu atau gerak mundur untuk mematikannya."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1716,72 +2992,69 @@ msgstr "Kontrol"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
"Mengatur panjang siklus pagi/malam.\n"
-"Contoh: 72 = 20 menit, 360 = 4 menit, 1 = 24 jam, 0 = pagi/malam/lainnya "
-"tidak berubah."
+"Contoh:\n"
+"72 = 20 menit, 360 = 4 menit, 1 = 24 jam, 0 = pagi/malam/lainnya tidak "
+"berubah."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Mengatur ukuran padang gurun dan pantai dalam Mapgen v6.\n"
-"Jika snowbiomes di aktifkan 'mgv6_freq_desert' akan dihiraukan."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr "Mengatur kecuraman/kedalaman dari lekukan danau."
+msgstr "Mengatur kecuraman/kedalaman lekukan danau."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr "Mengatur kecuraman/ketinggian dari bukit."
+msgstr "Mengatur kecuraman/ketinggian bukit."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
-msgstr "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar."
+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 ""
+"Atur lebah terowongan, nilai yang lebih kecil melebarkan terowongan.\n"
+"Nilai >= 10.0 mematikan terowongan dan menghindari perhitungan\n"
+"noise intensif."
#: src/settings_translation_file.cpp
msgid "Crash message"
-msgstr "Pesan kerusakan"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Membuat lava yang tidak dapat diprediksi di dalam gua.\n"
-"Ini dapat menyebabkan menambang menjadi sulit. Nol menonaktifkannya. (0-10)"
+msgstr "Pesan crash"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Membuat air yang tidak dapat diprediksi di dalam gua.\n"
-"Ini dapat menyebabkan menambang menjadi sulit. Nol menonaktifkannya. (0-10)"
+msgid "Creative"
+msgstr "Kreatif"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr "Keburaman crosshair"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Keburaman crosshair (keopakan, antara 0 sampai 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Keburaman crosshair (keopakan, dari 0 sampai 255).\n"
+"Juga mengatur warna crosshair objek."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
msgstr "Warna crosshair"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Warna crosshair (merah,hijau,biru atau R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Kecepatan jalan merunduk"
+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"
@@ -1793,17 +3066,29 @@ msgstr "Kerusakan"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr "Tombol info debug"
+msgstr "Tombol info awakutu"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Ambang batas ukuran log awakutu"
#: src/settings_translation_file.cpp
msgid "Debug log level"
-msgstr "Tingkat catatan debug"
+msgstr "Tingkat log awakutu"
#: src/settings_translation_file.cpp
-msgid "Dedicated server step"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Tombol turunkan volume"
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr "Langkah server khusus"
+
+#: src/settings_translation_file.cpp
msgid "Default acceleration"
msgstr "Percepatan bawaan"
@@ -1817,7 +3102,7 @@ msgid ""
"This will be overridden when creating a world from the main menu."
msgstr ""
"Permainan bawaan saat membuat dunia baru.\n"
-"Ini akan diganti saat membuat dunia dari menu utama."
+"Ini akan diganti saat membuat dunia lewat menu utama."
#: src/settings_translation_file.cpp
msgid "Default password"
@@ -1825,103 +3110,171 @@ msgstr "Kata sandi bawaan"
#: src/settings_translation_file.cpp
msgid "Default privileges"
-msgstr "Izin bawaan"
+msgstr "Hak-hak bawaan"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Format laporan bawaan"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Ukuran tumpukan bawaan"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Batas waktu bawaan untuk cURL, dalam milidetik.\n"
-"Hanya berefek jika di-compile dengan cURL."
+"Mengatur kualitas filter bayangan.\n"
+"Ini menyimulasikan efek bayangan halus dengan menerapkan PCF atau\n"
+"diska Poisson, tetapi menggunakan sumber daya lebih banyak."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Menetapkan daerah tempat pohon punya apel."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Menetapkan daerah dengan pantai berpasir."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "Mengatur persebaran medan yang lebih tinggi dan kecuraman tebing."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Mengatur persebaran medan yang lebih tinggi."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
+"Mengatur ukuran penuh gua besar, nilai yang lebih kecil memperbesar gua."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Menetapkan struktur kanal sungai skala besar."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Menetapkan lokasi dan medan dari danau dan bukit pilihan."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Mengatur ketinggian dasar tanah."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Mengatur kedalaman kanal sungai."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
+"Menentukan jarak maksimal perpindahan pemain dalam blok (0 = tak terbatas)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Mengatur lebar kanal sungai."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Mengatur lebar ngarai sungai."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Menetapkan daerah pohon dan kepadatan pohon."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Jeda antarpembaruan mesh pada klien dalam milidetik. Menaikkan nilai ini "
+"akan\n"
+"memperlambat pembaruan mesh sehingga mengurangi jitter pada klien lambat."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Jeda dalam pengiriman blok setelah membangun"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
-msgstr ""
+msgstr "Jeda menampilkan tooltip dalam milidetik."
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
msgstr "Penanganan Lua API usang"
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
-msgstr "Kedalaman minimal di mana Anda akan menemukan gua besar."
+msgid "Depth below which you'll find giant caverns."
+msgstr "Kedalaman minimal tempat Anda akan menemukan gua raksasa."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "Kedalaman minimal di mana Anda akan menemukan gua raksasa."
-
-#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr ""
+msgid "Depth below which you'll find large caves."
+msgstr "Kedalaman minimal tempat Anda akan menemukan gua besar."
#: src/settings_translation_file.cpp
msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
msgstr ""
-"Deskripsi dari server yang akan ditampilkan saat pemain bergabung dan pada "
-"daftar server."
+"Keterangan server yang ditampilkan saat pemain bergabung dan dalam daftar "
+"server."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
-msgstr ""
+msgid "Desert noise threshold"
+msgstr "Ambang batas noise gurun"
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"Menentukan bentuk tanah.\n"
-"3 angka dalam kurung mengatur skala dari bentuk\n"
-"tanah, ketiganya harus sama."
+"Gurun muncul saat np_biome melebihi nilai ini.\n"
+"Ketika flag \"snowbiomes\" dinyalakan, nilai ini diabaikan."
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Nonaktifkan anticurang (anticheat)"
+msgid "Desynchronize block animation"
+msgstr "Putuskan sinkronasi animasi blok"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Dekorasi"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Dig key"
+msgstr "Tombol gali"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "Partikel menggali"
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr "Matikan anticurang"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Larang kata sandi kosong"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Faktor Skala Kepadatan Tampilan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr "Nama domain dari server yang akan ditampilkan di daftar server."
+msgstr "Nama domain dari server yang akan ditampilkan pada daftar server."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr "Tekan ganda \"lompat\" untuk terbang"
+msgstr "Tekan ganda lompat untuk terbang"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
@@ -1932,20 +3285,80 @@ msgid "Drop item key"
msgstr "Tombol menjatuhkan barang"
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
+msgstr "Keluarkan informasi awakutu pembuat peta."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Y maksimum dungeon"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Y minimum dungeon"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Noise dungeon"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Nyalakan dukungan IPv6 (untuk kllien dan server).\n"
+"Membutuhkan sambungan IPv6."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Gunakan dukungan Lua modding pada klien.\n"
+"Dukungan ini masih tahap percobaan dan API dapat berubah."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
+"Menyalakan filter diska Poisson.\n"
+"Nilai true berarti memakai diska Poisson untuk \"bayangan halus\". Nilai "
+"lain berarti\n"
+"memakai filter PCF."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"Menyalakan bayangan berwarna.\n"
+"Nilai true berarti nodus agak tembus pandang memiliki bayangan berwarna.\n"
+"Ini sangat membutuhkan sumber daya besar."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Gunakan jendela konsol"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "Nyalakan mode kreatif untuk semua pemain"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "Gunakan joystick"
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Enable joysticks. Requires a restart to take effect"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "Aktifkan VBO"
+msgid "Enable mod channels support."
+msgstr "Nyalakan dukungan saluran mod."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr "Aktifkan mod keamanan"
+msgstr "Nyalakan pengamanan mod"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
@@ -1953,16 +3366,19 @@ msgstr "Membolehkan pemain terkena kerusakan dan mati."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
-msgstr "Aktifkan masukan acak dari pengguna (hanya digunakan untuk pengujian)."
+msgstr "Gunakan masukan pengguna acak (hanya digunakan untuk pengujian)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
-"Aktifkan pencahayaan halus dengan ambient occlusion sederhana.\n"
-"Nonaktifkan untuk kecepatan atau untuk tampilan lain."
+"Gunakan pencahayaan halus dengan ambient occlusion sederhana.\n"
+"Jangan gunakan untuk kecepatan atau untuk tampilan lain."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1972,12 +3388,10 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
-"Membolehkan untuk melarang klien lawas untuk terhubung.\n"
-"Klien-klien lawas dianggap sesuai jika mereka tidak rusak saat "
-"menghubungkan\n"
-"ke server-server baru, tetapi mereka mungkin tidak mendukung semua fitur "
-"baru\n"
-"yang Anda harapkan."
+"Nyalakan untuk melarang sambungan dari klien lawas.\n"
+"Klien lawas dianggap sesuai jika mereka tidak rusak saat menyambung ke "
+"server-\n"
+"server baru, tetapi mungkin tidak mendukung semua fitur baru yang diharapkan."
#: src/settings_translation_file.cpp
msgid ""
@@ -1986,104 +3400,133 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
-"Membolehkan penggunaan server media asing (jika diberikan oleh server).\n"
-"Server asing menawarkan cara lebih cepat untuk mengunduh media (misal.: "
-"tekstur)\n"
-"saat terhubung ke server."
+"Gunakan server media jarak jauh (jika diberikan oleh server).\n"
+"Server jarak jauh menawarkan cara lebih cepat untuk mengunduh media\n"
+"(misal: tekstur) saat tersambung ke server."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"Nyalakan/matikan menjalankan server IPv6. Sebuah server IPv6 mungkin\n"
-"terbatas untuk klien IPv6, tergantung dari konfigurasi sistem.\n"
-"Diabaikan jika bind_address telah diatur."
+"Nyalakan vertex buffer object.\n"
+"Ini dapat meningkatkan kinerja grafika."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Nyalakan animasi barang inventaris."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Gunakan view bobbing dan nilai dari view bobbing\n"
+"Misalkan: 0 untuk tanpa view bobbing; 1.0 untuk normal; 2.0 untuk 2x lipat."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"Nyalakan bumpmapping untuk tekstur. Normalmaps harus disediakan oleh paket\n"
-"tekstur atau harus dihasilkan otomatis.\n"
-"Membutuhkan shader diaktifkan."
+"Nyalakan/matikan server IPv6.\n"
+"Diabaikan jika bind_address telah diatur.\n"
+"Membutuhkan enable_ipv6 untuk dinyalakan."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+"Nyalakan tone mapping \"Uncharted 2\" dari Hable.\n"
+"Menyimulasikan kurva warna film foto dan memperkirakan penampilan\n"
+"citra rentang dinamis tinggi (HDR). Kontras tengah sedikit dikuatkan,\n"
+"sedangkan sorotan dan bayangan dilemahkan."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Mengaktifkan pemetaan suasana (tone mapping) filmis"
+msgid "Enables animation of inventory items."
+msgstr "Jalankan animasi barang inventaris."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Gunakan tembolok untuk facedir mesh yang diputar."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr "Aktifkan peta mini."
+msgstr "Gunakan peta mini."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
+"Nyalakan sistem suara.\n"
+"Jika dimatikan, semua suara dimatikan dan pengaturan suara dalam permainan\n"
+"akan tidak berfungsi.\n"
+"Perubahan pengaturan ini membutuhkan mulai ulang."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
+"Mengaktifkan pertukaran yang mengurangi beban CPU atau meningkatkan kinerja "
+"rendering\n"
+"atas biaya gangguan visual kecil yang tidak memengaruhi pemutaran game."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "Profil lembah"
#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "Jarak pencetakan data profiling mesin"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Metode benda (entity)"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Eksperimental, dapat menyebabkan terlihatnya spasi antara blok\n"
-"saat diatur dengan angka yang lebih besar dari 0."
-
-#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS (bingkai per detik) pada menu jeda"
+"Pangkat untuk penirusan floatland. Mengubah perilaku penirusan.\n"
+"Nilai = 1.0 membuat penirusan linear seragam.\n"
+"Nilai > 1.0 membuat penirusan halus yang cocok untuk pemisahan\n"
+"floatland bawaan.\n"
+"Nilai < 1.0 (misal 0.25) membuat tingkat permukaan dengan lembah\n"
+"yang rata dan cocok untuk lapisan floatland padat (penuh)."
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr ""
+msgid "FPS when unfocused or paused"
+msgstr "FPS (bingkai per detik) saat dijeda atau tidak difokuskan"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font"
-msgstr "needs_fallback_font"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr ""
+msgid "Factor noise"
+msgstr "Noise faktor"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr ""
+msgid "Fall bobbing factor"
+msgstr "Faktor fall bobbing"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+msgid "Fallback font path"
+msgstr "Jalur fon cadangan"
#: src/settings_translation_file.cpp
msgid "Fast key"
@@ -2091,74 +3534,115 @@ msgstr "Tombol gerak cepat"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
-msgstr "Mode akselerasi cepat"
+msgstr "Percepatan mode gerak cepat"
#: src/settings_translation_file.cpp
msgid "Fast mode speed"
-msgstr "Mode cepat"
+msgstr "Kelajuan mode gerak cepat"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr ""
+msgstr "Gerak cepat"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
+"Gerak cepat (lewat tombol \"Aux1\").\n"
+"Membutuhkan hak \"fast\" pada server."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Bidang pandang"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "Bidang pandang dalam derajat."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"Jika diaktifkan dengan mode terbang, pemain mampu terbang melalui node "
-"padat.\n"
-"Hal ini memerlukan hak istimewa \"noclip\" pada server."
+"Berkas dalam client/serverlist/ yang berisi server favorit Anda yang\n"
+"ditampilkan dalam Tab Multipemain."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+msgid "Filler depth"
+msgstr "Kedalaman isian"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
-msgstr ""
+msgid "Filler depth noise"
+msgstr "Noise kedalaman isian"
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "Pemetaan suasana filmis"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
+"Tekstur yang difilter dapat memadukan nilai RGB dengan tetangganya yang\n"
+"sepenuhnya transparan, yang biasanya diabaikan oleh pengoptimal PNG,\n"
+"terkadang menghasilkan tepi gelap atau terang pada tekstur transparan. \n"
+"Terapkan filter ini untuk membersihkannya ketika memuat tekstur. Ini "
+"dinyalakan\n"
+"otomatis jika mipmap dinyalakan."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Filtering"
-msgstr "Filtering"
+msgid "Filtering and Antialiasing"
+msgstr "Antialiasing:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr "Noise 2D pertama dari empat yang mengatur ketinggian bukit/gunung."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Noise 3D pertama dari dua yang mengatur terowongan."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
-msgstr "Seed peta yang diatur"
+msgstr "Seed peta tetap"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Joystick virtual tetap"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Kepadatan floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Y maksimum floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Y minimum floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Noise floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Pangkat penirusan floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Jarak penirusan floatland"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Ketinggian permukaan air floatland"
#: src/settings_translation_file.cpp
msgid "Fly key"
@@ -2173,135 +3657,285 @@ msgid "Fog"
msgstr "Kabut"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Mulai kabut"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr "Tombol beralih kabut"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr ""
+#, fuzzy
+msgid "Font"
+msgstr "Ukuran fon"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Fon tebal bawaan"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Fon miring bawaan"
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr ""
+msgstr "Bayangan fon"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
-msgstr ""
+msgstr "Keburaman bayangan fon"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "Ukuran fon"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size divisible by"
+msgstr "Ukuran fon dapat dibagi dengan"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Ukuran fon bawaan dalam dimana 1 unit = 1 pixel di 96 DPI"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "Ukuran fon monospace bawaan dimana 1 unit = 1 pixel di 96 DPI"
+
+#: 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 ""
+"Ukuran fon teks obrolan terkini dan prompt obrolan dalam poin (pt).\n"
+"Nilai 0 akan memakai ukuran bawaan."
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
msgstr ""
+"Untuk fon bergaya pixel yang tidak dapat diskalakan dengan baik, ini "
+"memastikan ukuran fon yang digunakan\n"
+"dengan fon ini akan selalu dapat dibagi dengan nilai ini, dalam pixel. "
+"Misalnya,\n"
+"fon pixel setinggi 16 pixel harus diatur ke 16, jadi itu hanya akan "
+"berukuran 16, 32, 48, dll.,\n"
+"jadi sebuah mod yang meminta ukuran 25 akan mendapatkan 32."
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Ukuran font"
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Format pesan obrolan pemain. Berikut daftar kode yang sah:\n"
+"@name, @message, @timestamp (opsional)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr ""
+msgstr "Format tangkapan layar."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Warna bawaan latar belakang formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Keburaman bawaan latar belakang formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Warna latar belakang layar penuh formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Keburaman latar belakang layar penuh formspec"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Warna bawaan latar belakang formspec (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Keburaman bawaan latar belakang formspec (dari 0 sampai 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Warna latar belakang layar penuh formspec (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "Keburaman latar belakang layar penuh formspec (dari 0 sampai 255)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Forward key"
msgstr "Tombol maju"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr ""
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr "Noise 2D keempat dari empat yang mengatur ketinggian bukit/gunung."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Jenis fraktal"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "Bagian dari jarak pandang tempat kabut mulai tampak"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"Dari seberapa jauh blok dibuat untuk klien, dalam satuan blok peta (16 "
+"nodus)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"Dari seberapa jauh blok dikirim ke klien, dalam satuan blok peta (16 nodus)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"Jarak terjauh objek dapat diketahui klien, dalam blok peta (16 nodus).\n"
+"\n"
+"Mengatur dengan nilai yang lebih tinggi daripada active_block_range akan\n"
+"menyebabkan server menjaga objek aktif hingga jarak ini pada arah pandang\n"
+"pemain. (Ini dapat menghindari makhluk yang mendadak hilang dari pandangan.)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Layar penuh"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Mode layar penuh."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr "Skala antarmuka"
+msgstr "Skala GUI"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr "Filter skala antarmuka"
+msgstr "Filter skala GUI"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "Filter txr2img skala GUI"
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "Umum"
+#, fuzzy
+msgid "Gamepads"
+msgstr "Permainan"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Hasilkan normalmaps"
+msgid "General"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Callback global"
#: src/settings_translation_file.cpp
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, 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 semua "
+"dekorasi."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
msgstr ""
+"Kemiringan kurva cahaya di titik maksimum.\n"
+"Mengatur kontras tingkatan cahaya tertinggi."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Kemiringan kurva cahaya di titik minimum.\n"
+"Mengatur kontras tingkatan cahaya terendah."
#: src/settings_translation_file.cpp
msgid "Graphics"
-msgstr "Grafik"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafika"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafika"
#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravitasi"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
+msgstr "Ketinggian tanah"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Noise tanah"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
msgstr "Mod HTTP"
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Skala GUI"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr "Tombol beralih HUD"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
+"Penanganan panggilan Lua API usang:\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 "
+"mod)."
#: src/settings_translation_file.cpp
msgid ""
@@ -2311,43 +3945,267 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Buat profiler lengkapi dirinya sendiri dengan perkakas:\n"
+"* Lengkapi fungsi kosong, dengan perkakas.\n"
+"Memperkirakan ongkos, yang pelengkapan gunakan (+1 panggilan fungsi).\n"
+"* Lengkapi penyampel yang dipakai untuk memperbarui statistik."
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr ""
+msgid "Heat blend noise"
+msgstr "Noise paduan panas"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr ""
+msgid "Heat noise"
+msgstr "Noise panas"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr ""
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "Tinggi ukuran jendela mula-mula. Ini diabaikan dalam mode layar penuh."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Noise ketinggian"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Noise pemilihan ketinggian"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "Kecuraman bukit"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "Ambang batas bukit"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "Noise bukit1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Noise bukit2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Noise bukit3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Noise bukit4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "Halaman awal server, ditampilkan pada daftar server."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
+"Percepatan mendatar di udara saat lompat atau jatuh\n"
+"dalam nodus per detik per detik."
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
+"Percepatan mendatar dan vertikal dalam mode gerak\n"
+"cepat dalam nodus per detik per detik."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
+"Percepatan mendatar dan vertikal di atas tanah atau saat memanjat\n"
+"dalam nodus per detik per detik."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Tombol hotbar selanjutnya"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Tombol hotbar sebelumnya"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Tombol hotbar slot 1"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Tombol hotbar slot 10"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Tombol hotbar slot 11"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Tombol hotbar slot 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Tombol hotbar slot 13"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Tombol hotbar slot 14"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Tombol hotbar slot 15"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Tombol hotbar slot 16"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Tombol hotbar slot 17"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Tombol hotbar slot 18"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Tombol hotbar slot 19"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Tombol hotbar slot 2"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Tombol hotbar slot 20"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Tombol hotbar slot 21"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Tombol hotbar slot 22"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Tombol hotbar slot 23"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Tombol hotbar slot 24"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Tombol hotbar slot 25"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Tombol hotbar slot 26"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Tombol hotbar slot 27"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Tombol hotbar slot 28"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Tombol hotbar slot 29"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Tombol hotbar slot 3"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Tombol hotbar slot 30"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Tombol hotbar slot 31"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Tombol hotbar slot 32"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Tombol hotbar slot 4"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Tombol hotbar slot 5"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Tombol hotbar slot 6"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Tombol hotbar slot 7"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Tombol hotbar slot 8"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Tombol hotbar slot 9"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "Kedalaman sungai yang dibuat."
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Kelajuan gerakan ombak. Lebih tinggi = lebih cepat.\n"
+"Jika negatif, ombak akan bergerak mundur.\n"
+"Membutuhkan air berombak untuk dinyalakan."
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+#, fuzzy
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
+"Seberapa lama server akan menunggu sebelum membongkar blok peta yang tidak "
+"dipakai.\n"
+"Semakin tinggi semakin halus, tetapi menggunakan lebih banyak RAM."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Turunkan ini untuk menaikkan ketahanan cairan terhadap gerakan."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Lebar sungai yang dibuat."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Noise paduan kelembapan"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "Noise kelembapan"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variasi kelembapan untuk bioma."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2355,28 +4213,36 @@ msgstr "IPv6"
#: src/settings_translation_file.cpp
msgid "IPv6 server"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "Dukungan IPv6."
+msgstr "Server IPv6"
#: src/settings_translation_file.cpp
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 ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
-"Jika dinonaktifkan tombol \"gunakan\" digunakan untuk terbang cepat jika "
-"mode terbang dan cepat diaktifkan."
+"Jika dimatikan, tombol \"Aux1\" digunakan untuk terbang cepat jika mode\n"
+"terbang dan cepat dinyalakan."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Jika dinyalakan, server akan melakukan occlusion culling blok peta\n"
+"menurut posisi mata pemain. Ini dapat mengurangi jumlah blok yang\n"
+"dikirim ke klien sebesar 50-80%. Klien tidak dapat menerima yang tidak\n"
+"terlihat sehingga kemampuan mode tembus blok berkurang."
#: src/settings_translation_file.cpp
msgid ""
@@ -2384,37 +4250,64 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
-"Jika diaktifkan dengan mode terbang, pemain mampu terbang melalui node "
+"Jika dinyalakan bersama mode terbang, pemain mampu terbang melalui nodus "
"padat.\n"
-"Hal ini memerlukan hak istimewa \"noclip\" pada server."
+"Hal ini membutuhkan hak \"noclip\" pada server."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
-"Jika diaktifkan, tombol \"gunakan\" akan digunakan untuk memanjat turun "
-"danbergerak turun dari pada tombol \"menyelinap\"."
+"Jika dinyalakan, tombol \"Aux1\" digunakan untuk bergerak turun alih-alih\n"
+"tombol \"menyelinap\"."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Gunakan konfirmasi pendaftaran saat menyambung ke server.\n"
+"Jika dimatikan, akun baru akan didaftarkan otomatis."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"Jika dinyalakan, perilaku akan direkam untuk cadangan.\n"
+"Pilihan ini hanya dibaca saat server dimulai."
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "Jika dinyalakan, jangan gunakan pencegahan curang dalam multipemain."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"Jika dinyalakan, data dunia yang tidak sah tidak akan menyebabkan server "
+"mati.\n"
+"Hanya nyalakan ini jika Anda tahu yang Anda lakukan."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Jika dinyalakan, arah gerak menyesuaikan pandangan pemain saat terbang atau "
+"menyelam."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
+"Jika dinyalakan, pemain baru tidak dapat bergabung dengan kata sandi kosong."
#: src/settings_translation_file.cpp
msgid ""
@@ -2422,72 +4315,121 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"Jika dinyalakan, Anda dapat menaruh blok pada posisi (kaki + ketinggian "
+"mata)\n"
+"tempat Anda berdiri. Ini berguna saat bekerja dengan kotak nodus (nodebox) "
+"dalam daerah sempit."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
+"Jika pembatasan CSM untuk jangkauan nodus dinyalakan, panggilan\n"
+"get_node dibatasi hingga sejauh ini dari pemain ke nodus."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
-msgstr "Abaikan kesalahan pada dunia"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Jika pelaksanaan perintah obrolan lebih lama daripada ini (dalam detik),\n"
+"tambahkan informasi waktu ke pesan perintah obrolan"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Jika ukuran berkas debug.txt melebihi nilai yang diberikan (dalam "
+"megabita),\n"
+"berkas tersebut akan dipindah ke debug.txt.1 dan berkas debug.txt.1 lama\n"
+"akan dihapus jika ada.\n"
+"Berkas debug.txt hanya dipindah jika pengaturan ini dinyalakan."
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "Dalam Permainan"
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "Jika diatur, pemain akan bangkit (ulang) pada posisi yang diberikan."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Abaikan galat pada dunia"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
+"Keburaman konsol obrolan dalam permainan (keopakan, dari 0 sampai 255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
+msgstr "Warna latar belakang konsol obrolan dalam permainan (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
msgstr ""
+"Tinggi konsol obrolan dalam permainan, dari 0.1 (10%) sampai 1.0 (100%)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Tombol konsol"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Kelajuan vertikal awal ketika lompat dalam nodus per detik."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Instrumen bawaan.\n"
+"Ini biasanya hanya dibutuhkan oleh kontributor inti/bawaan"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "Perkakas perintah obrolan saat pendaftaran."
#: src/settings_translation_file.cpp
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"
+"(semua yang dimasukkan ke fungsi minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Melengkapi fungsi aksi Pengubah Blok Aktif dengan perkakas ketika "
+"didaftarkan."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Melengkapi fungsi aksi Pengubah Blok Termuat dengan perkakas ketika "
+"didaftarkan."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Melengkapi metode entitas dengan perkakas ketika didaftarkan."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
-msgstr ""
+msgstr "Jarak waktu penyimpanan perubahan penting dari dunia dalam detik."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Jarak pengiriman waktu ke klien."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "Animasi barang inventaris"
#: src/settings_translation_file.cpp
msgid "Inventory key"
@@ -2495,58 +4437,125 @@ msgstr "Tombol inventaris"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "Balik tetikus"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "Balik pergerakan vertikal tetikus."
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Jalur fon miring"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Jalur fon monospace miring"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "Umur hidup entitas barang"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Perulangan"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+"Perulangan fungsi rekursif.\n"
+"Menaikkan nilai ini menaikkan detail, tetapi juga menambah\n"
+"beban pemrosesan.\n"
+"Saat perulangan = 20, beban pembuat peta ini mirip dengan v7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID Joystick"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "Jarak penekanan tombol joystick terus-menerus"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Zona mati joystick"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "Kepekaan ruang gerak joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Jenis joystick"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Khusus Julia set.\n"
+"Komponen W dari tetapan hiperkompleks.\n"
+"Mengubah bentuk fraktal.\n"
+"Tidak berlaku pada fraktal 3D.\n"
+"Jangkauan sekitar -2 ke 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Khusus Julia set.\n"
+"Komponen X dari tetapan hiperkompleks.\n"
+"Mengubah bentuk fraktal.\n"
+"Jangkauan sekitar -2 ke 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Khusus Julia set.\n"
+"Komponen Y dari tetapan hiperkompleks.\n"
+"Mengubah bentuk fraktal.\n"
+"Jangkauan sekitar -2 ke 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"Khusus Julia set.\n"
+"Komponen Z dari tetapan hiperkompleks.\n"
+"Mengubah bentuk fraktal.\n"
+"Jangkauan sekitar -2 ke 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "W Julia"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "X Julia"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "Y Julia"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "Z Julia"
#: src/settings_translation_file.cpp
msgid "Jump key"
@@ -2554,7 +4563,7 @@ msgstr "Tombol lompat"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "Kelajuan lompat"
#: src/settings_translation_file.cpp
msgid ""
@@ -2568,6 +4577,26 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk mengurangi volume.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk gali.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2588,6 +4617,16 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk menambah volume.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2609,10 +4648,12 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
"Tombol untuk bergerak mundur.\n"
+"Akan mematikan maju otomatis, saat dinyalakan.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2648,11 +4689,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk membuka konsol obrolan.\n"
+"Tombol untuk membisukan permainan.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2668,6 +4709,16 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk membuka jendela obrolan untuk mengetik perintah lokal.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2688,765 +4739,1070 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk taruh.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk menyelinap.\n"
+"Tombol untuk memilih slot hotbar ke-11.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk mengganti kamera antara orang pertama dan ketiga.\n"
+"Tombol untuk memilih slot hotbar ke-12.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk mengambil tangkapan layar.\n"
+"Tombol untuk memilih slot hotbar ke-13.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih mode cepat.\n"
+"Tombol untuk memilih slot hotbar ke-14.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih mode sinema.\n"
+"Tombol untuk memilih slot hotbar ke-15.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk mennganti tampilan peta mini.\n"
+"Tombol untuk memilih slot hotbar ke-16.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih mode cepat.\n"
+"Tombol untuk memilih slot hotbar ke-17.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih terbang.\n"
+"Tombol untuk memilih slot hotbar ke-18.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih mode tembus blok.\n"
+"Tombol untuk memilih slot hotbar ke-19.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk bergerak ke kiri.\n"
+"Tombol untuk memilih slot hotbar ke-20.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih tampilan info debug.\n"
+"Tombol untuk memilih slot hotbar ke-21.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih tampilan HUD.\n"
+"Tombol untuk memilih slot hotbar ke-22.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih tampilan obrolan.\n"
+"Tombol untuk memilih slot hotbar ke-23.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih tampilan kabut.\n"
+"Tombol untuk memilih slot hotbar ke-24.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ke-25.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tombol untuk beralih menjadi jarak pandang tanpa batas.\n"
+"Tombol untuk memilih slot hotbar ke-26.\n"
"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "Tombol untuk memanjat/turun"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk memilih slot hotbar ke-27.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Bahasa"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk memilih slot hotbar ke-28.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ke-29.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ke-30.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
-msgstr "Gaya dedaunan"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk memilih slot hotbar ke-31.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ke-32.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Tombol kiri"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk memilih slot hotbar kedelapan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar kelima.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar pertama.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar keempat.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih barang selanjutnya di hotbar.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar kesembilan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih barang sebelumnya di hotbar.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar kedua.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ketujuh.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar keenam.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar kesepuluh.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk memilih slot hotbar ketiga.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk menyelinap.\n"
+"Juga digunakan untuk turun dan menyelam dalam air jika aux1_descends "
+"dimatikan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk mengganti kamera antara orang pertama dan ketiga.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk mengambil tangkapan layar.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih maju otomatis.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih mode sinema.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Batas blok aktif"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk mengganti tampilan peta mini.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih mode cepat.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Pengelola mod menu utama"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk beralih terbang.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Skrip menu utama"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk beralih mode tembus nodus.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih mode gerak sesuai pandang.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih pembaruan kamera. Hanya digunakan dalam pengembangan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
-msgstr "Direktori peta"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk beralih tampilan obrolan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih tampilan info awakutu.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih tampilan kabut.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih tampilan HUD.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih tampilan konsol obrolan besar.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
-msgstr "Batas generasi peta"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tombol untuk menampilkan profiler. Digunakan untuk pengembangan.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk beralih menjadi jarak pandang tanpa batas.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tombol untuk zum jika bisa.\n"
+"Lihat http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Generator peta Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "Keluarkan pemain yang mengirim lebih dari X pesan per 10 detik."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "Kecuraman danau"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "Ambang batas danau"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "Bahasa"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Debug generator peta"
+msgid "Large cave depth"
+msgstr "Kedalaman gua besar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flags"
-msgstr "Generator peta"
+msgid "Large cave maximum number"
+msgstr "Nilai maksimum gua besar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Generator peta"
+msgid "Large cave minimum number"
+msgstr "Nilai minimum gua besar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Generator peta"
+msgid "Large cave proportion flooded"
+msgstr "Perbandingan cairan dalam gua besar"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "Tombol konsol obrolan besar"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "Gaya dedaunan"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"Gaya daun:\n"
+"- Fancy: semua sisi terlihat\n"
+"- Simple: hanya sisi terluar jika special_tiles yang didefinisikan "
+"digunakan\n"
+"- Opaque: matikan transparansi"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat flags"
-msgstr "Generator peta"
+msgid "Left key"
+msgstr "Tombol kiri"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat ground level"
-msgstr "Generator peta"
-
-#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"Lama detikan server dan selang waktu bagi objek secara umum untuk "
+"diperbarui\n"
+"ke jaringan."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Panjang ombak.\n"
+"Membutuhkan air berombak untuk dinyalakan."
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake steepness"
-msgstr "Parallax Occlusion"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "Jarak waktu antarsiklus pelaksanaan Pengubah Blok Aktif (ABM)"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen flat lake threshold"
-msgstr "Generator peta"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Jarak waktu antarsiklus pelaksanaan NodeTimer"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr ""
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Jarak waktu antarsiklus pengelola blok aktif"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"Tingkatan log yang ditulis ke debug.txt:\n"
+"- <kosong> (tanpa pencatatan)\n"
+"- none (pesan tanpa tingkatan)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "Generator peta fraktal"
+msgid "Light curve boost"
+msgstr "Penguatan kurva cahaya"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Generator peta"
+msgid "Light curve boost center"
+msgstr "Titik tengah penguatan kurva cahaya"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve boost spread"
+msgstr "Persebaran penguatan kurva cahaya"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "Gama kurva cahaya"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "Titik tinggi gradasi kurva cahaya"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal fractal"
-msgstr "Generator peta"
+msgid "Light curve low gradient"
+msgstr "Titik rendah gradasi kurva cahaya"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Mapgen fractal iterations"
-msgstr "Parallax Occlusion"
+msgid "Lighting"
+msgstr "Pencahayaan Halus"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"Batas dari pembuatan peta, dalam nodus, untuk semua 6 arah mulai dari (0, 0, "
+"0).\n"
+"Hanya potongan peta yang seluruhnya berada dalam batasan yang akan dibuat.\n"
+"Nilai disimpan tiap dunia."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"Membatasi jumlah permintaan HTTP paralel. Memengaruhi:\n"
+"- Pengambilan media jika server menggunakan pengaturan remote_media.\n"
+"- Unduhan daftar server dan mengumumkan server.\n"
+"- Unduhan oleh menu utama (misal. pengelola mod).\n"
+"Hanya berlaku jika dikompilasi dengan cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "Keenceran cairan"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "Penghalusan keenceran cairan"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal offset"
-msgstr "Generator peta"
+msgid "Liquid loop max"
+msgstr "Loop cairan paling banyak"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal scale"
-msgstr "Generator peta"
+msgid "Liquid queue purge time"
+msgstr "Waktu pembersihan antrean cairan"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "Kelajuan tenggelam dalam cairan"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal slice w"
-msgstr "Generator peta"
+msgid "Liquid update interval in seconds."
+msgstr "Jarak pembaruan cairan dalam detik."
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "Detikan pembaruan cairan"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Nama generator peta"
+msgid "Load the game profiler"
+msgstr "Muat profiler permainan"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "Generator peta v5"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Muat profiler permainan untuk mengumpulkan data game profiling.\n"
+"Menyediakan perintah /profiler untuk akses ke rangkuman profile.\n"
+"Berguna untuk pengembang mod dan operator server."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "Generator peta v5"
+msgid "Loading Block Modifiers"
+msgstr "Pengubah Blok Termuat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of dungeons."
+msgstr "Batas bawah Y dungeon."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "Batas bawah Y floatland."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "Skrip menu utama"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
+"Buat warna kabut dan langit tergantung pada waktu (fajar/maghrib) dan arah "
+"pandangan."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "Buat semua cairan buram"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "Generator peta v6"
+msgid "Map Compression Level for Disk Storage"
+msgstr "Tingkat Kompresi Peta untuk Penyimpanan Diska"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map Compression Level for Network Transfer"
+msgstr "Tingkat Kompresi Peta untuk Transfer Jaringan"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map directory"
+msgstr "Direktori peta"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "Atribut pembuatan peta khusus untuk pembuat peta Carpathian."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"Atribut pembuatan peta khusus untuk pembuat peta Flat.\n"
+"Beberapa danau dan bukit dapat ditambahkan ke dunia datar."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"Atribut pembuatan peta khusus untuk pembuat peta Fractal.\n"
+"\"terrain\" membolehkan pembuatan medan nonfraktal:\n"
+"samudra, pulau, dan bawah tanah."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"Atribut khusus pembuat peta Valleys.\n"
+"\"altitude_chill\": Mengurangi suhu seiring ketinggian.\n"
+"\"humid_rivers\": Meningkatkan kelembapan di sekitar sungai dan danau.\n"
+"\"vary_river_depth\": Jika dinyalakan, cuaca kering dan panas menyebabkan\n"
+"sungai menjadi lebih dangkal dan terkadang kering.\n"
+"\"altitude_dry\": Mengurangi kelembapan seiring ketinggian."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr "Frekuensi padang gurun pada generator peta v6"
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "Atribut pembuatan peta khusus untuk pembuat peta v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
+"Atribut pembuatan peta khusus untuk pembuat peta v6.\n"
+"Flag \"snowbiomes\" menyalakan sistem 5 bioma yang baru.\n"
+"Saat sistem bioma baru dipakai, hutan rimba otomatis dinyalakan dan\n"
+"flag \"jungle\" diabaikan."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
+"Atribut pembuatan peta khusus untuk pembuat peta v7.\n"
+"\"ridges\": Sungai.\n"
+"\"floatlands\": Tanah mengambang di atmosfer.\n"
+"\"caverns\": Gua raksasa di kedalaman bawah tanah."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "Batas pembuatan peta"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "Selang waktu menyimpan peta"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+msgid "Map shadows update frames"
+msgstr "Bingkai pembaruan peta bayangan"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "Batas blok peta"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "Jarak waktu pembuatan mesh blok peta"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Ukuran tembolok blok peta dari pembuat mesh blok peta dalam MB"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "Generator peta v7"
+msgid "Mapblock unload timeout"
+msgstr "Batas waktu pembongkaran blok peta"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "Generator peta v7"
+msgid "Mapgen Carpathian"
+msgstr "Pembuat peta Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "Flag khusus pembuat peta Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Pembuat peta flat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "Flag khusus pembuat peta Flat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Pembuat peta fraktal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Flag khusus pembuat peta Fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "Pembuat peta v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "Flag khusus pembuat peta v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "Pembuat peta v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "Flag khusus pembuat peta v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "Pembuat peta v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "Flag khusus pembuat peta v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "Pembuat peta Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "Flag khusus pembuat peta Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "Awakutu pembuat peta"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Nama pembuat peta"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "Jarak terjauh pembuatan blok"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "Jarak terjauh pengiriman blok"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "Cairan paling banyak terproses tiap langkah."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "Blok tambahan paling banyak untuk clearobject"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "Paket paling banyak tiap perulangan"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
-msgstr "FPS (bingkai per detik) maksimal"
+msgstr "FPS (bingkai per detik) maksimum"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr "FPS (bingkai per detik) maksimal saat permainan dijeda."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+"FPS (bingkai per detik) maksimum saat permainan dijeda atau saat jendela "
+"tidak difokuskan."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Jarak maksimum untuk menggambar bayangan."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr "Jumlah maksimal blok yang dipaksa muat (forceloaded)"
+msgstr "Jumlah maksimum blok yang dipaksa muat (forceloaded)"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
-msgstr "Lebar maksimal hotbar"
+msgstr "Lebar maksimum hotbar"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent in total."
-msgstr "Jumlah maksimal pemain yang dapat terhubung serentak."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "Batas maksimal nilai acak untuk gua besar per mapchunk."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
-msgstr "Jumlah maksimal blok yang dapat diantrikan untuk dimuat."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "Batas maksimal nilai acak untuk gua kecil per mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+"Ketahanan cairan maksimum. Mengatur perlambatan ketika memasuki\n"
+"cairan dengan kelajuan tinggi."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Jumlah maksimum blok yang dikirim serentak per klien.\n"
+"Jumlah maksimum dihitung secara dinamis:\n"
+"total_maks = bulat_naik((#klien + pengguna_maks) * per_klien / 4)"
#: src/settings_translation_file.cpp
msgid "Maximum number of blocks that can be queued for loading."
-msgstr "Jumlah maksimal blok yang dapat diantrikan untuk dimuat."
+msgstr "Jumlah maksimum blok yang dapat diantrekan untuk dimuat."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Jumlah maksimal blok yang akan diantrikan yang akan dihasilkan.\n"
-"Atur ke kosong untuk diatur secara otomatis."
+"Jumlah maksimum blok yang akan diantrekan untuk dihasilkan.\n"
+"Batasan ini diatur per pemain."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Jumlah maksimal blok yang akan diantrikan yang akan dimuat dari berkas.\n"
-"Atur ke kosong untuk diatur secara otomatis."
+"Jumlah maksimum blok yang akan diantrekan untuk dimuat dari berkas.\n"
+"Batasan ini diatur per pemain."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"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."
-msgstr "Jumlah maksimal blok peta (mapblock) yang dipaksa muat (forceloaded)."
+msgstr "Jumlah maksimum blok peta yang dipaksa muat."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
-"Jumlah maksimal blok peta (mapblock) yang disimpan di memori klien.\n"
-"Atur ke -1 untuk tak terhingga."
+"Jumlah maksimum blok peta yang disimpan dalam memori klien.\n"
+"Atur ke -1 untuk tak terbatas."
#: src/settings_translation_file.cpp
msgid ""
@@ -3454,59 +5810,73 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
-"Jumlah maksimal paket dikirim tiap langkah mengirim (send step), jika Anda\n"
-"memiliki koneksi lambat, cobalah untuk menguranginya, tetapi jangan "
+"Jumlah maksimum paket dikirim tiap langkah mengirim (send step), jika Anda\n"
+"memiliki sambungan lambat, cobalah untuk menguranginya, tetapi jangan "
"mengurangi\n"
"di bawah dua kalinya jumlah klien yang ditargetkan."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
-msgstr "Jumlah maksimal pemain yang dapat terhubung serentak."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "Jumlah maksimum pemain yang dapat tersambung serentak."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Jumlah maksimum pesan terkini yang ditampilkan"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr "Jumlah maksimal objek yang disimpan secara statis dalam satu blok."
+msgstr "Jumlah maksimum objek yang disimpan secara statis dalam satu blok."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum objects per block"
-msgstr "Jumlah objek maksimal tiap blok"
+msgstr "Jumlah objek maksimum tiap blok"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
-"Proporsi maksimal jendela saat ini yang digunakan untuk hotbar.\n"
+"Proporsi maksimum jendela saat ini yang digunakan untuk hotbar.\n"
"Berguna jika ada sesuatu yang akan ditampilkan di kanan atau kiri hotbar."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum simultaneous block sends per client"
-msgstr "Jumlah maksimal blok yang dikirim serentak tiap klien"
+msgstr "Jumlah maksimum blok yang dikirim serentak ke tiap klien"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum simultaneous block sends total"
-msgstr "Jumlah maksimal total blok yang dikirim"
+msgid "Maximum size of the out chat queue"
+msgstr "Ukuran maksimum antrean obrolan keluar"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
-"Waktu maksimal dalam milidetik saat mengunduh berkas (misal.: mengunduh mod)."
+"Ukuran maksimum antrean obrolan keluar.\n"
+"0 untuk mematikan pengantrean dan -1 untuk mengatur antrean tanpa batas."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr "Jumlah pengguna maksimal"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+"Waktu maksimum saat mengunduh berkas (misal.: mengunduh mod) dalam milidetik."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Alt"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Waktu maksimum permintaan interaktif (misal ambil daftar server), dalam "
+"milidetik."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Jumlah pengguna maksimum"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "Tembolok mesh"
#: src/settings_translation_file.cpp
msgid "Message of the day"
@@ -3514,11 +5884,15 @@ msgstr "Pesan hari ini"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr "Pesan hari ini yang ditampilkan ke pemain yang terhubung."
+msgstr "Pesan hari ini yang ditampilkan ke pemain yang tersambung."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
-msgstr ""
+msgstr "Metode yang digunakan untuk menyorot objek yang dipilih."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Tingkat minimal log untuk ditulis ke obrolan."
#: src/settings_translation_file.cpp
msgid "Minimap"
@@ -3530,61 +5904,113 @@ msgstr "Tombol peta mini"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr ""
+msgstr "Ketinggian pemindaian peta mini"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr ""
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "Batas minimal nilai acak untuk gua besar per mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Batas minimal nilai acak untuk gua kecil per mapchunk."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Ukuran tekstur minimum"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
msgstr "Mipmapping"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Profiler"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr ""
+#, fuzzy
+msgid "Mod Security"
+msgstr "Keamanan"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr "Saluran mod"
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr "Mengubah ukuran elemen HUD."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "Jalur fon monospace"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr ""
+msgstr "Ukuran fon monospace"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Ukuran fon monospace dapat dibagi dengan"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Noise ketinggian gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Noise gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Noise variasi gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Titik acuan gunung"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr ""
+msgstr "Kepekaan tetikus"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr ""
+msgstr "Pengali kepekaan tetikus."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Noise lumpur"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"Pengali untuk fall bobbing.\n"
+"Misalkan: 0 untuk tanpa view bobbing; 1.0 untuk normal; 2.0 untuk 2x lipat."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "Tombol bisu"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Bisukan suara"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
+"Nama pembuat peta yang digunakan saat membuat dunia baru.\n"
+"Pembuatan dunia lewat menu utama akan menimpa ini.\n"
+"Pembuat peta yang tidak stabil saat ini:\n"
+"- \"floatlands\" pada pembuat peta v7 (dimatikan secara bawaan)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3592,182 +6018,283 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"Nama pemain.\n"
+"Saat menjalankan server, klien yang tersambung dengan nama ini adalah "
+"admin.\n"
+"Saat menjalankan dari menu utama, nilai ini ditimpa."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
-msgstr ""
+msgstr "Nama server, ditampilkan saat pemain bergabung dan pada daftar server."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr ""
+msgid "Near plane"
+msgstr "Bidang dekat"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"Porta jaringan untuk didengar (UDP).\n"
+"Nilai ini akan diubah saat memulai dari menu utama."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Jaringan"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "Pengguna baru butuh memasukkan kata sandi."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr "Tembus blok"
+msgstr "Tembus nodus"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr "Tombol tembus blok"
+msgstr "Tombol tembus nodus"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Sorot Nodus"
#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr ""
+msgstr "Penyorotan nodus"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "Jarak NodeTimer"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "Noise"
#: src/settings_translation_file.cpp
-msgid "Noises"
-msgstr ""
+msgid "Number of emerge threads"
+msgstr "Jumlah utas kemunculan"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
+"Jumlah utas kemunculan yang dipakai.\n"
+"Nilai 0:\n"
+"- Pemilihan otomatis. Utas kemunculan akan berjumlah\n"
+"- 'jumlah prosesor - 2', dengan batas bawah 1.\n"
+"Nilai lain:\n"
+"- Menentukan jumlah utas kemunculan, dengan batas bawah 1.\n"
+"PERINGATAN: Penambahan jumlah utas kemunculan mempercepat mesin pembuat\n"
+"peta, tetapi dapat merusak kinerja permainan dengan mengganggu proses lain,\n"
+"terutama dalam pemain tunggal dan/atau saat menjalankan kode Lua dalam\n"
+"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah "
+"\"1\"."
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"Jumlah dari blok tambahan yang dapat dimuat oleh /clearobjects dalam satu "
+"waktu.\n"
+"Ini adalah pemilihan antara transaksi SQLite dan\n"
+"penggunaan memori (4096=100MB, kasarannya)."
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "Cairan opak"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
-msgstr ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr "Keburaman (alfa) bayangan di belakang fon bawaan, antara 0 dan 255."
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"Buka menu jeda saat jendela hilang fokus. Tidak menjeda jika formspec "
+"sedang \n"
+"dibuka."
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
+msgstr "Penimpaan opsional untuk warna tautan web pada obrolan."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
+"Jalur ke fon cadangan. Harus sebuah font TrueType.\n"
+"Fon ini akan digunakan untuk beberapa bahasa atau jika fon bawaan tidak "
+"tersedia."
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+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 ""
+"Jalur penyimpanan tangkapan layar. Dapat berupa jalur absolut atau relatif.\n"
+"Folder akan dibuat jika belum ada."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"Jalur ke direktori shader. Jika tidak diatur, lokasi bawaan akan digunakan."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "Parallax occlusion"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "Jalur ke direktori tekstur. Semua tekstur akan dicari mulai dari sini."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr "Skala parallax occlusion"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Jalur ke fon bawaan. Harus sebuah fon TrueType.\n"
+"Fon cadangan akan dipakai jika fon tidak dapat dimuat."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion bias"
-msgstr "Parallax Occlusion"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Jalur ke fon monospace. Harus sebuah fon TrueType.\n"
+"Fon ini dipakai dalam layar konsol dan profiler, misalnya."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion iterations"
-msgstr "Parallax Occlusion"
+msgid "Pause on lost window focus"
+msgstr "Jeda saat jendela hilang fokus"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "Mode parallax occlusion"
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Batasan antrean blok yang dimuat dari diska per pemain"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Parallax occlusion strength"
-msgstr "Parallax Occlusion"
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Batasan antrean blok yang dibuat per pemain"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+msgid "Physics"
+msgstr "Fisika"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Pitch move key"
+msgstr "Tombol gerak sesuai pandang"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+msgid "Pitch move mode"
+msgstr "Mode gerak sesuai pandang"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr ""
+msgid "Place key"
+msgstr "Tombol taruh"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Jeda waktu taruh berulang"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"Pemain dapat terbang tanpa terpengaruh gravitasi.\n"
+"Hal ini membutuhkan hak \"fly\" pada server."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Nama pemain"
+msgid "Player transfer distance"
+msgstr "Jarak pemindahan pemain"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "Pemain lawan pemain"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+msgid "Poisson filtering"
+msgstr "Pemfilteran Poisson"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"Porta untuk disambungkan (UDP).\n"
+"Catat bahwa kolom porta pada menu utama mengubah pengaturan ini."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Cegah gali dan taruh secara berulang saat menekan tombol tetikus.\n"
+"Nyalakan jika Anda merasa tidak sengaja menggali dan menaruh terlalu sering."
#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
+"Mencegah mod untuk melakukan hal yang tidak aman misalnya menjalankan "
+"perintah shell."
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"Cetak data profiling mesin dalam selang waktu tetap (dalam detik).\n"
+"0 = dimatikan. Berguna untuk pengembang."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "Hak yang dapat diberikan oleh pemain dengan basic_privs"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Profiler"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr ""
+msgstr "Tombol profiler"
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr "Alamat pendengar Prometheus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched 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."
+msgstr "Perbandingan gua besar yang punya cairan."
#: src/settings_translation_file.cpp
msgid ""
@@ -3775,100 +6302,189 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"Jari-jari daerah awan dalam jumlah dari 64 nodus awan kotak.\n"
+"Nilai lebih dari 26 akan mulai menghasilkan tepian tajam pada sudut awan."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Menaikkan medan untuk membuat lembah di sekitar sungai."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "Masukan acak"
#: src/settings_translation_file.cpp
msgid "Range select key"
msgstr "Tombol memilih jarak pandang"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Pesan obrolan terkini"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Jalur fon biasa"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "Media jarak jauh"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "Port utk Kendali Jarak Jauh"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
+"Buang kode warna dari pesan obrolan yang masuk\n"
+"Gunakan ini untuk membuat para pemain tidak bisa menggunakan warna pada "
+"pesan mereka"
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "Mengganti menu utama bawaan dengan buatan lain."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Pilih jalur"
+msgstr "Jalur pelaporan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Batasi akses beberapa fungsi sisi klien pada server\n"
+"Gabungkan flag bita berikut untuk membatasi fitur pada sisi klien atau\n"
+"atur ke 0 untuk tanpa batasan:\n"
+"LOAD_CLIENT_MODS: 1 (matikan pemuatan mod klien)\n"
+"CHAT_MESSAGES: 2 (cegah pemanggilan send_chat_message sisi klien)\n"
+"READ_ITEMDEFS: 4 (cegah pemanggilan get_item_def sisi klien)\n"
+"READ_NODEDEFS: 8 (cegah pemanggilan get_node_def sisi klien)\n"
+"LOOKUP_NODES_LIMIT: 16 (batasi pemanggilan get_node\n"
+"sisi klien dalam csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (cegah pemanggilan get_player_names sisi klien)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Noise persebaran punggung gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Noise punggung bukit"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Noise punggung bukit bawah air"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Noise ukuran punggung gunung"
#: src/settings_translation_file.cpp
msgid "Right key"
msgstr "Tombol kanan"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr ""
+msgid "River channel depth"
+msgstr "Kedalaman kanal sungai"
#: src/settings_translation_file.cpp
-msgid "River Depth"
-msgstr ""
+msgid "River channel width"
+msgstr "Lebar kanal sungai"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr ""
+msgid "River depth"
+msgstr "Kedalaman sungai"
#: src/settings_translation_file.cpp
-msgid "River Size"
-msgstr ""
+msgid "River noise"
+msgstr "Noise sungai"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "River size"
+msgstr "Ukuran sungai"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "Lebar ngarai sungai"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
-msgstr ""
+msgstr "Perekaman cadangan"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Noise ukuran perbukitan"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Noise persebaran perbukitan"
#: src/settings_translation_file.cpp
msgid "Round minimap"
-msgstr ""
+msgstr "Peta mini bundar"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Penggalian dan peletakan dengan aman"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "Pantai berpasir muncul saat np_beach melebihi nilai ini."
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr ""
+msgstr "Simpan peta yang diterima klien pada diska."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "Simpan otomatis ukuran jendela saat berubah."
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "Simpan peta yang diterima dari server"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
+"Perbesar/perkecil GUI sesuai pengguna.\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 skala bukan bilangan "
+"bulat."
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "Layar:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "Tinggi layar"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Tangkapan layar"
+msgid "Screen width"
+msgstr "Lebar layar"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "Folder tangkapan layar"
#: src/settings_translation_file.cpp
msgid "Screenshot format"
@@ -3884,34 +6500,103 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"Kualitas tangkapan layar. Hanya digunakan untuk format JPEG.\n"
+"1 berarti kualitas terburuk; 100 berarti kualitas terbaik.\n"
+"Gunakan 0 untuk kualitas bawaan."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr ""
+#, fuzzy
+msgid "Screenshots"
+msgstr "Tangkapan layar"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
-msgstr ""
+msgid "Seabed noise"
+msgstr "Noise dasar laut"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr "Noise 2D kedua dari empat yang mengatur ketinggian bukit/gunung."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Noise 3D kedua dari dua yang mengatur terowongan."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Lihat https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "Warna pinggiran kotak pilihan (merah,hijau,biru) atau (R,G,B)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "Warna kotak pilihan"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr ""
+msgstr "Lebar kotak pilihan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Pilih satu dari 18 jenis fraktal.\n"
+"1 = Mandelbrot set 4D \"Bulat\".\n"
+"2 = Julia set 4D \"Bulat\".\n"
+"3 = Mandelbrot set 4D \"Kotak\".\n"
+"4 = Julia set 4D \"Kotak\".\n"
+"5 = Mandelbrot set 4D \"Mandy Cousin\".\n"
+"6 = Julia set 4D \"Mandy Cousin\".\n"
+"7 = Mandelbrot set 4D \"Variasi\".\n"
+"8 = Julia set 4D \"Variasi\".\n"
+"9 = Mandelbrot set 3D \"Mandelbrot/Mandelbar\".\n"
+"10 = Julia set 3D \"Mandelbrot/Mandelbar\".\n"
+"11 = Mandelbrot set 3D \"Pohon Natal\".\n"
+"12 = Julia set 3D \"Pohon Natal\".\n"
+"13 = Mandelbrot set 3D \"Mandelbulb\".\n"
+"14 = Julia set 3D \"Mandelbulb\".\n"
+"15 = Mandelbrot set 3D \"Cosine Mandelbulb\".\n"
+"16 = Julia set 3D \"Cosine Mandelbulb\".\n"
+"17 = Mandelbrot set 4D \"Mandelbulb\".\n"
+"18 = Julia set 4D \"Mandelbulb\"."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Nama server"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Server / Pemain Tunggal"
+#, fuzzy
+msgid "Server Security"
+msgstr "Keterangan Server"
#: src/settings_translation_file.cpp
msgid "Server URL"
-msgstr "URL Server"
+msgstr "URL server"
#: src/settings_translation_file.cpp
msgid "Server address"
@@ -3919,7 +6604,7 @@ msgstr "Alamat server"
#: src/settings_translation_file.cpp
msgid "Server description"
-msgstr "Deskripsi server"
+msgstr "Keterangan server"
#: src/settings_translation_file.cpp
msgid "Server name"
@@ -3927,72 +6612,245 @@ msgstr "Nama server"
#: src/settings_translation_file.cpp
msgid "Server port"
-msgstr "Port server"
+msgstr "Porta server"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Occlusion culling sisi server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Port Server"
#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr "URL Daftar server"
+msgstr "URL daftar server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "URL daftar server"
#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr "Berkas Daftar server"
+msgstr "Berkas daftar server"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"Atur bahasa. Biarkan kosong untuk menggunakan bahasa sistem.\n"
+"Dibutuhkan mulai ulang setelah mengganti ini."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr "Atur jumlah karakter maksimum per pesan obrolan yang dikirim klien."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Atur kekuatan bayangan.\n"
+"Nilai rendah berarti bayangan lebih terang, nilai tinggi berarti lebih gelap."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Atur besar jari-jari bayangan halus.\n"
+"Nilai rendah berarti bayangan lebih tajam, nilai tinggi berarti lebih "
+"halus.\n"
+"Nilai minimum: 1.0; nilai maksimum 10.0"
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Atur kemiringan orbit Matahari/Bulan dalam derajat.\n"
+"Nilai 0 berarti tidak miring/orbit tegak.\n"
+"Nilai minimum: 0.0; nilai maksimum 60.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
+"Atur ke true untuk menyalakan Pemetaan Bayangan.\n"
+"Membutuhkan penggunaan shader."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"Atur ke true untuk menyalakan daun melambai.\n"
+"Membutuhkan penggunaan shader."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"Atur ke true untuk menyalakan air berombak.\n"
+"Membutuhkan penggunaan shader."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Atur ke true untuk menyalakan tanaman berayun.\n"
+"Membutuhkan penggunaan shader."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Atur kualitas tekstur bayangan ke 32 bit.\n"
+"Nilai false berarti tekstur 16 bit akan dipakai.\n"
+"Ini akan menimbulkan lebih banyak artefak pada bayangan."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Jalur shader"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"Shader membolehkan efek visual tingkat lanjut dan dapat meningkatkan "
+"kinerja\n"
+"pada beberapa kartu video.\n"
+"Ini hanya bekerja dengan video OpenGL."
#: src/settings_translation_file.cpp
-msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgid "Shadow filter quality"
+msgstr "Kualitas filter bayangan"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr "Jarak maks. peta bayangan (dalam nodus) untuk digambar"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "Tekstur peta bayangan dalam 32 bit"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Ukuran tekstur peta bayangan"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
msgstr ""
+"Pergeseran bayangan fon bawaan dalam piksel. Jika 0, bayangan tidak akan "
+"digambar."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Kekuatan bayangan"
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "Bentuk dari peta mini. Dinyalakan = bundar, dimatikan = persegi."
#: src/settings_translation_file.cpp
msgid "Show debug info"
-msgstr ""
+msgstr "Tampilkan info awakutu"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
+msgstr "Tampilkan kotak pilihan benda"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
msgstr ""
+"Tampilkan kotak pilihan entitas\n"
+"Dibutuhkan mulai ulang setelah mengganti ini."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Tampilkan latar belakang tanda nama secara bawaan"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
-msgstr ""
+msgstr "Pesan saat server dimatikan"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
+"Ukuran potongan peta yang dibuat oleh pembuat peta, dalam blok peta (16 "
+"nodus).\n"
+"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 \n"
+"disarankan."
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
+"Ukuran dari tembolok blok peta dari pembuat mesh. Menaikkan ini akan\n"
+"menambah persentase cache hit, mengurangi data yang disalin dari\n"
+"utas utama, sehingga mengurangi jitter."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Kemiringan Orbit Benda Langit"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "Irisan w"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Kemiringan dan isian bekerja sama mengatur ketinggian."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Nilai maksimum gua kecil"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Nilai minimum gua kecil"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr "Variasi kelembapan skala kecil untuk paduan di tepi bioma."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr "Variasi suhu skala kecil untuk paduan di tepi bioma."
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
@@ -4003,23 +6861,38 @@ msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"Memperhalus kamera saat melihat sekeliling. Juga disebut penghalusan "
+"tetikus.\n"
+"Berguna untuk perekaman video."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
-msgstr "Menghaluskan rotasi kamera dalam modus sinema. 0 untuk menonaktifkan."
+msgstr ""
+"Menghaluskan rotasi kamera dalam modus sinema. 0 untuk tidak menggunakannya."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "Penghalusan perputaran kamera. 0 untuk tidak menggunakannya."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Sneak key"
msgstr "Tombol menyelinap"
#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Kelajuan menyelinap"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Kelajuan menyelinap dalam nodus per detik."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Jari-jari bayangan halus"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr ""
+msgstr "Suara"
#: src/settings_translation_file.cpp
msgid ""
@@ -4028,35 +6901,137 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
+"Menentukan URL yang akan klien ambil medianya daripada menggunakan UDP.\n"
+"$filename harus dapat diakses dari $remote_media$filename melalui cURL\n"
+"(tentunya, remote_media harus diakhiri dengan sebuah garis miring).\n"
+"File yang tidak ada akan diambil cara yang biasa."
#: src/settings_translation_file.cpp
-msgid "Static spawnpoint"
+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 ""
+"Mengatur ukuran tumpukan bawaan untuk nodus, barang, dan alat.\n"
+"Catat bahwa mod dan permainan dapat mengatur tumpukan untuk sebagian (atau "
+"semua) barang."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Strength of generated normalmaps."
-msgstr "Gunakan Normalmaps"
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Menyebarkan pembaruan peta bayangan dalam jumlah bingkai yang diberikan.\n"
+"Nilai tinggi bisa membuat bayangan patah-patah, nilai rendah akan butuh\n"
+"sumber daya lebih banyak.\n"
+"Nilai minimum: 1; nilai maksimum: 16"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 ""
+"Persebaran rentang penguatan kurva cahaya.\n"
+"Mengatur lebar rentang yang dikuatkan.\n"
+"Simpangan baku dari penguatan kurva cahaya Gauss."
#: src/settings_translation_file.cpp
-msgid "Strict protocol checking"
+msgid "Static spawnpoint"
+msgstr "Titk bangkit tetap"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "Noise kecuraman"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "Noise ukuran teras gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "Noise persebaran teras gunung"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Kekuatan mode paralaks 3D."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Besar penguatan kurva cahaya.\n"
+"Tiga parameter \"boost\" menentukan rentang kurva\n"
+"cahaya yang dikuatkan menurut kecerahannya."
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strict protocol checking"
+msgstr "Perketat pemeriksaan protokol"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Buang kode warna"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"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"
-msgstr ""
+msgstr "SQLite sinkron"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
-msgstr ""
+msgid "Temperature variation for biomes."
+msgstr "Variasi suhu pada bioma."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Pengaturan"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Noise medan alternatif"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Noise dasar medan"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Ketinggian medan"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "Noise medan (lebih tinggi)"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Noise medan"
#: src/settings_translation_file.cpp
msgid ""
@@ -4064,6 +7039,9 @@ msgid ""
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Ambang batas noise medan untuk bukit.\n"
+"Atur perbandingan dari daerah dunia yang diselimuti bukit.\n"
+"Atur menuju 0.0 untuk perbandingan yang lebih besar."
#: src/settings_translation_file.cpp
msgid ""
@@ -4071,51 +7049,145 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"Ambang batas noise medan untuk danau.\n"
+"Atur perbandingan dari daerah dunia yang diselimuti danau.\n"
+"Atur menuju 0.0 untuk perbandingan yang lebih besar."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Persistence noise medan"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Texture path"
-msgstr "Paket Tekstur"
+msgstr "Jalur tekstur"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Ukuran tekstur tempat peta bayangan digambar.\n"
+"Ini harus bernilai perpangkatan dua.\n"
+"Nilai yang besar akan menghasilkan bayangan yang bagus, tetapi lebih berat."
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
msgstr ""
+"Tekstur pada nodus dapat disejajarkan, baik dengan nodus maupun dunia.\n"
+"Mode pertama cocok untuk mesin, furnitur, dll., sedangkan mode kedua\n"
+"cocok agar tangga dan mikroblok cocok dengan sekitarnya.\n"
+"Namun, karena masih baru, ini tidak dipakai pada server lawas, pilihan ini\n"
+"bisa memaksakan untuk jenis nodus tertentu. Catat bahwa ini masih dalam\n"
+"tahap PERCOBAAN dan dapat tidak berjalan dengan semestinya."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "URL dari gudang konten"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+msgstr "Zona mati joystick yang digunakan"
#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"Format bawaan pada berkas untuk menyimpan profile,\n"
+"saat memanggil `/profiler save [format]` tanpa format."
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr "Kedalaman tanah atau nodus pengisi bioma lainnya."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+"Jalur berkas relatif terhadap jalur dunia Anda tempat profile akan disimpan "
+"di dalamnya."
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr "Identitas dari joystick yang digunakan"
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
+"Jarak dalam piksel yang dibutuhkan untuk memulai interaksi layar sentuh."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"Tinggi maksimum permukaan ombak.\n"
+"4.0 = Tinggi ombak dua nodus.\n"
+"0.0 = Ombak tidak bergerak sama sekali.\n"
+"Bawaannya 1.0 (1/2 nodus).\n"
+"Membutuhkan air berombak untuk dinyalakan."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr ""
+msgstr "Antarmuka jaringan yang server dengarkan."
#: src/settings_translation_file.cpp
msgid ""
"The privileges that new users automatically get.\n"
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
+"Hak yang didapatkan pengguna baru otomatis.\n"
+"Lihat /privs dalam permainan untuk daftar lengkap pada konfigurasi mod dan "
+"server Anda."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+"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
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
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 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 ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
+"Kepekaan dari sumbu joystick untuk menggerakkan batas\n"
+"tampilan dalam permainan."
#: src/settings_translation_file.cpp
msgid ""
@@ -4124,6 +7196,10 @@ 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 ""
+"Kekuatan (kegelapan) dari shade ambient occlusion pada nodus.\n"
+"Semakin kecil semakin gelap, juga sebaliknya. Jangkauan yang sah\n"
+"berkisar dari 0.25 sampai 4.0 inklusif. Jika nilai di luar jangkauan,\n"
+"akan diatur ke nilai yang sah terdekat."
#: src/settings_translation_file.cpp
msgid ""
@@ -4131,44 +7207,79 @@ 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 ""
+"Waktu (dalam detik) sehingga antrean cairan dapat bertambah di luar "
+"kapasitas\n"
+"pemrosesan sampai usaha dilakukan untuk mengurangi ukurannya dengan\n"
+"membuang antrean lama. Nilai 0 mematikan fungsi ini."
+
+#: src/settings_translation_file.cpp
+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 ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
+"Waktu dalam detik antarkejadian berulang saat\n"
+"menekan terus-menerus kombinasi tombol joystick."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
+"Jeda dalam detik antar-penaruhan berulang saat menekan \n"
+"tombol taruh."
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr ""
+msgid "The type of joystick"
+msgstr "Jenis joystick"
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
+"Jarak vertikal bagi suhu untuk turun 20 jika \"altitude_chill\" dinyalakan.\n"
+"Juga jarak vertikal bagi kelembapan untuk turun 10 jika \"altitude_dry\"\n"
+"dinyalakan."
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "Noise 2D ketiga dari empat yang mengatur ketinggian bukit/gunung."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
+"Waktu dalam detik bagi benda (yang dijatuhkan) untuk hidup.\n"
+"Atur ke -1 untuk mematikan fitur ini."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "Waktu saat dunia baru dimulai, dalam milijam (0-23999)."
#: src/settings_translation_file.cpp
msgid "Time send interval"
-msgstr ""
+msgstr "Jarak pengiriman waktu"
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "Kelajuan waktu"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
+"Batas waktu bagi klien untuk menghapus data peta yang tidak digunakan dari "
+"memori."
#: src/settings_translation_file.cpp
msgid ""
@@ -4177,6 +7288,10 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
+"Untuk mengurangi lag, pengiriman blok diperlambat saat pemain sedang "
+"membangun.\n"
+"Ini menentukan seberapa lama mereka diperlambat setelah menaruh atau "
+"mencopot nodus."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
@@ -4184,108 +7299,216 @@ msgstr "Tombol beralih mode kamera"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
+msgstr "Jeda tooltip"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Ambang batas layar sentuh"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Ambang batas layar sentuh"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Pertukaran untuk kinerja"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Noise pepohonan"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Trilinear filtering"
+msgstr "Pemfilteran trilinear"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"True = 256\n"
+"False = 128\n"
+"Berguna untuk membuat peta mini lebih halus pada mesin yang lambat."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "Mod yang dipercaya"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "URL ke daftar server yang tampil pada Tab Multipemain."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Undersampling"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
+"Undersampling seperti menggunakan resolusi layar yang lebih rendah, tetapi\n"
+"hanya berlaku untuk dunia permainan saja, antarmuka grafis tetap.\n"
+"Seharusnya memberikan dorongan kinerja dengan gambar yang kurang detail.\n"
+"Nilai yang lebih tinggi menghasilkan gambar yang kurang detail."
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
-msgstr ""
+msgstr "Jarak pemindahan pemain tak terbatas"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr ""
+msgstr "Membongkar data server yang tak terpakai"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Batas atas Y dungeon."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Batas atas Y floatland."
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr ""
+msgstr "Gunakan tampilan awan 3D daripada datar."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+msgstr "Gunakan animasi awan untuk latar belakang menu utama."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
msgstr ""
+"Gunakan pemfilteran anisotropik saat melihat tekstur pada sudut tertentu."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
-msgstr ""
+msgstr "Gunakan pemfilteran bilinear saat mengubah ukuran tekstur."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Tombol gunakan"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Pakai mipmap 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
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"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."
-msgstr ""
+msgstr "Gunakan pemfilteran trilinear saat mengubah ukuran tekstur."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
-msgstr ""
+msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
-msgstr ""
+msgid "VSync"
+msgstr "Sinkronisasi Vertikal"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr ""
+msgid "Valley depth"
+msgstr "Kedalaman lembah"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
-msgstr ""
+msgid "Valley fill"
+msgstr "Isian lembah"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "Profil lembah"
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr "Kemiringan lembah"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of biome filler depth."
+msgstr "Variasi dari kedalaman isian bioma."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variasi dari ketinggian gunung paling tinggi (dalam nodus)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variasi dari jumlah gua."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
+"Variasi dari skala vertikal medan.\n"
+"Saat noise < -0,55 medan mendekati datar."
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "Merubah kedalaman dari nodus permukaan bioma."
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
+"Merubah kekasaran dari medan.\n"
+"Mengatur nilai \"persistence\" dari noise terrain_base dan terrain_alt."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Merubah kecuraman tebing."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Kelajuan vertikal memanjat dalam nodus per detik."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
-msgstr ""
+msgstr "Sinkronisasi layar vertikal."
#: src/settings_translation_file.cpp
msgid "Video driver"
-msgstr ""
+msgstr "Pengandar video"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "Faktor view bobbing"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
+msgid "View distance in nodes."
+msgstr "Jarak pandang dalam nodus."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
@@ -4296,28 +7519,56 @@ msgid "View range increase key"
msgstr "Tombol menambah jarak pandang"
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Tombol zum"
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr "Jarak pandang"
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "Joystick virtual mengetuk tombol Aux1"
+
+#: src/settings_translation_file.cpp
msgid "Volume"
-msgstr "Volume Suara"
+msgstr "Volume"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Volume semua suara.\n"
+"Membutuhkan sistem suara untuk dinyalakan."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"Koordinat W dari irisan 3D dari fraktal 4D.\n"
+"Menentukan irisan 3D dari bangun 4D untuk dibuat.\n"
+"Mengubah bentuk fraktal.\n"
+"Tidak berlaku pada fraktal 3D.\n"
+"Jangkauan sekitar -2 ke 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Kelajuan jalan dan terbang dalan nodus per detik."
#: src/settings_translation_file.cpp
msgid "Walking speed"
-msgstr "Kecepatan berjalan"
+msgstr "Kelajuan jalan"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Corak air"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Kelajuan jalan, terbang, dan memanjat dalam mode gerak cepat dalam nodus per "
+"detik."
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4325,35 +7576,39 @@ msgstr "Ketinggian air"
#: src/settings_translation_file.cpp
msgid "Water surface level of the world."
-msgstr ""
+msgstr "Ketinggian permukaan air dunia."
#: src/settings_translation_file.cpp
msgid "Waving Nodes"
-msgstr "Node Melambai"
+msgstr "Nodus melambai"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
msgstr "Daun melambai"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Tanaman berayun"
+msgid "Waving liquids"
+msgstr "Air berombak"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Air berombak"
+msgid "Waving liquids wave height"
+msgstr "Ketinggian ombak air"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Ketinggian ombak"
+msgid "Waving liquids wave speed"
+msgstr "Kelajuan gelombang ombak"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "Panjang ombak"
+msgid "Waving liquids wavelength"
+msgstr "Panjang ombak air"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Kecepatan ombak"
+msgid "Waving plants"
+msgstr "Tanaman berayun"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "Warna tautan web"
#: src/settings_translation_file.cpp
msgid ""
@@ -4361,6 +7616,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 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 ""
@@ -4369,90 +7627,198 @@ 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 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 ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
+"Saat menggunakan filter bilinear/trilinear/anisotropik, tekstur resolusi\n"
+"rendah dapat dikaburkan sehingga diperbesar otomatis dengan interpolasi\n"
+"nearest-neighbor untuk menjaga ketajaman piksel. Ini mengatur ukuran\n"
+"tekstur minimum untuk tekstur yang diperbesar; semakin tinggi semakin\n"
+"tajam, tetapi butuh memori lebih. Perpangkatan dua disarankan. Pengaturan\n"
+"ini HANYA diterapkan jika menggunakan filter bilinear/trilinear/"
+"anisotropik.\n"
+"Ini juga dipakai sebagai ukuran dasar tekstur nodus untuk penyekalaan\n"
+"otomatis tekstur yang sejajar dengan dunia."
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
+"Apakah latar belakang tanda nama ditampilkan secara bawaan.\n"
+"Mod masih bisa mengatur latar belakang."
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
-msgstr ""
+msgstr "Apakah animasi tekstur nodus harus tidak disinkronkan tiap blok peta."
#: 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 ""
+"Apakah para pemain ditampilkan ke klien tanpa batas jangkauan?\n"
+"Usang, gunakan pengaturan player_transfer_distance."
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "Apakah pemain boleh melukai dan membunuh satu sama lain."
#: src/settings_translation_file.cpp
msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
+"Apakah meminta klien untuk menyambung ulang setelah kerusakan (Lua)?\n"
+"Atur ke true jika server Anda diatur untuk mulai ulang otomatis."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
-msgstr ""
+msgstr "Apakah harus memberi kabut pada akhir daerah yang terlihat."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
+"Apakah akan membisukan suara atau tidak. Anda dapat membunyikan\n"
+"suara kapan pun, kecuali sistem suara dimatikan (enable_sound = false).\n"
+"Dalam permainan, Anda dapat beralih mode bisu dengan tombol bisu\n"
+"atau melalui menu jeda."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr ""
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr "Apakah menampilkan informasi awakutu klien (sama dengan menekan F5)."
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "Lebar ukuran jendela mula-mula. Ini diabaikan dalam mode layar penuh."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr "Lebar garis kotak pilihan di sekeliling nodus."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
+"Sistem Windows saja: Mulai Minetest dengan jendela perintah baris di latar "
+"belakang.\n"
+"Memiliki informasi yang sama dengan berkas debug.txt (nama bawaan)."
#: src/settings_translation_file.cpp
msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
+"Direktori dunia (semua yang ada di dunia disimpan di sini).\n"
+"Tidak perlu jika dimulai dari menu utama."
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Waktu mulai dunia"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"Tekstur yang sejajar dengan dunia dapat diperbesar hingga beberapa nodus.\n"
+"Namun, server mungkin tidak mengirimkan perbesaran yang Anda inginkan,\n"
+"terlebih jika Anda menggunakan paket tekstur yang didesain khusus; dengan\n"
+"pilihan ini, klien mencoba untuk menentukan perbesaran otomatis sesuai\n"
+"ukuran tekstur. Lihat juga texture_min_size.\n"
+"Peringatan: Pilihan ini dalam tahap PERCOBAAN!"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "Mode tekstur sejajar dengan dunia"
#: src/settings_translation_file.cpp
msgid "Y of flat ground."
+msgstr "Y dari tanah flat."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"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."
+msgstr "Batas atas Y untuk gua besar."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Jarak Y dari gua besar untuk meluas ke ukuran penuh."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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."
+msgstr "Ketinggian Y dari permukaan medan rata-rata."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Ketinggian Y dari batas atas gua."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Ketinggian Y dari medan yang lebih tinggi dan menyusun tebing."
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid "Y-level of lower terrain and seabed."
+msgstr "Ketinggian Y dari medan yang lebih rendah dan dasar laut."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Ketinggian Y dari dasar laut."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4460,60 +7826,468 @@ msgid "cURL file download timeout"
msgstr "Batas waktu cURL mengunduh berkas"
#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr "Waktu habis untuk cURL"
+
+#: src/settings_translation_file.cpp
msgid "cURL parallel limit"
msgstr "Batas cURL paralel"
-#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "Batas waktu cURL"
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Mode Kreatif: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Kerusakan: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = parallax occlusion dengan informasi kemiringan (cepat).\n"
+#~ "1 = relief mapping (pelan, lebih akurat)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Alamat/Porta"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Sesuaikan pengodean gamma untuk tabel cahaya.\n"
+#~ "Angka yang lebih tinggi lebih terang.\n"
+#~ "Pengaturan ini untuk klien saja dan diabaikan oleh peladen."
+
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr ""
+#~ "Ubah cara gunung floatland meramping di atas dan di bawah titik tengah."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Apakah Anda yakin ingin mengatur ulang dunia Anda?"
+
+#~ msgid "Back"
+#~ msgstr "Kembali"
+
+#~ msgid "Basic"
+#~ msgstr "Dasar"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bit per piksel (alias kedalaman warna) dalam mode layar penuh."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Bump Mapping"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Bumpmapping"
+
+#~ msgid "Center of light curve mid-boost."
+#~ msgstr "Titik tengah penguatan tengah kurva cahaya."
+
+#~ 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 ""
+#~ "Mengubah antarmuka menu utama:\n"
+#~ "- Full: Banyak dunia pemain tunggal, pilih permainan, paket tekstur, "
+#~ "dll.\n"
+#~ "- Simple: Satu dunia pemain tunggal, tanpa pilihan permainan atau "
+#~ "paket\n"
+#~ "tekstur. Cocok untuk layar kecil."
+
+#~ msgid "Config mods"
+#~ msgstr "Konfigurasi mod"
+
+#~ msgid "Configure"
+#~ msgstr "Konfigurasi"
+
+#~ msgid "Connect"
+#~ msgstr "Sambung"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Atur kelajuan tenggelam dalam cairan."
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Atur kepadatan floatland berbentuk gunung.\n"
+#~ "Merupakan pergeseran yang ditambahkan ke nilai noise \"mgv7_np_mountain\"."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar."
+
+#~ msgid "Credits"
+#~ msgstr "Penghargaan"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Warna crosshair: (merah,hijau,biru) atau (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Kerusakan dinyalakan"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "Kecuraman kegelapan"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Batas waktu bawaan untuk cURL, dalam milidetik.\n"
+#~ "Hanya berlaku jika dikompilasi dengan cURL."
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Mengatur daerah dari medan halus floatland.\n"
+#~ "Floatland halus muncul saat noise > 0."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Menentukan langkah penyampelan tekstur.\n"
+#~ "Nilai lebih tinggi menghasilkan peta lebih halus."
-#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr "Memuat tekstur..."
+#~ msgid "Del. Favorite"
+#~ msgstr "Hapus favorit"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "Faktor skala yang diatur untuk elemen menu: "
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Unduh suatu permainan, misalnya Minetest Game, dari minetest.net"
-#~ msgid "Touch free target"
-#~ msgstr "Bebas sentuhan"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Unduh satu dari minetest.net"
-#~ msgid "Downloading"
-#~ msgstr "Mengunduh"
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Mengunduh dan memasang $1, mohon tunggu..."
-#~ msgid " KB/s"
-#~ msgstr " KB/detik"
+#~ msgid "Enable VBO"
+#~ msgstr "Gunakan VBO"
-#~ msgid " MB/s"
-#~ msgstr " MB/detik"
+#~ msgid "Enable register confirmation"
+#~ msgstr "Gunakan konfirmasi pendaftaran"
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Mulai ulang minetest untuk beralih ke driver yang dipilih"
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Gunakan bumpmapping untuk tekstur. Normalmap harus disediakan oleh paket\n"
+#~ "tekstur atau harus dihasilkan otomatis.\n"
+#~ "Membutuhkan penggunaan shader."
-#~ msgid "Rendering:"
-#~ msgstr "Rendering:"
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Gunakan pemetaan suasana (tone mapping) filmis"
-#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "diaktifkan"
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "Buat normalmap secara langsung (efek Emboss).\n"
+#~ "Membutuhkan penggunaan bumpmapping."
-#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Nonaktifkan PM"
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Gunakan pemetaan parallax occlusion.\n"
+#~ "Membutuhkan penggunaan shader."
+
+#~ msgid "Enter "
+#~ msgstr "Masuk "
+
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "Masih tahap percobaan, dapat menyebabkan terlihatnya spasi antarblok\n"
+#~ "saat diatur dengan angka yang lebih besar dari 0."
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS (bingkai per detik) pada menu jeda"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "Bayangan fon cadangan"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Keburaman bayangan fon cadangan"
+
+#~ msgid "Fallback font size"
+#~ msgstr "Ukuran fon cadangan"
+
+#~ msgid "Filtering"
+#~ msgstr "Pemfilteran"
+
+#~ msgid "Floatland base height noise"
+#~ msgstr "Noise ketinggian dasar floatland"
-#~ msgid "\""
-#~ msgstr "\""
+#~ msgid "Floatland mountain height"
+#~ msgstr "Ketinggian gunung floatland"
-#~ msgid "No!!!"
-#~ msgstr "Tidak!!!"
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Keburaman bayangan fon (keopakan, dari 0 sampai 255)."
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Hasilkan Normalmaps"
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Ukuran fon cadangan bawaan dalam poin (pt)."
-#~ msgid "Public Serverlist"
-#~ msgstr "Daftar Server Publik"
+#~ msgid "FreeType fonts"
+#~ msgstr "Fon FreeType"
-#~ msgid "No of course not!"
-#~ msgstr "Tentu tidak!"
+#~ msgid "Full screen BPP"
+#~ msgstr "BPP layar penuh"
+
+#~ msgid "Game"
+#~ msgstr "Permainan"
+
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Buat Normal Maps"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "Buat normalmap"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "Faktor skala HUD"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "FPU (satuan titik mengambang) berketelitian tinggi"
+
+#~ msgid "IPv6 support."
+#~ msgstr "Dukungan IPv6."
+
+#~ msgid "In-Game"
+#~ msgstr "Dalam permainan"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Pemasangan: berkas: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Instrumentasi"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Pengaturan tombol. (Jika menu ini kacau, hapus pengaturan kontrol dari "
+#~ "minetest.conf)"
+
+#~ msgid "Lava depth"
+#~ msgstr "Kedalaman lava"
+
+#~ msgid "Lightness sharpness"
+#~ msgstr "Kecuraman keterangan"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Batas antrean kemunculan (emerge queue) pada diska"
+
+#~ msgid "Main"
+#~ msgstr "Beranda"
+
+#~ msgid "Main menu style"
+#~ msgstr "Gaya menu utama"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr "Buat DirectX bekerja dengan LuaJIT. Matikan jika bermasalah."
+
+#~ msgid "Menus"
+#~ msgstr "Menu"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Peta mini mode radar, perbesaran 2x"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Peta mini mode radar, perbesaran 4x"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Peta mini mode permukaan, perbesaran 2x"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Peta mini mode permukaan, perbesaran 4x"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nama/Kata Sandi"
+
+#~ msgid "Name/Password"
+#~ msgstr "Nama/Kata Sandi"
+
+#~ msgid "No"
+#~ msgstr "Tidak"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Sampling normalmap"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Kekuatan normalmap"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Jumlah pengulangan parallax occlusion."
+
+#~ msgid "Ok"
+#~ msgstr "Oke"
+
+#~ msgid ""
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
+#~ msgstr ""
+#~ "Keburaman (alfa) bayangan di belakang fon cadangan, antara 0 dan 255."
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "Bias keseluruhan dari efek parallax occlusion, biasanya skala/2."
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Skala keseluruhan dari efek parallax occlusion."
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax Occlusion"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Parallax occlusion"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Pergeseran parallax occlusion"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Pengulangan parallax occlusion"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Mode parallax occlusion"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Skala parallax occlusion"
+
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Kekuatan parallax occlusion"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Jalur ke TrueTypeFont atau bitmap."
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Jalur untuk menyimpan tangkapan layar."
+
+#~ msgid "Player name"
+#~ msgstr "Nama pemain"
+
+#~ msgid "Profiling"
+#~ msgstr "Profiling"
+
+#~ msgid "Projecting dungeons"
+#~ msgstr "Dungeon yang menonjol"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP dinyalakan"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Atur ulang dunia pemain tunggal"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Pilih berkas paket:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Server/Pemain tunggal"
+
+#~ msgid "Shadow limit"
+#~ msgstr "Batas bayangan"
+
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Pergeseran bayangan fon cadangan dalam piksel. Jika 0, bayangan tidak "
+#~ "akan digambar."
+
+#~ msgid "Special"
+#~ msgstr "Spesial"
+
+#~ msgid "Special key"
+#~ msgstr "Tombol spesial"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Mulai Pemain Tunggal"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Kekuatan normalmap yang dibuat."
+
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "Kekuatan penguatan tengah kurva cahaya."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Fon ini akan digunakan pada bahasa tertentu."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Untuk menggunakan shader, pengandar OpenGL harus digunakan."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Mode sinema"
+
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr ""
+#~ "Ketinggian maksimum secara umum, di atas dan di bawah titik tengah, dari "
+#~ "gunung floatland."
+
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Variasi dari ketinggian bukit dan kedalaman danau pada medan halus "
+#~ "floatland."
+
+#~ msgid "View"
+#~ msgstr "Tinjau"
+
+#~ msgid "Waving Water"
+#~ msgstr "Air Berombak"
+
+#~ msgid "Waving water"
+#~ msgstr "Air berombak"
+
+#~ 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 ""
+#~ "Apakah fon FreeType digunakan, membutuhkan dukungan FreeType saat "
+#~ "dikompilasi.\n"
+#~ "Jika dimatikan, fon bitmap dan vektor XML akan dipakai."
+
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "Apakah dungeon terkadang muncul dari medan."
+
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "Batas atas Y untuk lava dalam gua besar."
+
+#~ msgid "Y-level of floatland midpoint and lake surface."
+#~ msgstr "Ketinggian Y dari titik tengah floatland dan permukaan danau."
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Ketinggian Y tempat bayangan floatland diperpanjang."
+
+#~ msgid "Yes"
+#~ msgstr "Ya"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Anda akan bergabung ke server dengan nama \"%s\" untuk pertama kalinya.\n"
+#~ "Jika Anda melanjutkan, akun baru yang telah Anda isikan akan dibuat pada "
+#~ "server ini.\n"
+#~ "Silakan ketik ulang kata sandi Anda dan klik \"Daftar dan Gabung\" untuk "
+#~ "mengonfirmasi pembuatan akun atau klik Batal untuk membatalkan."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Anda mati"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Berguna untuk pengembang mod."
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/it/minetest.po b/po/it/minetest.po
index 17d297dda..b986bfb0a 100644
--- a/po/it/minetest.po
+++ b/po/it/minetest.po
@@ -1,14 +1,10 @@
-# Minetest's Italian localization.
-# Copyright (C) 2011-2016 Perttu Ahola
-# This file is distributed under the same license as the Minetest package.
-# Emon <emon@openmailbox.org>, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: Minetest 0.4.9\n"
+"Project-Id-Version: Italian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-05-14 13:34+0000\n"
-"Last-Translator: Emon Omen <emon@openmailbox.org>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-06-20 09:52+0000\n"
+"Last-Translator: Giov4 <brancacciogiovanni1@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/minetest/"
"minetest/it/>\n"
"Language: it\n"
@@ -16,110 +12,239 @@ 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 2.7-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "Pulisci la coda di uscita dei messaggi della chat"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "Comando vuoto."
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "Ritorna al menu principale"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "Comando non valido: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "Comando eseguito: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "Elenca i giocatori connessi"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "Giocatori connessi: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "La coda di uscita dei messaggi della chat ora è vuota."
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "Questo comando è stato disabilitato dal server."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Rinasci"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Sei morto"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "Comandi disponibili:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "Comandi disponibili: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "Comando non disponibile: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "Ottieni aiuto per i comandi"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"Digita '.help <cmd>' per ricevere ulteriori informazioni sul comando, o "
+"digita '.help all' per elencare tutti i comandi."
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[tutto | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "Conferma"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr "<nessuno disponibile>"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "E' avvenuto un errore in uno script Lua, come un mod.:"
+msgid "An error occurred in a Lua script:"
+msgstr "Si è verificato un errore in uno script Lua:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "E' avvenuto un errore:"
+msgid "An error occurred:"
+msgstr "Si è verificato un errore:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Menu principale"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Va bene"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
-msgstr "Riconnettere"
+msgstr "Riconnettiti"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "Il server ha richiesto una riconnessione:"
+msgstr "Il server ha richiesto la riconnessione:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Caricamento..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Seleziona i Moduli"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
-msgstr "Versione del protocollo non corrispondente. "
+msgstr "La versione del protocollo non coincide. "
#: builtin/mainmenu/common.lua
msgid "Server enforces protocol version $1. "
-msgstr "Il server impone la versione di protocollo $1. "
+msgstr "Il server impone la versione $1 del protocollo. "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr "Il server supporta versioni di protocollo comprese tra $1 e $2. "
+msgstr "Il server supporta versioni di protocollo comprese tra la $1 e la $2. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Provate a riabilitare l'elenco dei server pubblici e controllate la vostra "
-"connessione internet."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr "Supportiamo solo il protocollo versione $1."
+msgstr "Supportiamo solo la versione $1 del protocollo."
#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
-msgstr "Supportiamo versioni di protocollo comprese tra $1 e $2."
+msgstr "Supportiamo versioni di protocollo comprese tra la $1 e la $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
-msgstr "Annullare"
+msgstr "Annulla"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
msgstr "Dipendenze:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Disabilitare p.m."
+msgid "Disable all"
+msgstr "Disattiva tutto"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Abilitare p.m."
+msgid "Disable modpack"
+msgstr "Disattiva la raccolta di mod"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "Abilitarli tutti"
+msgstr "Attiva tutto"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Attiva la raccolta di mod"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Abilitazione del mod. \"$1\" fallita perché contiene caratteri non ammessi. "
-"Sono ammessi solo i caratteri [a-z0-9_]."
+"Impossibile abilitare la mod \"$1\" poiché contiene caratteri non "
+"consentiti. Sono ammessi solo caratteri [a-z0-9_]."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Nasc. del gioco"
+msgid "Find More Mods"
+msgstr "Trova Più Moduli"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Nasc. il cont. dei pacchetti"
+msgid "Mod:"
+msgstr "Mod:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr "Mod.:"
+msgid "No (optional) dependencies"
+msgstr "Nessuna dipendenza (facoltativa)"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No game description provided."
+msgstr "Non è stata fornita alcuna descrizione del gioco."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Nessuna dipendenza necessaria"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Non è stata fornita alcuna descrizione per la raccolta di mod."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Nessuna dipendenza facoltativa"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Dipendenze facoltative:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
-msgstr "Salvare"
+msgstr "Salva"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
@@ -129,373 +254,799 @@ msgstr "Mondo:"
msgid "enabled"
msgstr "abilitato"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "\"$1\" esiste già. Vuoi sovrascriverlo?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "Le dipendenze $1 e $2 saranno installate."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 con $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"Scaricando $1,\n"
+"$2 in coda"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "Scaricando $1..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 impossibile trovare le dipendeze necessarie."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 sarà installato, e $2 dipendenze verranno ignorate."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Tutti i contenuti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Già installato"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Torna al Menu Principale"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Gioco di Base:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB non è disponibile quando Minetest viene compilato senza cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Scaricamento..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Impossibile scaricare $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Giochi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Installa"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "Installa $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "Installa le dipendenze mancanti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Installazione: Tipo di file non supportato o archivio danneggiato"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Moduli"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Non è stato possibile recuperare alcun contenuto"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Nessun risultato"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "Nessun aggiornamento"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "Non trovato"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "Sovrascrivi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "Per favore, controlla che il gioco di base sia corretto."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "In coda"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Raccolte di texture"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Disinstalla"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Aggiorna"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "Aggiorna Tutto [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr "Visualizza ulteriori informazioni in un browser Web"
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr "Esiste già un mondo chiamato \"$1\""
+msgstr "Un mondo chiamato \"$1\" esiste già"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "Terreno aggiuntivo"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "Raffreddamento da altitudine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "Siccità da altitudine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "Mescolamento biomi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "Biomi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "Caverne"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "Grotte"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
-msgstr "Creare"
+msgstr "Crea"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Scaricare un sottogioco, come minetest_game, da minetest.net"
+msgid "Decorations"
+msgstr "Decorazioni"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Scaricarne uno da minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Avviso: Il Development Test è inteso per gli sviluppatori."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Gioco"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "Sotterranei"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "Terreno piatto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "Regioni di terreno fluttuanti nel cielo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "Terre fluttuanti (sperimentale)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "Generare terreno non-frattale: oceani e spazio sotterraneo"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "Colline"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "Fiumi umidi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "Aumenta l'umidità attorno ai fiumi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Installa $1"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Laghi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "Bassa umidità e calore elevato rendono i fiumi bassi o secchi"
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
-msgstr "Generatore mappa"
+msgstr "generatore della mappatura del terreno"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr "Valori del generatore della mappatura del terreno"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr ""
-"Non è stato dato nessun nome di mondo o non è stato scelto nessun gioco"
+msgid "Mapgen-specific flags"
+msgstr "Valori specifici del generatore della mappatura del terreno"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "Montagne"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "Scorrimento fangoso"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "Rete di gallerie e grotte"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Nessun gioco selezionato"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "Diminuisce il calore con l'altitudine"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "Diminuisce l'umidità con l'altitudine"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "Fiumi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "Fiumi a livello del mare"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr "Seme casuale"
+msgstr "Seme"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr "Transizione uniforme tra biomi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+"Strutture che compaiono sul terreno (nessun effetto su alberi ed erba della "
+"giungla creati dal v6)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "Strutture che compaiono sul terreno, tipicamente alberi e piante"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "Temperato, Deserto"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "Temperato, Deserto, Giungla"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Avviso: il \"minimal development test\" è inteso per gli sviluppatori."
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "Temperato, Deserto, Giungla, Tundra, Taiga"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "Erosione della superficie del terreno"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "Alberi ed erba della giungla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "Diversifica la profondità dei fiumi"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "Caverne davvero grandi in profondità sottoterra"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Nome del mondo"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "Non avete sottogiochi installati."
+msgid "You have no games installed."
+msgstr "Non hai nessun gioco installato."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr "Siete certi di volere cancellare \"$1\"?"
+msgstr "Siete sicuri di volere cancellare \"$1\"?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
-msgstr "Cancellare"
+msgstr "Rimuovi"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modmgr: cancellazione di \"$1\" fallita"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: non è stato possibile eliminare \"$1\""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modmgr: percorso mod. non valido \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: percorso non valido \"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr "Cancellare il mondo \"$1\"?"
+msgstr "Eliminare il mondo \"$1\"?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Conferma la password"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Nome del generatore mappa"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Nome"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Password"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Le password non corrispondono!"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Registrati e accedi"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
-msgstr "Accettare"
+msgstr "Conferma"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr "Rinominare il pacchetto mod.:"
+msgstr "Rinomina la raccolta di mod:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "\"$1\" non è un marcatore valido."
+#: 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 ""
+"Questa raccolta di mod esplicita un nome fornito in modpack.conf che "
+"sovrascriverà ogni modifica del nome qui effettuata."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr "(Non è stata fornita nessuna descrizione dell'impostazione)"
+msgstr "(Nessuna descrizione fornita per l'impostazione)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "Rumore 2D"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr "< Pag. delle impostazioni"
+msgstr "< Torna alla pagina Impostazioni"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr "Mostrare"
+msgstr "Esplora"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Contenuto"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Contenuto"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "Disabilitato"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr "Modificare"
+msgstr "Modifica"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
msgstr "Abilitato"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr "Il formato è tre numeri separati da virgole e dentro parentesi."
+msgid "Lacunarity"
+msgstr "Lacunarità"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"Formato: <compensazione>, <scala>, (<estensioneX>, <estensioneY>, "
-"<estensioneZ>), <seme>, <ottave>, <persistenza>"
+msgid "Octaves"
+msgstr "Ottave"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Scarto"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Giochi"
+msgid "Persistence"
+msgstr "Persistenza"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mod."
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Per favore inserisci un numero intero valido."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-"Facoltativamente si può aggiungere la lacunarità con una virgola davanti."
+msgid "Please enter a valid number."
+msgstr "Per favore inserisci un numero valido."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr "Inserite un elenco di valori separati da virgole, prego."
+msgid "Restore Default"
+msgstr "Ripristina predefinito"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Ridimensiona"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Ricerca"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr "Inserite un numero intero valido, prego."
+msgid "Select directory"
+msgstr "Scegli l'indirizzo"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr "Inserite un numero valido, prego."
+msgid "Select file"
+msgstr "Scegli un file"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Mostra i nomi tecnici"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "I valori possibili sono: "
+msgid "The value must be at least $1."
+msgstr "Il valore deve essere almeno $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr "Ripristino predefinite"
+msgid "The value must not be larger than $1."
+msgstr "Il valore non deve essere più grande di $1."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "Scegliere il percorso"
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr "Mostrare i nomi tecnici"
+msgid "X spread"
+msgstr "Propagazione X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr "Il valore deve essere maggiore di $1."
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr "Il valore deve essere minore di $1."
+msgid "Y spread"
+msgstr "Propagazione Y"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Insallatore mod.: tipo di file non supportato \"$1\" o archivio danneggiato"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "Installazione di $1 in $2 fallita"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Propagazione Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Installatore mod.: file: \"$1\""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "\"absvalue\""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Installatore mod.: impossibile trovare il vero nome mod per: $1"
+#. ~ "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 "\"defaults\""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
-"Installatore mod.: impossibile trovare un nome cartella adatto per il "
-"pacchetto mod $1"
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "\"eased\""
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Chiudere il negozio"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Attivato)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Scaricamento di $1, attendere prego..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 moduli"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Installare"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "installazione fallita di $1 a $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Installa Modulo: Impossibile trovare il nome vero del mod per: $1"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Pagina $1 di $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Installa Modulo: Impossibile trovare un nome della cartella adeguato per la "
+"raccolta di mod $1"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Valutazione"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Impossibile trovare un mod o una raccolta di mod validi"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Cercare"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Impossibile installare un $1 come una raccolta di texture"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Nome abbreviato:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Impossibile installare un gioco come un $1"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Installato con successo:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Impossibile installare un mod come un $1"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Non ordinati"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Impossibile installare una raccolta di mod come un $1"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "reinstallare"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Caricamento..."
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "L'elenco dei server pubblici è 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 "
+"connessione Internet."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "Informazioni"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
-msgstr "Contributori attivi"
+msgstr "Contributori Attivi"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "Algoritmo di resa attivo:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
-msgstr "Sviluppatori principali"
+msgstr "Sviluppatori Principali"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "Apri l'Indirizzo dei Dati Utente"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Crediti"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+"Apre l'indirizzo contenente mondi, giochi, mod e raccolte di\n"
+"textures forniti dall'utente in un gestore / visualizzatore di file ."
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Contributori precedenti"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
-msgstr "Sviluppatori principali precedenti"
+msgstr "Sviluppatori Principali Precedenti"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Moduli installati:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Informazioni sul modulo:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Nessuna descrizione disponibile per il modulo"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Rinominare"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Scegliere il file mod.:"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "Mostra le informazioni di debug"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Disinstallare il modulo scelto"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Esplora i contenuti online"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Disinstallare il pacchetto mod. scelto"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Contenuto"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "Indirizzo / Porta"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Disattiva la Raccolta di Texture"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Client"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informazioni:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Connettersi"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Contenuti Installati:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Modalità creativa"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Nessuna dipendenza."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Danno abilitato"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Nessuna descrizione disponibile per il contenuto"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "Canc. prefer."
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Rinomina"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "Preferiti:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Disinstalla il Contenuto"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "Nome / Password"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Utilizza la Raccolta di Textures"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "GcG abilitato"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Annunciare il Server"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
-msgstr "Legare indirizzo"
+msgstr "Indirizzo Incorporato"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Configurare"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr "Modalità creativa"
+msgstr "Modalità Creativa"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr "Abilitare il danno"
+msgstr "Abilita il Ferimento"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Nome/Password"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Ospita un Gioco"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Ospita un Server"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "Installa giochi da ContentDB"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Nuovo"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr "Nessun mondo creato o scelto!"
+msgstr "Nessun mondo creato o selezionato!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Avvia il gioco"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Porta"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Pubblico"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "Seleziona i Moduli"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
-msgstr "Scegliere il mondo:"
+msgstr "Seleziona il Mondo:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Server"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
-msgstr "Porta del server"
+msgstr "Porta del Server"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
-msgstr "Avviare il gioco"
+msgstr "Gioca"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "Indirizzo"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Canc"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Modalità creativa"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "Ferimento / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "Preferiti"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "Server Incompatibili"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Unisciti al Gioco"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Ping"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "Server Pubblici"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "Ricarica"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Porta remota"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "Descrizione del Server"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
@@ -514,93 +1065,97 @@ msgid "8x"
msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "Impostazioni avanzate"
+msgid "All Settings"
+msgstr "Tutte le Impostazioni"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr "Antialias:"
+msgstr "Anti-Scalettatura:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Siete certi di volere azzerare il vostro mondo di giocatore singolo?"
+msgid "Autosave Screen Size"
+msgstr "Ricorda Dim. Finestra"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr "Filtro bilineare"
+msgstr "Filtro Bilineare"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "Bump Mapping"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Cambia i Tasti"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr "Modificare i tasti"
+msgid "Connected Glass"
+msgstr "Vetro Contiguo"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "Ombre Dinamiche"
#: builtin/mainmenu/tab_settings.lua
-msgid "Connected Glass"
-msgstr "Vetri uniti"
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "Ombre dinamiche: "
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr "Foglie decorative"
+msgstr "Foglie di Qualità"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
-msgstr "Mipmap"
+msgid "High"
+msgstr "Alto"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
-msgstr "Mipmap + Filtro aniso."
+msgid "Low"
+msgstr "Basso"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "No"
+msgid "Medium"
+msgstr "Medio"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "MIP map"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "Mipmap + Filtro Aniso."
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
-msgstr "Nessun filtro"
+msgstr "Nessun Filtro"
#: builtin/mainmenu/tab_settings.lua
msgid "No Mipmap"
-msgstr "Niente mipmap"
+msgstr "Nessuna Mipmap"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Highlighting"
-msgstr "Evidenz. nodo"
+msgstr "Evidenziatura dei Nodi"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
-msgstr "Bordatura nodo"
+msgstr "Profilo dei Nodi"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Nessuno"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "Normal Mapping"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr "Foglie opache"
+msgstr "Foglie Opache"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr "Acqua opaca"
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Occlusione di parallasse"
+msgstr "Acqua Opaca"
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "Particelle"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Siete certi di volere azzerare il vostro mondo di giocatore singolo?"
+msgid "Screen:"
+msgstr "Schermo:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -611,196 +1166,296 @@ msgid "Shaders"
msgstr "Shader"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "Shaders (sperimentali)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Shaders (non disponibili)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
-msgstr "Foglie semplici"
+msgstr "Foglie Semplici"
#: builtin/mainmenu/tab_settings.lua
msgid "Smooth Lighting"
-msgstr "Illuminaz. uniforme"
+msgstr "Illuminazione Uniforme"
#: builtin/mainmenu/tab_settings.lua
msgid "Texturing:"
-msgstr "Immagini:"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "Per abilitare gli shader è necessario usare i driver OpenGL."
+msgstr "Resa Immagini:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr "Mappatura toni"
+msgstr "Mappatura del Tono"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "Soglia di tocco (px)"
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Soglia del Tocco: (px)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr "Filtro trilineare"
+msgstr "Filtro Trilineare"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "Foglie ondeggianti"
+#, fuzzy
+msgid "Very High"
+msgstr "Ultra"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "Piante ondeggianti"
+msgid "Very Low"
+msgstr "Molto Basso"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "Acqua ondeggiante"
+msgid "Waving Leaves"
+msgstr "Foglie Ondeggianti"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Sì"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Config. mod."
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Principale"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Avviare il giocatore singolo"
+msgid "Waving Liquids"
+msgstr "Liquidi Ondeggianti"
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Giocare"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Giocatore singolo"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Nessuna informazione disponibile"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Scegliere il pacchetto di immagini:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Piante Ondeggianti"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Pacch. di imm."
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Errore di connessione (scaduta?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr "Tempo di connessione scaduto."
+msgstr "Connessione scaduta."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Fatto!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr "Inizializzazione dei nodi"
+msgstr "Inizializzando i nodi"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr "Inizializzazione dei nodi..."
+msgstr "Inizializzando i nodi..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr "Caricamento delle texture..."
+msgstr "Caricando le textures..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
-msgstr "Ricostruzione degli shader..."
+msgstr "Ricostruendo le shaders..."
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
msgstr "Errore di connessione (scaduta?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "Impossibile trovare o caricare il gioco \""
+msgid "Could not find or load game: "
+msgstr "Impossibile trovare o caricare il gioco: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
-msgstr "Spec. di gioco non valide."
+msgstr "Requisiti del gioco non validi."
#: src/client/clientlauncher.cpp
msgid "Main Menu"
-msgstr "Menu principale"
+msgstr "Menu Principale"
#: src/client/clientlauncher.cpp
msgid "No world selected and no address provided. Nothing to do."
-msgstr "Nessun mondo scelto e nessun indirizzo fornito. Niente da fare."
+msgstr "Nessun mondo selezionato e nessun indirizzo fornito. Nulla da fare."
#: src/client/clientlauncher.cpp
msgid "Player name too long."
msgstr "Nome del giocatore troppo lungo."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Per favore scegli un nome!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Impossibile aprire il file di password fornito: "
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "Il percorso del mondo fornito non esiste: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "necessita_font_ripiego"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
-"Controllate debug.txt per i dettagli."
+"Controlla debug.txt per i dettagli."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Modificare i tasti"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Indirizzo: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Modalità: "
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Porta: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Pubblico: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Nome del Server: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "Si è verificato un errore di serializzazione:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "Accesso negato. Motivo: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Avanzamento automatico disabilitato"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Avanzamento automatico abilitato"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "Limiti del blocco nascosti"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "I limiti del blocco sono mostrati per tutti i blocchi"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "I limiti del blocco sono mostrati per il blocco attuale"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "I limiti del blocco sono mostrati per i blocchi vicini"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Aggiornamento della telecamera disabilitato"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Aggiornamento telecamera abilitato"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+"Impossibile mostrare i limiti del blocco (si ha bisogno del privilegio "
+"'basic_debug')"
+
+#: src/client/game.cpp
msgid "Change Password"
-msgstr "Modificare la password"
+msgstr "Cambia la Password"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Modalità cinematica disattiva"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Modalità cinematica attiva"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "Client disconnesso"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Scripting su lato client disabilitato"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Connessione al server..."
-#: src/game.cpp
-msgid "Continue"
-msgstr "Proseguire"
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "Connessione fallita per motivo sconosciuto"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Continua"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Controlli:\n"
+"- %s: avanza\n"
+"- %s: arretra\n"
+"- %s: sinistra\n"
+"- %s: destra\n"
+"- %s: salta/scala su\n"
+"- %s: scava/colpisci\n"
+"- %s: piazza/utilizza\n"
+"- %s: furtivo/scendi\n"
+"- %s: getta via oggetto\n"
+"- %s: inventario\n"
+"- Mouse: girati/guarda\n"
+"- Rotella mouse: scegli oggetto\n"
+"- %s: chat\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "Impossibile risolvere l'indirizzo: %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
msgstr "Creazione del client..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
msgstr "Creazione del server..."
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"Controlli predefiniti:\n"
-"- WASD: muoversi\n"
-"- Spazio: saltare/salire\n"
-"- Maiusc: strisciare/scendere\n"
-"- Q: lasciare cadere l'oggetto\n"
-"- I: inventario\n"
-"- Mouse: girarsi/guardare\n"
-"- Mouse sin.: scavare/colpire\n"
-"- Mouse des.: posizionare/usare\n"
-"- Rot. mouse: scegliere l'oggetto\n"
-"- T: messaggistica\n"
-
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Info di debug e grafico profiler nascosti"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Info debug mostrate"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "Info debug, grafico profiler e struttura a fili nascosti"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -815,513 +1470,825 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"Controlli predefiniti:\n"
-"Menu non visibile:\n"
-"- colpetto: attivare pulsante\n"
-"- doppio colpetto: posizionare/usare\n"
-"- trascinare col dito: guardare attorno\n"
+"Controlli Predefiniti:\n"
+"Nessun menu visibile:\n"
+"- tocco singolo: attiva pulsante\n"
+"- tocco doppio; piazza/utilizza\n"
+"- trascina il dito: guarda attorno\n"
"Menu/Inventario visibile:\n"
-"- doppio colpetto (fuori):\n"
-" -->chiudere\n"
-"- toccare pila, toccare alloggio:\n"
-" --> muovere pila\n"
-"- tocco&trascina, colpetto 2o dito\n"
-" --> posizionere oggetto singolo nell'alloggio\n"
-
-#: src/game.cpp
+"- doppio tocco (esterno):\n"
+" -->chiudi\n"
+"- tocco pila, tocco casella:\n"
+" --> sposta pila\n"
+"- tocca e trascina, tocco 2° dito\n"
+" --> piazza oggetto singolo nella casella\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Raggio visivo illimitato disabilitato"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Raggio visivo illimitato abilitato"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Creazione del client..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr "Tornare al menu"
+msgstr "Menu Principale"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr "Tornare al s.o."
+msgstr "Torna al S.O."
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr "Definizioni dell'oggetto..."
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Modalità rapida disabilitata"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr "KiB/s"
-
-#: src/game.cpp
-msgid "Media..."
-msgstr "Multimedia..."
-
-#: src/game.cpp
-msgid "MiB/s"
-msgstr "MiB/s"
-
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Definizioni del nodo..."
-
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Risoluzione dell'indirizzo..."
-
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Ricomparire"
-
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Spegnimento..."
-
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Volume dell'audio"
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Modalità rapida abilitata"
-#: src/game.cpp
-msgid "You died."
-msgstr "Siete morti."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Modalità rapida abilitata (nota: privilegio 'fast' mancante)"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "va bene"
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Modalità volo disabilitata"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Invio "
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Modalità volo abilitata"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Procedere"
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Modalità volo abilitata (nota: privilegio 'fly' mancante)"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "\"Usare\" = scendere"
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Nebbia disattivata"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Indietro"
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Nebbia attivata"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Messaggistica"
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Informazioni del gioco:"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Comando"
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Gioco in pausa"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Console"
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Server ospitante"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Doppio \"saltare\" per il volo"
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Definizione degli oggetti..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Lasciare cadere"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Avanti"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "File multimediali..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventario"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Saltare"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Minimappa attualmente disabilitata dal gioco o da un modulo"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Tasto già in uso"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "Multigiocatore"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"Collegamenti dei tasti. (Se questo menu si incasina, togliete la roba da "
-"minetest.conf)"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Modalità incorporea disabilitata"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Sinistra"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Modalità incorporea abilitata"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Stampare stack"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Modalità incorporea abilitata (nota: privilegio 'noclip' mancante)"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Raggio visivo"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Definizione dei nodi..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Destra"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Disattivato"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Strisciare"
+#: src/client/game.cpp
+msgid "On"
+msgstr "Attivato"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Attiv. cinematic"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Modalità inclinazione movimento disabilitata"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Attivare veloce"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Modalità inclinazione movimento abilitata"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Attivare volo"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Grafico profiler visualizzato"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Attivare noclip"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Server remoto"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Usare"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Risoluzione dell'indirizzo..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Zoom"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Uscita dal gioco..."
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "prem. il tasto"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Gioco locale"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Cambiare"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Volume del Suono"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Suono disattivato"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "Il sistema audio è disabilitato"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "Il sistema audio non è supportato su questa compilazione"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Suono attivato"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "Il server sta probabilmente eseguendo una versione differente di %s."
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "Impossibile connettersi a %s perché IPv6 è disabilitato"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "Impossibile ascoltare su %s perché IPv6 è disabilitato"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Raggio visivo cambiato a %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Il raggio visivo è al massimo: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Il raggio visivo è al minimo: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Volume cambiato a %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Struttura a fili visualizzata"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Ingrandimento attualmente disabilitato dal gioco o da un mod"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "va bene"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Confermare la password"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Chat nascosta"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Nuova password"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Chat mostrata"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Vecchia password"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD nascosto"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Le password non sono uguali!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD visibile"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Uscire"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profilatore nascosto"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Volume dell'audio: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profilatore visualizzato (pagina %d di %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Applicazioni"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attenzione"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Tasto di ritorno"
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Indietro"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Blocco Maiusc."
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Bloc maiusc"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Pulire"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Virgola"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Control"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Convertire"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Giù"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Fine"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Cancellare l'OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Esc"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Canc. EOF"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Eseguire"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Finale"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr "Help"
+msgstr "Aiuto"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Inizio"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Ins"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "Accetta IME"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "Converti IME"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Ritorno da IME"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "Cambia Modalità IME"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "Non Convertire IME"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "ì"
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Inserisci"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Sinistra"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr "Pulsante sinistro"
+msgstr "Pulsante Sinistro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
-msgstr "Ctrl sinistro"
+msgstr "Control Sinistro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr "Alt sinistro"
+msgstr "Menu Sinistro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
-msgstr "Maiusc sin."
+msgstr "Shift Sinistro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr "Super sinistro"
+msgstr "Windows Sinistro"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Menu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr "Pulsante centrale"
-
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Meno"
+msgstr "Pulsante Centrale"
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Cambiare modalità"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Pag giù"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "Nonconvert"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Bloc Num"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr "Tast. num. *"
+msgstr "Tastierino *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr "Tast. num. +"
+msgstr "Tastierino +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr "Tast. num. -"
+msgstr "Tastierino -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Tastierino ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr "Tast. num. /"
+msgstr "Tastierino /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr "Tast. num. 0"
+msgstr "Tastierino 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr "Tast. num. 1"
+msgstr "Tastierino 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr "Tast. num. 2"
+msgstr "Tastierino 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr "Tast. num. 3"
+msgstr "Tastierino 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr "Tast. num. 4"
+msgstr "Tastierino 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr "Tast. num. 5"
+msgstr "Tastierino 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr "Tast. num. 6"
+msgstr "Tastierino 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr "Tast. num. 7"
+msgstr "Tastierino 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr "Tast. num. 8"
+msgstr "Tastierino 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr "Tast. num. 9"
+msgstr "Tastierino 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
-msgstr "Pulire l'OEM"
+msgstr "OEM Canc"
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Pag. giù"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Pag. su"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pausa"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Punto"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Più"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Avvia"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr "Stamp"
+msgstr "Stampa"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Pag su"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Invio"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Destra"
+
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr "Pulsante destro"
+msgstr "Pusante detro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Ctrl destro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
-msgstr "Alt destro"
+msgstr "Menu destro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
-msgstr "Maiusc des."
+msgstr "Maiusc destro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr "Super destro"
+msgstr "Windows destro"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
-msgstr "Bloc"
+msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr "Selezionare"
+msgstr "Selezione"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Maiusc"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Sospensione"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
-msgstr "Stamp"
+msgstr "Stampa"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Spazio"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Su"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "Pulsante X 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "Pulsante X 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Ingrandimento"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Minimappa nascosta"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minimappa in modalità radar, ingrandimento x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minimappa in modalità superficie, ingrandimento x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "Minimappa in modalità texture"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "Impossibile aprire la pagina web"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "Apertura pagina web"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Prosegui"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"Speciale\" = discendi"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Avanzam. autom."
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Salto automatico"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Speciale"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Indietreggia"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "Limiti del blocco nascosto"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Cambia vista"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Chat"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Comando"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Console"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Diminuisci raggio"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Diminuisci volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Doppio \"salta\" per volare"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Butta"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Avanza"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Aumenta raggio"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Aumenta volume"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventario"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Salta"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Tasto già usato"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Comando locale"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Muta audio"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Oggetto successivo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Oggetto precedente"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Selezione raggio"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Screenshot"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Furtivo"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Log chat sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Corsa sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Volo sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Nebbia sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Minimappa sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Incorporeità sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Beccheggio sì/no"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "premi il tasto"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Cambia"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Nuova password"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Vecchia password"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Le password non corrispondono!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Uscita"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Silenziato"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Volume suono: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "it"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Per favore scegli un nome!"
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+"(Android) Fissa la posizione del joystick virtuale.\n"
+"Se disabilitato, il joystick sarà centrato alla posizione del primo tocco."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) Usa il joystick virtuale per attivare il pulsante \"Speciale\".\n"
+"Se abilitato, inoltre, il joystick virtuale premerà il pulsante \"Speciale\" "
+"quando fuori dal cerchio principale."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
-"(X, Y, Z) compensazione del frattale dal centro del mondo in unità di "
-"'scala'.\n"
-"Usata per muovere un'adeguata area di comparsa di terreno basso vicino a (0, "
-"0).\n"
-"La predefinita è adatta alle serie mandelbrot, necessita modifiche per le "
-"serie julia.\n"
-"Spazia pressapoco tra -2 e 2. Moltiplicate per 'scala' per una compensazione "
-"in nodi."
+"Scarto (X,Y,Z) del frattale dal centro del mondo in unità di \"scala\".\n"
+"Può essere usato per spostare un punto desiderato a (0,0) per creare un\n"
+"punto di comparsa adatto, o per consentire l'ingrandimento su di un punto "
+"desiderato\n"
+"per mezzo dell'aumento della \"scala\".\n"
+"Il valore predefinito è regolato per un punto di comparsa opportuno con le "
+"serie Mandelbrot\n"
+"che usino i parametri predefiniti, potrebbe richiedere modifiche in altre\n"
+"situazioni.\n"
+"Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per lo scarto in "
+"nodi."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+"Scala (X,Y,Z) del frattale in nodi.\n"
+"La dimensione effettiva del frattale sarà due o tre volte più grande.\n"
+"Questi numeri possono essere impostati su valori molto alti, il frattale non "
+"deve\n"
+"necessariamente rientrare nel mondo.\n"
+"Li si aumenti per \"ingrandire\" nel dettaglio del frattale.\n"
+"Il valore predefinito è per una forma schiacciata verticalmente, adatta\n"
+"a un'isola, si impostino tutti e tre i numeri sullo stesso valore per la "
+"forma grezza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "Rumore 2D che controlla forma/dimensione delle montagne con dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "Rumore 2D che controlla forma/dimensione delle colline in serie."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "Rumore 2D che controlla forma/dimensione delle montagne a terrazza."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+"Rumore 2D che controlla forma/comparsa delle file di montagne con dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "Rumore 2D che controlla forma/comparsa delle colline in serie."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
msgstr ""
-"0 = occlusione di parallasse con informazione di pendenza (più veloce).\n"
-"1 = mappatura di rilievo (più lenta, più accurata)."
+"Rumore 2D che controlla forma/comparsa delle file di montagne con dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "Rumore 2D che posiziona fiumi e canali."
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1332,6 +2299,54 @@ msgid "3D mode"
msgstr "Modalità 3D"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "Intensità della modalità 3D di parallasse"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "Rumore 3D che definisce le caverne giganti."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"Rumore 3D che definisce struttura e altezza delle montagne.\n"
+"Definisce anche la struttura del terreno montano delle terre fluttuanti."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+"Rumore 3D che stabilisce la struttura delle terre fluttuanti.\n"
+"Se cambiata dal valore predefinito, la 'scala' di rumore (0.7 in modo "
+"predefinito) potrebbe necessitare\n"
+"d'essere aggiustata, dato che l'affusolamento delle terre fluttuanti "
+"funziona meglio quando questo rumore\n"
+"ha un intervallo di valori approssimativamente tra -2.0 e 2.0."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "Rumore 3D che definisce la struttura dei muri dei canyon dei fiumi."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "Rumore 3D che definisce il terreno."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"Rumore 3D per sporgenze, dirupi, ecc. delle montagne. Normalmente piccole "
+"variazioni."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "Rumore 3D che stabilisce il numero di segrete per blocco di mondo."
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1340,62 +2355,78 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
"Supporto 3D.\n"
"Attualmente supportati:\n"
-"- nessuno: nessun output 3D.\n"
-"- anaglifo: 3D in colori ciano/magenta.\n"
-"- intrecciato: supporto per polarizzazione schermo basata su linea pari/"
+"- nessuno: nessuna resa 3D.\n"
+"- anaglifo: 3D a colori ciano/magenta.\n"
+"- intrecciato: supporto polarizzazione schermo basato sulle linee pari/"
"dispari.\n"
-"- superiore-inferiore: divisione dello schermo in superiore/inferiore.\n"
-"- fianco-a-fianco: divisione dello schermo fianco a fianco.\n"
-"- sfoglia-pagina: 3D basato su buffer quadruplo."
+"- sopra-sotto: divide lo schermo sopra-sotto.\n"
+"- fianco-a-fianco: divide lo schermo fianco a fianco.\n"
+"- vista incrociata: 3D a occhi incrociati.\n"
+"- inversione pagina: 3D basato su quadbuffer.\n"
+"Si noti che la modalità intrecciata richiede l'abilitazione degli shader."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
#: 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 ""
-"Un seme predefinito per la nuova mappa, lasciate vuoto per uno casuale.\n"
-"Verrà ignorato alla creazione di un nuovo mondo nel menu principale."
+"Un seme prescelto per una nuova mappa, lascialo vuoto per uno casuale.\n"
+"Sarà ignorato quando si crea un nuovo mondo nel menu principale."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr "Un messaggio da mostrare a tutti i client quando il server cade."
+msgstr ""
+"Un messaggio da mostrare a tutti i client quando il server va in crash."
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
-msgstr "Un messaggio da mostrare a tutti i client quando il server si spegne."
+msgstr "Un messaggio da mostrare a tutti i client quando il server chiude."
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr "Limite assoluto di code 'emerge'"
+msgid "ABM interval"
+msgstr "Intervallo ABM"
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr "Budget di tempo ABM"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "Limite assoluto di blocchi in coda da fare apparire"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "Accelerazione in aria"
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr "Intervallo del gestore di blocco attivo"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "Accelerazione di gravità, in nodi per secondo al secondo."
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr "Intervallo del modificatore di blocco attivo"
+msgid "Active Block Modifiers"
+msgstr "Modificatori dei blocchi attivi"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "Intervallo del modificatore di blocco attivo"
+msgid "Active block management interval"
+msgstr "Intervallo di gestione dei blocchi attivi"
#: src/settings_translation_file.cpp
msgid "Active block range"
-msgstr "Portata del blocco attivo"
+msgstr "Raggio dei blocchi attivi"
#: src/settings_translation_file.cpp
msgid "Active object send range"
-msgstr "Portata di invio dell'oggetto attivo"
+msgstr "Raggio di invio degli oggetti attivi"
#: src/settings_translation_file.cpp
msgid ""
@@ -1404,231 +2435,435 @@ msgid ""
"Note that the address field in the main menu overrides this setting."
msgstr ""
"Indirizzo a cui connettersi.\n"
-"Lasciatelo vuoto per avviare un server locale.\n"
-"Si noti che il campo indirizzo nel menu principale ignora questa "
+"Lascialo vuoto per avviare un server locale.\n"
+"Si noti che il campo indirizzo nel menu principale sovrascrive questa "
"impostazione."
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "Aggiunge particelle quando scavi un nodo."
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
-"Adattate la configurazione dpi al vostro schermo (non X11/solo Android) ad "
-"es. per schermi 4k."
+"Regolate la configurazione dpi per il vostro schermo (solo non X11/Android) "
+"per es. per schermi 4K."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"Aggiusta la densità del display rilevato, utilizzato per scalare gli "
+"elementi UI."
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
-"Adattate la codifica di gamma per le tavole di illuminazione. I numeri più "
-"bassi sono più chiari.\n"
-"Questa impostazione è solo per il client ed è ignorata dal server."
+"Calibra la densità dello strato della terra fluttuante.\n"
+"Si aumenti il valore per aumentare la densità. Può essere positivo o "
+"negativo.\n"
+"Valore = 0.0: 50% del volume è terra fluttuante.\n"
+"Value = 2.0 (può essere maggiore dipendentemente da 'mgv7_np_floatland', "
+"provare sempre\n"
+"per essere sicuri) crea uno strato solido di terre fluttuanti."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Posponi nome oggetto"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Avanzate"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
-msgstr "Congelamento da altitudine"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+"Altera la curva di luce applicandovi la 'correzione gamma'.\n"
+"Valori più alti rendono più luminosi i livelli di luce medi e inferiori.\n"
+"Il valore '1.0' lascia inalterata la curva di luce.\n"
+"Questo ha un effetto significativo solo sulla luce diurna e sulla luce "
+"artificiale,\n"
+"ha pochissimo effetto sulla luce notturna naturale."
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
-msgstr "Sempre 'volo' e 'veloce'"
+#, fuzzy
+msgid "Always fly fast"
+msgstr "Sempre volo e veloce"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr "Gamma di occlusione ambientale"
+msgstr "Gamma dell'occlusione ambientale"
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "Numero di messaggi che un giocatore può inviare ogni 10sec."
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr "Ingrandisce le vallate"
+msgid "Amplifies the valleys."
+msgstr "Allarga le vallate."
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
-msgstr "Filtro anisotropico"
+msgstr "Filtraggio anisotropico"
#: src/settings_translation_file.cpp
msgid "Announce server"
msgstr "Rendere noto il server"
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"Rendere noto a questo elenco di server.\n"
-"Se volete rendere noto il vostro indirizzo ipv6, usate serverlist_url = v6."
-"servers.minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Annuncia a questo elenco di server."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "Posponi nome oggetto"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "Posponi nome oggetto a suggerimenti."
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "Scala (X, Y, Z) approssimativa del frattale in nodi."
+msgid "Apple trees noise"
+msgstr "Rumore dei meli"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Inerzia del braccio"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+"Inerzia del braccio, dà un movimento più realistico\n"
+"al braccio quando si sposta la visuale."
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
-msgstr "Chiedere di riconnettersi dopo un crollo"
+msgstr "Chiedi di riconnettersi dopo un crash"
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
-msgstr "Rapporto automatico all'elenco dei server."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+"A questa distanza il server ottimizzerà aggressivamente quali blocchi sono\n"
+"inviati ai client.\n"
+"Potenzialmente valori piccoli migliorano molto le prestazioni, al costo di\n"
+"difetti di disegno visibili (alcuni blocchi non saranno disegnati sott'acqua "
+"e\n"
+"nelle grotte, come a volte sul terreno).\n"
+"Impostarla a un valore maggiore di max_block_send_distance disabilita\n"
+"questa ottimizzazione.\n"
+"Fissata in blocchi mappa (16 nodi)."
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "Tasto di avanzamento automatico"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "Salta automaticamente su ostacoli di un nodo singolo."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "Fa rapporto automatico all'elenco dei server."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "Salvare dim. finestra"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "Modalità scalamento automatico"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Tasto Speciale"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "Tasto Speciale per scendere/immergersi"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr "Tasto all'indietro"
+msgstr "Tasto per indietreggiare"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "Altezza base del terreno"
+msgid "Base ground level"
+msgstr "Livello base del terreno"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "Base"
+msgid "Base terrain height."
+msgstr "Altezza base del terreno."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
msgstr "Privilegi di base"
#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "Rumore delle spiagge"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "Soglia del rumore delle spiagge"
+
+#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
-msgstr "Filtro bilineare"
+msgstr "Filtraggio bilineare"
#: src/settings_translation_file.cpp
msgid "Bind address"
msgstr "Lega indirizzo"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "Bit per pixel (cioè profondità di colore) in modalità schermo intero."
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Parametri di rumore dell'API dei biomi per temperatura e umidità"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "Rumore biomi"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "Distanza di ottimizzazione dell'invio dei blocchi"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "Percorso dei caratteri in grassetto e corsivo"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "Percorso dei font monospaziali in grassetto e corsivo"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "Percorso dei caratteri in grassetto"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "Percorso caratteri monospaziale in grassetto"
#: src/settings_translation_file.cpp
msgid "Build inside player"
-msgstr "Costruisci nel giocatore"
+msgstr "Costruisci dentro giocatore"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "Incorporato"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "Bumpmapping"
+#, fuzzy
+msgid "Camera"
+msgstr "Cambia vista"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Distanza dei nodi del \"piano di ritaglio vicino\" alla telecamera, tra 0 e "
+"0.5.\n"
+"La maggior parte degli utenti non dovrà cambiarla.\n"
+"Aumentarla può ridurre l'artificialità sulle GPU più deboli.\n"
+"0.1 = predefinita, 0.25 = buon valore per tablet più deboli."
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
-msgstr "Camera scorrevole"
+msgstr "Fluidità della telecamera"
#: src/settings_translation_file.cpp
msgid "Camera smoothing in cinematic mode"
-msgstr "Camera scorrevole in modalità cinematic"
+msgstr "Fluidità della telecamera in modalità cinematic"
#: src/settings_translation_file.cpp
msgid "Camera update toggle key"
-msgstr "Tasto di scelta di aggiornamento della camera"
+msgstr "Tasto di (dis)attivazione dell'aggiornamento della telecamera"
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr "Rumore della caverna"
#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr "'Rumore' n°1 della caverna"
+msgstr "1° rumore della caverna"
#: src/settings_translation_file.cpp
msgid "Cave noise #2"
-msgstr "'Rumore' n°2 della caverna"
+msgstr "2° rumore della caverna"
#: src/settings_translation_file.cpp
msgid "Cave width"
-msgstr "Larghezza delle caverne"
+msgstr "Larghezza della caverna"
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "Caverne e gallerie si formano all'intersezione dei due 'rumori'"
+msgid "Cave1 noise"
+msgstr "Rumore della 1a caverna"
#: src/settings_translation_file.cpp
-msgid "Chat key"
-msgstr "Tasto della messaggistica"
+msgid "Cave2 noise"
+msgstr "Rumore della 2a caverna"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "Tasto di scelta della messaggistica"
+msgid "Cavern limit"
+msgstr "Limite della caverna"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "Comando"
+msgid "Cavern noise"
+msgstr "Rumore della caverna"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "Restringimento della caverna"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "Soglia della caverna"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "Limite superiore della caverna"
#: src/settings_translation_file.cpp
msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"Scelta di 18 frattali da 9 formule.\n"
-"1 = 4D \"Arrotondato\" serie mandelbrot.\n"
-"2 = 4D \"Arrotondato\" serie julia.\n"
-"3 = 4D \"Squadrato\" serie mandelbrot.\n"
-"4 = 4D \"Squadrato\" serie julia.\n"
-"5 = 4D \"Cugino Mandy\" serie mandelbrot.\n"
-"6 = 4D \"Cugino Mandy\" serie julia.\n"
-"7 = 4D \"Variazione\" serie mandelbrot.\n"
-"8 = 4D \"Variazione\" serie julia.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" serie mandelbrot.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" serie julia.\n"
-"11 = 3D \"Albero di Natale\" serie mandelbrot.\n"
-"12 = 3D \"Albero di Natale\" serie julia.\n"
-"13 = 3D \"Mandelbulb\" serie mandelbrot.\n"
-"14 = 3D \"Mandelbulb\" serie julia.\n"
-"15 = 3D \"Coseno Mandelbulb\" serie mandelbrot.\n"
-"16 = 3D \"Coseno Mandelbulb\" serie julia.\n"
-"17 = 4D \"Mandelbulb\" serie mandelbrot.\n"
-"18 = 4D \"Mandelbulb\" serie julia."
+"Center of light curve boost range.\n"
+"Where 0.0 is minimum light level, 1.0 is maximum light level."
+msgstr ""
+"Centro della gamma di amplificazione della curva di luce.\n"
+"Dove 0.0 è il livello di luce minimo, 1.0 è il livello di luce massimo."
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+"Limite di tempo per il completamento di un comando, oltre cui mostrare un "
+"messaggio nella chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "Comandi della chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "Dimensione del carattere dell'area di messaggistica"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "Tasto della chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "Livello del registro dell'area di messaggistica"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "Numero limite dei messaggi di chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "Formato dei messaggi di chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "Limite dei messaggi di chat per l'espulsione"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "Lunghezza massima dei messaggi di chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "Tasto di (dis)attivazione della chat"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "Collegamenti a siti Web nella chat"
#: src/settings_translation_file.cpp
msgid "Chunk size"
-msgstr "Dimensione del \"pezzo\""
+msgstr "Dimensione del pezzo"
#: src/settings_translation_file.cpp
msgid "Cinematic mode"
-msgstr "Modalità cinematic"
+msgstr "Modalità cinematica"
#: src/settings_translation_file.cpp
msgid "Cinematic mode key"
-msgstr "Tasto della modalità cinematic"
+msgstr "Tasto modalità cinematic"
#: src/settings_translation_file.cpp
msgid "Clean transparent textures"
-msgstr "Immagini trasparenti pulite"
+msgstr "Pulizia delle textures trasparenti"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+"Link web cliccabili (tasto-centrale o Ctrl+tasto-sinistro) abilitati nel "
+"output della chat."
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Client"
#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr "Client e server"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "Velocità di arrampicata"
+msgid "Client modding"
+msgstr "Modifica del client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "Restrizioni delle modifiche del client"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "Restrizione dell'area di ricerca dei nodi su lato client"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Modifica del client"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "Altitudine delle nuvole"
+msgid "Climbing speed"
+msgstr "Velocità di arrampicata"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1651,13 +2886,36 @@ msgid "Colored fog"
msgstr "Nebbia colorata"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "Ombre colorate"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+"Elenco di valori separato da virgole che si vuole nascondere dal deposito "
+"dei contenuti.\n"
+"\"nonfree\" può essere usato per nascondere pacchetti che non si "
+"qualificano\n"
+"come \"software libero\", così come definito dalla Free Software "
+"Foundation.\n"
+"Puoi anche specificare la classificazione dei contenuti.\n"
+"Questi valori sono indipendenti dalle versioni Minetest,\n"
+"si veda un elenco completo qui https://content.minetest.net/help/"
+"content_flags/"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"Elenco separato da virgole di mod. a cui è permesso l'accesso alle API "
-"HTTP,\n"
+"Elenco separato da virgole di mod a cui è permesso l'accesso alle API HTTP,\n"
"che gli permettono di caricare e scaricare dati su/da internet."
#: src/settings_translation_file.cpp
@@ -1665,13 +2923,40 @@ msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
-"Lista separata da virgole dei mod affidabili ai quali è permesso accedere a "
-"funzioni non sicure anche quando il valore \"mod security\" è impostato su "
-"\"on\" (utilizzando request_insecure_environment())."
+"Elenco separato da virgole dei mod fidati ai quali è permesso l'accesso a "
+"funzioni non sicure\n"
+"anche quando è attiva la sicurezza dei moduli (tramite "
+"request_insecure_environment()."
#: src/settings_translation_file.cpp
msgid "Command key"
-msgstr "Tasto di comando"
+msgstr "Tasto comando"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Livello di compressione da utilizzare durante il salvataggio dei blocchi-"
+"mappa su disco.\n"
+"-1 - utilizza il livello di compressione predefinito\n"
+"0 - compressione minima, più veloce\n"
+"9 - compressione migliore, più lento"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"Livello di compressione da utilizzare per l'invio dei blocchi-mappa al "
+"client.\n"
+"-1 - utilizza il livello di compressione predefinito\n"
+"0 - compressione minima, più veloce\n"
+"9 - compressione migliore, più lento"
#: src/settings_translation_file.cpp
msgid "Connect glass"
@@ -1679,11 +2964,11 @@ msgstr "Unire i vetri"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr "Connettere a un server di media esterni"
+msgstr "Connessione a un server multimediale esterno"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr "Connettere il vetro se è supportato dal nodo."
+msgstr "Unione vetri se il nodo lo supporta."
#: src/settings_translation_file.cpp
msgid "Console alpha"
@@ -1694,16 +2979,38 @@ msgid "Console color"
msgstr "Colore della console"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "Tasto della console"
+msgid "Console height"
+msgstr "Altezza della console"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Content Repository"
+msgstr "Deposito dei contenuti in linea"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "Contenuti esclusi da ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "Massimi download contemporanei di ContentDB"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "URL ContentDB"
#: src/settings_translation_file.cpp
msgid "Continuous forward"
-msgstr "Avanti continuo"
+msgstr "Avanzamento continuo"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
-msgstr "Movimento in avanti continuo (usato solo per le prove)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"Avanzamento continuo, attivato dal tasto avanzamento automatico.\n"
+"Premi nuovamente il tasto di avanzamento automatico o il tasto di "
+"arretramento per disabilitarlo."
#: src/settings_translation_file.cpp
msgid "Controls"
@@ -1712,20 +3019,18 @@ msgstr "Controlli"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
"Controlla la durata del ciclo giorno/notte.\n"
-"Esempi: 72 = 20min, 360 = 4min, 1 = 24ore, 0 = giorno/notte/ecc. restano "
-"invariati."
+"Esempi:\n"
+"72 = 20min, 360 = 4min, 1 = 24ore, 0 = giorno/notte/ecc. restano invariati."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"Controlla la dimensione di spiagge e deserti nel Generatore mappa v.6.\n"
-"Quando sono attivati i biomi di neve 'mgv6_freq_desert' viene ignorato."
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
@@ -1736,70 +3041,80 @@ msgid "Controls steepness/height of hills."
msgstr "Controlla la ripidità/altezza delle colline."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
"Controlla la larghezza delle gallerie, un valore più piccolo crea gallerie "
-"più larghe."
+"più ampie.\n"
+"Il valore >= 10.0 disabilita completamente la generazione di tunnel ed evita "
+"l'opzione\n"
+"calcoli intensivi del rumore."
#: src/settings_translation_file.cpp
msgid "Crash message"
-msgstr "Messaggio di crollo"
+msgstr "Messaggio di crash"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea imprevedibili caratteristiche di lava nelle caverne.\n"
-"Queste possono rendere difficile minare. Zero le disabilita. (0-10)"
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"Crea imprevedibili caratteristiche di acqua nelle caverne.\n"
-"Queste possono rendere difficile minare. Zero le disabilita. (0-10)"
+msgid "Creative"
+msgstr "Creativa"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr "Trasparenza del mirino"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr "Trasparenza del mirino (opacità, tra 0 e 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"Trasparenza del mirino (opacità, tra 0 e 255).\n"
+"Lo stesso si applica al mirino dell'oggetto."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
msgstr "Colore del mirino"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr "Colore del mirino (R,G,B)."
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
-msgstr "Velocità di accovacciamento"
+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"
-msgstr "Punti per pollice"
+msgstr "DPI"
#: src/settings_translation_file.cpp
msgid "Damage"
-msgstr "Danno"
+msgstr "Ferimento"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr "Chiave di attivazione delle info. di debug"
+msgstr "Tasto di (dis)attivazione delle informazioni di debug"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "Dimensione del file di debug"
#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "Livello del registro di debug"
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "Tasto dim. volume"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr "Passo del server dedicato"
+msgstr "Passo dedicato del server"
#: src/settings_translation_file.cpp
msgid "Default acceleration"
@@ -1814,8 +3129,8 @@ msgid ""
"Default game when creating a new world.\n"
"This will be overridden when creating a world from the main menu."
msgstr ""
-"Gioco predefinito quando si crea un nuovo mondo.\n"
-"Questo verrà ignorato quando si crea un mondo dal menu principale."
+"Gioco predefinito alla creazione di un nuovo mondo.\n"
+"Questo verrà scavalcato alla creazione di un mondo dal menu principale."
#: src/settings_translation_file.cpp
msgid "Default password"
@@ -1827,146 +3142,276 @@ msgstr "Privilegi predefiniti"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "Formato di rapporto predefinito"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "Dimensione predefinita della pila"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Scadenza predefinita per cURL, espressa in millisecondi.\n"
-"Ha effetto solo se Minetest è stato compilato con cURL."
+"Definisci la qualità del filtraggio delle ombre.\n"
+"Questo simula l'effetto delle ombre morbide applicando un PCF o Poisson "
+"disk\n"
+"ma utilizza più risorse."
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "Definisce aree in cui gli alberi hanno le mele."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "Definisce aree con spiagge sabbiose."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
msgstr ""
-"Definisce il passo di campionatura dell'immagine.\n"
-"Un valore più alto ha come effetto normal map più uniformi."
+"Definisce la distribuzione del terreno superiore e la ripidità dei dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "Definisce la distribuzione del terreno più alto."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+"Definisce la dimensione completa delle caverne, valori minori creano caverne "
+"più grandi."
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "Definisce la struttura dei canali fluviali di ampia scala."
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "Definisce posizione e terreno di colline e laghi facoltativi."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "Definisce il livello base del terreno."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "Stabilisce la profondità del letto del fiume."
#: src/settings_translation_file.cpp
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
-"Definisce la massima distanza di trasferimento del giocatore espressa in "
-"blocchi (0 = illimitata)."
+"Definisce la distanza massima di trasferimento del personaggio in blocchi (0 "
+"= illimitata)."
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "Stabilisce la larghezza del fiume."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "Stabilisce la larghezza della valle del fiume."
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "Definisce aree boschive e densità degli alberi."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"Ritardo in ms tra gli aggiornamenti delle mesh sul client. Aumentandolo si\n"
+"ritarderà il ritmo di aggiornamento delle mesh, riducendo così lo sfarfallio "
+"sui client più lenti."
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "Ritardo dell'invio dei blocchi dopo la costruzione"
#: src/settings_translation_file.cpp
msgid "Delay showing tooltips, stated in milliseconds."
-msgstr "Ritardo nella comparsa dei suggerimenti, espresso in millisecondi."
+msgstr "Ritardo nella comparsa dei suggerimenti, fissato in millisecondi."
#: src/settings_translation_file.cpp
msgid "Deprecated Lua API handling"
-msgstr "Gestione delle API Lua deplorate"
+msgstr "Gestione delle API Lua deprecate"
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "Profondità sotto cui troverete caverne enormi."
#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
msgstr "Profondità sotto cui troverete caverne grandi."
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
-msgstr "Profondità sotto cui troverete caverne imponenti."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+"Descrizione del server, da mostrarsi all'accesso dell'utente e nell'elenco "
+"dei server."
#: src/settings_translation_file.cpp
-msgid "Descending speed"
-msgstr "Velocità di discesa"
+msgid "Desert noise threshold"
+msgstr "Soglia di rumore del deserto"
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
-"Descrizione del server, da mostrarsi nell'elenco dei server e quando i "
-"giocatori accedono."
+"I deserti si presentano quando np_biome supera questo valore.\n"
+"Quando è attivo il parametro 'snowbiomes', viene ignorato."
#: src/settings_translation_file.cpp
msgid "Desynchronize block animation"
msgstr "De-sincronizza l'animazione del blocco"
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
-"Stabilisce la forma del terreno.\n"
-"I tre numeri tra parentesi controllano la scala del\n"
-"terreno, i tre numeri dovrebbero essere identici."
+#, fuzzy
+msgid "Developer Options"
+msgstr "Decorazioni"
#: src/settings_translation_file.cpp
-msgid "Disable anticheat"
-msgstr "Disabilita anti-trucchi"
+msgid "Dig key"
+msgstr "Tasto scava"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+msgid "Digging particles"
+msgstr "Particelle di scavo"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Disable anticheat"
+msgstr "Disattiva anti-trucchi"
#: src/settings_translation_file.cpp
msgid "Disallow empty passwords"
msgstr "Rifiutare le password vuote"
#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr "Fattore di Scala della densità del display"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr "Nome di dominio del server, da mostrare nell'elenco dei server."
+msgstr "Nome di dominio del server, da mostrarsi nell'elenco dei server."
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
-msgstr "Doppio colpetto su salta per volare"
+msgstr "Doppio \"salta\" per volare"
#: src/settings_translation_file.cpp
msgid "Double-tapping the jump key toggles fly mode."
msgstr ""
-"Colpire brevemente il tasto di salto due volte attiva la modalità di volo."
+"Premendo due volte il tasto di salto si (dis)attiva la modalità di volo."
#: src/settings_translation_file.cpp
msgid "Drop item key"
-msgstr "Tasto per il rilascio di un oggetto"
+msgstr "Tasto butta oggetto"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Scarica le informazioni di debug del generatore della mappa."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "Y massimo dei sotterranei"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr "Y minimo dei sotterranei"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr "Rumore per le segrete"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+"Abilitare il supporto IPv6 (sia per il client che per il server).\n"
+"Necessario per il funzionamento delle connessioni IPv6."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"Abilita il supporto per le modifiche tramite Lua sul client.\n"
+"Questo supporto è sperimentale e l'API potrebbe cambiare."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"Abilità il filtraggio Poisson disk\n"
+"Se abilitato si hanno le \\\"ombre morbide\\\". Altrimenti utilizza il "
+"filtraggio PCF."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"Abilità ombre colorate.\n"
+"Se abilitato nodi traslucidi producono ombre colorate. Questo è costoso."
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "Attivare la finestra della console"
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
-msgstr "Pubblica le informazioni di debug del generatore della mappa."
+msgid "Enable creative mode for all players"
+msgstr "Abilitare la modalità creativa per tutti i giocatori"
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Enable joysticks"
+msgstr "Abilitare i joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
-msgstr "Abilitare VBO"
+msgid "Enable mod channels support."
+msgstr "Abilita il supporto canali mod."
#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr "Abilita la protezione mod."
+msgstr "Abilita la sicurezza moduli"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr "Abilitare il ferimento e la morte dei giocatori."
+msgstr "Abilita il ferimento e la morte dei giocatori."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
msgstr ""
-"Abilita input casuale da parte del giocatore (utilizzato solo per "
-"esperimenti)."
+"Abilita l'ingresso di dati casuali da parte dell'utente (utilizzato solo per "
+"i test)."
#: src/settings_translation_file.cpp
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
-"Abilita l'illuminazione uniforme con l'occlusione ambientale semplice.\n"
-"Disabilitare per velocizzare o per un aspetto diverso."
+"Abilita l'illuminazione armoniosa con una occlusione ambientale semplice.\n"
+"Disattivarla per velocizzare o per un aspetto diverso."
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
@@ -1977,10 +3422,10 @@ msgid ""
"expecting."
msgstr ""
"Abilitare per impedire ai client obsoleti di connettersi.\n"
-"I client datati sono compatibili nella misura in cui non vanno in crash "
-"quando si connettono\n"
-"ai server più recenti, ma non supportano tutte le funzioni che ci si "
-"aspetterebbe."
+"I client più vecchi sono compatibili nel senso che non andranno in crash "
+"alla connessione\n"
+"ai nuovi server, ma potrebbero non supportare tutte le nuove caratteristiche "
+"che ti aspetti."
#: src/settings_translation_file.cpp
msgid ""
@@ -1989,115 +3434,144 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
-"Abilita l'utilizzo di un server di materiale remoto (se fornito dal "
+"Abilita l'utilizzo di un server multimediale remoto (se fornito dal "
"server).\n"
-"I server remoti offrono un modo significativamente più veloce di "
-"scaricamento\n"
-"del materiale (ad es. le immagini) quando ci si collega al server."
+"I server remoti offrono un sistema significativamente più rapido per "
+"scaricare\n"
+"contenuti multimediali (es. textures) quando ci si connette al server."
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"Abilita/disabilita l'esecuzione di un server IPv6. Un server IPv6 può "
-"essere\n"
-"limitato ai client IPv6, dipendentemente dalla configurazione del sistema.\n"
-"Ignorata se bind_address è impostato."
+"Attivare gli oggetti tampone per i vertici.\n"
+"Questo dovrebbe migliorare notevolmente le prestazioni grafiche."
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
-msgstr "Abilita l'animazione degli oggetti dell'inventario."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"Attivare l'ondeggiamento visivo e ammontare del medesimo.\n"
+"Per esempio: 0 per nessun ondeggiamento, 1.0 per normale, 2.0 per doppio."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"Abilita il bumpmapping per le immagini. E' necessario che il pacchetto "
-"texture fornisca le normalmap\n"
-"o è necessario che siano generate automaticamente.\n"
-"Richiede l'attivazione degli shader."
+"Abilita/Disabilita l'esecuzione di un server IPv6.\n"
+"Ignorata se si imposta bind_address.\n"
+"Necessita di enable_ipv6 per essere abilitata."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
-msgstr "Abilita la cache delle mesh ruotate con facedir."
+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 ""
+"Abilita la mappatura dei toni filmici \"Uncharted 2\" di Hable.\n"
+"Simula la curva di tono della pellicola fotografica e come questa approssimi "
+"la\n"
+"comparsa di immagini ad alta gamma dinamica. Il contrasto a medio raggio è "
+"leggermente\n"
+"potenziato, i punti salienti e le ombre vengono gradualmente compressi."
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "Abilita il tone mapping filmico"
+msgid "Enables animation of inventory items."
+msgstr "Attiva l'animazione degli oggetti dell'inventario."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "Attiva la cache delle mesh ruotate con facedir."
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr "Abilita il minimap."
+msgstr "Attiva la minimappa."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
-"Abilita la generazione al volo delle normalmap (effetto a sbalzo).\n"
-"Richiede l'attivazione del bumpmapping."
+"Abilita il sistema audio.\n"
+"Se disabilitato, disabilita completamente tutti i suoni ovunque e i "
+"controlli audio\n"
+"nel gioco non saranno funzionanti.\n"
+"Cambiare questa impostazione richiede un riavvio."
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
-"Abilita la mappatura dell'occlusione di parallasse.\n"
-"Richiede l'attivazione degli shader."
+"Consente compromessi che riducono il carico della CPU o aumentano le "
+"prestazioni di rendering\n"
+"a scapito di piccoli difetti visivi che non influiscono sulla giocabilità."
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Engine profiler"
+msgstr "Profilo valli"
+
+#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr "Intervallo di stampa del profilamento"
+msgstr "Intervallo di stampa dei dati di profilo del motore di gioco"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "Sistemi di entità"
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"Opzione sperimentale, può determinare la visibilità di spazi tra i blocchi\n"
-"quando impostato ad un numero maggiore di 0."
+"Esponente dell'affusolamento delle terre fluttuanti. Cambia il comportamento "
+"di affusolamento.\n"
+"Valore = 1.0 crea un affusolamento uniforme, lineare.\n"
+"Valori > 1.0 creano un affusolamento uniforme adatto alle\n"
+"terre fluttuanti separate predefinite.\n"
+"Valori < 1.0 (per esempio 0.25) creano un livello di superficie più definito "
+"con\n"
+"pianure più piatte, adatti a uno strato solido di terre fluttuanti."
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
-msgstr "FPS nel menu di pausa"
-
-#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr "FSAA"
+msgid "FPS"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
-msgstr "Ondeggiamento in caduta"
+msgid "FPS when unfocused or paused"
+msgstr "FPS quando il gioco è in pausa o in secondo piano"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "Font di ripiego"
+msgid "FSAA"
+msgstr "FSAA"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
-msgstr "Ombreggiatura del font di ripiego"
+msgid "Factor noise"
+msgstr "Rumore di fattore"
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr "Trasparenza del font di ripiego"
+msgid "Fall bobbing factor"
+msgstr "Fattore di ondeggiamento in caduta"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr "Dimensione del font di ripiego"
+msgid "Fallback font path"
+msgstr "Percorso del carattere di ripiego"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr "Tasto 'veloce'"
+msgstr "Tasto corsa"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
@@ -2109,244 +3583,420 @@ msgstr "Velocità della modalità veloce"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr "Movimento veloce"
+msgstr "Movimento rapido"
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"Movimento veloce (tramite il tasto usare).\n"
-"Ciò richiede il privilegio \"fast\" sul server."
+"Movimento rapido (tramite il tasto \"Speciale\").\n"
+"Richiede il privilegio \"fast\" sul server di gioco."
#: src/settings_translation_file.cpp
msgid "Field of view"
msgstr "Campo visivo"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "Campo visivo"
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr "Campo visivo in gradi."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
-msgstr ""
-"Movimento veloce (tramite il tasto usare).\n"
-"Ciò richiede il privilegio \"fast\" sul server."
-
-#: src/settings_translation_file.cpp
msgid ""
"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"the\n"
+"Multiplayer Tab."
msgstr ""
"File in client/serverlist/ contenente i vostri server preferiti mostrati "
-"nella linguetta Giocatori multipli."
+"nella\n"
+"scheda di gioco in rete."
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth"
msgstr "Profondità dello riempitore"
#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr "Profondità di rumore dello riempitore"
+
+#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr "Mappatura del tono filmico"
+msgstr "Mappatura del tono filmica"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
-"Le immagini filtrate possono miscelare valori RGB coi vicini completamente "
-"trasparenti,\n"
-"che gli ottimizzatori PNG solitamente scartano, risultando a volte in un "
-"bordo chiaro o\n"
-"scuro verso le immagini trasparenti. Applicate questo filtro per ripulire "
-"quell'effetto\n"
-"al momento del caricamento delle immagini."
+"Le textures a cui si applicano i filtri possono amalgamare i valori RGB con "
+"quelle vicine\n"
+"completamente trasparenti, che normalmente vengono scartati dagli "
+"ottimizzatori PNG, risultando\n"
+"spesso in bordi chiari o scuri per le textures trasparenti. Applicare un "
+"filtro per ripulire tutto ciò al\n"
+"caricamento delle texture. Viene attivato automaticamente se si abilita il "
+"mipmapping."
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "Filtraggio"
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Anti-Scalettatura:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Primo di 4 rumori 2D che insieme definiscono l'intervallo di altezza "
+"collinare/montuoso."
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr "Primo di due rumori 3D che insieme definiscono le gallerie."
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr "Seme fisso della mappa"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "Joystick virtuale fisso"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Densità delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Y massimo delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Y minimo delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Rumore delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Esponente dell'affusolamento delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Distanza di affusolamento delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Livello dell'acqua delle terre fluttuanti"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
-msgstr "Tasto di volo"
+msgstr "Tasto volo"
#: src/settings_translation_file.cpp
msgid "Flying"
-msgstr "In volo"
+msgstr "Volo"
#: src/settings_translation_file.cpp
msgid "Fog"
msgstr "Nebbia"
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr "Inizio nebbia"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
-msgstr "Tasto di attivazione della nebbia"
+msgstr "Tasto (dis)attivazione nebbia"
#: src/settings_translation_file.cpp
-msgid "Font path"
-msgstr "Percorso del font"
+#, fuzzy
+msgid "Font"
+msgstr "Dimensione del carattere"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr "Carattere grassetto per impostazione predefinita"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "Carattere corsivo per impostazione predefinita"
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr "Ombreggiatura del font"
+msgstr "Ombreggiatura carattere"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
-msgstr "Trasparenza dell'ombreggiatura del font"
+msgstr "Trasparenza dell'ombreggiatura del carattere"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
-msgstr "Trasparenza dell'ombreggiatura del font (opacità, tra 0 e 255)."
+msgid "Font size"
+msgstr "Dimensione del carattere"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
+msgstr "Dimensione carattere divisibile per"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
-"Compensazione dell'ombra del font, se 0 allora l'ombra non verrà disegnata."
+"Dimensione carattere del carattere predefinito, dove 1 unità equivale ad 1 "
+"pixel a DPI 96"
#: src/settings_translation_file.cpp
-msgid "Font size"
-msgstr "Dimensione del font"
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+"Dimensione carattere del carattere a spaziatura fissa, dove 1 unità equivale "
+"ad 1 pixel a DPI 96"
+
+#: 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 ""
+"Dimensione carattere del testo e del prompt dell'area di messaggistica, in "
+"punti (pt).\n"
+"Valore 0 userà la dimensione carattere predefinita."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+"Assicura che le grandezze utilizzate con questo carattere saranno sempre "
+"divisibili per questo\n"
+"valore, in pixel, in caso di caratteri in stile pixel che non vengono "
+"ridimensionati correttamente.\n"
+"Per esempio, un carattere pixelato alto 16 pixels richiederebbe che questo "
+"sia 16, così sarà sempre\n"
+"solo grande 16, 32, 48, etc., e una mod che richiede una grandezza di 25 "
+"otterrà 32."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+"Formato dei messaggi del giocatore. Le stringhe seguenti sono segnaposto "
+"validi:\n"
+"@name, @message, @timestamp (optional)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr "Formato delle istantanee."
+msgstr "Formato degli screenshot."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "Colore di sfondo predefinito delle finestre"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "Opacità di sfondo predefinita delle finestre"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "Colore di sfondo delle finestre a tutto schermo"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "Opacità dello sfondo delle finestre a tutto schermo"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "Colore di sfondo predefinito delle finestre (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "Opacità di sfondo predefinita delle finestre (tra 0 e 255)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "Colore di sfondo delle finestre a tutto schermo (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "Opacità dello sfondo delle finestre a tutto schermo (tra 0 e 255)."
#: src/settings_translation_file.cpp
msgid "Forward key"
msgstr "Tasto avanti"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr "Font freetype"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Quarto di 4 rumori 2D che insieme definiscono l'intervallo di altezza "
+"collinare/montuoso."
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "Tipo di frattale"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+"Frazione della distanza visibile oltre cui si comincia a renderizzare la "
+"nebbia"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
-"Da che distanza vengono generati i blocchi per i client, espressa in blocchi "
+"Da che distanza vengono generati i blocchi per i client, fissata in blocchi "
"mappa (16 nodi)."
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
-"Da che distanza i blocchi sono inviati ai client, espressa in blocchi mappa "
+"Da che distanza i blocchi sono inviati ai client, fissata in blocchi mappa "
"(16 nodi)."
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
-"Da che distanza i client sanno degli oggetti, espressa in blocchi mappa (16 "
-"nodi)."
+"Da che distanza il client sa degli oggetti, fissata in blocchi mappa (16 "
+"nodi).\n"
+"\n"
+"Impostarla maggiore di active_block_range provocherà il mantenimento\n"
+"degli oggetti attivi, fino a questa distanza, da parte del server, nella\n"
+"direzione in cui guarda il giocatore. (Ciò può evitare l'improvvisa "
+"scomparsa dei mob)"
#: src/settings_translation_file.cpp
msgid "Full screen"
msgstr "Schermo intero"
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr "BPP schermo intero"
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr "Modalità a schermo intero."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr "Scala GUI"
+msgstr "Scala dell'interfaccia grafica"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr "Filtro di scala GUI"
+msgstr "Filtro di scala dell'interfaccia grafica"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr "Filtro di scala GUI txr2img"
+msgstr "Filtro di scala txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr "Gamma"
+msgid "GUIs"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr "Generali"
+#, fuzzy
+msgid "Gamepads"
+msgstr "Giochi"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "Generare le normalmap"
+msgid "General"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "Callback globali"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
"Attributi globali di generazione della mappa.\n"
-"In Generatore mappa v. 6 l'impostazione 'decorazioni' controlla tutte le "
-"decorazioni\n"
-"eccetto alberi ed erba della giungla, in tutti gli altri gen. di mappe "
-"questa\n"
-"impostazione controlla tutte le decorazioni.\n"
-"Le impostazioni che non vengono specificate nella stringa delle "
-"impostazioni\n"
-"mantengono i valori predefiniti.\n"
-"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-"esplicitamente."
+"Nel Mapgen v6 il valore 'decorations' controlla tutte le decorazioni eccetto "
+"alberi\n"
+"ed erba della giungla, in tutti gli altri Mapgens questa opzione controlla "
+"tutte le decorazioni."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+"Gradiente della curva della luce al livello massimo di luce.\n"
+"Controlla il contrasto dei massimi livelli di luce."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+"Gradiente della curva della luce al livello minimo di luce.\n"
+"Controlla il contrasto dei livelli di luce più bassi."
#: src/settings_translation_file.cpp
msgid "Graphics"
-msgstr "Grafiche"
+msgstr "Grafica"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Grafica"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Grafica"
#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr "Gravità"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
-msgstr "Mod. HTTP"
+msgid "Ground level"
+msgstr "Livello del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "Rumore del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "Moduli HTTP"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Scala dell'interfaccia grafica"
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr "Tasto di attivazione dello HUD"
+msgstr "Tasto di (dis)attivazione dell'HUD"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 deplorate alle API Lua:\n"
-"- eredita: (prova a) mimare il vecchio comportamento (predefinita per i "
-"rilasci).\n"
-"- registra: mima e registra la traccia della chiamata deplorata "
-"(predefinita per il debug).\n"
-"- errore: abortire all'uso della chiamata deplorata (suggerita per gli "
-"sviluppatori di mod.)."
+"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 ""
@@ -2356,48 +4006,269 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"Fare in modo che il generatore di profili si predisponga da sé:\n"
+"* Predisporre una funzione vuota.\n"
+"Ciò stima il sovraccarico che la predisposizione aggiunge (+1 chiamata di "
+"funzione).\n"
+"* Predisporre il campionatore utilizzato per aggiornare le statistiche."
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr "Rumore di amalgama del calore"
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr "Rumore del calore"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+"Componente altezza della dimensione iniziale della finestra. Ignorata in "
+"modalità a schermo intero."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "Rumore dell'altezza"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "Rumore di selezione dell'altezza"
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr "Componente dell'altezza della dimensione della finestra iniziale."
+msgid "Hill steepness"
+msgstr "Ripidità delle colline"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr "Altezza alla quale appaiono le nuvole."
+msgid "Hill threshold"
+msgstr "Soglia delle colline"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr "FPU ad alta precisione"
+msgid "Hilliness1 noise"
+msgstr "Rumore della collinarità1"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "Rumore della collinarità2"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "Rumore della collinarità3"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "Rumore della collinarità4"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
-msgstr "Sito del server, da mostrare nell'elenco dei server."
+msgstr "Sito del server, da mostrarsi nell'elenco dei server."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+"Accelerazione orizzontale in aria quando si salta o si cade,\n"
+"in nodi al secondo per secondo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+"Accelerazione orizzontale e verticale in modalità veloce,\n"
+"in nodi al secondo per secondo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+"Accelerazione orizzontale sul terreno o in scalata,\n"
+"in nodi al secondo per secondo."
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr "Tasto successivo della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr "Tasto precedente della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "Tasto riquadro 1 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "Tasto riquadro 10 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "Tasto riquadro 11 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "Tasto riquadro 12 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "Tasto riquadro 13 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "Tasto riquadro 14 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "Tasto riquadro 15 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "Tasto riquadro 16 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "Tasto riquadro 17 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "Tasto riquadro 18 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "Tasto riquadro 19 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "Tasto riquadro 2 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "Tasto riquadro 20 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "Tasto riquadro 21 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "Tasto riquadro 22 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "Tasto riquadro 23 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "Tasto riquadro 24 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "Tasto riquadro 25 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "Tasto riquadro 26 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "Tasto riquadro 27 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "Tasto riquadro 28 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "Tasto riquadro 29 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "Tasto riquadro 3 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "Tasto riquadro 30 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "Tasto riquadro 31 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "Tasto riquadro 32 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "Tasto riquadro 4 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "Tasto riquadro 5 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "Tasto riquadro 6 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "Tasto riquadro 7 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "Tasto riquadro 8 della barra di scelta rapida"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "Tasto riquadro 9 della barra di scelta rapida"
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
-msgstr "Quale profondità di creazione dei fiumi"
+msgid "How deep to make rivers."
+msgstr "Quanto fare profondi i fiumi."
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
-"Quanto larghe le aree di blocchi sono soggette alle cose del blocco attivo, "
-"espresso in blocchi mappa (16 nodi).\n"
-"Nei blocchi attivi vengono caricati gli oggetti ed eseguiti gli ABM."
+"A quale velocità si muovono le onde dei liquidi. Maggiore = più veloce.\n"
+"Se negativa, le onde dei liquidi si sposteranno all'indietro.\n"
+"Richiede l'abilitazione dei liquidi ondeggianti."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
-"Quanto il server aspetterà prima di scaricare i blocchi mappa non usati.\n"
-"Un valore alto è più scorrevole, ma userà più RAM."
+"Quanto aspetterà il server prima di scaricare i blocchi mappa inutilizzati.\n"
+"Con un valore più alto sarà più fluido, ma userà più RAM."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "Decrementalo per aumentare la resistenza al movimento nel liquido."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "Quanto fare larghi i fiumi."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "Rumore di amalgama dell'umidità"
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr "Larghezza di creazione dei fiumi"
+msgid "Humidity noise"
+msgstr "Rumore dell'umidità"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "Variazione di umidità per i biomi."
#: src/settings_translation_file.cpp
msgid "IPv6"
@@ -2408,25 +4279,37 @@ msgid "IPv6 server"
msgstr "Server IPv6"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
-msgstr "Supporto IPv6."
-
-#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
"Se i FPS dovessero superare questo, limitarli con la sospensione\n"
-"per non sprecare la potenza della CPU per nessun beneficio."
+"per non sprecare la potenza della CPU senza alcun beneficio."
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
-"Se disabilitata il tasto \"usare\" è utilizzato per volare veloce se "
-"entrambe le\n"
-"modalità 'volo' e 'veloce' sono abilitate."
+"Se disabilitata, viene utilizzato il tasto \"Speciale\" per volare "
+"velocemente\n"
+"se le modalità volo e corsa sono entrambe attive."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"Se abilitata il server effettuerà l'occlusion culling dei blocchi mappa "
+"basandosi\n"
+"sulla posizione degli occhi del giocatore. Questo può ridurre del 50-80% il "
+"numero dei blocchi\n"
+"inviati al client. Il client non riceverà più la maggior parte degli "
+"invisibili\n"
+"cosicché l'utilità della modalità incorporea è ridotta."
#: src/settings_translation_file.cpp
msgid ""
@@ -2434,17 +4317,28 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
-"Se abilitata assieme alla modalità di volo, il giocatore può volare "
-"attraverso i nodi solidi.\n"
-"Questo richiede il privilegio \"noclip\" sul server."
+"Se abilitata assieme al volo, il giocatore può volare attraverso i nodi "
+"solidi.\n"
+"Richiede il privilegio \"noclip\" sul server."
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
-"Se abilitata, il tasto \"usare\" viene utilizzato al posto di \"strisciare\" "
-"per scendere."
+"Se abilitata, viene utilizzato il tasto \"Speciale\" invece di \"Furtivo\" "
+"per\n"
+"scendere e immergersi."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"Abilita la conferma della registrazione quando ci si connette al server.\n"
+"Se disabilitata, i nuovi account saranno registrati automaticamente."
#: src/settings_translation_file.cpp
msgid ""
@@ -2456,21 +4350,32 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr "Se abilitata, disattiva l'impedimento dei trucchi nel gioco multiplo."
+msgstr "Se abilitata, disabilita la protezione anti-trucchi nel gioco in rete."
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
-"Se abilitata, i dati mondo non validi non causeranno lo spegnimento del "
-"server.\n"
-"Abilitatela solo se sapete cosa state facendo."
+"Se abilitata, i dati non validi del mondo non provocheranno lo spegnimento "
+"del server.\n"
+"Attivala solo se sai cosa stai facendo."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Se abilitata, rende le direzioni di movimento relative all'inclinazione del "
+"giocatore quando vola o nuota."
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
-"Se abilitata, i nuovi giocatori non possono unirsi con una password vuota."
+"Se abilitata, i nuovi giocatori non possono accedere con una password vuota."
#: src/settings_translation_file.cpp
msgid ""
@@ -2478,76 +4383,120 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
-"Se abilitata, potete posizionare blocchi nella posizione (piedi + livello "
-"degli occhi) dove state.\n"
-"Questo è utile quando si lavora con le scatole dei nodi in piccole aree."
+"Se abilitata, puoi mettere i blocchi nel punto (piedi + livello oculare) in "
+"cui sei.\n"
+"Questo è utile quando si lavora con nodebox in aree piccole."
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
-"Se si imposta, i giocatori (ri)compariranno sempre alla posizione data."
+"Se la restrizione CSM per il raggio dei nodi è abilitata, le chiamate "
+"get_node\n"
+"sono limitate a questa distanza dal giocatore al nodo."
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
-msgstr "Ignorare gli errori del mondo"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+"Se l'esecuzione del comando in chat impiega più tempo di quello specificato "
+"in\n"
+"secondi, aggiungi l'informazione sul tempo al messaggio di comando in chat"
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "In gioco"
+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 ""
+"Se la dimensione del file debug.txt supera il numero di Mb indicati in\n"
+"questa impostazione quando viene aperto, il file viene rinominato in debug."
+"txt.1,\n"
+"eliminando un eventuale debug.txt.1 più vecchio.\n"
+"debug.txt viene rinominato solo se c'è questa impostazione."
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "Se impostata, i giocatori (ri)compariranno sempre alla posizione data."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "Ignorare gli errori del mondo"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
msgstr ""
-"Trasparenza in gioco dello sfondo della console dei messaggi (opacità, tra 0 "
-"e 255)."
+"Trasparenza dello sfondo della console di chat nel gioco (opacità, tra 0 e "
+"255)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
-msgstr "Colore in gioco dello sfondo della console dei messaggi (R,G,B)."
+msgstr "Colore dello sfondo della console di chat nel gioco (R,G,B)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "Altezza della console di chat nel gioco, tra 0.1 (10%) e 1.0 (100%)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "Tasto aum. volume"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "Velocità verticale iniziale quando si salta, in nodi al secondo."
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"Predisporre incorporate.\n"
+"Questo normalmente serve solo ai contributori principali"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "Predisporre i comandi della chat alla registrazione."
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"Predisporre le funzioni globali di callback alla registrazione.\n"
+"(qualsiasi cosa tu passi a una funzione minetest.register_*())"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"Predisporre la funzione di azione dei modificatori dei blocchi attivi alla "
+"registrazione."
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"Predisporre la funzione di azione dei modificatori dei blocchi in "
+"caricamento alla registrazione."
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "Predisporre i metodi delle entità alla registrazione."
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
-"Intervallo di salvataggio dei cambiamenti importanti nel mondo, espresso in "
+"Intervallo di salvataggio dei cambiamenti importanti nel mondo, fissato in "
"secondi."
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr "Intervallo di invio ai client dell'ora del giorno."
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "Intervallo di invio dell'ora del giorno ai client."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
@@ -2555,7 +4504,7 @@ msgstr "Animazioni degli oggetti dell'inventario"
#: src/settings_translation_file.cpp
msgid "Inventory key"
-msgstr "Tasto dell'inventario"
+msgstr "Tasto inventario"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
@@ -2566,72 +4515,123 @@ msgid "Invert vertical mouse movement."
msgstr "Inverte il movimento verticale del mouse."
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "Percorso del carattere corsivo"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "Percorso del carattere corsivo a spaziatura fissa"
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr "Entità TTL (tempo di vita) oggetto"
+msgstr "Tempo di vita delle entità oggetto"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "Iterazioni"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
"Iterazioni della funzione ricorsiva.\n"
-"Controlla l'ammontare del dettaglio fine."
+"Aumentarle aumenta l'ammontare del dettaglio fine,\n"
+"ma aumenta anche il carico di elaborazione.\n"
+"A iterazioni = 20 questo generatore di mappe ha un carico simile al "
+"generatore di mappe v7."
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ID del joystick"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick button repetition interval"
-msgstr "Intervallo di ripetizione del click destro"
+msgstr "Intervallo di ripetizione del pulsante del joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "Punto cieco joystick"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Joystick frustum sensitivity"
-msgstr "Sensibilità del mouse"
+msgstr "Sensibilità del tronco del joystick"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "Tipo di joystick"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
-"Solo serie julia: componente W della costante iper-complessa determinante la "
-"forma julia.\n"
-"Non ha effetto sui frattali in 3D.\n"
-"Spazia pressapoco tra -2 e 2."
+"Solo serie Julia.\n"
+"Componente W della costante super complessa.\n"
+"Altera la forma del frattale.\n"
+"Non ha effetto su frattali 3D.\n"
+"Spazia grossomodo da -2 a 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Solo serie julia: componente X della costante iper-complessa determinante la "
-"forma julia.\n"
-"Spazia pressapoco tra -2 e 2."
+"Solo serie Julia.\n"
+"Componente X della costante supercomplessa.\n"
+"Altara la forma del frattale.\n"
+"Spazia grossomodo da -2 a 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Solo serie julia: componente Y della costante iper-complessa determinante la "
-"forma julia.\n"
-"Spazia pressapoco tra -2 e 2."
+"Solo serie Julia.\n"
+"Componente Y della costante supercomplessa.\n"
+"Altera la forma del frattale.\n"
+"Spazia grossomodo da -2 a 2."
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
-"Solo serie julia: componente Z della costante iper-complessa determinante la "
-"forma julia.\n"
-"Spazia pressapoco tra -2 e 2."
+"Solo serie Julia.\n"
+"Componente Z della costante supercomplessa.\n"
+"Altera la forma del frattale.\n"
+"Spazia grossomodo da -2 a 2."
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Jump key"
-msgstr "Tasto di salto"
+msgstr "Tasto salta"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
@@ -2643,17 +4643,37 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per ridurre il raggio visivo.\n"
+"Tasto per diminuire il raggio visivo.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per abbassare il volume.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scavare.\n"
+"Vedi http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per lasciare a terra l'oggetto attualmente selezionato.\n"
+"Tasto per buttare l'oggetto attualmente selezionato.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2669,6 +4689,16 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per alzare il volume.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2683,17 +4713,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per muoversi rapidamente nella modalità veloce.\n"
+"Tasto per correre in modalità veloce.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
"Tasto per muovere indietro il giocatore.\n"
+"Disabiliterà anche l'avanzamento automatico, quando attivo.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2703,7 +4735,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per muovere avanti il giocatore.\n"
+"Tasto per muovere in avanti il giocatore.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2729,11 +4761,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per aprire la console dei messaggi.\n"
+"Tasto per silenziare il gioco.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2743,7 +4775,17 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per aprire la finestra dei messaggi per scrivere comandi.\n"
+"Tasto per aprire la finestra di chat per inserire comandi.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per aprire la finestra di chat per inserire comandi locali.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2753,7 +4795,7 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per aprire la finestra dei messaggi.\n"
+"Tasto per aprire la finestra di chat.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2769,746 +4811,973 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per stampare le stack di debug. Usato per lo sviluppo.\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
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per strisciare.\n"
-"Usato anche per scendere dalle scale e scendere in acqua se aux1_descends è "
-"disabilitata.\n"
+"Tasto per scegliere l'11° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per passare tra la camera in prima persona a quella in terza "
-"persona..\n"
+"Tasto per scegliere il 12° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per scattare istantanee.\n"
+"Tasto per scegliere il 13° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la modalità veloce.\n"
+"Tasto per scegliere il 14° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la modalità cinematic.\n"
+"Tasto per scegliere il 15° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzatore della minimappa.\n"
+"Tasto per scegliere il 16° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la modalità veloce.\n"
+"Tasto per scegliere il 17° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare il volo.\n"
+"Tasto per scegliere il 18° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la modalità noclip.\n"
+"Tasto per scegliere il 19° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare l'aggiornamento della camera. Usato solo per lo "
-"sviluppo.\n"
+"Tasto per scegliere il 20° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzazione delle info. di debug.\n"
+"Tasto per scegliere il 21° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzazione dello HUD.\n"
+"Tasto per scegliere il 22° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzazione della messaggistica.\n"
+"Tasto per scegliere il 23° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzazione della nebbia.\n"
+"Tasto per scegliere il 24° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare la visualizzazione del profilatore. Usato per lo "
-"sviluppo.\n"
+"Tasto per scegliere il 25° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Tasto per attivare il raggio visivo illimitato.\n"
+"Tasto per scegliere il 26° riquadro della barra di scelta rapida.\n"
"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
-msgstr "Tasto \"Usare\" per arrampicarsi/scendere"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il 27° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
-msgstr "Lingua"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il 28° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
-msgstr "Profondità delle caverne grandi"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il 29° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
-msgstr "Caratteristiche della lava"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il 30° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
-msgstr "Stile delle foglie"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il 31° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Stile delle foglie:\n"
-"- Decorative: tutte le facce visibili\n"
-"- Semplici: solo le facce esterne, se impostate special_tiles sono usate\n"
-"- Opache: disattiva la trasparenza"
+"Tasto per scegliere il 32° riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "Tasto sinistro"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere l'ottavo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Lunghezza di uno scatto del server e intervallo per cui gli oggetti sono "
-"aggiornati in generale sulla rete."
+"Tasto per scegliere il quinto riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
-msgstr "Intervallo di tempo tra l'esecuzione dei cicli ABM"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il primo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
-msgstr "Intervallo di tempo tra l'esecuzione dei cicli del Temporizzatore Nodo"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il quarto riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Livello di registro da scrivere su debug.txt:\n"
-"- <niente> (nessun registro)\n"
-"- nessuno (messaggi senza livello)\n"
-"- errore\n"
-"- avviso\n"
-"- azione\n"
-"- informazione\n"
-"- verboso"
+"Tasto per scegliere l'oggetto successivo nella barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
-msgstr "Limite di code 'emerge' su disco"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il nono riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
-msgstr "Limite di code 'emerge' da generare"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere l'oggetto precedente nella barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Limita il numero di richieste HTTP parallele. Influisce:- Recupero dei "
-"media se il server usa l'impostazione remote_media.\n"
-"- Scaricamento dell'elenco dei server e notifica del server.\n"
-"- Scaricamenti effettuati dal menu principale (ad es.il gestore mod.).\n"
-"Ha effetto solo se compilato con cURL."
+"Tasto per scegliere il secondo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
-msgstr "Fluidità del liquido"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il settimo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
-msgstr "Uniformazione della fluidità del liquido"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il sesto riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
-msgstr "Iterazioni massime nel giro di trasformazione del liquido"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il decimo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
-msgstr "Tempo di svuotamento della coda del liquido"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il terzo riquadro della barra di scelta rapida.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
-msgstr "Velocità di caduta del liquido"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per muoversi furtivamente.\n"
+"Usato anche per scendere, e per immergersi in acqua se aux1_descends è "
+"disattivato.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
-msgstr "Intervallo di aggiornamento del liquido in secondi."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per passare tra la telecamera in prima o terza persona.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
-msgstr "Scatto di aggiornamento del liquido"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scattare gli screenshot.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tasto per scegliere l'avanzamento automatico.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"Tasto per scegliere la modalità cinematic.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "Intervallo del modificatore di blocco attivo"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la visualizzazione della minimappa.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
-msgstr "Menu principale gestore giochi"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la modalità veloce.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "Menu principale del gestore mod."
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il volo.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "Script del menu principale"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la modalità incorporea.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Far sì che i colori di cielo e nebbia dipendano dall'ora del giorno (alba/"
-"tramonto) e direzione visiva."
+"Tasto per scegliere la modalità di inclinazione del movimento. \n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
-msgstr "Fa lavorare DirectX con LuaJIT. Disabilitare se causa problemi."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto di scelta dell'aggiornamento della telecamera. Usato solo per lo "
+"sviluppo.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
-msgstr "Cartella della mappa"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la visualizzazione della chat.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Attributi di generazione della mappa specifici per il Generatore mappa "
-"valli.\n"
-"'altitude_chill' rende più fredde le altitudini più elevate, il che potrebbe "
-"causare problemi di bioma.\n"
-"'humid_rivers' modifica l'umidità attorno ai fiumi e in aree dove l'acqua "
-"tenderebbe a stagnare,\n"
-"potrebbe interferire con i biomi finemente regolati.\n"
-"Le impostazioni predefinite impostate nel motore sono: altitude_chill, "
-"humid_rivers\n"
-"La stringa delle impostazioni modifica i valori predefiniti del motore.\n"
-"Le impostazioni che non sono specificate nella stringa mantengono i valori "
-"predefiniti.\n"
-"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-"esplicitamente."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la visualizzazione delle informazioni di debug.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: 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.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Attributi di generazione della mappa specifici per Generatore mappa v. 7.\n"
-"'ridges' sono i fiumi.\n"
-"Le impostazioni che non sono specificate nella stringa mantengono i valori "
-"predefiniti.\n"
-"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-"esplicitamente."
+"Tasto per attivare/disattivare la visualizzazione della nebbia.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
-msgstr ""
-"Attributi di generazione della mappa specifici per Generatore mappa v. 6.\n"
-"Quando i biomi di neve sono abilitati le giungle sono abilitate "
-"automaticamente, l'impostazione 'jungles' è ignorata.\n"
-"Le impostazioni predefinite impostate nel motore sono: biomeblend, mudflow\n"
-"La stringa delle impostazioni modifica le impostazioni predefinite del "
-"motore.\n"
-"Le impostazioni che non sono specificate nella stringa mantengono i valori "
-"predefiniti.\n"
-"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-"esplicitamente."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per attivare/disattivare la visualizzazione dell'HUD.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
-"Attributi di generazione della mappa specifici per Generatore mappa v. 7.\n"
-"'ridges' sono i fiumi.\n"
-"Le impostazioni che non sono specificate nella stringa mantengono i valori "
-"predefiniti.\n"
-"Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-"esplicitamente."
+"Tasto per scegliere la visualizzazione della console grande di chat.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
-msgstr "Limite di generazione della mappa"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere la visualizzazione del generatore di profili. Usato per "
+"lo sviluppo.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
-msgstr "Intervallo di salvataggio della mappa"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per scegliere il raggio visivo illimitato.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
-msgstr "Limite del blocco mappa"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"Tasto per usare l'ingrandimento della visuale quando possibile.\n"
+"Si veda http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
-msgstr "Tempo di scad. dello scaric. del blocco mappa"
+msgid "Keyboard and Mouse"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "Generatore mappa valli"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+"Allontana i giocatori che hanno inviato più di X messaggi in 10 secondi."
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr "Param. del gen. mappa del 'rumore' del calore del bioma"
+msgid "Lake steepness"
+msgstr "Ripidità dei laghi"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr "Param. del gen. mappa di misc. del 'rumore' dell'umidità del bioma"
+msgid "Lake threshold"
+msgstr "Soglia dei laghi"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr "Param. del gen. mappa del 'rumore' dell'umidità del bioma"
+msgid "Language"
+msgstr "Lingua"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "Debug del generatore mappa"
+msgid "Large cave depth"
+msgstr "Profondità delle caverne grandi"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr "Impostazioni del generatore mappa"
+msgid "Large cave maximum number"
+msgstr "Numero massimo di grotte di grandi dimensioni"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "Generatore mappa piatto"
+msgid "Large cave minimum number"
+msgstr "Numero minimo di caverne di grandi dimensioni"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
-msgstr "Larghezza delle caverne del Generatore mappa piatto"
+msgid "Large cave proportion flooded"
+msgstr "Proporzione inondata della grotta grande"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr "Gen. mappa piatto, parametri del 1° 'rumore' delle caverne"
+msgid "Large chat console key"
+msgstr "Tasto console grande di chat"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr "Gen. mappa piatto, parametri del 2° 'rumore' delle caverne"
+msgid "Leaves style"
+msgstr "Stile foglie"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
-"Gen. mappa piatto, parametri del 'rumore' dello riempitore di profondità"
+"Stile foglie:\n"
+"- Di qualità: tutte le facce sono visibili\n"
+"- Semplice: solo le facce esterne, se sono usate le special_tiles "
+"definite\n"
+"- Opache: disabilita la trasparenza"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr "Impostazioni del Generatore mappa piatto"
+msgid "Left key"
+msgstr "Tasto sin."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
-msgstr "Livello del terreno del Generatore mappa piatto"
+#, fuzzy
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+"Durata di uno scatto del server e intervallo con cui gli oggetti\n"
+"sono aggiornati in generale sulla rete."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
-msgstr "Ripidità delle colline del Generatore mappa piatto"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"Lunghezza delle onde dei liquidi.\n"
+"Richiede l'attivazione dei liquidi ondeggianti."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
-msgstr "Limite delle colline del Generatore mappa piatto"
+#, fuzzy
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+"Durata di tempo tra i cicli di esecuzione dei modificatori dei blocchi "
+"attivi (ABM)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr "Ripidità dei laghi del Generatore mappa piatto"
+#, fuzzy
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "Intervallo di tempo tra l'esecuzione dei cicli del NodeTimer"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr "Limite dei laghi del Generatore mappa piatto"
+#, fuzzy
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "Durata di tempo tra cicli di gestione del blocco attivo"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr "Profondità delle caverne grandi del Generatore mappa piatto"
+#, fuzzy
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+"Livello di registro da scriversi su debug.txt:\n"
+"- <niente> (nessun registro)\n"
+"- none (nessuno) (messaggi senza livello)\n"
+"- error (errore)\n"
+"- warning (avviso)\n"
+"- action (azione)\n"
+"- info (informazione)\n"
+"- verbose (verboso)"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
-msgstr "Parametri del 'rumore' del terreno del Generatore mappa piatto"
+msgid "Light curve boost"
+msgstr "Aumento della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "Generatore mappa frattale"
+msgid "Light curve boost center"
+msgstr "Centro dell'aumento della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
-msgstr "Gen. mappa frattale, larghezza caverne"
+msgid "Light curve boost spread"
+msgstr "Diffusione dell'aumento della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr "Gen. mappa frattale, parametri del 1° 'rumore' delle caverne"
+msgid "Light curve gamma"
+msgstr "Gamma della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr "Gen. mappa frattale, parametri del 2° 'rumore' delle caverne"
+msgid "Light curve high gradient"
+msgstr "Gradiente alto della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
-"Gen. mappa frattale, parametri del 'rumore' dello riempitore di profondità"
+msgid "Light curve low gradient"
+msgstr "Gradiente basso della curva di luce"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr "Frattale del Generatore mappa frattale"
+#, fuzzy
+msgid "Lighting"
+msgstr "Illuminazione Uniforme"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
-msgstr "Iterazioni del Generatore mappa frattale"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+"Limite della generazione della mappa, in nodi, in tutte e sei le direzioni "
+"da (0,0,0).\n"
+"Sono generati solo i pezzi di mappa completamente all'interno del limite del "
+"generatore di mappe.\n"
+"Il valore è immagazzinato per ciascun mondo."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
-msgstr "Gen. mappa frattale, julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+"Limita il numero di richieste HTTP parallele. Influisce su:\n"
+"- Recupero dei file multimediali se il server usa l'impostazione "
+"remote_media.\n"
+"- Scaricamento dell'elenco dei server e annuncio del server.\n"
+"- Scaricamenti effettuati dal menu principale (per es. il gestore mod.).\n"
+"Ha effetto solo se compilato con cURL."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
-msgstr "Gen. mappa frattale, julia x"
+msgid "Liquid fluidity"
+msgstr "Fluidità del liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr "Gen. mappa frattale, julia y"
+msgid "Liquid fluidity smoothing"
+msgstr "Omogeneizzazione della fluidità del liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr "Gen. mappa frattale, julia z"
+msgid "Liquid loop max"
+msgstr "Max ripetizioni del liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr "Compensazione del Generatore mappa frattale"
+msgid "Liquid queue purge time"
+msgstr "Tempo di svuotamento della coda del liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr "Scala del Generatore mappa frattale"
+msgid "Liquid sinking"
+msgstr "Velocità di affondamento nel liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr "Param. del 'rumore' del fondale marino del Gen. mappa frattale"
+msgid "Liquid update interval in seconds."
+msgstr "Intervallo in secondi di aggiornamento del liquido."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr "Gen. mappa frattale, fetta w"
+msgid "Liquid update tick"
+msgstr "Scatto di aggiornamento del liquido"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr "Param. del gen. mappa di miscelazione del 'rumore' del calore"
+msgid "Load the game profiler"
+msgstr "Caricare il generatore di profili del gioco"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "Nome del gen. mappa"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"Caricare il generatore di profili del gioco per raccogliere dati di "
+"profilo.\n"
+"Fornisce un comando /profiler per accedere al profilo compilato.\n"
+"Utile per sviluppatori di moduli e operatori di server."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "Generatore mappa v. 5."
+msgid "Loading Block Modifiers"
+msgstr "Modificatori del blocco in caricamento"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
-msgstr "Gen. mappa v. 5, larghezza caverne"
+msgid "Lower Y limit of dungeons."
+msgstr "Limite inferiore Y dei sotterranei."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr "Gen. mappa v. 5, parametri del 1° 'rumore' delle caverne"
+msgid "Lower Y limit of floatlands."
+msgstr "Limite inferiore Y delle terre fluttuanti."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr "Gen. mappa v. 5, parametri del 2° 'rumore' delle caverne"
+msgid "Main menu script"
+msgstr "Script del menu principale"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr "Gen. mappa v. 5, parametri del 'rumore' di fabbrica"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+"Far sì che i colori di nebbia e cielo dipendano da ora del giorno (alba/"
+"tramonto) e direzione della visuale."
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr "Gen. mappa v. 5, parametri del 'rumore' dello riempitore di profondità"
+msgid "Makes all liquids opaque"
+msgstr "Rende opachi tutti i liquidi"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr "Gen. mappa v. 5, parametri 'rumore' dell'altezza"
+msgid "Map Compression Level for Disk Storage"
+msgstr "Livello di compressione della mappa per l'archiviazione su disco"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "Generatore mappa v. 6"
+msgid "Map Compression Level for Network Transfer"
+msgstr "Livello di compressione della mappa per il trasferimento in rete"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' degli alberi"
+msgid "Map directory"
+msgstr "Indirizzo della mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr "Gen. mappa v. 6, frequenza della spiaggia"
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+"Attributi di generazione della mappa specifici del generatore di mappe "
+"Carpathian."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' della spiaggia"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+"Attributi di generazione della mappa specifici del generatore di mappe "
+"Flat.\n"
+"Al mondo piatto possono essere aggiunti laghi e colline occasionali."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' del bioma"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+"Attributi di generazione della mappa specifici del generatore di mappe "
+"frattale.\n"
+"'terrain' abilita la generazione di terreno non-frattale:\n"
+"oceano, isole e sottoterra."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' delle caverne"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+"Attributi di generazione della mappa specifici del generatore di mappe "
+"Valleys.\n"
+"\"altitude_chill\": riduce il calore con l'altitudine.\n"
+"\"humid_rivers\": aumenta l'umidità attorno ai fiumi.\n"
+"\"vary_river_depth\": se abilitato, bassa umidità e calore alto provocano\n"
+"l'abbassamento del livello dei fiumi e saltuariamente le secche.\n"
+"\"altitude_dry\": riduce l'umidità con l'altitudine."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
-msgstr "Gen. mappa v. 6, frequenza del deserto"
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+"Attributi di generazione della mappa specifici del generatore di mappe v5."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
-msgstr "Impostazioni del Generatore mappa v. 6"
+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 ""
+"Attributi di generazione della mappa specifici del generatore di mappe v6.\n"
+"Il valore \"snowbiomes\" abilita il nuovo sistema di 5 biomi.\n"
+"Quando è abilitato,le giungle sono abilitate automaticamente \n"
+"e il valore \"jungles\" viene ignorato."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' della selezione di altezza"
+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 ""
+"Attributi di generazione mappa specifici per il generatore di mappe v7.\n"
+"'ridges': fiumi.\n"
+"'floatlands': masse di terra fluttuanti nell'atmosfera.\n"
+"'caverns': caverne giganti profondamente sottoterra."
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' dell'umidità"
+msgid "Map generation limit"
+msgstr "Limite di generazione della mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' del fango"
+msgid "Map save interval"
+msgstr "Intervallo di salvataggio della mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' della ripidità"
+msgid "Map shadows update frames"
+msgstr "Frame di aggiornamento delle mappe d'ombra"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' di altitudine del terreno"
+msgid "Mapblock limit"
+msgstr "Limite dei blocchi mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' di base del terreno"
+msgid "Mapblock mesh generation delay"
+msgstr "Ritardo di generazione della mesh del blocco mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr "Gen. mappa v. 6, parametri del 'rumore' degli alberi"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Dimensione in MB del generatore mesh del blocco mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "Gen. mappa v. 7, parametri del 'rumore'"
+msgid "Mapblock unload timeout"
+msgstr "Scadenza dello scaricamento del blocco mappa"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr "Gen. mappa v. 7, larghezza delle caverne"
+msgid "Mapgen Carpathian"
+msgstr "Generatore mappe Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr "Gen. mappa v. 7, parametri del 1° 'rumore' delle caverne"
+msgid "Mapgen Carpathian specific flags"
+msgstr "Valori specifici del generatore di mappe Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr "Gen. mappa v. 7, parametri del 2° 'rumore' delle caverne"
+msgid "Mapgen Flat"
+msgstr "Generatore mappe Flat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' dello riempitore di profondità"
+msgid "Mapgen Flat specific flags"
+msgstr "Valori specifici del generatore di mappe Flat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr "Impostazioni del Generatore mappa v. 7"
+msgid "Mapgen Fractal"
+msgstr "Generatore di mappe Fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' della selezione di altezza"
+msgid "Mapgen Fractal specific flags"
+msgstr "Valori specifici del generatore di mappe frattale"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' di altezza delle montagne"
+msgid "Mapgen V5"
+msgstr "Generatore di mappe v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' delle montagne"
+msgid "Mapgen V5 specific flags"
+msgstr "Valori specifici del generatore di mappe v5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' dei fiumi"
+msgid "Mapgen V6"
+msgstr "Generatore di mappe v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' dell'acqua dei fiumi"
+msgid "Mapgen V6 specific flags"
+msgstr "Valori specifici del generatore di mappe v6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' di altitudine del terreno"
+msgid "Mapgen V7"
+msgstr "Generatore di mappe v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr "Gen. mappa v. 7, param. del 'rumore' di base del terreno"
+msgid "Mapgen V7 specific flags"
+msgstr "Valori specifici del generatore di mappe v7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr "Gen. mappa v. 7, param. del \"rumore\" di continuità del terreno"
+msgid "Mapgen Valleys"
+msgstr "Generatore di mappe Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr "Profondità delle caverne imponenti"
+msgid "Mapgen Valleys specific flags"
+msgstr "Valori specifici del generatore di mappe Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr "'Rumore' delle caverne imponenti"
+msgid "Mapgen debug"
+msgstr "Debug del generatore mappa"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr "Caverne imponenti da qui."
+msgid "Mapgen name"
+msgstr "Nome del generatore mappa"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3520,11 +5789,11 @@ msgstr "Distanza massima di invio dei blocchi"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr "Numero massimo di liquidi elaborati per passaggio."
+msgstr "Numero massimo di liquidi elaborati per passo."
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr "Clearobjects massimo per blocchi extra"
+msgstr "Blocchi extra massimi per clearobjects"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
@@ -3535,8 +5804,14 @@ msgid "Maximum FPS"
msgstr "FPS massimi"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
-msgstr "FPS massimi quando il gioco è in pausa."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+"FPS massimi quando la finestra è in secondo piano o quando il gioco è in "
+"pausa."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "Distanza massima per renderizzare le ombre."
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
@@ -3544,19 +5819,34 @@ msgstr "Numero massimo di blocchi caricati a forza"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
-msgstr "Larghezza massima della barra oggetti"
+msgstr "Larghezza massima della barra di scelta rapida"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
-"Numero massimo di giocatori che possono connettersi contemporaneamente."
+"Limite massimo di grotte casuali di grandi dimensioni per pezzo di mappa."
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "Limite massimo di piccole grotte casuali per pezzo di mappa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
-"Numero massimo di blocchi che possono essere accodati per il caricamento."
+"Resistenza massima dei liquidi. Controlla la decelerazione \n"
+"quando si entra ad alta velocità in un liquido."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Numero massimo di blocchi inviati simultaneamente per client.\n"
+"Il conto totale massimo è calcolato dinamicamente:\n"
+"tot_max = arrotonda((N°client + max_utenti) * per_client / 4)"
#: src/settings_translation_file.cpp
msgid "Maximum number of blocks that can be queued for loading."
@@ -3566,18 +5856,28 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
-"Numero massimo di blocchi da generare da accodare.\n"
-"Lasciate vuoto per scegliere automaticamente una quantità adatta."
+"Numero massimo di blocchi da accodarsi che devono essere generati.\n"
+"Questo limite viene imposto per ciascun giocatore."
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+"Numero massimo di blocchi da accodarsi che devono essere caricati da file.\n"
+"Questo limite viene imposto per ciascun giocatore."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
-"Numero massimo di blocchi da accodare per essere caricati da file.\n"
-"Lasciate vuoto per scegliere automaticamente una quantità adatta."
+"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."
@@ -3588,8 +5888,8 @@ msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
-"Numero massimo di blocchi mappa per client da tenere in memoria.\n"
-"Impostare a -1 per una quantità illimitata."
+"Numero massimo di blocchi mappa per il client da tenere in memoria.\n"
+"Imposta a -1 per una quantità illimitata."
#: src/settings_translation_file.cpp
msgid ""
@@ -3597,23 +5897,26 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
-"Numero massimo di pacchetti inviati per passo di invio, se avete una "
-"connessione lenta\n"
-"provate a ridurlo, ma non riducetelo a un numero inferiore al doppio del "
+"Numero massimo di pacchetti inviati per passo di invio, se hai una "
+"connessione\n"
+"lenta prova a ridurlo, ma non ridurlo a un numero inferiore al doppio del "
"numero\n"
"dei client interessati."
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
msgstr ""
-"Numero massimo di giocatori che possono connettersi contemporaneamente."
+"Numero massimo di giocatori che possono essere connessi simultaneamente."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "Numero massimo di messaggi recenti della chat da visualizzare"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr "Numero massimo di oggetti immagazzinati stabilmente in un blocco."
+msgstr "Numero massimo di oggetti immagazzinati staticamente in un blocco."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum objects per block"
msgstr "Oggetti massimi per blocco"
@@ -3622,32 +5925,46 @@ msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
-"Proporzione massima della finestra attuale da usarsi per la barra oggetti.\n"
+"Porzione massima della finestra attuale da usarsi per la barra di scelta "
+"rapida.\n"
"Utile se c'è qualcosa da mostrare a destra o sinistra della barra."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Maximum simultaneous block sends per client"
-msgstr "Num. mass. di blocchi inviati contemp. per client"
+msgstr "Invii simultanei massimi di blocchi per client"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Maximum simultaneous block sends total"
-msgstr "Totale massimo di invio contemporaneo di blocchi"
+msgid "Maximum size of the out chat queue"
+msgstr "Dimensione massima della coda esterna della chat"
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
-"Tempo massimo in ms che può richiedere lo scaricamento di un file (ad es. un "
-"mod.)."
+"Dimensione massima della coda esterna della chat.\n"
+"0 per disabilitare l'accodamento e -1 per rendere illimitata la dimensione "
+"della coda."
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr "Utenti massimi"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+"Tempo massimo in millisecondi che può richiedere lo scaricamento di un file "
+"(es. un mod)."
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "Menu"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+"Tempo massimo che può richiedere una richiesta interattiva (es. lista presa "
+"dal server), dichiarato in secondi."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "Utenti massimi"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3666,44 +5983,87 @@ msgid "Method used to highlight selected object."
msgstr "Metodo usato per evidenziare l'oggetto scelto."
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "Livello di registro minimo da scriversi nell'area di messaggistica."
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr "Minimappa"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr "Tasto della minimappa"
+msgstr "Tasto minimappa"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
msgstr "Altezza di scansione della minimappa"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr "Dimensione minima dell'immagine per i filtri"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+"Limite minimo di grotte casuali di grandi dimensioni per pezzo di mappa."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "Limite minimo di piccole grotte casuali per pezzo di mappa."
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "Dimensione minima della texture"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
-msgstr "Mipmapping"
+msgstr "MIP mapping"
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "Generatore di profili"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
-msgstr "URL dei dettagli del deposito mod."
+#, fuzzy
+msgid "Mod Security"
+msgstr "Sicurezza"
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr "URL di scaricamento del deposito mod."
+msgid "Mod channels"
+msgstr "Canali mod"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr "URL dell'elenco dei mod. del deposito mod."
+msgid "Modifies the size of the HUD elements."
+msgstr "Modifica la dimensione degli elementi dello HUD."
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr "Percorso del font a spaziatura fissa"
+msgstr "Percorso del carattere a spaziatura fissa"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr "Dimensione del font a spaziatura fissa"
+msgstr "Dimensione del carattere a spaziatura fissa"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "Dimensione del carattere a spaziatura fissa divisibile per"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "Rumore dell'altezza montana"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "Rumore montano"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "Rumore di variazione montano"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "Livello zero montano"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
@@ -3714,28 +6074,36 @@ msgid "Mouse sensitivity multiplier."
msgstr "Moltiplicatore della sensibilità del mouse."
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "Rumore del fango"
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
"Moltiplicatore per l'ondeggiamento in caduta.\n"
-"Per esempio: 0 per nessun ondeggiamento visivo; 1.0 normale; 2.0 doppio."
+"Per esempio: 0 per nessun ondeggiamento visivo, 1.0 normale, 2.0 doppio."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
-"Moltiplicatore per l'ondeggiamento visivo.\n"
-"Per esempio: 0 per nessun ondeggiamento visivo; 1.0 normale; 2.0 doppio."
+msgid "Mute key"
+msgstr "Tasto muta"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "Silenzia audio"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 del generatore mappa da usare quando si crea un nuovo mondo.\n"
-"Creare un nuovo mondo nel menu principale ignorerà questa impostazione."
+"Nome del generatore mappa da usare alla creazione di un nuovo mondo.\n"
+"Non viene usato se si crea un mondo nel menu principale.\n"
+"Generatori mappe attualmente molto instabili:\n"
+"- 'floatlands' in v7 (disabilitato per impostazione predefinita)."
#: src/settings_translation_file.cpp
msgid ""
@@ -3746,18 +6114,18 @@ msgstr ""
"Nome del giocatore.\n"
"Quando si esegue un server, i client che si connettono con questo nome sono "
"amministratori.\n"
-"Quando si avvia dal menu principale, questa impostazione viene ignorata."
+"Quando si avvia dal menu principale, questo viene scavalcato."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
msgstr ""
-"Nome del server, da mostrare quando si uniscono dei giocatori e nell'elenco "
+"Nome del server, da mostrare quando si connettono i giocatori e nell'elenco "
"dei server."
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr "Rete"
+msgid "Near plane"
+msgstr "Piano vicino"
#: src/settings_translation_file.cpp
msgid ""
@@ -3765,19 +6133,29 @@ msgid ""
"This value will be overridden when starting from the main menu."
msgstr ""
"Porta di rete da ascoltare (UDP).\n"
-"Questo valore verrà ignorato quando si avvia dal menu principale."
+"Questo valore verrà scavalcato quando si avvia dal menu principale."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "Rete"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr "I nuovi utenti devono inserire questa password."
+msgstr "I nuovi utenti devono immettere questa password."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr "Movimento libero"
+msgstr "Incorporeo"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr "Tasto noclip"
+msgstr "Tasto incorporeo"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Evidenziatura dei Nodi"
#: src/settings_translation_file.cpp
msgid "Node highlighting"
@@ -3785,130 +6163,181 @@ msgstr "Evidenziamento nodo"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr "Intervallo del Temporizzatore nodo"
-
-#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
-"Parametri di 'rumore' per l'API di temperatura del bioma, umidità e fusione "
-"di bioma."
+msgstr "Intervallo NodeTimer"
#: src/settings_translation_file.cpp
msgid "Noises"
msgstr "Rumori"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
-msgstr "Campionamento normalmap"
-
-#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
-msgstr "Intensità normalmap"
-
-#: src/settings_translation_file.cpp
msgid "Number of emerge threads"
msgstr "Numero di thread emerge"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
-"Numero di thread emerge da usare. Lasciate vuoto questo campo, o aumentate "
-"questo numero\n"
-"per usare thread multipli. Su sistemi multiprocessore, questo migliorerà "
-"molto la velocità del\n"
-"generatore mappa al costo di caverne un po' buggate."
+"Numero di thread di comparsa da usare.\n"
+"Valore 0:\n"
+"- Selezione automatica. Il numero di thread di comparsa sarà\n"
+"- 'numero di processori - 2', con un limite inferiore di 1.\n"
+"Qualsiasi altro valore:\n"
+"- Specifica il numero di thread di comparsa, con un limite inferiore di "
+"1.\n"
+"AVVISO: Aumentare il numero dei thread di comparsa aumenta la velocità del "
+"motore\n"
+"del generatore di mappe, ma questo potrebbe danneggiare le prestazioni del "
+"gioco interferendo con\n"
+"altri processi, specialmente in modalità locale e/o quando si esegue codice "
+"Lua in 'on_generated'.\n"
+"Per molti utenti l'impostazione ottimale può essere '1'."
#: src/settings_translation_file.cpp
msgid ""
"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
+"This is a trade-off between SQLite transaction overhead and\n"
"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
"Numero di blocchi extra che possono essere caricati da /clearobjects in una "
"volta.\n"
-"Questo è un controbilanciare tra spesa di transazione sqlite e\n"
+"Questo è un compromesso tra spesa di transazione sqlite e\n"
"consumo di memoria (4096 = 100MB, come regola generale)."
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
-msgstr "Numero di iterazioni di occlusione di parallasse."
+msgid "Opaque liquids"
+msgstr "Liquidi opachi"
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
-"Deviazione complessiva dell'effetto di occlusione di parallasse, solitamente "
-"scala fratto 2."
+"Opacità (alfa) dell'ombra dietro il carattere predefinito, tra 0 e 255."
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
-msgstr "Scala complessiva dell'effetto di occlusione di parallasse."
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+"Apre il menu di pausa quando si perde la messa a fuoco della finestra. Non\n"
+"mette in pausa se è aperta una finestra di dialogo."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "Occlusione di parallasse"
+msgid "Optional override for chat weblink color."
+msgstr "Sovrascrittura opzionale per i colori dei link web in chat."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr "Scala dell'occlusione di parallasse"
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+"Percorso del carattere di riserva. Deve essere un carattere TrueType.\n"
+"Questo carattere verrà utilizzato per alcune lingue o se il carattere "
+"predefinito non è disponibile."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr "Deviazione dell'occlusione di parallasse"
+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 ""
+"Percorso dove salvare gli screenshot. Può essere un percorso assoluto o "
+"relativo.\n"
+"La cartella sarà create se non esiste già."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
-msgstr "Iterazioni dell'occlusione di parallasse"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+"Percorso dell'indirizzo degli shader. Se non se ne stabilisce nessuno, verrà "
+"usato quello predefinito."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "Modalità occlusione di parallasse"
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+"Percorso dell'indirizzo contenente le textures. Tutte le textures vengono "
+"cercate a partire da qui."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr "Intensità dell'occlusione di parallasse"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"Percorso del carattere predefinito. Deve essere un carattere TrueType.\n"
+"Il carattere di riserva verrà utilizzato se il carattere non può essere "
+"caricato."
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr "Percorso per il font TrueType o bitmap."
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"Percorso del carattere a spaziatura fissa. Deve essere un carattere "
+"TrueType.\n"
+"Questo carattere viene utilizzato ad es. per la console e lo schermo del "
+"profilatore."
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr "Percorso dove salvare le istantanee."
+msgid "Pause on lost window focus"
+msgstr "Pausa alla perdita di fuoco della finestra"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
-"Percorso della cartella immagini. Tutte le immagini vengono cercate a "
-"partire da qui."
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "Limite per giocatore di blocchi accodati per il caricamento dal disco"
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr "Limite per giocatore di blocchi accodati da generare"
#: src/settings_translation_file.cpp
msgid "Physics"
-msgstr "Fisiche"
+msgstr "Fisica"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr "Modalità inclinazione movimento"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "Modalità inclinazione movimento"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr "Tasto piazza"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr "Intervallo di ripetizione per il piazzamento"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
-"Il giocatore può volare senza essere interessato dalla gravità.\n"
+"Il giocatore può volare senza essere soggetto alla gravità.\n"
"Ciò richiede il privilegio \"fly\" sul server."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "Nome del giocatore"
-
-#: src/settings_translation_file.cpp
msgid "Player transfer distance"
msgstr "Distanza di trasferimento del giocatore"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr "Giocatore contro Giocatore"
+msgid "Player versus player"
+msgstr "Giocatore contro giocatore"
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr "Filtraggio Poisson"
#: src/settings_translation_file.cpp
msgid ""
@@ -3916,40 +6345,65 @@ msgid ""
"Note that the port field in the main menu overrides this setting."
msgstr ""
"Porta a cui connettersi (UDP).\n"
-"Si noti che il campo porta nel menu principale ignora questa impostazione."
+"Si noti che il campo della porta nel menu principale scavalca questa "
+"impostazione."
+
+#: src/settings_translation_file.cpp
+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 ""
+"Impedisce la ripetizione di scavo e posizionamento quando si tengono premuti "
+"i pulsanti del mouse.\n"
+"Abilitalo quando scavi o piazzi troppo spesso per sbaglio."
#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
-"Impedisce che i mod. facciano cose non sicure come eseguire comandi della "
+"Impedisce che i mod facciano cose non sicure come eseguire comandi della "
"shell."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
-"Intervallo di stampa del profilatore. 0 = disabilitato. Utile per gli "
-"sviluppatori."
+"Stampare i dati di profilo del motore di gioco a intervalli regolari (in "
+"secondi).\n"
+"0 = disabilita. Utile per gli sviluppatori."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr "Privilegi che possono essere assegnati dai giocatori con basic_privs"
+msgstr "Privilegi che i giocatori con basic_privs possono concedere"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Profiler"
-msgstr "Profilo valli"
+msgstr "Generatore di profili"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr "Tasto di attivazione del profilatore"
+msgstr "Tasto di (dis)attivazione del generatore di profili"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Profiling"
-msgstr "Creazione del profilo dei mod."
+msgid "Prometheus listener address"
+msgstr "Indirizzo del listener Prometheus"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+"Indirizzo del listener Prometheus.\n"
+"Se Minetest viene compilato con l'opzione ENABLE_PROMETHEUS attivata,\n"
+"abilita il listener delle statistiche per Prometheus su quell'indirizzo.\n"
+"Le statistiche possono essere recuperate su http://127.0.0.1:30000/metrics"
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+"Proporzione delle grotte di grandi dimensioni che contiene del liquido."
#: src/settings_translation_file.cpp
msgid ""
@@ -3957,96 +6411,183 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
-"Raggio dell'area delle nuvole espresso in numero di 64 nodi nuvola "
-"quadrati.\n"
+"Raggio dell'area delle nuvole fissato in numero di 64 nodi quadrati nuvola.\n"
"Valori maggiori di 26 cominceranno a produrre interruzioni appuntite agli "
"angoli delle aree nuvola."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr "Solleva il terreno per creare vallate attorno ai fiumi"
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "Solleva il terreno per creare vallate attorno ai fiumi."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr "Input casuale"
+msgstr "Dati in ingresso casuali"
#: src/settings_translation_file.cpp
msgid "Range select key"
-msgstr "Tasto di selezione del raggio"
+msgstr "Tasto di scelta del raggio"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "Messaggi di chat recenti"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "Percorso del carattere regolare"
#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr "Media remoti"
+msgstr "File multimediali remoti"
#: src/settings_translation_file.cpp
msgid "Remote port"
msgstr "Porta remota"
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+"Leva i codici di colore dai messaggi di chat in arrivo\n"
+"Usalo per impedire ai giocatori di usare i colori nei loro messaggi"
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr "Sostituisce il menu principale predefinito con uno personalizzato."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "Percorso del font"
+msgstr "Percorso di rapporto"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"Restringe l'accesso di certe funzioni lato-client sui server.\n"
+"Combina i valori byte sottostanti per restringere le caratteristiche\n"
+"lato-client, o imposta a 0 per nessuna restrizione:\n"
+"LOAD_CLIENT_MODS: 1 (disabilita il caricamento di mod forniti dal client)\n"
+"CHAT_MESSAGES: 2 (disabilita la chiamata di send_chat_message su lato-"
+"client)\n"
+"READ_ITEMDEFS: 4 (disabilita la chiamata di get_item_def su lato-client)\n"
+"READ_NODEDEFS: 8 (disabilita la chiamata di get_node_def su lato-client)\n"
+"LOOKUP_NODES_LIMIT: 16 (limita la chiamata get_node su lato-client a\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disabilita la chiamata di get_player_names su lato-"
+"client)"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr "Diffusione del rumore dei crinali montani"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "Rumore dei crinali"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "Rumore sottomarino dei crinali"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "Dimensione del rumore dei crinali montani"
#: src/settings_translation_file.cpp
msgid "Right key"
-msgstr "Tasto destro"
+msgstr "Tasto des."
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr "Intervallo di ripetizione del click destro"
+msgid "River channel depth"
+msgstr "Profondità dell'alveo dei fiumi"
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
+msgstr "Larghezza dell'alveo dei fiumi"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
msgstr "Profondità dei fiumi"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr "'Rumore' dei fiumi"
+msgid "River noise"
+msgstr "Rumore dei fiumi"
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River size"
msgstr "Dimensione dei fiumi"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr "'Rumore' dei fiumi - i fiumi si manifestano vicino a zero"
+msgid "River valley width"
+msgstr "Larghezza delle valli dei fiumi"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
msgstr "Registrazione di ripristino"
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "Rumore della dimensione delle colline in serie"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "Rumore della diffusione delle colline in serie"
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr "Minimappa rotonda"
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "Scavo e piazzamento sicuri"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+"Quando np_beach eccede questo valore si verificano le spiagge sabbiose."
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr "Salvare su disco la mappa ricevuta dal client."
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+"Salvare automaticamente la dimensione della finestra quando viene modificata."
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr "Salvataggio della mappa ricevuta dal server"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
"Ridimensionare l'interfaccia secondo un valore specificato dall'utente.\n"
-"Usate un filtro anti-alias-vicino-più-vicino per ridimensionare "
+"Usate un filtro nearest-neighbor-anti-alias per ridimensionare "
"l'interfaccia.\n"
"Questo liscerà alcuni degli spigoli vivi, e armonizzerà i pixel al\n"
"rimpicciolimento, al costo di sfocare alcuni pixel di punta\n"
"quando le immagini sono ridimensionate per valori frazionari."
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Schermo:"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr "Altezza dello schermo"
@@ -4055,20 +6596,16 @@ msgid "Screen width"
msgstr "Larghezza dello schermo"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "Istantanea"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr "Cartella delle istantanee"
+msgstr "Cartella degli screenshot"
#: src/settings_translation_file.cpp
msgid "Screenshot format"
-msgstr "Formato delle istantanee"
+msgstr "Formato degli screenshot"
#: src/settings_translation_file.cpp
msgid "Screenshot quality"
-msgstr "Qualità dell'istantanea"
+msgstr "Qualità degli screenshot"
#: src/settings_translation_file.cpp
msgid ""
@@ -4076,16 +6613,31 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
-"Qialità dell'istantanea. Usata solo per il formato JPEG.\n"
-"1 significa qualità peggiore; 100 significa qualità migliore.\n"
-"Usate 0 per la qualità predefinita."
+"Qualità degli screenshot. Usata solo per il formato JPEG.\n"
+"1 significa la qualità peggiore, 100 quella migliore.\n"
+"Usa 0 per la qualità predefinita."
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "Sicurezza"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Screenshot"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Seabed noise"
+msgstr "Rumore del fondale marino"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Secondo di 4 rumori 2D che insieme definiscono l'intervallo di altezza "
+"collinare/montuoso."
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "Secondo di due rumori 3D che assieme definiscono le gallerie."
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr "Si veda http://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
@@ -4101,8 +6653,61 @@ msgid "Selection box width"
msgstr "Larghezza del riquadro di selezione"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "Server / Giocatore singolo"
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"Scegli uno dei 18 tipi di frattale.\n"
+"1 = 4D Serie Mandelbrot \"arrotondata\".\n"
+"2 = 4D Serie Julia \"arrotondata\".\n"
+"3 = 4D Serie Mandelbrot \"squadrata\".\n"
+"4 = 4D Serie Julia \"squadrata\".\n"
+"5 = 4D Serie Mandelbrot \"cugino Mandy\".\n"
+"6 = 4D Serie Julia \"cugino Mandy\".\n"
+"7 = 4D Serie Mandelbrot \"variazione\".\n"
+"8 = 4D Serie Julia \"variazione\".\n"
+"9 = 3D Serie Mandelbrot \"Mandelbrot/Mandelbar\".\n"
+"10 = 3D Serie Julia \"Mandelbrot/Mandelbar\".\n"
+"11 = 3D Serie Mandelbrot \"Albero di Natale\".\n"
+"12 = 3D Serie Julia \"Albero di Natale\".\n"
+"13 = 3D Serie Mandelbrot \"Mandelbulb\".\n"
+"14 = 3D Serie Julia \"Mandelbulb\".\n"
+"15 = 3D Serie Mandelbrot \"Coseno Mandelbulb\".\n"
+"16 = 3D Serie Julia \"Coseno Mandelbulb\".\n"
+"17 = 4D Serie Mandelbrot \"Mandelbulb\".\n"
+"18 = 4D Serie Julia \"Mandelbulb\"."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "URL del server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Nome del server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Descrizione del Server"
#: src/settings_translation_file.cpp
msgid "Server URL"
@@ -4125,10 +6730,24 @@ msgid "Server port"
msgstr "Porta del server"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "Occlusion culling su lato server"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Porta del Server"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
msgstr "URL dell'elenco dei server"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "URL dell'elenco dei server"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr "File dell'elenco dei server"
@@ -4137,102 +6756,266 @@ msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
-"Impostate la lingua. Lasciate vuoto per usare la lingua di sistema.\n"
-"E' necessario il riavvio dopo avere modificato questa impostazione."
+"Imposta la Lingua. Lascia vuoto per usare la Lingua di sistema.\n"
+"Dopo avere modificato questa impostazione è necessario il riavvio."
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+"Imposta la lunghezza massima di caratteri di un messaggio di chat inviato "
+"dai client."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"Imposta l'intensità dell'ombra.\n"
+"Un valore basso significa avere ombre chiare, un valore alto significa avere "
+"ombre scure."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"Imposta la dimensione del raggio delle ombre morbide.\n"
+"Valori bassi significano ombre nitide, valori alti significano ombre "
+"morbide.\n"
+"Valore minimo: 1.0; Valore massimo: 10.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"Imposta l'inclinazione dell'orbita del Sole/Luna in gradi.\n"
+"Il valore 0 significa nessuna inclinazione/orbita verticale.\n"
+"Valore minimo: 0.0; valore massimo: 60.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
-"Impostata a true abilita le foglie ondeggianti.\n"
+"Impostata su vero abilita la Mappatura delle ombre.\n"
"Necessita l'attivazione degli shader."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
-"Impostata su true abilita le piante ondeggianti.\n"
+"Impostata su vero abilita le foglie ondeggianti.\n"
"Necessita l'attivazione degli shader."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
-"Impostata su true abilita l'acqua ondeggiante.\n"
+"Impostata su vero abilita i liquidi ondeggianti (come, ad esempio, "
+"l'acqua).\n"
"Necessita l'attivazione degli shader."
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"Impostata su vero abilita le piante ondeggianti.\n"
+"Necessita l'attivazione degli shader."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"Imposta la qualità della textura dell'ombra a 32 bit.\n"
+"Su falso, 16 bit di texture saranno utilizzati.\n"
+"Questo può causare molti più artefatti nell'ombra."
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "Percorso shader"
+
+#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+"Gli shader permettono l'utilizzo di effetti visivi avanzati e potrebbero "
+"aumentare\n"
+"le prestazioni su alcune schede video.\n"
+"Ciò funziona solo col supporto video OpenGL."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "Qualità filtro ombra"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+"Distanza massima della mappa delle ombre nei nodi per renderizzare le ombre"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "Texture della mappa delle ombre in 32 bit"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "Dimensione della texture della mappa d'ombra"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
msgstr ""
-"Gli shader permettono effetti visivi avanzati e potrebbero aumentare il "
-"rendimento su certe\n"
-"schede video. Funzionano solo col supporto OpenGL."
+"Scarto (in pixel) dell'ombreggiatura del carattere predefinito. Se è 0, "
+"allora l'ombra non sarà disegnata."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow strength gamma"
+msgstr "Intensità dell'ombra"
#: src/settings_translation_file.cpp
msgid "Shape of the minimap. Enabled = round, disabled = square."
-msgstr "Forma del minimap. Abilitata = rotonda, disabilitata = quadrata."
+msgstr "Forma della minimappa. Abilitata = rotonda, disabilitata = quadrata."
#: src/settings_translation_file.cpp
msgid "Show debug info"
-msgstr "Mostrare le info. di debug"
+msgstr "Mostra le informazioni di debug"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
-msgstr "Mostrare i riquadri di selezione delle entità"
+msgstr "Mostrare le aree di selezione delle entità"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"Mostra la casella di selezione delle entità\n"
+"È necessario riavviare dopo aver cambiato questo."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "Mostra lo sfondo dell'etichetta del nome per impostazione predefinita"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
-msgstr "Messaggio di spegnimento"
+msgstr "Messaggio di chiusura"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
-"Dimensione dei \"pezzi\" da generare immediatamente dal generatore mappa, "
-"espressa in blocchi mappa (16 nodi)."
+"Dimensione dei pezzi di mappa generati dal generatore mappe, dichiarata in "
+"blocchi mappa (16 nodi).\n"
+"AVVISO: non c'è nessun beneficio, e ci sono diversi pericoli,\n"
+"nell'aumentare questo valore al di sopra di 5.\n"
+"Ridurre questo valore aumenta la densità di grotte e sotterranei.\n"
+"L'alterazione di questo valore è per uso speciale, si raccomanda di\n"
+"lasciarlo invariato."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+"Dimensione della cache del blocco mappa del generatore della mesh.\n"
+"Aumentandola si incrementerà l'impatto percentuale sulla cache, diminuendo\n"
+"i dati copiati dal thread principale, riducendo così lo sfarfallio."
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "Inclinazione dell'orbita di un corpo celeste"
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
-msgstr "Pendenza e riempimento lavorano assieme per modificare le altezze"
+msgid "Slice w"
+msgstr "Fetta w"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "Pendenza e riempimento lavorano assieme per modificare le altezze."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "Numero massimo di grotte piccole"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "Numero minimo di grotte piccole"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+"Variazione dell'umidità su piccola scala per l'amalgama dei biomi sui bordi."
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+"Variazione della temperatura su piccola scala per l'amalgama dei biomi sui "
+"bordi."
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
msgstr "Illuminazione uniforme"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
-"Rende fluida la camera quando ci si muove e si guarda attorno.\n"
-"Utile per registrare video."
+"Rende fluida la telecamera quando si guarda attorno. Chiamata anche visione\n"
+"o mouse fluido. Utile per la registrazione di video."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
msgstr ""
-"Rende fluida la rotazione della camera in modalità cinematic. 0 per "
-"disabilitare."
+"Rende fluida la rotazione della telecamera in modalità cinematic. 0 per "
+"disattivare."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr "Rende fluida la rotazione della camera. 0 per disabilitare."
+msgstr "Rende fluida la rotazione della telecamera. 0 per disattivare."
#: src/settings_translation_file.cpp
msgid "Sneak key"
-msgstr "Tasto per strisciare"
+msgstr "Tasto furtivo"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "Velocità furtiva"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "Velocità furtiva, in nodi al secondo."
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "Raggio dell'ombra morbida"
#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr "Suono"
+msgstr "Audio"
#: src/settings_translation_file.cpp
msgid ""
@@ -4241,39 +7024,145 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
-"Specifica l'URL da cui il client recupera i media al posto di usare UDP.\n"
-"$filename dovrebbe essere accessibile da $remote_media$filename tramite "
-"cURL\n"
-"(ovviamente, remote_media dovrebbe finire con una barra).\n"
+"Specifica l'URL da cui il client recupera i file multimediali invece di "
+"usare UDP.\n"
+"$filename dovrebbe essere accessibile da $remote_media$filename tramite\n"
+"cURL (ovviamente, remote_media dovrebbe finire con una barra).\n"
"I file che non sono presenti saranno recuperati nel solito modo."
#: src/settings_translation_file.cpp
+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 ""
+"Fissa la dimensione predefinita della pila di nodi, oggetti e strumenti.\n"
+"Si noti che mod o giochi possono impostare esplicitamente una pila per "
+"alcuni (o tutti) gli oggetti."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"Diffondi un aggiornamento completo della mappa d'ombra su un certo numero di "
+"frame.\n"
+"Valori alti potrebbero rendere le ombre laggose, valori bassi\n"
+"consumeranno più risorse.\n"
+"Valore minimo: 1; valore massimo: 16"
+
+#: src/settings_translation_file.cpp
+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 ""
+"Diffusione dell'aumento mediano della curva di luce.\n"
+"Controlla l'ampiezza del raggio da aumentare.\n"
+"Scostamento tipo dell'aumento della curva di luce gaussiano."
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
-msgstr "Punto stabile di comparsa"
+msgstr "Punto statico di comparsa"
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
-msgstr "Intensità delle normalmap generate."
+msgid "Steepness noise"
+msgstr "Rumore della ripidità"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
-msgstr "Intensità di parallasse."
+msgid "Step mountain size noise"
+msgstr "Rumore della dimensione del passo montano"
#: src/settings_translation_file.cpp
-msgid "Strict protocol checking"
-msgstr "Controllo stretto del protocollo"
+msgid "Step mountain spread noise"
+msgstr "Rumore della diffusione del passo montano"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "Intensità della parallasse della modalità 3D."
#: src/settings_translation_file.cpp
-msgid "Support older servers"
-msgstr "Supporto dei server più vecchi"
+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 ""
+"Intensità dell'incremento della curva di luce.\n"
+"I 3 parametri \"incremento\" definiscono un intervallo della luce\n"
+"che ne potenzia la luminosità."
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr "Controllo severo del protocollo"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "Elimina i codici di colore"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+"Livello di superficie dell'aqua facoltativa posizionata su uno strato solido "
+"di terra fluttuante.\n"
+"L'acqua è disabilitata in modo predefinito e sarà posizionata se questo "
+"valore è impostato\n"
+"al di sopra di 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (l'inizio "
+"dell'affusolamento\n"
+"superiore).\n"
+"***AVVISO, PERICOLO POTENZIALE PER MONDI E PRESTAZIONI SERVER***:\n"
+"Quando si abilita il posizionamento dell'acqua, le terre fluttuanti devono "
+"essere configurate e verificate\n"
+"per essere uno strato solido impostando 'mgv7_floatland_density' a 2.0 (o un "
+"altro\n"
+"valore richiesto dipendentemente da 'mgv7_np_floatland', per evitare\n"
+"flussi d'acqua estremamente intensi per il server e per evitare vasti "
+"allagamenti\n"
+"della superficie del mondo sottostante."
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
-msgstr "SQLite simultaneo"
+msgstr "SQLite sincronizzato"
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr "Variazione di temperatura per i biomi."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Impostazioni"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "Rumore alternativo del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "Rumore di base del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "Altezza del terreno"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
-msgstr "Altezza terreno"
+msgid "Terrain higher noise"
+msgstr "Rumore superiore del terreno"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "Rumore del terreno"
#: src/settings_translation_file.cpp
msgid ""
@@ -4281,9 +7170,9 @@ msgid ""
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
-"Limite di 'rumore' del terreno per le colline.\n"
-"Controlla la porzione d'area del mondo coperta da colline.\n"
-"Sistemare verso 0.0 per una porzione più ampia."
+"Soglia di rumore del terreno per le colline.\n"
+"Controlla la porzione d'area del mondo ricoperta da colline.\n"
+"Aggiustare verso 0.0 per una porzione più ampia."
#: src/settings_translation_file.cpp
msgid ""
@@ -4291,37 +7180,98 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
-"Limite di 'rumore' del terreno per i laghi.\n"
-"Controlla la porzione d'area del mondo coperta da laghi.\n"
-"Sistemare verso 0.0 per una porzione più ampia."
+"Soglia di rumore del terreno per i laghi.\n"
+"Controlla la porzione d'area del mondo ricoperta da laghi.\n"
+"Aggiustare verso 0.0 per una porzione più ampia."
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "Rumore di continuità del terreno"
#: src/settings_translation_file.cpp
msgid "Texture path"
-msgstr "Percorso delle immagini"
+msgstr "Percorso delle texture"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+"Dimensione della texture su cui renderizzare la mappa d'ombra.\n"
+"Questa deve essere una potenza di due.\n"
+"Valori alti creano ombre migliori ma è anche molto costoso."
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+"Le textures su un nodo possono essere allineate sia al nodo che al mondo.\n"
+"Il primo modo si addice meglio a cose come macchine, arredamento, ecc.,\n"
+"mentre il secondo fa sì che scale e microblocchi si adattino meglio ai "
+"dintorni.\n"
+"Comunque, dato che questa possibilità è nuova, automaticamente potrebbe non "
+"essere usata dai server più vecchi,\n"
+"questa opzione consente di imporla per alcuni tipi di nodo. Si noti però\n"
+"che questa è considerata SPERIMENTALE e potrebbe non funzionare bene."
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "L'URL per il deposito dei contenuti"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
-msgstr "L'altitudine a cui le temperature crollano di 20°C"
+msgid "The dead zone of the joystick"
+msgstr "Il punto cieco del joystick"
#: src/settings_translation_file.cpp
msgid ""
"The default format in which profiles are being saved,\n"
"when calling `/profiler save [format]` without format."
msgstr ""
+"Il formato predefinito in cui si salvano i profili,\n"
+"quando si chiama \"/profiler save [format]\" senza formato."
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
-msgstr "La profondità della terra o altri riempitori"
+msgid "The depth of dirt or other biome filler node."
+msgstr "La profondità della terra o altri riempitori del bioma."
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
msgstr ""
+"Il percorso del file relativo al percorso del vostro mondo in cui saranno "
+"salvati i profili."
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr "L'identificatore del joystick da usare"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr "La distanza in pixel richiesta per avviare l'interazione touch screen."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+"L'altezza massima della superficie dei liquidi ondulanti.\n"
+"4.0 = L'altezza dell'onda è di due nodi.\n"
+"0.0 = L'onda non si muove affatto.\n"
+"Il valore predefinito è 1.0 (1/2 nodo).\n"
+"Richiede l'abilitazione dei liquidi ondulanti."
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr "L'interfaccia di rete ascoltata dal server."
+msgstr "Su quale interfaccia di rete sarà in ascolto il server."
#: src/settings_translation_file.cpp
msgid ""
@@ -4333,14 +7283,47 @@ msgstr ""
"configurazione dei mod."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
-msgstr "Il supporto di rendering per Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+"Il raggio del volume di blocchi attorno ciascun giocatore che è soggetto\n"
+"alle cose del blocco attivo, dichiarata in blocchi mappa (16 nodi).\n"
+"Nei blocchi attivi vengono caricati gli oggetti ed eseguiti gli ABM.\n"
+"Questo è anche l'intervallo minimo in cui sono mantenuti gli oggetti attivi "
+"(mob).\n"
+"Questo dovrebbe essere configurato assieme ad "
+"active_object_send_range_blocks."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+"Il rendering di back-end.\n"
+"Dopo averlo cambiato è necessario un riavvio.\n"
+"Nota: su Android, restare con OGLES1 se incerti! Altrimenti l'app potrebbe "
+"non partire.\n"
+"Su altre piattaforme, si raccomanda OpenGL\n"
+"Gli shader sono supportati da OpenGL (solo su desktop) e OGLES2 "
+"(sperimentale)"
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
+"La sensibilità degli assi del joystick per spostare\n"
+"il campo visivo nel gioco."
#: src/settings_translation_file.cpp
msgid ""
@@ -4351,7 +7334,7 @@ msgid ""
msgstr ""
"L'intensità (oscurità) dell'ombreggiatura di occlusione ambientale dei "
"nodi.\n"
-"Minore è più scuro, maggiore è più chiaro. L'intervallo di valori validi "
+"Minore è più scura, maggiore è più chiara. L'intervallo di valori validi "
"per\n"
"questa impostazione è tra 0.25 e 4.0 inclusi. Se il valore è fuori "
"intervallo\n"
@@ -4366,41 +7349,68 @@ msgstr ""
"Il tempo (in secondi) in cui la coda dei liquidi può crescere oltre alla "
"capacità\n"
"di elaborazione finché viene fatto un tentativo di diminuirne la dimensione\n"
-"scaricando gli oggetti della vecchia coda. Un valore 0 disattiva questa "
+"scaricando gli oggetti della vecchia coda. Un valore di 0 disabilita la "
"funzionalità."
#: src/settings_translation_file.cpp
-#, fuzzy
+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 ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
-"Il tempo in secondi richiesto tra click destri ripetuti quando si tiene il "
-"pulsante mouse destro."
+"Il tempo in secondi richiesto tra eventi ripetuti quando\n"
+"si tiene premuta una combinazione di pulsanti del joystick."
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"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 si tiene il "
-"pulsante mouse destro."
+"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"
+msgstr "Il tipo di joystick"
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr "Questo font sarà usato per certe lingue."
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+"La distanza verticale oltre la quale il calore diminuisce di 20 se "
+"\"altitude_chill\"\n"
+"è abilitata. Rappresenta anche la distanza verticale oltre cui l'umidità\n"
+"diminuisce di 10 se \"altitude_dry\" è abilitata."
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
-msgstr "Tempo tra i cicli di gestione del 'blocco'"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+"Terzo di 4 rumori 2D che insieme definiscono l'intervallo di altezza "
+"collinare/montuoso."
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
-"Tempo in secondi di vita per le entità oggetto (oggetti lasciati a terra).\n"
-"Impostandola a 0 si disattiva la caratteristica."
+"Tempo di vita in secondi per le entità oggetto (oggetti buttati).\n"
+"Impostandola a -1 disabilita la caratteristica."
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+"Ora del giorno in cui è avviato un nuovo mondo, in millesimi di ora "
+"(0-23999)."
#: src/settings_translation_file.cpp
msgid "Time send interval"
@@ -4411,10 +7421,10 @@ msgid "Time speed"
msgstr "Velocità del tempo"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
-"Tempo di scadenza per i client per rimuovere dati mappa inutilizzati dalla "
-"memoria."
+"Scadenza per il client per rimuovere dalla memoria dati mappa inutilizzati."
#: src/settings_translation_file.cpp
msgid ""
@@ -4424,28 +7434,48 @@ msgid ""
"node."
msgstr ""
"Per ridurre il ritardo, i trasferimenti di blocchi sono rallentati quando un "
-"giocatore sta\n"
-"costruendo qualcosa. Questo stabilisce per quanto a lungo sono rallentati "
-"dopo avere\n"
-"posizionato o rimosso un nodo."
+"giocatore sta costruendo qualcosa.\n"
+"Ciò determina per quanto a lungo sono rallentati dopo avere posizionato o "
+"rimosso un nodo."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr "Chiave di impostazione della modalità camera"
+msgstr "Tasto di (dis)attivazione della modalità telecamera"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
msgstr "Ritardo dei suggerimenti"
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "Soglia del touch screen"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "Soglia del touch screen"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "Compromessi per migliorare le prestazioni"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "Rumore degli alberi"
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "Filtro trilineare"
+msgstr "Filtraggio trilineare"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
"Vero = 256\n"
"Falso = 128\n"
@@ -4453,23 +7483,51 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr "Mod. fidati"
+msgstr "Moduli fidati"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
-msgstr "URL dell'elenco server mostrato nella linguetta Giocatori multipli."
+msgstr "URL per l'elenco dei server mostrato nella scheda del gioco in rete."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "Sotto-campionamento"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+"Il sotto-campionamento è analogo all'uso di una risoluzione schermo "
+"inferiore,\n"
+"ma è applicato solo al mondo di gioco, mantenendo intatta l'interfaccia "
+"utente.\n"
+"Dovrebbe dare un aumento di prestazioni significativo al costo di immagini "
+"meno dettagliate.\n"
+"Più si aumenta il valore, meno dettagliata sarà l'immagine."
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
-msgstr "Distanza di trasferimento illimitata"
+msgstr "Distanza di trasferimento giocatore illimitata"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
msgstr "Scaricare i dati server inutilizzati"
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "Livello Y superiore dei sotterranei."
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "Livello Y superiore delle terre fluttuanti."
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr "Usare le nuvole in 3D invece delle piatte."
+msgstr "Usare l'aspetto 3D per le nuvole invece di quello piatto."
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
@@ -4478,53 +7536,117 @@ msgstr "Usare un'animazione con le nuvole per lo sfondo del menu principale."
#: src/settings_translation_file.cpp
msgid "Use anisotropic filtering when viewing at textures from an angle."
msgstr ""
-"Usare il filtro anisotropico quando si vedono le immagini da un angolo."
+"Usare il filtraggio anisotropico quando si guardano le textures da "
+"un'angolazione."
#: src/settings_translation_file.cpp
msgid "Use bilinear filtering when scaling textures."
-msgstr "Usare il filtro bilineare quando si ridimensionano le immagini."
+msgstr "Usare il filtraggio bilineare quando si ridimensionano le textures."
#: src/settings_translation_file.cpp
-msgid "Use key"
-msgstr "Tasto 'usare'"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"Usare il mipmapping per ridimensionare le textures. Potrebbe aumentare "
+"leggermente le prestazioni,\n"
+"specialmente quando si utilizza un pacchetto di texture ad alta "
+"risoluzione.\n"
+"Il ridimensionamento mediante downscaling gamma-corretto non è supportato."
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
-"Usare il mipmapping per ridimensionare le immagini. Potrebbe aumentare "
-"leggermente la resa."
+"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 textures\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."
-msgstr "Usare il filtro trilineare quando si ridimensionano le immagini."
+msgstr "Usare il filtraggio trilineare quando si ridimensionano le textures."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
-msgstr "Sincronia verticale"
+msgid "User Interfaces"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "VBO"
msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr "Sincronia verticale"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
msgstr "Profondità valli"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Valley fill"
msgstr "Riempimento valli"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Valley profile"
msgstr "Profilo valli"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Valley slope"
msgstr "Pendenza valli"
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
-msgstr "Impostazioni C delle valli"
+msgid "Variation of biome filler depth."
+msgstr "Variazione della profondità del riempitore del bioma."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "Variazione dell'altezza montana massima (in nodi)."
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "Variazione del numero di caverne."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+"Variazione della scala verticale del terreno.\n"
+"Il terreno è quasi piatto quando il rumore è inferiore a -0.55."
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr "Varia la profondità dei nodi di superficie del bioma."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+"Varia l'asprezza del terreno.\n"
+"Determina il valore 'persistence' (continuità) per i rumori di terrain_base "
+"e terrain_alt."
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "Varia la ripidità dei dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "Velocità di scalata, in nodi al secondo."
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
@@ -4535,52 +7657,72 @@ msgid "Video driver"
msgstr "Driver video"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr "Ondeggiamento visuale"
+msgid "View bobbing factor"
+msgstr "Fattore di ondeggiamento visivo"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
-"Distanza visiva in nodi.\n"
-"Min = 20"
+msgid "View distance in nodes."
+msgstr "Distanza visiva in nodi."
#: src/settings_translation_file.cpp
msgid "View range decrease key"
-msgstr "Tasto di riduzione del raggio visivo"
+msgstr "Tasto diminuzione raggio visivo"
#: src/settings_translation_file.cpp
msgid "View range increase key"
-msgstr "Tasto di aumento del raggio visivo"
+msgstr "Tasto aumento raggio visivo"
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr "Tasto ingrandimento visuale"
#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr "Raggio visivo"
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "Il joystick virtuale aziona il pulsante \"Speciale\""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr "Volume"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"Volume dei suoni.\n"
+"Necessita l'attivazione dell'audio."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
"Coordinata W della fetta in 3D generata di un frattale in 4D.\n"
"Determina quale fetta in 3D viene generata della forma in 4D.\n"
+"Altera la forma del frattale.\n"
"Non ha effetto su frattali in 3D.\n"
-"Spazia pressapoco tra -2 e 2."
+"Spazia grossomodo tra -2 e 2."
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr "Velocità a terra o in volo, in nodi al secondo."
#: src/settings_translation_file.cpp
msgid "Walking speed"
-msgstr "Velocità di camminata"
+msgstr "Velocità di cammino"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "Caratteristiche dell'acqua"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+"Velocità sul terreno, in volo e in scalata con modalità rapida, in nodi al "
+"secondo."
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4599,24 +7741,28 @@ msgid "Waving leaves"
msgstr "Foglie ondeggianti"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "Piante ondeggianti"
+msgid "Waving liquids"
+msgstr "Liquidi ondeggianti"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "Acqua ondeggiante"
+msgid "Waving liquids wave height"
+msgstr "Altezza dell'onda dei liquidi ondeggianti"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "Altezza dell'acqua ondeggiante"
+msgid "Waving liquids wave speed"
+msgstr "Velocità dell'onda dei liquidi ondeggianti"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "Durata di ondeggiamento dell'acqua"
+msgid "Waving liquids wavelength"
+msgstr "Lunghezza d'onda dei liquidi ondulanti"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "Velocità di ondeggiamento dell'acqua"
+msgid "Waving plants"
+msgstr "Piante ondeggianti"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "Colore del link web"
#: src/settings_translation_file.cpp
msgid ""
@@ -4624,72 +7770,62 @@ msgid ""
"filtered in software, but some images are generated directly\n"
"to hardware (e.g. render-to-texture for nodes in inventory)."
msgstr ""
-"Quando gui_scaling_filter è vero, tutte le immagini dell'interfaccia\n"
+"Quando gui_scaling_filter è Vero, tutte le immagini dell'interfaccia\n"
"necessitano il filtraggio software, ma alcune immagini sono generate\n"
-"direttamente dall'hardware (ad es.. render-to-texture per i nodi "
+"direttamente dall'hardware (es. render-to-texture per i nodi "
"nell'inventario)."
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"When gui_scaling_filter_txr2img is true, copy those images\n"
"from hardware to software for scaling. When false, fall back\n"
"to the old scaling method, for video drivers that don't\n"
"properly support downloading textures back from hardware."
msgstr ""
-"Quando gui_scaling_filter_txr2img è vero, copia quelle immagini\n"
-"dall'hardware al software per il ridimensionamento. Quando è falso,\n"
-"ripiega sul vecchio metodo di ridimensionamento, per i driver video\n"
-"che non supportano correttamente lo scaricamento delle immagini\n"
-"dall'hardware."
+"Quando gui_scaling_filter_txr2img è Vero, copia quelle immagini\n"
+"dall'hardware al software per il ridimensionamento. Quando è Falso,\n"
+"ripiega sul vecchio metodo di ridimensionamento, per i driver video che\n"
+"non supportano correttamente lo scaricamento delle textures dall'hardware."
#: src/settings_translation_file.cpp
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
-"Quando si usano i filtri bilineare/trilineare/anisotropico, le immagini a "
-"bassa\n"
-"risoluzione possono essere sfocate, perciò ingranditele automaticamente\n"
-"con l'interpolazione vicino-più-vicino per conservare pixel vivaci. Questa\n"
-"imposta la dimensione minima dell'immagine per le immagini ingrandite;\n"
-"valori maggiori risultano più a fuoco, ma richiedono più memoria. Sono\n"
-"raccomandate le potenze di 2. Impostare questa a un valore maggiore di\n"
-"1 potrebbe non avere un effetto visibile a meno che non sia attivato\n"
-"il filtro bilineare/trilineare/anisotropico."
+"Quando si usano i filtri bilineare/trilineare/anisotropico, le textures a "
+"bassa risoluzione possono\n"
+"essere sfocate, così viene eseguito l'ingrandimento automatico con "
+"l'interpolazione\n"
+"nearest-neighbor per conservare la chiarezza dei pixels. Questa opzione "
+"imposta la dimensione\n"
+"minima per le textures ingrandite; valori superiori permettono un aspetto "
+"più nitido, ma richiedono\n"
+"più memoria. Sono raccomandate le potenze di 2. Questa impostazione si "
+"attiva SOLO SE il filtraggio\n"
+"bilineare/trilineare/anisotropico è abilitato.\n"
+"Viene anche utilizzata come dimensione di base delle texturesdei nodi per "
+"l'auto-ridimensionamento\n"
+"delle textures con allineamento relativo al mondo."
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
-"Dove si ferma il generatore mappa.\n"
-"Si noti prego:\n"
-"- Limitato a 31.000 (impostazioni superiori non hanno effetto)\n"
-"- Il generatore mappa lavora in gruppi di 80x80x80 nodi (5x5x5 nodi "
-"mappa).\n"
-"- Quei gruppi hanno una compensazione di -32, -32 nodi dall'origine.\n"
-"- Solo i gruppi che rientrano nel map_generation_limit vengono generati."
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
-msgstr ""
-"Se si usano font freetype, richiede la compilazione col supporto freetype."
+"Se lo sfondo dell'etichetta del nome debba essere mostrato per impostazione "
+"predefinita.\n"
+"Le mod possono comunque impostare uno sfondo."
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr ""
-"Se le animazioni delle immagini dei nodi dovrebbero essere asincrone per "
+"Se le animazioni delle texture dei nodi dovrebbero essere asincrone per "
"blocco mappa."
#: src/settings_translation_file.cpp
@@ -4697,252 +7833,652 @@ msgid ""
"Whether players are shown to clients without any range limit.\n"
"Deprecated, use the setting player_transfer_distance instead."
msgstr ""
-"Se i giocatori sono mostrati ai client senza alcun limite di raggio.\n"
-"Deplorata, usate invece l'impostazione player_transfer_distance."
+"Se i giocatori vengono mostrati ai client senza alcun limite di raggio.\n"
+"Deprecata, usa invece l'impostazione player_transfer_distance."
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr "Se permettere ai giocatori di danneggiarsi e uccidersi l'un l'altro."
+msgstr "Se permettere ai giocatori di ferirsi e uccidersi a vicenda."
#: src/settings_translation_file.cpp
msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
-"Se chiedere ai client di riconnettersi dopo un crollo (Lua).\n"
-"Impostatela a vero se il vostro server è impostato per ripartire "
+"Se chiedere ai client di riconnettersi dopo un crash (Lua).\n"
+"Impostatela su Vero se il vostro server è configurato per riavviarsi "
"automaticamente."
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
-msgstr "Se annebbiare la fine dell'area visibile."
+msgstr "Se annebbiare o meno la fine dell'area visibile."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+"Se silenziare i suoni. È possibile de-silenziare i suoni in qualsiasi "
+"momento, a meno che\n"
+"il sistema audio non sia disabilitato (enable_sound=false).\n"
+"Nel gioco, puoi alternare lo stato silenziato col tasto muta o usando\n"
+"il menu di pausa."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
-"Se mostrare le info. di debug del client (ha lo stesso effetto di premere "
-"F5)."
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+"Se mostrare le informazioni di debug del client (ha lo stesso effetto di "
+"premere F5)."
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
msgstr ""
-"Se supportare o meno i server più vecchi precedenti al protocollo versione "
-"25.\n"
-"Abilitatela se volete connettervi a server 0.4.12 e precedenti.\n"
-"I server a partire da 0.4.13 funzioneranno, i server 0.4.12-dev potrebbero "
-"funzionare.\n"
-"Disabilitare questa opzione proteggerà meglio la vostra password."
+"Componente larghezza della dimensione iniziale della finestra. Ignorata in "
+"modalità a schermo intero."
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr "Componente larghezza della dimensione iniziale della finestra."
+msgid "Width of the selection box lines around nodes."
+msgstr "Larghezza delle linee dei riquadri di selezione attorno ai nodi."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
-msgstr "Larghezza delle linee del riquadro di selezione attorno ai nodi."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Solo per sistemi Windows: avviare Minetest con la finestra della riga di "
+"comando sullo sfondo.\n"
+"Contiene le stesse informazioni del file debug.txt (nome predefinito)."
#: src/settings_translation_file.cpp
msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
-"Cartella del mondo (ogni cosa nel mondo viene depositata qui).\n"
+"Indirizzo del mondo (ogni cosa nel mondo viene immagazzinata qui).\n"
"Non necessaria se si avvia dal menu principale."
#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "Ora di avvio del mondo"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"Le textures allineate al mondo possono essere ridimensionate per estendersi "
+"su diversi nodi.\n"
+"Tuttavia, il server potrebbe non inviare le dimensioni desiderate, "
+"specialmente se è in uso un\n"
+"pacchetto texture progettato in modo specifico; con questa opzione, il "
+"client prova a stabilire\n"
+"automaticamente le dimensioni basandosi sulla grandezza della texture.\n"
+"Si veda anche texture_min_size.\n"
+"Avviso: questa opzione è SPERIMENTALE!"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr "Modalità delle textures allineate al mondo"
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr "Y del terreno piatto."
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
-msgstr "Y del limite superiore delle caverne pseudocasuali grandi."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+"Y del livello zero della densità del dislivello montano. Usato per spostare "
+"verticalmente le montagne."
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Y del limite superiore delle caverne grandi."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "Distanza Y sopra cui le caverne si espandono a piena grandezza."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+"Distanza-Y sopra cui le terre fluttuanti si affusolano dalla piena densità a "
+"niente.\n"
+"L'affusolamento comincia a questa distanza dal limite Y.\n"
+"Per uno strato solido di terra fluttuante, questo controlla l'altezza di "
+"colline/montagne.\n"
+"Dev'essere inferiore o uguale alla metà della distanza tra i limiti Y."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr "Livello Y della superficie media del terreno."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr "Livello Y del limite superiore delle caverne."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "Livello Y del terreno superiore che crea dirupi."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "Livello Y del terreno inferiore e del fondale marino."
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "Livello Y del fondale marino."
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "cURL file download timeout"
-msgstr "Tempo di scadenza cURL dello scaricamento dei file"
+msgstr "Scadenza cURL scaricamento file"
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
-msgstr "Limite cURL parallelo"
+msgid "cURL interactive timeout"
+msgstr "Scadenza interattiva cURL"
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "Tempo di scadenza cURL"
+msgid "cURL parallel limit"
+msgstr "Limite parallelo cURL"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Modalità creativa: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Ferimento: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = occlusione di parallasse con informazione di inclinazione (più "
+#~ "veloce).\n"
+#~ "1 = relief mapping (più lenta, più accurata)."
+
+#~ msgid "Address / Port"
+#~ msgstr "Indirizzo / Porta"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "Regola la codifica della gamma per le tabelle della luce. Numeri maggiori "
+#~ "sono più chiari.\n"
+#~ "Questa impostazione è solo per il client ed è ignorata dal server."
+
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr ""
+#~ "Modifica il restringimento superiore e inferiore rispetto al punto "
+#~ "mediano delle terre fluttuanti di tipo montagnoso."
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Sei sicuro di azzerare il tuo mondo locale?"
+
+#~ msgid "Back"
+#~ msgstr "Indietro"
+
+#~ msgid "Basic"
+#~ msgstr "Base"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "Bit per pixel (o profondità di colore) in modalità schermo intero."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "Bump Mapping"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "Bumpmapping"
+
+#~ msgid "Center of light curve mid-boost."
+#~ msgstr "Centro dell'aumento mediano della curva della luce."
+
+#~ 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 ""
+#~ "Cambia l'UI del menu principale:\n"
+#~ "- Completa: mondi locali multipli, scelta del gioco, selettore "
+#~ "pacchetti texture, ecc.\n"
+#~ "- Semplice: un mondo locale, nessun selettore di gioco o pacchetti "
+#~ "grafici.\n"
+#~ "Potrebbe servire per gli schermi più piccoli."
+
+#~ msgid "Config mods"
+#~ msgstr "Config mod"
+
+#~ msgid "Configure"
+#~ msgstr "Configura"
+
+#~ msgid "Connect"
+#~ msgstr "Connettiti"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "Controlla la velocità di affondamento nei liquidi."
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "Controlla la densità delle terre fluttuanti di tipo montuoso.\n"
+#~ "È uno spostamento di rumore aggiunto al valore del rumore "
+#~ "'mgv7_np_mountain'."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr ""
+#~ "Controlla la larghezza delle gallerie, un valore più piccolo crea "
+#~ "gallerie più larghe."
+
+#~ msgid "Credits"
+#~ msgstr "Riconoscimenti"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "Colore del mirino (R,G,B)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "Danno fisico abilitato"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "Nitidezza dell'oscurità"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "Scadenza predefinita per cURL, fissata in millisecondi.\n"
+#~ "Ha effetto solo se Minetest è stato compilato con cURL."
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "Definisce aree di terreno uniforme nelle terre fluttuanti.\n"
+#~ "Le terre fluttuanti uniformi avvengono quando il rumore è > 0."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "Stabilisce il passo di campionamento della texture.\n"
+#~ "Un valore maggiore dà normalmap più uniformi."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "Elimina il Preferito"
+
+#~ msgid ""
+#~ "Deprecated, define and locate cave liquids using biome definitions "
+#~ "instead.\n"
+#~ "Y of upper limit of lava in large caves."
+#~ msgstr ""
+#~ "Sconsigliato, va usata la definizione del bioma per definire e "
+#~ "posizionare le caverne di liquido.\n"
+#~ "Limite verticale della lava nelle caverne grandi."
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Scarica un gioco, come Minetest Game, da minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Scaricane uno da minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Scaricamento e installazione di $1, attendere prego..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "Abilitare i VBO"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "Abilita conferma registrazione"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "Attiva il bumpmapping per le texture. È necessario fornire le normalmap\n"
+#~ "con i pacchetti texture, o devono essere generate automaticamente.\n"
+#~ "Necessita l'attivazione degli shader."
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Attiva il filmic tone mapping"
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "Attiva la generazione istantanea delle normalmap (effetto rilievo).\n"
+#~ "Necessita l'attivazione del bumpmapping."
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen flat.\n"
-#~ "Occasional lakes and hills can be added to the flat world.\n"
-#~ "The default flags set in the engine are: none\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
#~ msgstr ""
-#~ "Attributi di generazione della mappa specifici per Generatore mappa "
-#~ "piatto.\n"
-#~ "Laghi e colline occasionali possono essere aggiunti al mondo piatto.\n"
-#~ "Le impostazioni predefinite impostate nel motore sono: nessuna\n"
-#~ "La stringa delle impostazioni modifica le impostazioni predefinite del "
-#~ "motore.\n"
-#~ "Le impostazioni che non sono specificate nella stringa mantengono i "
-#~ "valori predefiniti.\n"
-#~ "Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-#~ "esplicitamente."
+#~ "Attiva la parallax occlusion mapping.\n"
+#~ "Necessita l'attivazione degli shader."
+
+#~ msgid "Enter "
+#~ msgstr "Inserisci "
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen v7.\n"
-#~ "The 'ridges' flag controls the rivers.\n"
-#~ "The default flags set in the engine are: mountains, ridges\n"
-#~ "The flags string modifies the engine defaults.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with 'no' are used to explicitly disable them."
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
#~ msgstr ""
-#~ "Attributi di generazione della mappa specifici per Generatore mappa v. "
-#~ "6.\n"
-#~ "L'impostazione 'ridges' controlla i fiumi.\n"
-#~ "Le impostazioni predefinite impostate nel motore sono: mountains, ridges\n"
-#~ "La stringa delle impostazioni modifica le impostazioni predefinite del "
-#~ "motore.\n"
-#~ "Le impostazioni che non sono specificate nella stringa mantengono i "
-#~ "valori predefiniti.\n"
-#~ "Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-#~ "esplicitamente."
+#~ "Opzione sperimentale, potrebbe causare spazi visibili tra i blocchi\n"
+#~ "quando impostata su numeri maggiori di 0."
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "FPS nel menu di pausa"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "Ombreggiatura del carattere di ripiego"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "Trasparenza del carattere di ripiego"
-#~ msgid "Item textures..."
-#~ msgstr "Immagini degli oggetti..."
+#~ msgid "Fallback font size"
+#~ msgstr "Dimensione del carattere di ripiego"
-#~ msgid "Preload inventory textures"
-#~ msgstr "Precaricamento delle textures dell'inventario"
+#~ msgid "Filtering"
+#~ msgstr "Filtraggio"
-#~ msgid "Viewing range minimum"
-#~ msgstr "Distanza minima di visibilità"
+#~ msgid "Floatland base height noise"
+#~ msgstr "Rumore base dell'altezza delle terre fluttuanti"
-#~ msgid "Wanted FPS"
-#~ msgstr "FPS desiderati"
+#~ msgid "Floatland mountain height"
+#~ msgstr "Altezza delle montagne delle terre fluttuanti"
-#~ msgid "Local install"
-#~ msgstr "Installazione locale"
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "Trasparenza ombreggiatura carattere (opacità, tra 0 e 255)."
-#~ msgid "Add mod:"
-#~ msgstr "Aggiungere un modulo:"
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "Dimensione carattere del carattere di ripiego, in punti (pt)."
-#~ msgid "MODS"
-#~ msgstr "MODULI"
+#~ msgid "FreeType fonts"
+#~ msgstr "Caratteri FreeType"
-#~ msgid "TEXTURE PACKS"
-#~ msgstr "PACCH. DI IMM."
+#~ msgid "Full screen BPP"
+#~ msgstr "BPP dello schermo intero"
-#~ msgid "SINGLE PLAYER"
-#~ msgstr "GIOC. SING."
+#~ msgid "Game"
+#~ msgstr "Gioco"
-#~ msgid "Finite Liquid"
-#~ msgstr "Liquido limitato"
+#~ msgid "Gamma"
+#~ msgstr "Gamma"
-#~ msgid "Preload item visuals"
-#~ msgstr "Precaricare le immagini"
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Genera Normal Map"
-#~ msgid "SETTINGS"
-#~ msgstr "IMPOSTAZIONI"
+#~ msgid "Generate normalmaps"
+#~ msgstr "Generare le normalmap"
-#~ msgid "Password"
-#~ msgstr "Password"
+#~ msgid "HUD scale factor"
+#~ msgstr "Fattore di scala dell'HUD"
-#~ msgid "Name"
-#~ msgstr "Nome"
+#~ msgid "High-precision FPU"
+#~ msgstr "FPU ad alta precisione"
-#~ msgid "START SERVER"
-#~ msgstr "AVVIO SERVER"
+#~ msgid "IPv6 support."
+#~ msgstr "Supporto IPv6."
-#~ msgid "CLIENT"
-#~ msgstr "CLIENT"
+#~ msgid "In-Game"
+#~ msgstr "Nel gioco"
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Aggiungere il modulo"
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Install: File: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "Predisposizione"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Associamenti tasti. (Se questo menu si incasina, togli roba da minetest."
+#~ "conf)"
-#~ msgid "Remove selected mod"
-#~ msgstr "Rimuovere il modulo selezionato"
+#~ msgid "Lava depth"
+#~ msgstr "Profondità della lava"
-#~ msgid "EDIT GAME"
-#~ msgstr "MODIFICARE IL GIOCO"
+#~ msgid "Lightness sharpness"
+#~ msgstr "Nitidezza della luminosità"
-#~ msgid "new game"
-#~ msgstr "nuovo gioco"
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "Limite di code emerge su disco"
-#~ msgid "Mods:"
-#~ msgstr "Moduli:"
+#~ msgid "Main"
+#~ msgstr "Principale"
-#~ msgid "GAMES"
-#~ msgstr "GIOCHI"
+#~ msgid "Main menu style"
+#~ msgstr "Stile del menu principale"
-#~ msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
-#~ msgstr "Gestore del gioco: impossibile il modulo \"$1\" nel gioco \"$2\""
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr "Fa lavorare DirectX con LuaJIT. Disabilitare se provoca problemi."
-#~ msgid "Game Name"
-#~ msgstr "Nome del gioco"
+#~ msgid "Menus"
+#~ msgstr "Menu"
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "Riavviare minetest per rendere effettive le modifiche"
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Minimappa in modalità radar, ingrandimento x2"
-#~ msgid "If enabled, "
-#~ msgstr "attivata"
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Minimappa in modalità radar, ingrandimento x4"
-#~ msgid "If disabled "
-#~ msgstr "Disatt. pacch."
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Minimappa in modalità superficie, ingrandimento x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Minimappa in modalità superficie, ingrandimento x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Nome / Password"
+
+#~ msgid "Name/Password"
+#~ msgstr "Nome/Password"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Campionamento normalmap"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Intensità normalmap"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "Numero di iterazioni dell'occlusione di parallasse."
+
+#~ msgid "Ok"
+#~ msgstr "OK"
#~ msgid ""
-#~ "Map generation attributes specific to Mapgen Valleys.\n"
-#~ "Flags that are not specified in the flag string are not modified from the "
-#~ "default.\n"
-#~ "Flags starting with \"no\" are used to explicitly disable them.\n"
-#~ "\"altitude_chill\" makes higher elevations colder, which may cause biome "
-#~ "issues.\n"
-#~ "\"humid_rivers\" modifies the humidity around rivers and in areas where "
-#~ "water would tend to pool. It may interfere with delicately adjusted "
-#~ "biomes."
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
#~ msgstr ""
-#~ "Attributi di generazione della mappa specifici per Generatore mappa "
-#~ "valli.\n"
-#~ "Le impostazioni che non sono specificate nella stringa mantengono i "
-#~ "valori predefiniti.\n"
-#~ "Le impostazioni che iniziano con \"no\" sono usate per disabilitarle "
-#~ "esplicitamente.\n"
-#~ "\"altitude_chill\" rende più fredde le elevazioni maggiori, il che "
-#~ "potrebbe causare problemi ai biomi.\n"
-#~ "\"humid_rivers\" modifica l'umidità attorno ai fiumi e nelle aree in cui "
-#~ "l'acqua tenderebbe a stagnare. Potrebbe interferire con biomi"
+#~ "Opacità (alfa) dell'ombra dietro il carattere di riserva, tra 0 e 255."
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr ""
+#~ "Deviazione complessiva dell'effetto di occlusione di parallasse, "
+#~ "solitamente scala/2."
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "Scala globale dell'effetto di occlusione di parallasse."
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Parallax Occlusion"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "Parallax Occlusion"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "Deviazione dell'occlusione di parallasse"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "Iterazioni dell'occlusione di parallasse"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "Modalità dell'occlusione di parallasse"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Scala dell'occlusione di parallasse"
-#~ msgid "No!!!"
-#~ msgstr "No!!!"
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "Intensità dell'occlusione di parallasse"
-#~ msgid "Generate Normalmaps"
-#~ msgstr "Generare normalmap"
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "Percorso del carattere TrueType o bitmap."
-#~ msgid "Public Serverlist"
-#~ msgstr "Elenco dei server pubblici"
+#~ msgid "Path to save screenshots at."
+#~ msgstr "Percorso dove salvare le schermate."
-#~ msgid "No of course not!"
-#~ msgstr "No, certo che no!"
+#~ msgid "Player name"
+#~ msgstr "Nome del giocatore"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Utile per gli sviluppatori di mod."
+#~ msgid "Profiling"
+#~ msgstr "Generazione di profili"
-#~ msgid "How many blocks are flying in the wire simultaneously per client."
-#~ msgstr "Quanti blocchi volano nel cavo simultaneamente per ogni client."
+#~ msgid "Projecting dungeons"
+#~ msgstr "Sotterranei protundenti"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP abilitato"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Azzera mondo locale"
+
+#~ msgid "Select Package File:"
+#~ msgstr "Seleziona pacchetto file:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Server / Gioco locale"
+
+#~ msgid "Shadow limit"
+#~ msgstr "Limite dell'ombra"
+
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "Scarto (in pixel) dell'ombreggiatura del carattere di riserva. Se è 0, "
+#~ "allora l'ombra non sarà disegnata."
+
+#~ msgid "Special"
+#~ msgstr "Speciale"
+
+#~ msgid "Special key"
+#~ msgstr "Tasto speciale"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Avvia in locale"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "Intensità delle normalmap generate."
+
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "Intensità dell'aumento mediano della curva di luce."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "Questo carattere sarà usato per certe Lingue."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Per abilitare gli shader si deve usare il driver OpenGL."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Scegli cinematica"
+
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr ""
+#~ "Altezza massima tipica, sopra e sotto il punto medio, delle montagne dei "
+#~ "terreni fluttuanti."
+
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr ""
+#~ "Variazione dell'altezza delle colline, e della profondità dei laghi sul\n"
+#~ "terreno uniforme delle terre fluttuanti."
+
+#~ msgid "View"
+#~ msgstr "Vedi"
+
+#~ msgid "Waving Water"
+#~ msgstr "Acqua ondeggiante"
+
+#~ msgid "Waving water"
+#~ msgstr "Acqua ondeggiante"
#~ msgid ""
-#~ "How many blocks are flying in the wire simultaneously for the whole "
-#~ "server."
-#~ msgstr "Quanti blocchi vengono inviati simultaneamente per l'intero server."
+#~ "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 si usano caratteri FreeType, richiede la compilazione col supporto "
+#~ "FreeType.\n"
+#~ "Se disabilitati, si utilizzano invece i caratteri bitmap e XML vettoriali."
+
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "Se i sotterranei saltuariamente si protendono dal terreno."
-#~ msgid "Detailed mod profiling"
-#~ msgstr "Profilo dettagliato del mod."
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "Y del limite superiore della lava nelle caverne grandi."
-#~ msgid "Detailed mod profile data. Useful for mod developers."
+#~ msgid "Y-level of floatland midpoint and lake surface."
#~ msgstr ""
-#~ "Dati di profilo del mod. dettagliati. Utile per gli sviluppatori di mod."
+#~ "Livello Y del punto medio delle terre fluttuanti e della superficie dei "
+#~ "laghi."
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "Livello Y a cui si estendono le ombre delle terre fluttuanti."
+
+#~ msgid "Yes"
+#~ msgstr "Sì"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Stai per accedere a questo server col nome \"%s\" per la prima volta. \n"
+#~ "Se prosegui, su questo server sarà creato un nuovo account usando le tue "
+#~ "credenziali.\n"
+#~ "Per favore reinserisci la tua password e premi Registrati e accedi per "
+#~ "confermare la creazione dell'account, o premi Annulla per interrompere."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Sei morto"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/ja/minetest.po b/po/ja/minetest.po
index a73408c0a..bb80f775a 100644
--- a/po/ja/minetest.po
+++ b/po/ja/minetest.po
@@ -1,10 +1,10 @@
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Japanese (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-08-17 07:33+0000\n"
-"Last-Translator: Rui <rui.minetest@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-31 17:28+0000\n"
+"Last-Translator: BreadW <toshiharu.uno@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/minetest/"
"minetest/ja/>\n"
"Language: ja\n"
@@ -12,107 +12,239 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.8-dev\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr "アウト チャット キューをクリアする"
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "空のコマンドです。"
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "メインメニューに戻る"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "無効なコマンド: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "発行されたコマンド: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "オンラインプレーヤーを一覧表示する"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "オンラインプレイヤー: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr "アウトチャットキューは空になりました。"
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "このコマンドはサーバによって無効にされています。"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "リスポーン"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "死んでしまった"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr "使用可能なコマンド:"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr "使用可能なコマンド: "
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr "コマンドは使用できません: "
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr "コマンドのヘルプを表示する"
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+"'.help <cmd>' を使用して詳細情報を取得するか、または '.help all' を使用してす"
+"べてを一覧表示します。"
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr "[all | <cmd>]"
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "OK"
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "以下のModの、Luaスクリプトでエラーが発生しました:"
+msgid "<none available>"
+msgstr "<利用できません>"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred in a Lua script:"
+msgstr "Luaスクリプトでエラーが発生しました:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
msgstr "エラーが発生しました:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "メインメニュー"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "決定"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "再接続"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "サーバが再接続を要求しました:"
+msgstr "サーバーが再接続を要求しました:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "読み込み中..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr "新しいバージョン $1 が利用可能"
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr "クライアントMOD"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+"インストール済みバージョン: $1\n"
+"新バージョン: $2\n"
+"$3 にアクセスして、最新バージョンを入手し、機能とバグ修正を最新の状態に保つ方"
+"法を確認してください。"
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr "あとで"
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr "しない"
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
-msgstr "プロトコルバージョンが一致しません。 "
+msgstr "プロトコルのバージョンが一致していません。 "
#: builtin/mainmenu/common.lua
-#, fuzzy
msgid "Server enforces protocol version $1. "
-msgstr "サーバはプロトコルバージョン$1を要求します。 "
+msgstr "サーバーはバージョン$1のプロトコルを強制しています。 "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr "サーバは$1から$2までのプロトコルバージョンをサポートしています。 "
+msgstr "サーバーは$1から$2までのプロトコルのバージョンをサポートしています。 "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
-msgstr "インターネット接続を確認し、公開サーバ一覧を再有効化してください。"
+msgid "Visit website"
+msgstr "ウェブサイトを見る"
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr "プロトコルバージョンは$1のみをサポートします。"
+msgstr "プロトコルはバージョン$1のみをサポートしています。"
#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
-msgstr "プロトコルバージョンは$1から$2までをサポートします。"
+msgstr "バージョン$1から$2までのプロトコルをサポートしています。"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr "(有効、エラーあり)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr "(不十分)"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "キャンセル"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "依存Mod:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "依存MOD:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Modパックを無効化"
+msgid "Disable all"
+msgstr "すべて無効化"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Modパックを有効化"
+msgid "Disable modpack"
+msgstr "MODパック無効化"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr "全て有効化"
+msgstr "すべて有効化"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "MODパック有効化"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
-msgstr ""
-"許可されていない文字が使用されているため、Mod「$1」を有効化できませんでした。"
-"文字は[a-z0-9_]のみ使用できます。"
+"characters [a-z0-9_] are allowed."
+msgstr "許可されていない文字が含まれているため、MOD \"$1\" を有効にできませんでした。"
+"許可される文字は [a-z0-9_] のみです。"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "ゲームを非表示"
+msgid "Find More Mods"
+msgstr "他のMODを探す"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Modパックの内容を非表示"
+msgid "Mod:"
+msgstr "MOD:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr "Mod名:"
+msgid "No (optional) dependencies"
+msgstr "(任意) 依存MODなし"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "ゲームの説明がありません。"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No hard dependencies"
+msgstr "必須依存MODなし"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "MODパックの説明がありません。"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "任意依存MODなし"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "任意依存MOD:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "保存"
@@ -121,94 +253,408 @@ msgid "World:"
msgstr "ワールド:"
#: builtin/mainmenu/dlg_config_world.lua
-#, fuzzy
msgid "enabled"
-msgstr "有効化"
+msgstr "有効"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr "「$1」はすでに存在します。上書きしますか?"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr "$1 と依存MOD $2 がインストールされます。"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr "$1 by $2"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+"$1 ダウンロード中、\n"
+"$2 ダウンロード待機中"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 ダウンロード中..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr "$1 つの必要な依存MODが見つかりませんでした。"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr "$1 がインストールされ、依存MOD $2 はスキップされます。"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "すべて"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "インストール済み"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "メインメニューへ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "基盤ゲーム:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "MinetestがcURLなしでコンパイルされた場合、コンテンツDBは使用できません"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "ダウンロード中..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1のダウンロードに失敗"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "ゲーム"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "入手"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr "$1 のインストール"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr "不足依存MODインストール"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr "インストール: 非対応のファイル形式か、壊れたアーカイブ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "MOD"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "パッケージを取得できませんでした"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "何も見つかりませんでした"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "更新なし"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "見つかりません"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr "上書き"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr "基盤となるゲームが正しいかどうか確認してください。"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr "待機中"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "テクスチャパック"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "削除"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "更新"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr "すべて更新 [$1]"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+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"
+msgstr "追加の地形"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "高所で低温"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "高所で乾燥"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "バイオームの交錯"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "バイオーム"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "大きな洞窟"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "洞窟"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "作成"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr ""
-"minetest.netから、minetest_gameなどのサブゲームをダウンロードしてください"
+msgid "Decorations"
+msgstr "デコレーション"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "minetest.netからダウンロードしてください"
+msgid "Development Test is meant for developers."
+msgstr "Development Testは開発者用です。"
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "ゲーム"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "ダンジョン"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "平らな地形"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "空に浮かぶ大陸"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "浮遊大陸 (実験的)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "非フラクタルな地形の生成: 海と地下"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "丘"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "湿気のある川"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "川周辺の湿度を上げる"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr "ゲームをインストール"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr "ほかのゲームをインストール"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "湖"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+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 "マップジェネレータフラグ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr "マップジェネレータ固有のフラグ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "山"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "泥流"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "トンネルと洞窟の繋がり"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "ゲームが選択されていません"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "高度で熱を低下"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "ワールド名が入力されていないか、ゲームが選択されていません"
+msgid "Reduces humidity with altitude"
+msgstr "高度で湿度を低下"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "川"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "海面の高さの川"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Seed値"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "警告: minimal development testは開発者用です。"
+msgid "Smooth transition between biomes"
+msgstr "バイオーム間の円滑な移行"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr "地形上に現れる構造物 (v6によって生成された木やジャングルの草に影響なし)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "地形上に現れる構造物、通常は木や植物"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "温帯、砂漠"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "温帯、砂漠、ジャングル"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "温帯、砂漠、ジャングル、ツンドラ、タイガ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "地形表面の侵食"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "木とジャングルの草"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "川の深さを多様にする"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "地下深くにある非常に大きな洞窟"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "ワールド名"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr "サブゲームをインストールしていません。"
+msgid "You have no games installed."
+msgstr "ゲームがインストールされていません。"
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "本当に「$1」を削除してよろしいですか?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "削除"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr "Modマネージャ: 「$1」の削除に失敗しました"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: \"$1\"の削除に失敗しました"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr "Modマネージャ: Mod「$1」の場所が不明です"
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: パス\"$1\"は無効"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "ワールド「$1」を削除しますか?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "パスワードの確認"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr "$1 に参加する"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr "名前が見つかりません"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "名前"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "パスワード"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr "パスワードが一致しない"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr "登録"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "決定"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr "Modパック名を変更:"
+msgstr "MODパック名を変更:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
-msgstr "「$1」は有効なフラグではありません。"
+#: 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 "このMODパックは、modpack.conf "
+"に明示的な名前が付けられており、ここでの名前変更をすべて上書きします。"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
msgstr "(設定の説明はありません)"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2Dノイズ"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
msgstr "< 設定ページに戻る"
@@ -217,6 +663,14 @@ msgid "Browse"
msgstr "参照"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr "コンテンツ: ゲーム"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr "コンテンツ: MOD"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
msgstr "無効"
@@ -229,35 +683,20 @@ msgid "Enabled"
msgstr "有効"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr "括弧内に3つの数字をカンマで区切って入力してください。"
+msgid "Lacunarity"
+msgstr "空隙性"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
-"書式: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "ゲーム"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Mod"
+msgid "Octaves"
+msgstr "オクターブ"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr "空隙性の値は、必要に応じ読みやすくカンマを付けることができます。"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "オフセット"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Please enter a comma seperated list of flags."
-msgstr "フラグはカンマで区切った一覧で入力してください。"
+msgid "Persistence"
+msgstr "永続性"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Please enter a valid integer."
@@ -268,231 +707,333 @@ msgid "Please enter a valid number."
msgstr "有効な数字を入力してください。"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr "可能な値: "
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Restore Default"
msgstr "初期設定に戻す"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "スケール"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "検索"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr "場所を選択"
+msgid "Select directory"
+msgstr "ディレクトリの選択"
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "ファイルの選択"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
-msgstr "パラメータ名を表示"
+msgstr "技術名称を表示"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "The value must be at least $1."
msgstr "値は$1より大きくなければなりません。"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
+msgid "The value must not be larger than $1."
msgstr "値は$1より小さくなければなりません。"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
-"\n"
-"Modインストール: 「$1」は非対応の形式か、壊れたアーカイブです"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr "$2へ$1をインストールできませんでした"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Xの広がり"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Modインストール: ファイル: 「$1」"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Yの広がり"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr "Modインストール: $1の正しいMod名が不明です"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr "Modインストール: Modパック$1に適したフォルダ名が不明です"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Zの広がり"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "ストアを閉じる"
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "絶対値"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "$1をダウンロードしています、しばらくお待ちください..."
+#. ~ "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 "既定値"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "インストール"
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "緩和する"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "ページ $1 / $2"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (有効)"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "評価"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 MOD"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "検索"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "$2へ$1をインストールできませんでした"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "MODインストール: 実際のMOD名が見つかりません: $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr "MODインストール: MODパック $1 に適したフォルダ名が見つかりません"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "有効なMODまたはMODパックが見つかりません"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1をテクスチャパックとしてインストールすることができません"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "ゲームを$1としてインストールすることができません"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "MODを$1としてインストールすることができません"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "省略名:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "MODパックを$1としてインストールすることができません"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "インストールが完了しました:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "読み込み中..."
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "未分類"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr "公開サーバー一覧は無効"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "再インストール"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr "インターネット接続を確認し、公開サーバー一覧を再有効化してください。"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr "情報"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "活動中の貢献者"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr "アクティブなレンダラー:"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "開発者"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "クレジット"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr "ディレクトリを開く"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.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_about.lua
msgid "Previous Contributors"
msgstr "以前の貢献者"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "以前の開発者"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "インストール済みのMod:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr "デバッグログを共有"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Modの情報:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "オンラインコンテンツ参照"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Modの説明がありません"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "コンテンツ"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "名前を変更"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Modファイルを選択:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "選択したModを削除"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "選択したModパックを削除"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "テクスチャパック無効化"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr "アドレスとポート"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "情報:"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "クライアント"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "インストール済みのパッケージ:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "接続"
-
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "クリエイティブモード"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "依存MODなし。"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "ダメージ有効"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "パッケージの説明がありません"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr "お気に入りを削除"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "名前を変更"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr "お気に入り"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "パッケージを削除"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr "名前とパスワード"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "テクスチャパック使用"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP有効"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "公開サーバー"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "バインドアドレス"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "設定"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr "クリエイティブモード"
+msgstr "クリエイティブ"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "ダメージ有効"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "名前とパスワード"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "ゲームホスト"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "ホストサーバー"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "コンテンツDBからゲームをインストール"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
-msgstr "作成"
+msgstr "新規作成"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "ワールドが作成または選択されていません!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "ゲームプレイ"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "ポート"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "公開サーバ"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr "MODを選択"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "ワールドを選択:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "サーバ"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
-msgstr "サーバのポート"
+msgstr "サーバーのポート"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Start Game"
msgstr "ゲームスタート"
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr "アドレス"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Clear"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "クリエイティブモード"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr "ダメージ / PvP"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr "お気に入り"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr "互換性のないサーバ"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "ゲームに参加"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr "ログイン"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "応答速度"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr "公開サーバー"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr "再読込"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr "お気に入りを削除"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr "サーバーの説明"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr "(ゲームサポート必須)"
+
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
msgstr "2倍"
@@ -510,38 +1051,54 @@ msgid "8x"
msgstr "8倍"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr "詳細設定"
+msgid "All Settings"
+msgstr "すべての設定"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr "アンチエイリアス:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "シングルプレイヤーのワールドをリセットしてよろしいですか?"
+msgid "Autosave Screen Size"
+msgstr "大きさを自動保存"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
msgstr "バイリニアフィルタ"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr "バンプマッピング"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr "キー変更"
#: builtin/mainmenu/tab_settings.lua
msgid "Connected Glass"
msgstr "ガラスを繋げる"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr "動的な影"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr "動的な影:"
+
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
msgstr "綺麗な葉"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr "強め"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr "弱め"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr "普通"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "ミップマップ"
@@ -550,10 +1107,6 @@ msgid "Mipmap + Aniso. Filter"
msgstr "ミップマップと異方性フィルタ"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "いいえ"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr "フィルタ無し"
@@ -569,15 +1122,11 @@ msgstr "ノードを高輝度表示"
msgid "Node Outlining"
msgstr "ノードの輪郭線を描画"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "無し"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr "法線マッピング"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "不透明な葉"
@@ -585,17 +1134,13 @@ msgstr "不透明な葉"
msgid "Opaque Water"
msgstr "不透明な水"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "視差遮蔽マッピング"
-
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
msgstr "パーティクル"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "シングルプレイヤーのワールドをリセット"
+msgid "Screen:"
+msgstr "画面:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -606,6 +1151,14 @@ msgid "Shaders"
msgstr "シェーダー"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr "シェーダー (実験的)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "シェーダー (無効)"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Simple Leaves"
msgstr "シンプルな葉"
@@ -617,91 +1170,63 @@ msgstr "滑らかな光"
msgid "Texturing:"
msgstr "テクスチャリング:"
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr "シェーダーを有効にするにはOpenGLのドライバを使用する必要があります。"
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
msgstr "トーンマッピング"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr "タッチのしきい値(ピクセル単位)"
+msgid "Touch threshold (px):"
+msgstr "タッチのしきい値 (px):"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr "トリリニアフィルタ"
+msgstr "トライリニアフィルタ"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
-msgstr "揺れる葉"
+msgid "Very High"
+msgstr "とても強く"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
-msgstr "揺れる草花"
+msgid "Very Low"
+msgstr "とても弱く"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr "揺れる水"
+msgid "Waving Leaves"
+msgstr "揺れる葉"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "はい"
+msgid "Waving Liquids"
+msgstr "揺れる液体"
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Mod設定"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "メイン"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "シングルプレイ開始"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "プレイ"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "シングルプレイヤー"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "情報がありません"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "テクスチャパックを選択:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "揺れる草花"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "テクスチャパック"
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr "接続が中断されました (プロトコル エラー?)。"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "接続がタイムアウトしました。"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "完了!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "ノードを初期化中"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "ノードを初期化中..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "テクスチャを読み込み中..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr "シェーダーを再構築中..."
@@ -710,8 +1235,8 @@ msgid "Connection error (timed out?)"
msgstr "接続エラー (タイムアウト?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
-msgstr "以下のゲームが見つからないか読み込めません \""
+msgid "Could not find or load game: "
+msgstr "ゲームが見つからないか読み込めません: "
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
@@ -730,14 +1255,18 @@ msgid "Player name too long."
msgstr "プレイヤー名が長過ぎます。"
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "名前を選択してください!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "パスワードファイルを開けませんでした: "
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "ワールドが存在しません: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "yes"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -745,57 +1274,167 @@ msgstr ""
"\n"
"詳細はdebug.txtを確認してください。"
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "キー変更"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- アドレス: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- モード: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- ポート: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- 公開サーバー: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- サーバー名: "
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr "シリアライズエラーが発生しました:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr "アクセスが拒否されました。理由: %s"
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "自動前進 無効"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "自動前進 有効"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr "ブロック境界線を非表示"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr "すべてのブロックにブロック境界線を表示"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr "現在のブロックにブロック境界を表示"
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr "近くのブロックにブロック境界を表示"
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "カメラ更新 無効"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "カメラ更新 有効"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr "ブロック境界を表示できない (MODやゲームで無効化されている)"
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "パスワード変更"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "映画風モード 無効"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "映画風モード 有効"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr "クライアントが切断されました"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "クライアント側のスクリプトは無効"
+
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr "サーバに接続中..."
+msgstr "サーバーに接続中..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr "未知の理由で接続に失敗しました"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "再開"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"操作方法:\n"
+"- %s: 前進\n"
+"- %s: 後退\n"
+"- %s: 左移動\n"
+"- %s: 右移動\n"
+"- %s: ジャンプ/登る\n"
+"- %s: 掘削/パンチ\n"
+"- %s: 設置/使用\n"
+"- %s: スニーク/降りる\n"
+"- %s: アイテムを落とす\n"
+"- %s: インベントリ\n"
+"- マウス: 見回す\n"
+"- マウスホイール: アイテム選択\n"
+"- %s: チャット\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr "アドレスを解決できませんでした: %s"
+
+#: src/client/game.cpp
msgid "Creating client..."
msgstr "クライアントを作成中..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr "サーバを作成中..."
+msgstr "サーバーを作成中..."
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
-"デフォルトの操作:\n"
-"- WASD: 移動\n"
-"- スペース: ジャンプ/登る\n"
-"- Shift: スニーク/降りる\n"
-"- Q: アイテムを落とす\n"
-"- I: インベントリ\n"
-"- マウス: 見回す\n"
-"- 左クリック: 破壊/パンチ\n"
-"- 右クリック: 設置/使用\n"
-"- マウスホイール: アイテム選択\n"
-"- T: チャット\n"
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "デバッグ情報、観測記録グラフ 非表示"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "デバッグ情報 表示"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "デバッグ情報、観測記録グラフ、ワイヤーフレーム 非表示"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -810,7 +1449,7 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-"デフォルトの操作:\n"
+"既定の操作:\n"
"タッチ操作:\n"
"- シングルタップ: ブロックの破壊\n"
"- ダブルタップ: 設置/使用\n"
@@ -823,504 +1462,804 @@ msgstr ""
"- タッチしてドラッグ、二本指タップ:\n"
" --> アイテムを一つスロットに置く\n"
-#: src/game.cpp
-msgid "Exit to Menu"
-msgstr "タイトルに戻る"
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "視野無制限 無効"
-#: src/game.cpp
-msgid "Exit to OS"
-msgstr "終了"
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "視野無制限 有効"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr "アイテムを定義中..."
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr "クライアント作成中にエラー: %s"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr "KiB/秒"
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "メインメニュー"
-#: src/game.cpp
-msgid "Media..."
-msgstr "通信中..."
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "終了"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr "MiB/秒"
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "高速移動モード 無効"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "ノードを定義中..."
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "高速移動モード 有効"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "アドレスを解決中..."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "高速移動モード有効化 (メモ: 'fast' 特権がありません)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr "リスポーン"
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "飛行モード 無効"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "終了中..."
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "飛行モード 有効"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "音量"
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "飛行モード有効化 (メモ: 'fly' 特権がありません)"
-#: src/game.cpp
-msgid "You died."
-msgstr "あなたは死にました。"
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "霧 無効"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "決定"
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "霧 有効"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "エンター "
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "ゲーム情報:"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "決定"
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "ポーズメニュー"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "「使用」で降りる"
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "ホスティングサーバー"
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "後退"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "チャット"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "コマンド"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "コンソール"
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "アイテムを定義中..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "「ジャンプ」の二度押しで飛行モードを切り替え"
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/秒"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "落とす"
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "メディアを受信中..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "前進"
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/秒"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "インベントリ"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "ミニマップは現在ゲームまたはMODにより無効"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "ジャンプ"
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr "マルチプレイヤー"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "キーが重複しています"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "すり抜けモード 無効"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
-"キー設定です。 (このメニューで失敗する場合は、minetest.confから該当する設定を"
-"削除してください)"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "すり抜けモード 有効"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "左"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "すり抜けモード有効化 (メモ: 'noclip' 特権がありません)"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "スタックの出力"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "ノードを定義中..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "視野の範囲を変更"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "オフ"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "右"
+#: src/client/game.cpp
+msgid "On"
+msgstr "オン"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "スニーク"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "ピッチ移動モード 無効"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle Cinematic"
-msgstr "映画風カメラ"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "ピッチ移動モード 有効"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle fast"
-msgstr "高速移動モード"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "観測記録グラフ 表示"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle fly"
-msgstr "飛行モード"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "リモートサーバー"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle noclip"
-msgstr "すり抜けモード"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "アドレスを解決中..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "使用"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "終了中..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "ズーム"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "シングルプレイヤー"
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "press key"
-msgstr "キー入力待ち"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "音量"
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "変更"
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "消音"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "サウンドシステムは無効"
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "このビルドではサウンド システムがサポートされていない"
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "消音 取り消し"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr "サーバーが別のバージョン %s を実行している可能性があります。"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr "IPv6が無効なため、%sに接続できません"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr "IPv6が無効なため、%sでリッスンできません"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "視野を %d に変更"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "視野はいま最大値: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "視野はいま最小値: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "音量を %d%% に変更"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "ワイヤーフレーム 表示"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "ズームは現在ゲームまたはMODにより無効"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "決定"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "パスワードの確認"
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "チャット 非表示"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "新しいパスワード"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "チャット 表示"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "古いパスワード"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD 非表示"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "パスワードが一致しません!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD 表示"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "閉じる"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "観測記録 非表示"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "音量: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "観測記録 表示 (ページ %d / %d)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "アプリケーション"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "Attn"
-
-#: src/keycode.cpp
-msgid "Back"
-msgstr "Back"
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Back Space"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Capital"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Clear"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "カンマ"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Ctrl"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "変換"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "CrSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Down"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "End"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr "Erase OEF"
-
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Escape"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "EOFを消去する"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "ExSel"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Execute"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Final"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr "Help"
+msgstr "ヘルプ"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insert"
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Accept"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME変換"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "Esc"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IMEモード変更"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "かな"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "無変換"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "漢字"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "左移動"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "左ボタン"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "左Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "左Alt"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "左Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "左Windows"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Alt"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "中ボタン"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "マイナス"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "モード変更"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "PageDown"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr "無変換"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "NumLock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "数値キーパッド *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "数値キーパッド +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "数値キーパッド -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "数値キーパッド ."
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "数値キーパッド /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "数値キーパッド 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "数値キーパッド 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "数値キーパッド 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "数値キーパッド 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "数値キーパッド 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "数値キーパッド 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "数値キーパッド 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "数値キーパッド 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "数値キーパッド 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "数値キーパッド 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM Clear"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page Down"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page Up"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "ピリオド"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "プラス"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Play"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Print"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Page Up"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
-msgstr "エンター"
+msgstr "Enter"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "右移動"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "右ボタン"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "右Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "右メニュー"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "右Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "右Windows"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr "選択キー"
+msgstr "Select"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
-msgstr "スリープ"
+msgstr "Sleep"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Snapshot"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
-msgstr "スペース"
+msgstr "Space"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
-msgstr "タブ"
+msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "上"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "Xボタン1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "Xボタン2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "ズーム"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "ミニマップ 非表示"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "ミニマップ レーダーモード、ズーム x%d"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "ミニマップ 表面モード、ズーム x%d"
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr "ミニマップ テクスチャモード"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr "ウェブページを開けませんでした"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr "ウェブページを開いています"
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "決定"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr "\"スペシャル\" = 降りる"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "自動前進"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "自動ジャンプ"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr "Aux1"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "後退"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr "ブロック境界線表示切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "視点変更"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "チャット"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "コマンド"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "コンソール"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "視野を縮小"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "音量を下げる"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "\"ジャンプ\"2回で飛行モード切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "落とす"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "前進"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "視野を拡大"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "音量を上げる"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "インベントリ"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "ジャンプ"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "キーが重複しています"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr "キーバインド。"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "ローカルコマンド"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "消音"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "次のアイテム"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "前のアイテム"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "視野の選択"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "スクリーンショット"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "スニーク"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD表示切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "チャット表示切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "高速移動モード切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "飛行モード切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "霧表示切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "ミニマップ表示切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "すり抜けモード切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "ピッチ移動モード切替"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "キー入力待ち"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "変更"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "新しいパスワード"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "古いパスワード"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "パスワードが一致しません!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "閉じる"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "消音"
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr "音量: %d%%"
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "ja"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr "名前が登録されていません。このサーバーにアカウントを作成するには「登録」をク"
+"リック。"
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr "名前は使われています。他の名前に変えてください"
+
+#: src/settings_translation_file.cpp
+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
-#, fuzzy
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) バーチャルパッドを使用して\"Aux1\"ボタンを起動します。\n"
+"有効にした場合、バーチャルパッドはメインサークルから外れたときにも\n"
+"\"Aux1\"ボタンをタップします。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
-"(X,Y,Z)『スケール』の単位の世界センターからのフラクタルのオフセット。\n"
-"動きに低い土地の適当な卵区域を使われます(0、0)。\n"
-"デフォルトはmandelbrotセットに適しています、それはjuliaセットのために編集され"
-"る必要があります。\n"
-"およそ-2~2変動してください。ノードでオフセットのために『スケール』によって増"
-"えてください。"
+"(X,Y,Z) ワールドの中心からのフラクタルの「スケール」単位のオフセット。\n"
+"目的のポイントを (0,0) に移動して適切なスポーンポイントを作成したり、\n"
+"「スケール」を増やして目的のポイントに「ズームイン」したりするために\n"
+"使用できます。\n"
+"既定のパラメータを使用してマンデルブロ集合の適切なスポーンポイントに\n"
+"合わせて調整されていますが、他の状況では変更が必要になる場合があります。\n"
+"範囲は約-2〜2です。ノードのオフセットに「スケール」を掛けます。"
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
msgstr ""
-"0 = 斜面情報付きの視差遮蔽マッピング(高速)。\n"
-"1 = リリーフマッピング(正確だが低速)。"
+"(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 "尾根の形状/大きさを制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "ゆるやかな丘の形状/大きさを制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "ステップマウンテンの形状/大きさを制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "山岳地帯の大きさ/出現を制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "ゆるやかな丘の大きさ/出現を制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "ステップマウンテン地帯の大きさ/出現を制御する2Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "川の谷と水路を特定する2Dノイズ。"
#: src/settings_translation_file.cpp
msgid "3D clouds"
@@ -1331,6 +2270,50 @@ msgid "3D mode"
msgstr "3Dモード"
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "3Dモード視差強度"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "巨大な洞窟を定義する3Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"山の構造と高さを定義する3Dノイズ。\n"
+"また、浮遊大陸の山地の構造を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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"
+"必要になる場合があり、このノイズの値の範囲は約 -2.0 ~ 2.0 で\n"
+"浮遊大陸の先細りが最も良く機能します。"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "川の峡谷の壁の構造を定義する3Dノイズ。"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "3Dノイズは地形を定義しています。"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr "山の張り出し、崖などの3Dノイズ。通常は小さな変化です。"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "マップチャンクごとのダンジョンの数を決定する3Dノイズ。"
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1339,56 +2322,68 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
-"3Dサポート\n"
-"サポートしている出力:\n"
+"3Dサポート。\n"
+"現在のサポート:\n"
"- none: 3D出力を行いません。\n"
-"- anaglyph: 赤/青の色による3Dです。\n"
-"- interlaced: 偶数/奇数のラインをベースで偏光式スクリーンに対応していま"
-"す。\n"
+"- anaglyph: シアン/マゼンタ色による3Dです。\n"
+"- interlaced: 奇数/偶数のラインをベースで偏光式スクリーンに対応。\n"
"- topbottom: 画面を上下で分割します。\n"
-"- sidebyside: 画面を左右で分割します。"
+"- sidebyside: 画面を左右で分割します。\n"
+"- crossview: 交差法による3Dです。\n"
+"- pageflip: クァドバッファベースの3Dです。\n"
+"interlacedはシェーダーが有効である必要があることに注意してください。"
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr "3D"
#: 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"
+"新規マップを作成する際の初期シード値、空にするとランダムに設定されます。\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 "ABMの間隔"
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
-msgstr "エマージキューの絶対的な制限値"
+msgid "ABM time budget"
+msgstr "ABMの時間予算"
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "キューに入れられたブロックが出現する絶対制限"
#: src/settings_translation_file.cpp
msgid "Acceleration in air"
msgstr "空中での加速"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Management interval"
-msgstr "アクティブなブロックの範囲"
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "重力加速度、1秒あたりのノード数/秒です。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifier interval"
-msgstr "アクティブなブロックの範囲"
+msgid "Active Block Modifiers"
+msgstr "アクティブブロックモディファイヤー (ABM)"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Active Block Modifiers"
-msgstr "アクティブなブロックの範囲"
+msgid "Active block management interval"
+msgstr "アクティブなブロックの管理間隔"
#: src/settings_translation_file.cpp
msgid "Active block range"
@@ -1396,7 +2391,7 @@ msgstr "アクティブなブロックの範囲"
#: src/settings_translation_file.cpp
msgid "Active object send range"
-msgstr "アクティブなオブジェクトの送信の範囲"
+msgstr "アクティブなオブジェクトの送信範囲"
#: src/settings_translation_file.cpp
msgid ""
@@ -1405,8 +2400,12 @@ msgid ""
"Note that the address field in the main menu overrides this setting."
msgstr ""
"接続先のアドレスです。\n"
-"ローカルサーバを起動する際は空白に設定してください。\n"
-"メインメニューのアドレス欄は、この設定を上書きすることに注意してください。"
+"ローカルサーバーを起動する際は空白に設定してください。\n"
+"メインメニューのアドレス欄はこの設定を上書きすることに注意してください。"
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr "ノードを掘る際にパーティクルを追加します。"
#: src/settings_translation_file.cpp
msgid ""
@@ -1416,36 +2415,62 @@ msgstr ""
"4kスクリーンなどのための、画面の解像度の設定です (非X11/Android環境のみ)。"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+"検出されたディスプレイの密度を調整し、UI要素のスケーリングに使用します。"
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"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"
+"密度を高めるために値を増やします。正または負の値を指定できます。\n"
+"値 = 0.0: 50% が浮遊大陸です。\n"
+"値 = 2.0 ('mgv7_np_floatland' によって高くなる場合があります、常に\n"
+"念のためテスト) 浮遊大陸層を密に作成します。"
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr "管理者名"
#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "詳細"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Altitude Chill"
-msgstr "高所の寒さ"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"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 "飛行時に加速する"
+msgid "Always fly fast"
+msgstr "常に高速で飛行"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Ambient occlusion gamma"
msgstr "アンビエントオクルージョンガンマ"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Amplifies the valleys"
-msgstr "谷の高低差"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "プレイヤーが10秒間に送信できるメッセージの量。"
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr "谷を増幅します。"
#: src/settings_translation_file.cpp
msgid "Anisotropic filtering"
@@ -1453,53 +2478,118 @@ msgstr "異方性フィルタリング"
#: src/settings_translation_file.cpp
msgid "Announce server"
-msgstr "サーバを公開"
+msgstr "サーバーを公開"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
-"公開サーバの通知先のサーバ一覧です。\n"
-"IPv6アドレスを通知したい場合は、serverlist_url = v6.servers.minetest.netを使"
-"用してください。"
+msgid "Announce to this serverlist."
+msgstr "このサーバー一覧に告知します。"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "アイテム名を付け加える"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "ツールチップにアイテム名を付け加えます。"
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "リンゴの木のノイズ"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
-msgstr "ノードにおけるフラクタルのおおよその(X,Y,Z)の大きさ。"
+msgid "Arm inertia"
+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 "クラッシュ後に再接続を促す"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Automaticaly report to the serverlist."
-msgstr "自動的にサーバ一覧に報告します。"
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"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 "Autorun key"
-msgstr ""
+msgid "Audio"
+msgstr "オーディオ"
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "自動前進キー"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "自動的に1ノードの障害物をジャンプします。"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "サーバー一覧に自動的に報告します。"
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "画面の大きさを自動保存"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "自動拡大縮小モード"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr "Aux1キー"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr "昇降用のAux1キー"
#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr "後キー"
+msgstr "後退キー"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr "水が揺れる高さ"
+msgid "Base ground level"
+msgstr "基準地上レベル"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr "基本"
+msgid "Base terrain height."
+msgstr "基準地形の高さ。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Basic Privileges"
-msgstr "標準権限"
+msgid "Basic privileges"
+msgstr "基本的な特権"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "浜ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr "浜ノイズのしきい値"
#: src/settings_translation_file.cpp
msgid "Bilinear filtering"
@@ -1510,112 +2600,169 @@ msgid "Bind address"
msgstr "バインドアドレス"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
-msgstr "フルスクリーンモードでの1ピクセル(色深度)あたりのビット数。"
+msgid "Biome API noise parameters"
+msgstr "バイオームAPIのノイズパラメータ"
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr "バイオームノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "ブロック送信最適化距離"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr "上下の揺れ"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "太字と斜体のフォントのパス"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "太字と斜体の固定幅フォントのパス"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "太字フォントのパス"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr "太字の固定幅フォントのパス"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Build inside player"
msgstr "プレイヤーの位置に設置"
#: src/settings_translation_file.cpp
msgid "Builtin"
-msgstr ""
+msgstr "ビルトイン"
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
-msgstr "バンプマッピング"
+msgid "Camera"
+msgstr "カメラ"
+
+#: src/settings_translation_file.cpp
+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"
+"ほとんどのユーザーはこれを変更する必要はありません。\n"
+"増加すると、低性能GPUでの画像の乱れを減らすことができます。\n"
+"0.1 = 既定値、0.25 = 低性能タブレットに適した値です。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Camera smoothing"
-msgstr "滑らかなカメラ"
+msgstr "カメラの滑らかさ"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Camera smoothing in cinematic mode"
msgstr "映画風モードでのカメラの滑らかさ"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Camera update toggle key"
msgstr "カメラ更新切り替えキー"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Cave noise"
+msgstr "洞窟ノイズ"
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
-msgstr "洞窟ノイズ#1"
+msgstr "洞窟ノイズ #1"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Cave noise #2"
-msgstr "洞窟ノイズ#2"
+msgstr "洞窟ノイズ #2"
#: src/settings_translation_file.cpp
msgid "Cave width"
+msgstr "洞窟の幅"
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr "洞窟1ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr "洞窟2ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr "大きな洞窟の制限"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr "大きな洞窟ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "大きな洞窟の先細り"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "大きな洞窟のしきい値"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 command time message threshold"
+msgstr "チャットコマンド時間切れメッセージのしきい値"
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr "チャットコマンド"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Caves and tunnels form at the intersection of the two noises"
-msgstr "洞窟やトンネルは2つのノイズの交差部分に形成されます"
+msgid "Chat font size"
+msgstr "チャットのフォントサイズ"
#: src/settings_translation_file.cpp
msgid "Chat key"
msgstr "チャットキー"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr "チャットトグルキー"
+msgid "Chat log level"
+msgstr "チャットログのレベル"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "コマンド"
+msgid "Chat message count limit"
+msgstr "チャットメッセージ数の限度"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
-msgstr ""
-"9つの形式からなる18のフラクタルの選択。\n"
-"1 = 4D 「Roundy」 マンデルブロ集合。\n"
-"2 = 4D 「Roundy」 ジュリア集合。\n"
-"3 = 4D \"Squarry\" マンデルブロ集合。\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat message format"
+msgstr "チャットメッセージの形式"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "チャットメッセージキックのしきい値"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "チャットメッセージの最大長"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "チャット切替キー"
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr "チャットのウェブリンク"
#: src/settings_translation_file.cpp
msgid "Chunk size"
@@ -1634,16 +2781,39 @@ msgid "Clean transparent textures"
msgstr "テクスチャの透過を削除"
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr "チャットコンソールの出力で、クリック可能なウェブリンク "
+"(中クリックまたはCtrl+左クリック) を有効になります。"
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "クライアント"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr "クライアントとサーバ"
+msgstr "クライアントとサーバー"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr "上る速度"
+msgid "Client modding"
+msgstr "クライアントの改造"
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr "クライアント側での改造制限"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr "雲の高さ"
+msgid "Client side node lookup range restriction"
+msgstr "クライアント側のノード参照範囲の制限"
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr "クライアント側の改造"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "上る速度"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
@@ -1666,145 +2836,195 @@ msgid "Colored fog"
msgstr "色つきの霧"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Colored shadows"
+msgstr "色つきの影"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"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"
+"コンテンツの評価を指定することもできます。\n"
+"これらのフラグはMinetestのバージョンから独立しています、\n"
+"https://content.minetest.net/help/content_flags/ にある完全なリスト参照"
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
-"HTTP API(彼らがインターネットに出入りするデータをアップロードして、ダウン"
-"ロードするのを許します)にアクセスしてもよいモッズのコンマseperatedされたリス"
-"ト。"
+"HTTP APIへのアクセスが許可され、インターネットでデータをアップロード\n"
+"およびダウンロードできるようにするModのコンマ区切りリスト。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
-"流行の最先端の安全対策がオンの(request_insecure_environment()を通して)と"
-"きでも、不安定な機能にアクセスしてもよい信用されたモッズのコンマで区切られた"
-"リスト。"
+"MODのセキュリティが有効の場合でも (request_insecure_environment() \n"
+"を介して) 安全でない機能へのアクセスが許可されている信頼できる\n"
+"MODのコンマ区切りリスト。"
#: src/settings_translation_file.cpp
msgid "Command key"
msgstr "コマンドキー"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"マップブロックをディスクに保存するときに使用する圧縮レベル。\n"
+"-1 - 規定の圧縮レベルを使用\n"
+"0 - 最小の圧縮、最も速い\n"
+"9 - 最高の圧縮、最も遅い"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+"マップブロックをクライアントに送信するときに使用する圧縮レベル。\n"
+"-1 - 規定の圧縮レベルを使用\n"
+"0 - 最小の圧縮、最も速い\n"
+"9 - 最高の圧縮、最も遅い"
+
+#: src/settings_translation_file.cpp
msgid "Connect glass"
msgstr "ガラスを繋げる"
#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr "外部メディアサーバに接続中"
+msgstr "外部メディアサーバーに接続"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Connects glass if supported by node."
-msgstr "ノードが対応している場合は、ガラスを繋ぎます。"
+msgstr "ノードでサポートされている場合はガラスを繋ぎます。"
#: src/settings_translation_file.cpp
msgid "Console alpha"
-msgstr "コンソールアルファ"
+msgstr "コンソールの透過度"
#: src/settings_translation_file.cpp
msgid "Console color"
msgstr "コンソール色"
#: src/settings_translation_file.cpp
-msgid "Console key"
-msgstr "コンソールキー"
+msgid "Console height"
+msgstr "コンソールの高さ"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr "コンテンツリポジトリ"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr "コンテンツDBフラグのブラックリスト"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr "コンテンツDBの最大同時ダウンロード数"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "コンテンツDBのURL"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Continuous forward"
-msgstr "オートラン"
+msgstr "自動前進"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Continuous forward movement (only used for testing)."
-msgstr "オートラン (テスト用)。"
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+"連側的な前進、自動前進キーで切り替えます。\n"
+"自動前進キーをもう一度押すか、後退で停止します。"
#: src/settings_translation_file.cpp
msgid "Controls"
msgstr "操作"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
-"昼夜交代の長さを制御します。\n"
-"例: 72 = 20分、360 = 4分、1 = 24時間、0 = 時間は変更されません。"
+"昼夜サイクルの長さを制御します。\n"
+"例:\n"
+"72 = 20分、360 = 4分、1 = 24時間、0 = 昼/夜/変更されません。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
-"砂漠の規制サイズとMapgen v6のビーチ。\n"
-"snowbiomesが許可されるとき、『mgv6_freq_desert』は無視されます。"
+"アイドリング時の液体中沈下速度を制御します。負の値は\n"
+"代わりに浮上します。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Controls steepness/depth of lake depressions."
-msgstr "湖底の険しさ/深さの設定。"
+msgstr "湖の窪みの険しさ/深さを制御します。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Controls steepness/height of hills."
-msgstr "丘の険しさ/高さの設定。"
+msgstr "丘陵の険しさ/高さを制御します。"
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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"
msgstr "クラッシュメッセージ"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"洞窟に予測不可能な溶岩を生成します。\n"
-"これによって採掘を難しくできます。ゼロを指定すると無効になります。(0-10)"
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-"洞窟に予測不可能な水を生成します。\n"
-"これによって採掘を難しくできます。ゼロを指定すると無効になります。(0-10)"
+msgid "Creative"
+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)."
-msgstr "照準線の透過 (不透明性、0から255)"
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+"十字カーソルの透過度 (不透明、0~255の間)。\n"
+"これはオブジェクトの十字カーソルにも適用されます。"
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr "照準線の色"
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Crosshair color (R,G,B)."
-msgstr "照準線の色 (R、G、B)。"
+msgstr "十字カーソルの色"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Crouch speed"
-msgstr "しゃがみ状態の速度"
+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"
@@ -1819,199 +3039,313 @@ msgid "Debug info toggle key"
msgstr "デバッグ情報切り替えキー"
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "デバッグログファイルのサイズのしきい値"
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr "デバッグログのレベル"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Debugging"
+msgstr "デバッグ"
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "音量を下げるキー"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr "サーバのステップ"
+msgstr "専用サーバーステップ"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Default acceleration"
-msgstr "標準の加速度"
+msgstr "既定の加速度"
#: src/settings_translation_file.cpp
msgid "Default game"
msgstr "標準ゲーム"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Default game when creating a new world.\n"
"This will be overridden when creating a world from the main menu."
msgstr ""
-"新しいワールドを作成する際の標準のゲームです。\n"
-"メインメニューでワールドを作成する際に上書きされる可能性があります。"
+"新しいワールドを作成する際の既定のゲーム。\n"
+"メインメニューからワールドを作成するときにこれは上書きされます。"
#: src/settings_translation_file.cpp
msgid "Default password"
-msgstr "既定パスワード"
+msgstr "既定のパスワード"
#: src/settings_translation_file.cpp
msgid "Default privileges"
-msgstr "標準権限"
+msgstr "既定の特権"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "既定のレポート形式"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
-msgstr ""
-"cURL(ミリ秒に述べられる)のためのデフォルト・タイムアウト。\n"
-"cURLで編集されるならば、影響を持っているだけです。"
+msgid "Default stack size"
+msgstr "既定のスタック数"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"影フィルタの品質を定義します。\n"
+"これは、PCFまたはポアソンディスクを適用することで、やわらない影効果をシミュ"
+"レートするものです。\n"
+"しかし、より多くのリソースを消費します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr "木にリンゴがある地域を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "砂浜の地域を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "高い地形と崖の急勾配の分布を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "高い地形の分布を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr "大きな洞窟の最大サイズを定義し、より小さい値はさらに大きな洞窟を作成。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr "大規模な河川構造を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr "オプションの丘と湖の場所と地形を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr "基準地上レベルを定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr "河道の深さを定義します。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
-msgstr "ブロック(0無制限の=)で、最大限のプレーヤー移転距離を定めます。"
+msgstr "最大プレイヤー転送距離をブロック数で定義します(0 = 無制限)。"
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines the width of the river channel."
+msgstr "河道の幅を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr "川の谷の幅を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr "木の地域と木の密度を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
msgstr ""
+"クライアント上のメッシュ更新間の遅延 (ミリ秒)。これを大きくすると\n"
+"メッシュの更新速度が遅くなり、低速のクライアントのジッタが減少します。"
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "設置後のブロック送信遅延"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Delay showing tooltips, stated in milliseconds."
-msgstr "ツールチップを表示するまでの遅延です。ミリ秒で指定してください。"
+msgstr "ツールチップを表示するまでの遅延、ミリ秒で定めます。"
#: src/settings_translation_file.cpp
-#, fuzzy
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."
+msgstr "これ以下の深さで巨大な洞窟が見つかります。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Depth below which you'll find large caves."
-msgstr "あなたが大きな洞穴を見つける深さ。"
+msgstr "これ以下の深さで大きな洞窟が見つかります。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Depth below which you'll find massive caves."
-msgstr "あなたが大きい洞穴を見つける深さ。"
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr "サーバーの説明。プレイヤーが参加したときとサーバー一覧に表示されます。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Descending speed"
-msgstr "降りる速度"
+msgid "Desert noise threshold"
+msgstr "砂漠ノイズのしきい値"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
-msgstr "サーバの説明です。プレイヤーがサーバ一覧から接続する際に表示されます。"
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+"砂漠は np_biome がこの値を超えたときに出現します。\n"
+"'snowbiomes' フラグを有効にすると、これは無視されます。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Desynchronize block animation"
msgstr "ブロックのアニメーションの非同期化"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
-"地形形を決定します。\n"
-"ブラケットの3番号は地形の目盛りを制御します、\n"
-"3番号は同一でなければなりません。"
+msgid "Developer Options"
+msgstr "開発者向けオプション"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr "掘削キー"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "掘削時パーティクル"
#: src/settings_translation_file.cpp
msgid "Disable anticheat"
msgstr "対チート機関無効化"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
-msgstr ""
+msgid "Disallow empty passwords"
+msgstr "空のパスワードを許可しない"
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
-msgstr ""
+msgid "Display Density Scaling Factor"
+msgstr "ディスプレイ密度スケーリング係数"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Disallow empty passwords"
-msgstr "空のパスワードを無効化"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+"透明度の深さの並べ替えが有効になっているノードの距離\n"
+"これを使用して、透明度の深さの並べ替えによるパフォーマンスへの影響を制限"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Domain name of server, to be displayed in the serverlist."
-msgstr "サーバのドメイン名です。サーバ一覧に表示されます。"
+msgstr "サーバー一覧に表示されるサーバーのドメイン名。"
#: src/settings_translation_file.cpp
msgid "Double tap jump for fly"
msgstr "「ジャンプ」キー二回押しで飛行モード"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Double-tapping the jump key toggles fly mode."
-msgstr "「ジャンプ」キー二回押しで飛行モード。"
+msgstr "\"ジャンプ\"キー二回押しで飛行モードへ切り替えます。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Drop item key"
-msgstr "アイテムを捨てるキー"
+msgstr "アイテムを落とすキー"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "マップジェネレータのデバッグ情報を出力します。"
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr "ダンジョンの最大Y"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Dump the mapgen debug infos."
-msgstr "マップ生成のデバッグ情報を出力します。"
+msgid "Dungeon minimum Y"
+msgstr "ダンジョンの最小Y"
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon noise"
+msgstr "ダンジョンノイズ"
+
+#: src/settings_translation_file.cpp
+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 "Enable VBO"
-msgstr "有効化"
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+"クライアントでのLua改造サポートを有効にします。\n"
+"このサポートは実験的であり、APIは変わることがあります。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+"ポアソンディスクによるフィルタリングを有効にします。\n"
+"true の場合、ポアソンディスクを使用して「やわらない影」を作ります。それ以外の"
+"場合は、PCFフィルタリングを使用します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+"色つきの影を有効にします。\n"
+"真の半透明ノードでは、色つきの影を落とします。これは負荷が大きいです。"
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr "コンソールウィンドウを有効化"
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr "すべてのプレイヤーにクリエイティブモードを有効化"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "ジョイスティック作動"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr "ジョイスティックを有効にします。変更には再起動が必要"
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "MODチャンネルのサポートを有効にします。"
#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr "Modのセキュリティを有効化"
+msgstr "MODのセキュリティを有効化"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enable players getting damage and dying."
-msgstr "損害を得ていて、死んでいるプレーヤーを使用可能にしてください。"
+msgstr "プレイヤーがダメージを受けて死亡するのを有効にします。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enable random user input (only used for testing)."
-msgstr ""
-"入力される(テストのために使われるだけの)ランダムなユーザーに許可を与えてく"
-"ださい。"
+msgstr "ランダムなユーザー入力を有効にします (テストにのみ使用)。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Enable smooth lighting with simple ambient occlusion.\n"
"Disable for speed or for different looks."
msgstr ""
-"単純な周囲の閉塞でスムーズな照明を使用可能にしてください。\n"
-"速度のために、または、異なるルックスのために働かなくしてください。"
+"シンプルなアンビエントオクルージョンで滑らかな照明を有効にします。\n"
+"速度や異なる見た目のために無効にしてください。"
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr "ログインと登録を分ける"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -2019,375 +3353,548 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
-"つながることから古いクライアントを認めないのを可能にしてください。\n"
-"新しいサーバーに接続するとき彼らが完敗しないという点で、年上の依頼人は互換性"
-"を持ちます、しかし、彼らがあなたが期待しているすべての新機能を支えるというわ"
-"けではないかもしれません。"
+"古いクライアントが接続できないようにします。\n"
+"古いクライアントは新しいサーバーに接続してもクラッシュしないという\n"
+"意味で互換性がありますが、期待しているすべての新機能をサポート\n"
+"しているわけではありません。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Enable usage of remote media server (if provided by server).\n"
"Remote servers offer a significantly faster way to download media (e.g. "
"textures)\n"
"when connecting to the server."
msgstr ""
-"遠隔メディア・サーバー(サーバーで提供されるならば)の使用法をイネーブルして"
-"ください。\n"
-"サーバーに接続するとき、遠隔サーバーはメディア(例えばテクスチャー)をダウン"
-"ロードするかなりより高速道を提供します。"
+"リモートメディアサーバーの使用を有効にします (サーバーによって提供\n"
+"されている場合)。\n"
+"リモートサーバはサーバーに接続するときにメディア (例えば、テクスチャ) を\n"
+"ダウンロードするための非常に高速な方法を提供します。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
-"IPv6サーバーを動かすことを可能にして/働かなくしてください。システム構成に従"
-"い、IPv6サーバーは、IPv6クライアントに制限されるかもしれません。\n"
-"bind_addressがセットされるならば、無視されます。"
+"頂点バッファオブジェクトを有効にします。\n"
+"これにより、グラフィックスのパフォーマンスが大幅に向上します。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables animation of inventory items."
-msgstr "インベントリのアイテムのアニメーションを有効にします。"
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+"移動時の上下の揺れと移動時の上下の揺れの量を有効にします。\n"
+"例: 0 揺れなし; 1.0 標準の揺れ; 2.0 標準の倍の揺れ。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
-"テクスチャーのためにbumpmappingすることを可能にします。ノル悪地図はテクス"
-"チャー・パックで供給される必要があるか、自動発生する必要があります。\n"
-"許可されることを遮光物に要求します。"
+"IPv6サーバーの実行を有効/無効にします。\n"
+"bind_addressが設定されている場合は無視されます。\n"
+"enable_ipv6を有効にする必要があります。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables caching of facedir rotated meshes."
-msgstr "facedir回転するメッシュのキャッシングを可能にします。"
+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の「アンチャーテッド2」フィルムトーンマッピングを有効にします。\n"
+"写真フィルムのトーンカーブと、これがハイダイナミックレンジイメージの外観に\n"
+"どのように近似するかをシミュレートします。ミッドレンジのコントラストが\n"
+"わずかに強化され、ハイライトとシャドウが徐々に圧縮されます。"
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
-msgstr "ミニマップを有効にする。"
+msgid "Enables animation of inventory items."
+msgstr "インベントリのアイテムのアニメーションを有効にします。"
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr "facedir回転メッシュのキャッシングを有効にします。"
#: src/settings_translation_file.cpp
msgid "Enables minimap."
msgstr "ミニマップを有効にする。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
-"自動的にその場で、ノル悪地図生成(影響に浮彫りします)を可能にします。\n"
-"許可されるためにbumpmappingすることを必要とします。"
+"サウンドシステムを有効にします。\n"
+"無効にすると、すべてのサウンドが完全に無効になり、\n"
+"ゲーム内の音の制御は機能しなくなります。\n"
+"この設定を変更するには再起動が必要です。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
-"視差オクルージョンマッピングを有効にします。\n"
-"シェーダーが有効である必要があります。"
+"ゲームのプレイアビリティに影響を与えない小さな視覚的な不具合を犠牲にして\n"
+"CPU負荷を軽減するか、レンダリングパフォーマンスを向上させるトレードオフを有効"
+"にします。"
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr "エンジンの観測記録"
#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "エンジンプロファイリングデータの出力間隔"
#: src/settings_translation_file.cpp
msgid "Entity methods"
-msgstr ""
+msgstr "エンティティメソッド"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
-"0より高い数に設定されるとき、実験的なオプションはブロックの間の見える隙間を引"
-"き起こすかもしれません。"
+"浮遊大陸の先細り指数。先細りの動作を変更します。\n"
+"値 = 1.0は、均一で線形な先細りを作成します。\n"
+"値 > 1.0は、規定の分離された浮遊大陸に適した滑らかな先細りを\n"
+"作成します。\n"
+"値 < 1.0 (例 0.25) は、より明確な表面レベルで平坦な低地を\n"
+"作成し、密な浮遊大陸層に適しています。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "FPS in pause menu"
-msgstr "ポーズメニューのFPS"
+msgid "FPS"
+msgstr "FPS"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "FSAA"
-msgstr "アンチエイリアス"
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fall bobbing"
-msgstr "落下による上下の揺れ"
+msgid "FPS when unfocused or paused"
+msgstr "非アクティブまたはポーズメニュー表示中のFPS"
#: src/settings_translation_file.cpp
-msgid "Fallback font"
-msgstr "フォールバックフォント"
+msgid "FSAA"
+msgstr "フルスクリーンアンチエイリアシング"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font shadow"
-msgstr "フォールバックフォントの影"
+msgid "Factor noise"
+msgstr "係数ノイズ"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font shadow alpha"
-msgstr "フォールバックフォントの影の透過"
+msgid "Fall bobbing factor"
+msgstr "落下時の上下の揺れ係数"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font size"
-msgstr "フォールバックフォントの大きさ"
+msgid "Fallback font path"
+msgstr "フォールバックフォントのパス"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fast key"
-msgstr "高速移動キー"
+msgstr "高速移動モード切替キー"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fast mode acceleration"
-msgstr "高速モードの加速度"
+msgstr "高速移動モードの加速度"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fast mode speed"
-msgstr "高速モードの速度"
+msgstr "高速移動モードの速度"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fast movement"
-msgstr "高速移動"
+msgstr "高速移動モード"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
-"高速移動 (使用キー)。\n"
-"サーバによる「fast」権限が必要です。"
+"高速移動 (\"Aux1\"キーによる)。\n"
+"これにはサーバー上に \"fast\" 特権が必要です。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Field of view"
-msgstr "視野"
-
-#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Field of view for zoom"
-msgstr "視野"
+msgstr "視野角"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Field of view in degrees."
-msgstr "視野角。"
+msgstr "視野角の度数。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
-"高速移動 (使用キー)。\n"
-"サーバによる「fast」権限が必要です。"
+"client/serverlist/ フォルダ内のファイルで、ゲームに参加タブで表示されている\n"
+"お気に入りのサーバーが含まれています。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
-"マルチプレーヤー・タブで示されるあなたの大好きなサーバーを含むclient/"
-"serverlist/でファイルしてください。"
+msgid "Filler depth"
+msgstr "充填深さ"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Filler Depth"
-msgstr "詰め物深さ"
+msgid "Filler depth noise"
+msgstr "充填深さノイズ"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Filmic tone mapping"
-msgstr "映画トーン・マッピング"
+msgstr "フィルム調トーンマッピング"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
-"フィルタ処理したテクスチャーは、透明なテクスチャーに暗いか明るい端に終わっ"
-"て、RGBの価値と完全に透明な隣人(それをPNGオプティマイザーは通常捨てます)"
-"を、時々混ぜ合わせることができます。テクスチャー荷時間にそれをきれいにするた"
-"めに、このフィルタを使用してください。"
+"フィルタ処理されたテクスチャは、RGB値を完全に透明な隣り合うものと\n"
+"混ぜることができます。これはPNGオプティマイザーが通常廃棄するもので、\n"
+"透過テクスチャの端が暗くなったり明るくなったりすることがよくあります。\n"
+"テクスチャの読み込み時にフィルタを適用してそれをきれいにします。\n"
+"これはミップマッピングが有効な場合に自動的に有効になります。"
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr "フィルタリングとアンチエイリアス"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr "一緒に丘陵/山岳地帯の高さを定義する2Dノイズ4つのうちの1番目です。"
#: src/settings_translation_file.cpp
-msgid "Filtering"
-msgstr "フィルタリング"
+msgid "First of two 3D noises that together define tunnels."
+msgstr "トンネルを定義する2つの3Dノイズのうちの1番目。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fixed map seed"
msgstr "固定マップシード値"
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr "バーチャルパッドを固定"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "浮遊大陸の密度"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "浮遊大陸の最大 Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "浮遊大陸の最小 Y"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "浮遊大陸ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "浮遊大陸の先細り指数"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "浮遊大陸の先細り距離"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "浮遊大陸の水位"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr "飛行キー"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Flying"
-msgstr "飛行"
+msgstr "飛行モード"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Fog"
msgstr "霧"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Fog start"
+msgstr "霧の始まり"
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
-msgstr "霧切り替えキー"
+msgstr "霧表示切り替えキー"
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr "フォント"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Font path"
-msgstr "フォントパス"
+msgid "Font bold by default"
+msgstr "既定で太字のフォント"
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr "既定で斜体のフォント"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Font shadow"
msgstr "フォントの影"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Font shadow alpha"
msgstr "フォントの影の透過"
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
+msgstr "フォントの大きさ"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr "割り切れるフォントサイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr "96 DPIで1ユニット=1ピクセルとなる既定のフォントのフォントサイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr "96 DPIで1ユニット=1ピクセルとなる固定幅フォントのフォントサイズ"
+
+#: 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 ""
+"最近のチャットテキストとチャットプロンプトのフォントサイズ (pt)。\n"
+"値 0 は規定のフォントサイズを使用します。"
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
msgstr ""
+"拡大縮小がうまくいかないピクセルスタイルのフォントの場合、このフォントで\n"
+"使用されるフォントサイズは、常にこの値で割り切れます。例えば高さ16ピクセル"
+"の\n"
+"ピクセルフォントの場合、この値を16に設定すると、16、32、48などのサイズにし"
+"か\n"
+"なりませんので、25のサイズを要求したMODは32を取得します。"
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
+"プレーヤーのチャットメッセージの形式。以下の文字列は有効なプレースホルダで"
+"す。:\n"
+"@name, @message, @timestamp (任意)"
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
-msgstr ""
+msgstr "スクリーンショットのファイル形式です。"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr "フォームスペックの既定の背景色"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr "フォームスペックの既定の背景不透明度"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr "フォームスペックのフルスクリーンの背景色"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr "フォームスペックのフルスクリーンの背景不透明度"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "フォームスペックの既定の背景色 (R,G,B)。"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "フォームスペックの既定の背景不透明度 (0~255の間)。"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "フォームスペックのフルスクリーンの背景色 (R,G,B)。"
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "フォームスペックのフルスクリーンの背景不透明度 (0~255の間)。"
#: src/settings_translation_file.cpp
msgid "Forward key"
-msgstr "前キー"
+msgstr "前進キー"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
-msgstr ""
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr "一緒に丘陵/山岳地帯の高さを定義する2Dノイズ4つのうちの4番目です。"
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr "フラクタルの種類"
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr "霧が描画され始める可視距離の割合"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are generated for clients, stated in mapblocks (16 "
"nodes)."
msgstr ""
+"どれくらいの距離のブロックからクライアントで生成するか、\n"
+"マップブロック(16ノード)で定めます。"
#: src/settings_translation_file.cpp
msgid ""
"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
msgstr ""
+"どれくらいの距離のブロックからクライアントへ送信するか、\n"
+"マップブロック(16ノード)で定めます。"
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+"クライアントがどれくらいの距離のオブジェクトを知っているか、\n"
+"マップブロック (16ノード) で定めます。\n"
+"\n"
+"これを active_block_range よりも大きく設定すると、サーバーは\n"
+"この距離までプレーヤーが見ている方向に\n"
+"アクティブなオブジェクトを維持します。(これによりモブが突然\n"
+"視野から消えるのを避けることができます)"
#: src/settings_translation_file.cpp
msgid "Full screen"
-msgstr "全画面表示"
-
-#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
+msgstr "フルスクリーン表示"
#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "全画面表示モードです。"
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr ""
+msgstr "GUIの拡大縮小"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr "メニューの大きさ"
+msgstr "GUI拡大縮小フィルタ"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "GUI拡大縮小フィルタ txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
-msgstr ""
+msgid "GUIs"
+msgstr "GUI"
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+msgid "Gamepads"
+msgstr "ゲームパッド"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
-msgstr "ノーマルマップの生成"
+msgid "General"
+msgstr "一般"
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "グローバルコールバック"
#: src/settings_translation_file.cpp
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
+"全体的なマップ生成属性。\n"
+"マップジェネレータv6では、'decorations' フラグで木とジャングルの草を\n"
+"除くすべての装飾を制御しますが、他のすべてのマップジェネレータでは\n"
+"このフラグがすべての装飾を制御します。"
+
+#: 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"
msgstr "グラフィック"
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr "グラフィック効果"
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr "グラフィックとオーディオ"
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
-msgstr ""
+msgstr "重力"
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
-msgstr "Mod"
+msgid "Ground level"
+msgstr "地上レベル"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "地上ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "HTTP MOD"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr "HUD"
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr "HUDのサイズ"
#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr ""
+msgstr "HUD表示切り替えキー"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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"
+"- none: 非推奨の呼び出しを記録しない\n"
+"- log: 非推奨の呼び出しのバックトレースを模倣して記録します (既定値)。\n"
+"- error: 非推奨の呼び出しの使用を中止します (MOD開発者に推奨)。"
#: src/settings_translation_file.cpp
msgid ""
@@ -2397,68 +3904,305 @@ msgid ""
"call).\n"
"* Instrument the sampler being used to update the statistics."
msgstr ""
+"観測記録計測器自体を持ちます: \n"
+"*空の関数を計測します。\n"
+"これによりオーバーヘッドが見積もられ、計測器は (+1関数呼び出し) を\n"
+"追加します。\n"
+"*統計を更新するために使用されているサンプラを計測します。"
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
-msgstr ""
+msgid "Heat blend noise"
+msgstr "温度混合ノイズ"
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
-msgstr ""
+msgid "Heat noise"
+msgstr "熱ノイズ"
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
-msgstr ""
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "初期ウィンドウサイズの高さ。フルスクリーンモードでは無視されます。"
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "高さノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr "高さ選択ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr "丘陵の険しさ"
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr "丘陵のしきい値"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "丘陵性1ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "丘陵性2ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "丘陵性3ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "丘陵性4ノイズ"
#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
-msgstr ""
+msgstr "サーバー一覧に表示されるサーバのホームページ。"
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
+"ジャンプや落下時の空気中の水平加速度、\n"
+"1秒あたりのノード数/秒です。"
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
-"Mapblock (16ノード) 数でオブジェクトのロードやABMの実効等の有効エリアを指定。"
+"高速移動モード中の水平および垂直加速度、\n"
+"1秒あたりのノード数/秒です。"
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
+"地面や登山時の水平および垂直加速度、\n"
+"1秒あたりのノード数/秒です。"
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
-msgstr ""
+msgid "Hotbar next key"
+msgstr "ホットバー次へキー"
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "Hotbar previous key"
+msgstr "ホットバー前へキー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr "ホットバースロット1キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr "ホットバースロット10キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr "ホットバースロット11キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "ホットバースロット12キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr "ホットバースロット13キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr "ホットバースロット14キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr "ホットバースロット15キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr "ホットバースロット16キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr "ホットバースロット17キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr "ホットバースロット18キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr "ホットバースロット19キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr "ホットバースロット2キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr "ホットバースロット20キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr "ホットバースロット21キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr "ホットバースロット22キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr "ホットバースロット23キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr "ホットバースロット24キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr "ホットバースロット25キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr "ホットバースロット26キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr "ホットバースロット27キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr "ホットバースロット28キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr "ホットバースロット29キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr "ホットバースロット3キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr "ホットバースロット30キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr "ホットバースロット31キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr "ホットバースロット32キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr "ホットバースロット4キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr "ホットバースロット5キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr "ホットバースロット6キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr "ホットバースロット7キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr "ホットバースロット8キー"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr "ホットバースロット9キー"
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "川を作る深さ。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"液体波の移動速度。高い値=より速い。\n"
+"負の値の場合、液体波は逆方向に移動します。\n"
+"揺れる液体 を有効にする必要があります。"
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
+"未使用のマップブロックをアンロードするまでにサーバーが待機する時間を秒単位で"
+"定めます。\n"
+"値が大きいほど滑らかになりますが、より多くのRAMが使用されます。"
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
+"液体の中を移動するときに、どれくらい速度を低下させるかです。\n"
+"これを小さくすると、液体の動きに対する抵抗が大きくなります。"
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "川を作る幅。"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr "湿度混合ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr "湿度ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr "バイオームの湿度変動です。"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "IPv6 サーバー"
#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
msgstr ""
+"FPSがこれより高くなる場合は、CPUの電力を無駄にしないように\n"
+"スリープ状態で制限します。"
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
+"無効になっている場合、飛行モードと高速移動モードの両方が有効になって\n"
+"いると、\"Aux1\"キーを使用して高速で飛行できます。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+"有効にすると、サーバーはプレーヤーの目の位置に基づいてマップブロック\n"
+"オクルージョンカリングを実行します。これによりクライアントに送信される\n"
+"ブロック数を50〜80%減らすことができます。すり抜けモードの有用性が\n"
+"減るように、クライアントはもはや目に見えないものを受け取りません。"
#: src/settings_translation_file.cpp
msgid ""
@@ -2466,32 +4210,60 @@ msgid ""
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
+"飛行モードと一緒に有効にされている場合、プレイヤーは個体ノードを\n"
+"すり抜けて飛ぶことができます。\n"
+"これにはサーバー上に \"noclip\" 特権が必要です。"
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
+"有効にすると、降りるとき \"スニーク\" キーの代りに \n"
+"\"Aux1\" キーが使用されます。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+"有効にした場合、アカウント登録はログインとは別になります。\n"
+"無効にした場合、新しいアカウントはログイン時に自動的に登録されます。"
#: src/settings_translation_file.cpp
msgid ""
"If enabled, actions are recorded for rollback.\n"
"This option is only read when server starts."
msgstr ""
+"有効にした場合、ロールバックのために行動が記録されます。\n"
+"このオプションはサーバー起動時にのみ読み込まれます。"
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "有効にすると、マルチプレイでチート防止を無効にします。"
#: src/settings_translation_file.cpp
msgid ""
"If enabled, invalid world data won't cause the server to shut down.\n"
"Only enable this if you know what you are doing."
msgstr ""
+"有効にした場合、無効なワールドデータによってサーバーがシャットダウン\n"
+"することはありません。\n"
+"自分がしていることがわかっている場合のみこれを有効にします。"
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
-msgstr ""
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr "有効にすると、飛行中または水泳中にプレーヤーのピッチ方向に移動します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr "有効にすると、プレーヤーはパスワードなしで参加したり、空のパスワードに変更す"
+"ることはできません。"
#: src/settings_translation_file.cpp
msgid ""
@@ -2499,72 +4271,116 @@ msgid ""
"you stand.\n"
"This is helpful when working with nodeboxes in small areas."
msgstr ""
+"有効になっている場合は、立っている位置 (足と目の高さ) にブロックを\n"
+"配置できます。\n"
+"狭い領域でノードボックスを操作するときに役立ちます。"
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
+"チャットコマンドの実行が、この指定された時間 (秒) よりも長くかかる場合は\n"
+"チャットコマンドのメッセージに時間の情報を追加"
#: src/settings_translation_file.cpp
-msgid "In-Game"
-msgstr "ゲーム"
+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."
+msgstr "これを設定すると、プレーヤーが常に与えられた場所に(リ)スポーンします。"
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "ワールドエラーを無視"
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
-msgstr ""
+msgstr "ゲーム内チャットコンソール背景の透過 (不透明、0~255の間)。"
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
-msgstr ""
+msgstr "ゲーム内チャットコンソール背景の色 (R,G,B)。"
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "ゲーム内チャットコンソールの高さ、0.1 (10%) ~ 1.0 (100%) の間。"
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "音量を上げるキー"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr "ジャンプ時の初期垂直速度、1秒あたりのノード数です。"
#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
+"計測器内蔵。\n"
+"これは通常、コア/ビルトイン貢献者にのみ必要"
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
-msgstr ""
+msgid "Instrument chat commands on registration."
+msgstr "チャットコマンドが登録されるとすぐに計測します。"
#: src/settings_translation_file.cpp
msgid ""
"Instrument global callback functions on registration.\n"
"(anything you pass to a minetest.register_*() function)"
msgstr ""
+"グローバルコールバック関数が登録されるとすぐに計測します。\n"
+"(あなたが minetest.register_*() 関数に渡すもの)"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Active Block Modifiers on registration."
msgstr ""
+"アクティブブロックモディファイヤー (ABM) のアクション関数が\n"
+"登録されるとすぐに計測します。"
#: src/settings_translation_file.cpp
msgid ""
"Instrument the action function of Loading Block Modifiers on registration."
msgstr ""
+"ローディングブロックモディファイヤー (LBM) のアクション関数が\n"
+"登録されるとすぐに計測します。"
#: src/settings_translation_file.cpp
msgid "Instrument the methods of entities on registration."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
+msgstr "エンティティのメソッドを登録するとすぐに計測します。"
#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
-msgstr ""
+msgstr "ワールドで重要な変化を保存する間隔を秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "クライアントに時刻を送信する間隔を秒単位で定めます。"
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "インベントリのアイテムのアニメーション"
#: src/settings_translation_file.cpp
msgid "Inventory key"
@@ -2572,58 +4388,125 @@ msgstr "インベントリキー"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "マウスの反転"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
-msgstr ""
+msgstr "マウスの上下の動きを反転させます。"
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "斜体フォントのパス"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "斜体の固定幅フォントのパス"
#: src/settings_translation_file.cpp
msgid "Item entity TTL"
-msgstr ""
+msgstr "アイテムエンティティTTL"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr "繰り返し"
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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"
+"繰り返し = 20では、このマップジェネレータはマップジェネレータ V7 と\n"
+"同じように負荷をかけます。"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr "ジョイスティックID"
#: src/settings_translation_file.cpp
msgid "Joystick button repetition interval"
-msgstr ""
+msgstr "ジョイスティックボタンの繰り返し間隔"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr "ジョイスティックのデッドゾーン"
#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
-msgstr ""
+msgstr "ジョイスティック視錐台感度"
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr "ジョイスティックの種類"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
+"ジュリア集合のみ。\n"
+"超複素定数のW成分。\n"
+"フラクタルの形を変えます。\n"
+"3Dフラクタル上の効果はありません。\n"
+"おおよそ -2~2 の範囲。"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"ジュリア集合のみ。\n"
+"超複素定数のX成分。\n"
+"フラクタルの形を変えます。\n"
+"おおよそ -2~2 の範囲。"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"ジュリア集合のみ。\n"
+"超複素定数のY成分。\n"
+"フラクタルの形を変えます。\n"
+"おおよそ -2~2 の範囲。"
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
+"ジュリア集合のみ。\n"
+"超複素定数のZ成分。\n"
+"フラクタルの形を変えます。\n"
+"おおよそ -2~2 の範囲。"
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr "ジュリア w"
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr "ジュリア x"
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr "ジュリア y"
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr "ジュリア z"
#: src/settings_translation_file.cpp
msgid "Jump key"
@@ -2631,7 +4514,7 @@ msgstr "ジャンプキー"
#: src/settings_translation_file.cpp
msgid "Jumping speed"
-msgstr ""
+msgstr "ジャンプ時の速度"
#: src/settings_translation_file.cpp
msgid ""
@@ -2639,6 +4522,29 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"視野を縮小するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"音量を下げるキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"掘削するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2646,6 +4552,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"現在選択されているアイテムを落とすキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2653,6 +4562,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"視野を拡大するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"音量を上げるキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2660,6 +4582,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ジャンプするキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2667,13 +4592,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"高速移動モード中に高速移動するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"プレイヤーを後方へ移動するキーです。\n"
+"自動前進中に押すと自動前進を停止します。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2681,6 +4614,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"プレイヤーを前方へ移動するキーです。\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2688,6 +4624,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"プレイヤーを左方向へ移動させるキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2695,13 +4634,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"プレイヤーを右方向へ移動させるキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ゲームを消音にするキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
@@ -2709,716 +4654,1095 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"コマンドを入力するためのチャットウィンドウを開くキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat window.\n"
+"Key for opening the chat window to type local commands.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ローカルコマンドを入力するためのチャットウィンドウを開くキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the inventory.\n"
+"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"チャットウィンドウを開くキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for opening the inventory.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"インベントリを開くキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"設置するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"11番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"12番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"13番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"14番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"15番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"16番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"17番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"18番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"19番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"20番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"21番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"22番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"23番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"24番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"25番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"26番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"27番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"28番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"29番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"30番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"31番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Left key"
-msgstr "左キー"
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"32番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"8番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"5番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"1番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"4番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ホットバーから次のアイテムを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"9番目のホットバースロットを選択するキーです。\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ホットバーから前のアイテムを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"2番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"7番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"6番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"10番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"3番目のホットバースロットを選択するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"スニークするキーです。\n"
+"aux1_descends が無効になっている場合は、降りるときや水中を潜るためにも使用さ"
+"れます。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"一人称から三人称の間でカメラを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"スクリーンショットを撮るキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"自動前進を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Loading Block Modifiers"
-msgstr "アクティブなブロックの範囲"
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"映画風モードを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ミニマップ表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
-msgstr "メインメニューMod管理"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"高速移動モードを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
-msgstr "メインメニュースクリプト"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"飛行モードを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"すり抜けモードを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ピッチ移動モードを切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"カメラ更新を切り替えるキー。開発にのみ使用される\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"チャット表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"デバッグ情報の表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"霧の表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"HUDの表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"大型チャットコンソールの表示を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"観測記録の表示を切り替えるキー。開発に使用されます。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"無制限の視野を切り替えるキー。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"ズーム可能なときに使用するキーです。\n"
+"参照 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
-msgstr "マップ生成名"
+msgid "Keyboard and Mouse"
+msgstr "キーボードとマウス"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
-msgstr ""
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr "10秒あたりにXメッセージ以上送信したプレイヤーをキックします。"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
-msgstr ""
+msgid "Lake steepness"
+msgstr "湖の険しさ"
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Lake threshold"
+msgstr "湖のしきい値"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr "マップ生成のデバグ"
+msgid "Language"
+msgstr "言語"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
-msgstr "マップ生成フラグ"
+msgid "Large cave depth"
+msgstr "大きな洞窟の深さ"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
-msgstr "マップ生成フラグ"
+msgid "Large cave maximum number"
+msgstr "大きな洞窟の最大数"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "マップ生成フラグ"
+msgid "Large cave minimum number"
+msgstr "大きな洞窟の最小数"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large cave proportion flooded"
+msgstr "大きな洞窟の浸水割合"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "大型チャットコンソールキー"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "葉のスタイル"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr "マップ生成フラグ"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+"葉のスタイル:\n"
+"- Fancy: すべての面が見える\n"
+"- Simple: special_tiles が定義されている場合は外側の面のみ\n"
+"- Opaque: 透明性を無効化"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
-msgstr "マップ生成フラグ"
+msgid "Left key"
+msgstr "左キー"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
+"サーバーが時を刻む間隔とオブジェクトが通常ネットワーク上で更新される間隔を\n"
+"秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"液体波の長さ。\n"
+"揺れる液体 を有効にする必要があります。"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
-msgstr "視差遮蔽マッピング"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr "アクティブブロックモディファイヤー (ABM) "
+"実行サイクル間の時間の長さを秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
-msgstr "マップ生成フラグ"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr "ノードタイマー実行サイクル間の時間の長さを秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
-msgstr ""
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr "アクティブなブロック管理サイクル間の時間の長さを秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
+"debug.txt に書き込まれるログのレベル:\n"
+"- <nothing> (ログなし)\n"
+"- none (レベルがないメッセージ)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
-msgstr "マップ生成フラグ"
+msgid "Light curve boost"
+msgstr "光度曲線ブースト"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "マップ生成フラグ"
+msgid "Light curve boost center"
+msgstr "光度曲線ブーストの中心"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
-msgstr ""
+msgid "Light curve boost spread"
+msgstr "光度曲線ブーストの広がり"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
-msgstr ""
+msgid "Light curve gamma"
+msgstr "光度曲線のガンマ"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
-msgstr ""
+msgid "Light curve high gradient"
+msgstr "光度曲線の高勾配"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr "マップ生成フラグ"
+msgid "Light curve low gradient"
+msgstr "光度曲線の低勾配"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
-msgstr "視差遮蔽マッピング"
+msgid "Lighting"
+msgstr "光度"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"ノード内の (0, 0, 0) からの6方向すべてにおけるマップ生成の制限。\n"
+"マップ生成の制限内に完全に収まるマップチャンクだけが生成されます。\n"
+"値はワールドごとに保存されます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
+"並列HTTPリクエストの数を制限します。影響:\n"
+"- サーバーが remote_media 設定を使用している場合はメディアの取得。\n"
+"- サーバー一覧のダウンロードとサーバの公開。\n"
+"- メインメニューで実行されたダウンロード (例えば、コンテンツ)。\n"
+"cURLでコンパイルされた場合にのみ効果があります。"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
-msgstr ""
+msgid "Liquid fluidity"
+msgstr "液体の流動性"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
-msgstr ""
+msgid "Liquid fluidity smoothing"
+msgstr "液体流動の滑らかさ"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
-msgstr "マップ生成フラグ"
+msgid "Liquid loop max"
+msgstr "液体ループ最大"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr "マップ生成フラグ"
+msgid "Liquid queue purge time"
+msgstr "液体キューのパージ時間"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "液体中の沈降"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
-msgstr "マップ生成フラグ"
+msgid "Liquid update interval in seconds."
+msgstr "液体の秒単位の更新間隔。"
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
-msgstr ""
+msgid "Liquid update tick"
+msgstr "液体の更新間隔"
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
-msgstr "マップ生成名"
+msgid "Load the game profiler"
+msgstr "ゲーム観測記録の読み込み"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
-msgstr "ワールドタイプ"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+"ゲームの観測記録を読み込んで、ゲームの観測データを収集します。\n"
+"集められた観測記録にアクセスするための /profiler コマンドを提供します。\n"
+"MOD開発者やサーバーオペレーターに役立ちます。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v5 cave width"
-msgstr "ワールドタイプ"
+msgid "Loading Block Modifiers"
+msgstr "ローディングブロックモディファイヤー (LBM)"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
-msgstr ""
+msgid "Lower Y limit of dungeons."
+msgstr "ダンジョンのY値の下限。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Lower Y limit of floatlands."
+msgstr "浮遊大陸の Y の下限。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "メインメニュースクリプト"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr ""
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr "霧と空の色を日中(夜明け/日没)と視線方向に依存させます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "すべての液体を不透明にする"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
-msgstr "ワールドタイプ"
+msgid "Map Compression Level for Disk Storage"
+msgstr "ディスクストレージのマップ圧縮レベル"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
-msgstr ""
+msgid "Map Compression Level for Network Transfer"
+msgstr "ネットワーク転送のためのマップ圧縮レベル"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
-msgstr ""
+msgid "Map directory"
+msgstr "マップディレクトリ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr "マップジェネレータ Carpathian に固有のマップ生成属性。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
+"マップジェネレータ flat に固有のマップ生成属性。\n"
+"時折、湖や丘を平らなワールドに追加することができます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
+"マップジェネレータ fractal に固有のマップ生成属性。\n"
+"'terrain' は非フラクタルな地形の生成を可能にします:\n"
+"海、島そして地下。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
+"マップジェネレータ Valleys に固有のマップ生成属性。\n"
+"'altitude_chill': 高度とともに熱を減らします。\n"
+"'humid_rivers': 川の周辺の湿度を上げます。\n"
+"'vary_river_depth': 有効になっていると低湿度と高熱により川は浅くなり、\n"
+"時には乾いてしまいます。\n"
+"'altitude_dry': 高度とともに湿度を下げます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
-msgstr ""
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr "マップジェネレータ v5 に固有のマップ生成属性。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
+"マップジェネレータ v6 に固有のマップ生成属性。\n"
+"'snowbiomes' フラグは新しい5つのバイオームシステムを有効にします。\n"
+"'snowbiomes' フラグを有効にすると、ジャングルが自動的に有効になり、\n"
+"'jungles' フラグは無視されます。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+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 ""
+"マップジェネレータ v7 に固有のマップ生成属性。\n"
+"'ridges': 川。\n"
+"'floatlands': 空に浮かぶ大陸。\n"
+"'caverns': 地下深くの巨大な洞窟。"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "マップ生成の制限"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "マップ保存間隔"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
-msgstr ""
+msgid "Map shadows update frames"
+msgstr "地図の影の更新フレーム"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock limit"
+msgstr "マップブロック制限"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "マップブロックのメッシュ生成遅延"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
-msgstr "ワールドタイプ"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "メッシュ生成のマップブロックキャッシュサイズ(MB)"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen v7 cave width"
-msgstr "ワールドタイプ"
+msgid "Mapblock unload timeout"
+msgstr "マップブロック破棄タイムアウト"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian"
+msgstr "マップジェネレータ Carpathian"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Carpathian specific flags"
+msgstr "マップジェネレータ Carpathian 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "マップジェネレータ Flat"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Flat specific flags"
+msgstr "マップジェネレータ Flat 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "マップジェネレータ Fractal"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "マップジェネレータ Fractal 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "マップジェネレータ V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V5 specific flags"
+msgstr "マップジェネレータ V5 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "マップジェネレータ V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V6 specific flags"
+msgstr "マップジェネレータ V6 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "マップジェネレータ V7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+msgid "Mapgen V7 specific flags"
+msgstr "マップジェネレータ V7 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+msgid "Mapgen Valleys"
+msgstr "マップジェネレータ Valleys"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen Valleys specific flags"
+msgstr "マップジェネレータ Valleys 固有のフラグ"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen debug"
+msgstr "マップジェネレータのデバッグ"
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr "マップジェネレータ名"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
-msgstr ""
+msgstr "ブロック生成最大距離"
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "ブロック送信最大距離"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
-msgstr ""
+msgstr "ステップあたりの液体の最大処理。"
#: src/settings_translation_file.cpp
msgid "Max. clearobjects extra blocks"
-msgstr ""
+msgstr "最大 clearobjects 追加ブロック"
#: src/settings_translation_file.cpp
msgid "Max. packets per iteration"
-msgstr ""
+msgstr "繰り返しあたりの最大パケット"
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
-msgstr ""
+msgstr "最大FPS"
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
msgstr ""
+"ウィンドウにフォーカスが合っていないとき、またはポーズメニュー表示中の最大"
+"FPS。"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr "影を描画する最大距離。"
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "最大強制読み込みブロック"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
-msgstr ""
+msgstr "ホットバー最大幅"
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
-msgstr ""
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr "マップチャンクあたりの大きな洞窟の乱数の最大値。"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr "マップチャンクあたりの小さな洞窟の乱数の最大値。"
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr "最大の液体抵抗。高速で液体に入る際の減速を制御します。"
+
+#: src/settings_translation_file.cpp
+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."
-msgstr ""
+msgstr "読み込みのためにキューに入れることができる最大ブロック数。"
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"生成されてキューに入れられる最大ブロック数。\n"
+"この制限はプレイヤーごとに適用されます。"
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
+"ファイルから読み込まれてキューに入れられる最大ブロック数。\n"
+"この制限はプレイヤーごとに適用されます。"
#: src/settings_translation_file.cpp
-msgid "Maximum number of forceloaded mapblocks."
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"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."
+msgstr "強制読み込みマップブロックの最大数。"
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of mapblocks for client to be kept in memory.\n"
"Set to -1 for unlimited amount."
msgstr ""
+"クライアントがメモリに保持する最大マップブロック数。\n"
+"無制限の金額の場合は -1 に設定します。"
#: src/settings_translation_file.cpp
msgid ""
@@ -3426,126 +5750,203 @@ msgid ""
"try reducing it, but don't reduce it to a number below double of targeted\n"
"client number."
msgstr ""
+"接続速度が遅い場合は、送信ステップごとに送信される最大パケット数を\n"
+"減らしてみてください。ただし、対象のクライアント数の2倍未満に減らさ\n"
+"ないでください。"
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
-msgstr ""
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "同時に接続できるプレーヤーの最大数。"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr "表示する最近のチャットメッセージの最大数"
#: src/settings_translation_file.cpp
msgid "Maximum number of statically stored objects in a block."
-msgstr ""
+msgstr "ブロック内に静的に格納されたオブジェクトの最大数。"
#: src/settings_translation_file.cpp
msgid "Maximum objects per block"
-msgstr ""
+msgstr "ブロックあたりの最大オブジェクト"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
+"ホットバーに使用される現在のウィンドウの最大割合です。\n"
+"ホットバーの左右に表示するものがある場合に便利です。"
#: src/settings_translation_file.cpp
msgid "Maximum simultaneous block sends per client"
-msgstr ""
+msgstr "クライアントあたりの最大同時ブロック送信数"
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
+msgstr "アウトチャットキューの最大サイズ"
+
+#: src/settings_translation_file.cpp
+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."
-msgstr "ファイルダウンロード (例: Modのダウンロード)の最大経過時間。"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr "ファイルダウンロード (MODのダウンロードなど) "
+"にかかる最大時間をミリ秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Maximum users"
-msgstr ""
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr "インタラクティブリクエスト (サーバー一覧の取得など) "
+"にかかる最大時間をミリ秒単位で定めます。"
#: src/settings_translation_file.cpp
-msgid "Menus"
-msgstr "メニュー"
+msgid "Maximum users"
+msgstr "最大ユーザー数"
#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "メッシュキャッシュ"
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "その日のメッセージ"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "接続中のプレイヤーに表示されるその日のメッセージ。"
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
-msgstr ""
+msgstr "選択したオブジェクトを強調表示するために使用される方法。"
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr "チャットに書き込まれる最小限のログレベル。"
#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr ""
+msgstr "ミニマップ"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "ミニマップ表示切替キー"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
-msgstr ""
+msgstr "ミニマップのスキャン高さ"
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
-msgstr ""
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr "マップチャンクあたりの大きな洞窟の乱数の最小値。"
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr "マップチャンクあたりの小さな洞窟の乱数の最小値。"
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "最小テクスチャサイズ"
#: src/settings_translation_file.cpp
msgid "Mipmapping"
msgstr "ミップマッピング"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
-msgstr ""
+msgid "Misc"
+msgstr "その他"
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
-msgstr ""
+msgid "Mod Profiler"
+msgstr "MODの観測記録"
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
-msgstr ""
+msgid "Mod Security"
+msgstr "MODのセキュリティ"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr "MODのチャンネル"
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr "HUD要素のサイズを変更します。"
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "固定幅フォントのパス"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
-msgstr ""
+msgstr "固定幅フォントのサイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr "割り切れる固定幅フォントのサイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr "山の高さノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr "山ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr "山の変動ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "山のゼロレベル"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
-msgstr ""
+msgstr "マウスの感度"
#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
-msgstr ""
+msgstr "マウス感度の倍率。"
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr "泥ノイズ"
#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"落下時の上下の揺れ乗数。\n"
+"例: 0 揺れなし; 1.0 標準の揺れ; 2.0 標準の倍の揺れ。"
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
-msgstr ""
+msgid "Mute key"
+msgstr "消音キー"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr "消音"
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
+"新しいワールドを作成するときに使用されるマップジェネレータの名前。\n"
+"メインメニューでワールドを作成すると、これが上書きされます。\n"
+"現在非常に不安定な状態のマップジェネレータ:\n"
+"- v7の浮遊大陸 (既定では無効)。"
#: src/settings_translation_file.cpp
msgid ""
@@ -3553,33 +5954,47 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"プレイヤーの名前。\n"
+"サーバーを実行している場合、この名前で接続しているクライアントは管理者\n"
+"です。\n"
+"メインメニューから起動すると、これは上書きされます。"
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
-msgstr ""
+msgstr "プレイヤーが参加したときにサーバー一覧に表示されるサーバーの名前。"
#: src/settings_translation_file.cpp
-msgid "Network"
-msgstr "ネットワーク"
+msgid "Near plane"
+msgstr "近くの面"
#: src/settings_translation_file.cpp
msgid ""
"Network port to listen (UDP).\n"
"This value will be overridden when starting from the main menu."
msgstr ""
+"待機するネットワークポート (UDP)。\n"
+"メインメニューから起動すると、この値は上書きされます。"
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr "ネットワーク"
#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "新しいユーザーはこのパスワードを入力する必要があります。"
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr ""
+msgstr "すり抜けモード"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr ""
+msgstr "すり抜けモード切替キー"
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr "ノードとエンティティのハイライト"
#: src/settings_translation_file.cpp
msgid "Node highlighting"
@@ -3587,145 +6002,232 @@ msgstr "ノードをハイライト"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "ノードタイマーの間隔"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "ノイズ"
#: src/settings_translation_file.cpp
-msgid "Noises"
-msgstr ""
+msgid "Number of emerge threads"
+msgstr "出現するスレッド数"
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"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"
+"値 0:\n"
+"- 自動選択。 出現スレッド数は\n"
+"- 'プロセッサー数 - 2'、下限は 1 です。\n"
+"その他の値:\n"
+"- 出現スレッド数を指定します、下限は 1 です。\n"
+"警告: 出現するスレッド数を増やすとエンジンのマップ生成速度が\n"
+"上がりますが、特にシングルプレイヤーや 'on_generated' で\n"
+"Luaコードを実行している場合、他のプロセスと干渉してゲームの\n"
+"パフォーマンスを低下させる可能性があります。\n"
+"多くのユーザーにとって最適な設定は '1' です。"
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
+"/clearobjects によって一度に読み込みできる追加ブロックの数です。\n"
+"これは、SQLiteトランザクションのオーバーヘッドとメモリ消費の間の\n"
+"トレードオフです (大体 4096 = 100MB)。"
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "不透明な液体"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr "既定のフォントの影の不透明度 (透過) は0から255の間です。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
+"ウィンドウのフォーカスが失われたときにポーズメニューを開きます。\n"
+"フォームスペックが開かれているときはポーズメニューを開きません。"
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr "チャットのウェブリンクの色を上書きするオプションです。"
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
+"フォールバックフォントのパス。TrueType フォントでなければなりません。\n"
+"このフォントは特定の言語か、規定のフォントが使用できないときに使用されます。"
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+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 "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"シェーダーディレクトリへのパス。パスが定義されていない場合は、\n"
+"既定の場所が使用されます。"
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
+"テクスチャディレクトリへのパス。すべてのテクスチャは最初にここから\n"
+"検索されます。"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
-msgstr "視差遮蔽マッピング"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+"既定のフォントのパス。TrueType フォントでなければなりません。\n"
+"このフォールバックフォントはフォントが読み込めないときに使用されます。"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr "視差遮蔽マッピング"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+"固定幅フォントのパス。TrueType フォントでなければなりません。\n"
+"このフォントはコンソールや観測記録画面などで使用されます。"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
-msgstr "視差遮蔽マッピング"
+msgid "Pause on lost window focus"
+msgstr "ウィンドウフォーカス喪失時に一時停止"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
-msgstr "視差遮蔽マッピング"
+msgid "Per-player limit of queued blocks load from disk"
+msgstr "ファイルから読み込まれるキューブロックのプレイヤーごとの制限"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
-msgstr "視差遮蔽マッピングモード"
+msgid "Per-player limit of queued blocks to generate"
+msgstr "生成されるキューブロックのプレイヤーごとの制限"
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
-msgstr "視差遮蔽マッピング"
+msgid "Physics"
+msgstr "物理"
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
-msgstr ""
+msgid "Pitch move key"
+msgstr "ピッチ移動モード切替キー"
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Pitch move mode"
+msgstr "ピッチ移動モード"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+msgid "Place key"
+msgstr "設置キー"
#: src/settings_translation_file.cpp
-msgid "Physics"
-msgstr ""
+msgid "Place repetition interval"
+msgstr "設置の繰り返し間隔"
#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"プレイヤーは重力の影響を受けずに飛ぶことができます。\n"
+"これにはサーバー上に \"fly\" 特権が必要です。"
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr "プレイヤ名"
+msgid "Player transfer distance"
+msgstr "プレイヤー転送距離"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "プレイヤー対プレイヤー"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+msgid "Poisson filtering"
+msgstr "ポアソンフィルタリング"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"(UDP) に接続するポート。\n"
+"メインメニューのポート欄はこの設定を上書きすることに注意してください。"
#: src/settings_translation_file.cpp
-msgid "Prevent mods from doing insecure things like running shell commands."
+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がシェルコマンドを実行するような安全でないことをするのを防ぎます。"
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"エンジンのプロファイリングデータを出力する定期的な間隔 (秒)。\n"
+"0 = 無効。開発者にとって便利です。"
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "basic_privs を持っているプレイヤーが付与できる特権"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "観測記録"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
-msgstr ""
+msgstr "観測記録表示切替キー"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr "プロメテウスリスナーのアドレス"
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
+"プロメテウスリスナーのアドレス。\n"
+"Minetest が ENABLE_PROMETHEUS オプションを有効にしてコンパイルされている場"
+"合、\n"
+"そのアドレスのプロメテウスのメトリックスリスナーを有効にします。\n"
+"メトリックスは http://127.0.0.1:30000/metrics で取得可能"
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr "大きな洞窟の液体を含む割合です。"
#: src/settings_translation_file.cpp
msgid ""
@@ -3733,110 +6235,195 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"雲域の半径は64ノードの雲の正方形の数で表されます。\n"
+"26を超える値は、雲域の隅に急な切断を作り出します。"
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "川の周りに谷を作るために地形を上げます。"
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "ランダム入力"
#: src/settings_translation_file.cpp
msgid "Range select key"
msgstr "視野範囲変更"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr "最近のチャットメッセージ"
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "通常フォントのパス"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "リモートメディア"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "リモートポート"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
+"チャットメッセージから色コードを取り除きます\n"
+"これを使用して、プレイヤーが自分のメッセージに色を使用できない\n"
+"ようにします"
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "既定のメインメニューをカスタム化したものに置き換えます。"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Report path"
-msgstr "フォントパス"
+msgstr "レポートパス"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+"サーバーで特定のクライアント側機能へのアクセスを制限します。\n"
+"以下の byteflags を合わせてクライアント側の機能を制限するか、制限なしの\n"
+"場合は 0 に設定します。\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"
+msgstr "尾根の広がりノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr "尾根ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr "尾根水中ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr "尾根の大きさノイズ"
#: src/settings_translation_file.cpp
msgid "Right key"
msgstr "右キー"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
-msgstr ""
+msgid "River channel depth"
+msgstr "河道の深さ"
#: src/settings_translation_file.cpp
-msgid "River Depth"
-msgstr ""
+msgid "River channel width"
+msgstr "河道の幅"
#: src/settings_translation_file.cpp
-msgid "River Noise"
-msgstr ""
+msgid "River depth"
+msgstr "川の深さ"
#: src/settings_translation_file.cpp
-msgid "River Size"
-msgstr ""
+msgid "River noise"
+msgstr "川ノイズ"
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "River size"
+msgstr "川のサイズ"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "川の谷の幅"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
-msgstr ""
+msgstr "ロールバックの記録"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr "ゆるやかな丘の大きさノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr "ゆるやかな丘の広がりノイズ"
#: src/settings_translation_file.cpp
msgid "Round minimap"
-msgstr ""
+msgstr "円形ミニマップ"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr "安全な掘削と設置"
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr "砂浜は np_beach がこの値を超えたときに出現します。"
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
-msgstr ""
+msgstr "クライアントが受信したマップをディスクに保存します。"
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr "ウィンドウサイズ変更時に自動的に保存します。"
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "サーバーから受信したマップ保存"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
"edge pixels when images are scaled by non-integer sizes."
msgstr ""
+"ユーザー指定の値でGUIを拡大縮小します。\n"
+"GUIを拡大縮小するには、最近傍補間アンチエイリアスフィルタを使用します。\n"
+"これは、画像が整数以外のサイズで拡大縮小されるときにいくつかの\n"
+"エッジピクセルをぼかすことを犠牲にして、粗いエッジの一部を滑らかにし、\n"
+"縮小するときにピクセルを混合します。"
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr "画面高"
+msgid "Screen"
+msgstr "画面"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr "画面幅"
+msgid "Screen height"
+msgstr "画面の高さ"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr "スクリーンショット"
+msgid "Screen width"
+msgstr "画面の幅"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "スクリーンショットのフォルダ"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot format"
-msgstr "スクリーンショット"
+msgstr "スクリーンショットのファイル形式"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Screenshot quality"
-msgstr "スクリーンショット"
+msgstr "スクリーンショットの品質"
#: src/settings_translation_file.cpp
msgid ""
@@ -3844,115 +6431,343 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"スクリーンショットの品質です。JPEG形式にのみ使用します。\n"
+"1 は最低品質; 100 は最高品質です。\n"
+"既定の品質には 0 を使用します。"
#: src/settings_translation_file.cpp
-msgid "Security"
-msgstr "セキュリティ"
+msgid "Screenshots"
+msgstr "スクリーンショット"
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
-msgstr ""
+msgid "Seabed noise"
+msgstr "海底ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr "一緒に丘陵/山岳地帯の高さを定義する2Dノイズ4つのうちの2番目です。"
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr "トンネルを定義する2つの3Dノイズのうちの2番目。"
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "参照 https://www.sqlite.org/pragma.html#pragma_synchronous"
#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "選択ボックスの枠線の色 (R,G,B)。"
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr "ノード選択線の色"
+msgstr "選択ボックスの色"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr "ノード選択線の幅"
+msgstr "選択ボックスの幅"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"18種類のフラクタルタイプから1つを選択します。\n"
+"1 = 4D \"Roundy\" マンデルブロ集合。\n"
+"2 = 4D \"Roundy\" ジュリア集合。\n"
+"3 = 4D \"Squarry\" マンデルブロ集合。\n"
+"4 = 4D \"Squarry\" ジュリア集合。\n"
+"5 = 4D \"Mandy Cousin\" マンデルブロ集合。\n"
+"6 = 4D \"Mandy Cousin\" ジュリア集合。\n"
+"7 = 4D \"Variation\" マンデルブロ集合。\n"
+"8 = 4D \"Variation\" ジュリア集合。\n"
+"9 = 3D \"Mandelbrot / Mandelbar\" マンデルブロ集合。\n"
+"10 = 3D \"Mandelbrot / Mandelbar\" ジュリア集合。\n"
+"11 = 3D \"Christmas Tree\" マンデルブロ集合。\n"
+"12 = 3D \"Christmas Tree\" ジュリア集合。\n"
+"13 = 3D \"Mandelbulb\" マンデルブロ集合。\n"
+"14 = 3D \"Mandelbulb\" ジュリア集合。\n"
+"15 = 3D \"Cosine Mandelbulb\" マンデルブロ集合。\n"
+"16 = 3D \"Cosine Mandelbulb\" ジュリア集合。\n"
+"17 = 4D \"Mandelbulb\" マンデルブロ集合。\n"
+"18 = 4D \"Mandelbulb\" ジュリア集合。"
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr "サーバ / シングルプレイヤー"
+msgid "Server"
+msgstr "サーバー"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr "サーバーのゲームプレイ"
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr "サーバーのセキュリティ"
#: src/settings_translation_file.cpp
msgid "Server URL"
-msgstr "サーバURL"
+msgstr "サーバーURL"
#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr "サーバアドレス"
+msgstr "サーバーアドレス"
#: src/settings_translation_file.cpp
msgid "Server description"
-msgstr "サーバポート"
+msgstr "サーバー説明"
#: src/settings_translation_file.cpp
msgid "Server name"
-msgstr "サーバ名"
+msgstr "サーバー名"
#: src/settings_translation_file.cpp
msgid "Server port"
-msgstr "サーバポート"
+msgstr "サーバーポート"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr "サーバー側のオクルージョンカリング"
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr "サーバー/環境のパフォーマンス"
#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr "サーバ一覧URL"
+msgstr "サーバー一覧URL"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr "サーバー一覧とその日のメッセージ"
#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr "サーバ一覧ファイル"
+msgstr "サーバー一覧ファイル"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"言語を設定してください。システム言語を使用するには空のままにします。\n"
+"変更後は再起動が必要です。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr "クライアントから送信されるチャットメッセージの最大長 (文字数) を設定します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+"影の強さのガンマを設定します。\n"
+"ゲーム内の動的な影の強度を調整します。\n"
+"低い値は明るい影を意味し、高い値は暗い影を意味します。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+"やわらかい影の半径サイズを設定します。\n"
+"値が小さいほどシャープな影、大きいほどやわらない影になります。\n"
+"最小値: 1.0、最大値: 15.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+"太陽/月の軌道の傾きを度数で設定します。\n"
+"0 は傾きのない垂直な軌道です。\n"
+"最小値: 0.0、最大値: 60.0"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"有効にすると影を映します。\n"
+"シェーダーが有効である必要があります。"
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"有効にすると葉が揺れます。\n"
+"シェーダーが有効である必要があります。"
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"有効にすると液体が揺れます (水のような)。\n"
+"シェーダーが有効である必要があります。"
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
+"有効にすると草花が揺れます。\n"
+"シェーダーが有効である必要があります。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+"影のテクスチャの品質を 32 ビットに設定します。\n"
+"false の場合、16ビットのテクスチャが使用されます。\n"
+"これは、影がさら不自然になる可能性があります。"
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "シェーダーパス"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"シェーダーは高度な視覚効果を可能にし、ビデオカードによっては\n"
+"パフォーマンスが向上する可能性があります。\n"
+"これはOpenGLビデオバックエンドでのみ機能します。"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr "影フィルタの品質"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr "影を描画するためのノードの最大距離"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr "32ビットの影投影テクスチャ"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr "影投影テクスチャサイズ"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "既定のフォントの影のオフセット (ピクセル単位)。 0の場合、影は描画されません。"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr "影の強さのガンマ"
#: src/settings_translation_file.cpp
msgid "Shape of the minimap. Enabled = round, disabled = square."
-msgstr ""
+msgstr "ミニマップの形状。有効 = 円形、無効 = 四角形。"
#: src/settings_translation_file.cpp
msgid "Show debug info"
-msgstr ""
+msgstr "デバッグ情報を表示"
#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
+msgstr "エンティティの選択ボックス表示"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
msgstr ""
+"エンティティの選択ボックスを表示\n"
+"変更後は再起動が必要です。"
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr "ネームタグの背景を既定で表示"
#: src/settings_translation_file.cpp
msgid "Shutdown message"
-msgstr ""
+msgstr "サーバー終了時のメッセージ"
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
+"マップジェネレータによって生成されたマップチャンクのサイズで、\n"
+"マップブロック (16ノード) で表されます。\n"
+"警告!: この値を5より大きくすることには利点がなく、いくつかの危険が\n"
+"あります。この値を減らすと洞窟とダンジョンの密度が上がります。\n"
+"この値を変更するのは特別な用途のためです。変更しないでおくことを\n"
+"お勧めします。"
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
+"メッシュ生成のマップブロックキャッシュサイズ。これを大きくすると、\n"
+"キャッシュヒット率が上がり、メインスレッドからコピーされるデータが\n"
+"減るため、ジッタが減少します。"
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr "天体の軌道傾斜角"
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr "スライス w"
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "傾斜と堆積物は高さを変えるために連携します。"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr "小さな洞窟の最大数"
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr "小さな洞窟の最小数"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr "バイオームが混合している境界線上の小規模湿度の変動。"
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr "バイオームが混合している境界線上の小規模温度の変動。"
#: src/settings_translation_file.cpp
msgid "Smooth lighting"
@@ -3963,20 +6778,35 @@ msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"周りを見ているときにカメラを滑らかにします。マウススムージングとも\n"
+"呼ばれます。\n"
+"ビデオを録画するときに便利です。"
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
-msgstr ""
+msgstr "映画風モードでのカメラの回転を滑らかにします。無効にする場合は 0。"
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "カメラの回転を滑らかにします。無効にする場合は 0。"
#: src/settings_translation_file.cpp
msgid "Sneak key"
msgstr "スニークキー"
#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "スニーク時の速度"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr "スニーク時の速度、1秒あたりのノード数です。"
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr "やわらない影半径"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr "サウンド"
@@ -3987,34 +6817,136 @@ msgid ""
"(obviously, remote_media should end with a slash).\n"
"Files that are not present will be fetched the usual way."
msgstr ""
+"クライアントがUDPを使用せずにメディアを取得するURLを指定します。\n"
+"$filename はcURLを介して $remote_media$filename からアクセス可能で\n"
+"あるべきです (明らかに、remote_media はスラッシュで終わるべきです)。\n"
+"存在しないファイルは通常の方法で取得されます。"
#: src/settings_translation_file.cpp
-msgid "Static spawnpoint"
+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"
+"MOD またはゲームは、特定の (またはすべての) アイテムのスタック数を\n"
+"明示的に設定する場合があることに注意してください。"
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
-msgstr "ノーマルマップの生成"
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+"影の描画の完全な更新を指定されたフレーム数に広げます。\n"
+"値を大きくすると影が遅延することがあり、値を小さくすると\n"
+"より多くのリソースを消費します。\n"
+"最小値: 1、最大値: 16"
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+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 "Strict protocol checking"
+msgid "Static spawnpoint"
+msgstr "静的なスポーンポイント"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr "険しさノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr "ステップマウンテンの大きさノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr "ステップマウンテンの広がりノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr "3Dモード視差の強さです。"
+
+#: src/settings_translation_file.cpp
+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つの「ブースト」パラメーターは、明るさをブーストする\n"
+"光度曲線の範囲を定義します。"
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strict protocol checking"
+msgstr "厳密なプロトコルチェック"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr "色コードを取り除く"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
+"密な浮遊大陸層に配置されるオプションの水の表面レベル。\n"
+"水は規定で無効になっており、この値が 'mgv7_floatland_ymax' - "
+"'mgv7_floatland_taper'\n"
+"(上部の先細り開始点)より上に設定されている場合にのみ配置されます。\n"
+"***警告、サーバーのパフォーマンスへの潜在的な危険性***:\n"
+"水の配置を有効にする場合、浮遊大陸を密な層にするために\n"
+"'mgv7_floatland_density' を2.0 (または 'mgv7_np_floatland' "
+"に応じて他の必要な値) に\n"
+"設定して、サーバーに集中する極端な水の流れを避け、下の世界表面への大規模な\n"
+"洪水を避けるようにテストする必要があります。"
#: src/settings_translation_file.cpp
msgid "Synchronous SQLite"
-msgstr ""
+msgstr "SQLite同期"
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
-msgstr ""
+msgid "Temperature variation for biomes."
+msgstr "バイオームの温度変動。"
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr "一時的な設定"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "地形別ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "地形基準ノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "地形の高さ"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "地形高いノイズ"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "地形ノイズ"
#: src/settings_translation_file.cpp
msgid ""
@@ -4022,6 +6954,9 @@ msgid ""
"Controls proportion of world area covered by hills.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"丘陵地形ノイズのしきい値。\n"
+"丘陵で覆われた地域の割合を制御します。\n"
+"より大きい割合の場合は0.0に近づけて調整します。"
#: src/settings_translation_file.cpp
msgid ""
@@ -4029,50 +6964,143 @@ msgid ""
"Controls proportion of world area covered by lakes.\n"
"Adjust towards 0.0 for a larger proportion."
msgstr ""
+"湖地形ノイズのしきい値。\n"
+"湖で覆われた地域の割合を制御します。\n"
+"より大きい割合の場合は0.0に近づけて調整します。"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr "地形持続性ノイズ"
#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr "テクスチャパス"
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
msgstr ""
+"影を描画するためのテクスチャサイズです。\n"
+"これは2の累乗でなければなりません。\n"
+"数字が大きいほどより良い影ができますが、負荷も高くなります。"
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"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"
+"このオプションを使用すると特定のノードタイプに適用できます。ただし、\n"
+"これは実験的なものであり、正しく機能しない可能性があります。"
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr "コンテンツリポジトリのURL"
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 filler"
-msgstr ""
+msgid "The depth of dirt or other biome filler node."
+msgstr "土や他のバイオーム充填ノードの深さ。"
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr "観測記録が保存されるワールドパスに対する相対的なファイルパスです。"
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr "使用するジョイスティックの識別子"
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr "タッチスクリーンの操作が始まるピクセル単位の距離。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"揺れる液体の表面の最大高さ。\n"
+"4.0 =波高は2ノードです。\n"
+"0.0 =波はまったく動きません。\n"
+"既定は1.0 (1/2ノード) です。\n"
+"揺れる液体 を有効にする必要があります。"
#: src/settings_translation_file.cpp
msgid "The network interface that the server listens on."
-msgstr ""
+msgstr "サーバがー待機しているネットワークインターフェース。"
#: src/settings_translation_file.cpp
msgid ""
"The privileges that new users automatically get.\n"
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
+"新規ユーザーが自動的に取得する特権。\n"
+"サーバーとMODの構成の完全なリストについては、ゲーム内の /privs を参照\n"
+"してください。"
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"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
msgid ""
-"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
+"レンダリングのバックエンドです。\n"
+"変更後は再起動が必要です。\n"
+"注:Androidでは、不明な場合はOGRES1を使用してください!そうしないとアプリの起"
+"動に失敗することがあります。\n"
+"その他のプラットフォームでは、OpenGLを推奨します。\n"
+"シェーダーは、OpenGL (デスクトップのみ) とOGRES2 (実験的) "
+"でサポートされています。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr "ゲーム内の視錐台を動かすためのジョイスティック軸の感度。"
#: src/settings_translation_file.cpp
msgid ""
@@ -4081,6 +7109,9 @@ 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"
+"低いほど暗く、高いほど明るくなります。設定の有効範囲は 0.25~4.0 です。\n"
+"値が範囲外の場合は、最も近い有効な値に設定されます。"
#: src/settings_translation_file.cpp
msgid ""
@@ -4088,44 +7119,72 @@ 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"
+"処理能力を超えて拡張できる時間(秒単位)。値 0 は機能を無効にします。"
+
+#: src/settings_translation_file.cpp
+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 ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
+"ジョイスティックのボタンの組み合わせを押したときに\n"
+"繰り返されるイベントの秒単位の間隔。"
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
-msgstr ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr "設置ボタンを押したままノードの設置を繰り返す秒単位の間隔。"
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
-msgstr ""
+msgid "The type of joystick"
+msgstr "ジョイスティックの種類"
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
+"'altitude_chill' が有効な場合、温度が20低下する垂直距離。同様に\n"
+"'altitude_dry' が有効な場合、湿度が20低下する垂直距離。"
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr "一緒に丘陵/山岳地帯の高さを定義する2Dノイズ4つのうちの3番目です。"
#: src/settings_translation_file.cpp
msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
+"アイテムエンティティ (落下したアイテム) が存在できる秒単位の時間。\n"
+"-1 に設定すると、機能は無効になります。"
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr "新しいワールドが開始される時刻。ミリ時間単位 (0〜23999)。"
#: src/settings_translation_file.cpp
msgid "Time send interval"
-msgstr ""
+msgstr "時刻送信間隔"
#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "時間の速さ"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
-msgstr ""
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr "クライアントがメモリから未使用のマップデータを削除するためのタイムアウト "
+"(秒単位)。"
#: src/settings_translation_file.cpp
msgid ""
@@ -4134,127 +7193,245 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
+"ラグを減らすために、プレーヤーが何かを設置しているときブロック転送は\n"
+"遅くなります。\n"
+"これはノードを設置または破壊した後にどれくらい遅くなるかを決定します。"
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr ""
+msgstr "視点変更キー"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
-msgstr ""
+msgstr "ツールチップの遅延"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "タッチスクリーンのしきい値"
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr "タッチスクリーン"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr "パフォーマンスのためのトレードオフ"
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr "透明度の並べ替え距離"
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr "木のノイズ"
#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
-msgstr "トリリニアフィルタリング"
+msgstr "トライリニアフィルタリング"
#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"True = 256\n"
+"False = 128\n"
+"より遅いマシンでミニマップを滑らかにするために使用できます。"
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "信頼するMOD"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "ゲームに参加タブで表示されるサーバー一覧へのURL。"
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "アンダーサンプリング"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"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"
-msgstr ""
+msgstr "無制限のプレーヤー転送距離"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
-msgstr ""
+msgstr "未使用のサーバーデータを破棄"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr "ダンジョンのY値の上限。"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr "浮遊大陸の Y の上限。"
#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
-msgstr ""
+msgstr "平らではなく立体な雲を使用します。"
#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+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 "Use key"
-msgstr "使用キー"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+"ミップマッピングを使用してテクスチャを拡大縮小します。特に高解像度の\n"
+"テクスチャパックを使用する場合は、パフォーマンスがわずかに向上する\n"
+"可能性があります。ガンマ補正縮小はサポートされていません。"
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"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."
-msgstr ""
+msgstr "テクスチャを拡大縮小する場合はトライリニアフィルタリングを使用します。"
#: src/settings_translation_file.cpp
-msgid "V-Sync"
-msgstr ""
+msgid "User Interfaces"
+msgstr "ユーザーインターフェース"
#: src/settings_translation_file.cpp
msgid "VBO"
msgstr "VBO"
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
-msgstr ""
+msgid "VSync"
+msgstr "VSYNC"
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
-msgstr ""
+msgid "Valley depth"
+msgstr "谷の深さ"
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
-msgstr ""
+msgid "Valley fill"
+msgstr "渓谷堆積物"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "Valley プロファイル"
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr "谷の傾斜"
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of biome filler depth."
+msgstr "バイオーム充填深さの変動。"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr "最大の山の高さ変動 (ノード単位)。"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+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 "バイオーム表面ノードの深さを変えます。"
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
+"地形の粗さを変えます。\n"
+"terrain_base および terrain_alt ノイズの 'persistence' 値を定義します。"
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr "崖の険しさが異なります。"
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr "垂直方向の上る速度、1秒あたりのノード数です。"
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
-msgstr ""
+msgstr "垂直スクリーン同期。"
#: src/settings_translation_file.cpp
msgid "Video driver"
msgstr "ビデオドライバ"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "移動時の上下の揺れ係数"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
+msgid "View distance in nodes."
+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 "ズーム眺望キー"
#: src/settings_translation_file.cpp
msgid "Viewing range"
-msgstr ""
+msgstr "視野"
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr "バーチャルパッドで Aux1 ボタン動作"
#: src/settings_translation_file.cpp
msgid "Volume"
@@ -4262,19 +7439,37 @@ msgstr "音量"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+"すべての音の音量。\n"
+"サウンド システムを有効にする必要があります。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"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."
+msgstr "歩行と飛行速度、1秒あたりのノード数です。"
#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr "歩く速度"
#: src/settings_translation_file.cpp
-msgid "Water Features"
-msgstr "テクスチャを設定中..."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr "高速移動モード中の歩行と飛行と上る速度、1秒あたりのノード数です。"
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4293,24 +7488,28 @@ msgid "Waving leaves"
msgstr "揺れる葉"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr "揺れる草花"
+msgid "Waving liquids"
+msgstr "揺れる液体"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr "揺れる水"
+msgid "Waving liquids wave height"
+msgstr "揺れる液体の波の高さ"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr "水の揺れる高さ"
+msgid "Waving liquids wave speed"
+msgstr "揺れる液体の波の速度"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr "水の揺れる丈"
+msgid "Waving liquids wavelength"
+msgstr "揺れる液体の波長"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr "水の揺れる速度"
+msgid "Waving plants"
+msgstr "揺れる草花"
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr "ウェブリンクの色"
#: src/settings_translation_file.cpp
msgid ""
@@ -4318,6 +7517,10 @@ 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 が有効な場合、すべてのGUIイメージはソフトウェアで\n"
+"フィルタ処理される必要がありますが、いくつかのイメージは直接\n"
+"ハードウェアで生成されます(例えば、インベントリ内のノードのための\n"
+"テクスチャへのレンダリング)。"
#: src/settings_translation_file.cpp
msgid ""
@@ -4326,55 +7529,55 @@ 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 が有効な場合、拡大縮小のためにそれらの\n"
+"イメージをハードウェアからソフトウェアにコピーします。 無効な場合、\n"
+"ハードウェアからのテクスチャのダウンロードを適切にサポートしていない\n"
+"ビデオドライバのときは、古い拡大縮小方法に戻ります。"
#: src/settings_translation_file.cpp
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-"どこでマップ生成を停止するかの設定です。\n"
-"注意:\n"
-"- 最大で31000です(これ以上に設定しても効果はありません)。\n"
-"- マップ生成は80x80x80ノードのグループで動作します (5x5x5マップブロッ"
-"ク)。\n"
-"- このグループは原点から-32、-32ノードのオフセットがあります。\n"
-"- グループはmap_generation_limit内で生成されたものに限ります。"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+"バイリニア/トライリニア/異方性フィルタを使用すると、低解像度の\n"
+"テクスチャがぼやける可能性があるため、鮮明なピクセルを保持するために\n"
+"最近傍補間を使用して自動的にそれらを拡大します。これは拡大されたテクスチャ"
+"の\n"
+"ための最小テクスチャサイズを設定します。より高い値はよりシャープに見えます"
+"が、\n"
+"より多くのメモリを必要とします。2の累乗が推奨されます。この設定は、\n"
+"バイリニア/トライリニア/異方性フィルタリングが有効の場合にのみ適用されま"
+"す。\n"
+"これは整列テクスチャの自動スケーリング用の基準ノードテクスチャサイズと\n"
+"しても使用されます。"
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
-"Freetypeフォントを利用するかどうかの設定です。Freetypeをサポートするビルドで"
-"ある必要があります。"
+"ネームタグの背景を既定で表示するかどうかです。\n"
+"MODで背景を設定することもできます。"
#: src/settings_translation_file.cpp
msgid "Whether node texture animations should be desynchronized per mapblock."
msgstr ""
-"ノードのテクスチャのアニメーションをマップブロックごとに非同期にするかどうか"
-"の設定です。"
+"ノードのテクスチャのアニメーションをマップブロックごとに非同期に\n"
+"するかどうかの設定です。"
#: 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 instead設定を利用してください。"
+"プレイヤーが範囲制限なしでクライアントに表示されるかどうかです。\n"
+"非推奨。代わりに設定 player_transfer_distance を使用してください。"
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
@@ -4385,8 +7588,10 @@ msgid ""
"Whether to ask clients to reconnect after a (Lua) crash.\n"
"Set this to true if your server is set up to restart automatically."
msgstr ""
-"(Luaが)クラッシュした際にクライアントに再接続を要求するかどうかの設定です。\n"
-"サーバが自動で再起動されるように設定されているならばtrueに設定してください。"
+"(Luaが)クラッシュした際にクライアントに再接続を要求するかどうかの\n"
+"設定です。\n"
+"サーバーが自動で再起動されるように設定されているならば true に設定\n"
+"してください。"
#: src/settings_translation_file.cpp
msgid "Whether to fog out the end of the visible area."
@@ -4394,104 +7599,625 @@ msgstr "可視領域の端に霧を表示するかどうかの設定です。"
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
-"クライアントのデバッグ情報を表示するかどうかの設定です(F5を押すのと同じ効"
-"果)。"
+"音をミュートするかどうか。サウンドシステムが無効になっていない限り\n"
+"(enable_sound = false)、いつでもミュートを解除できます。\n"
+"ゲーム内ではミュートキーを使用するかポーズメニューを使用して、\n"
+"ミュート状態を切り替えることができます。"
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+"技術名を表示するかどうか。\n"
+"コンテンツとMOD選択メニューのMODとテクスチャパック、および\n"
+"すべての設定の設定名に影響します。\n"
+"「すべての設定」メニューのチェックボックスで制御されます。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
+"クライアントのデバッグ情報を表示するかどうかの設定です\n"
+"(F5を押すのと同じ効果)。"
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
-msgstr "ウィンドウ幅の初期値。"
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "初期ウィンドウサイズの幅。フルスクリーンモードでは無視されます。"
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
-msgstr "ノードを選択した際に表示される線の幅です。"
+msgid "Width of the selection box lines around nodes."
+msgstr "ノードを囲む選択ボックスの枠線の幅。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+"Windowsのみ: Minetestと一緒にバックグランドでコマンドプロンプトを\n"
+"起動します。\n"
+"debug.txt (既定の名前) と同じ情報を含んでいます。"
#: src/settings_translation_file.cpp
msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
-"ワールドを保存するディレクトリです(全てのワールドはここに保存されます)。\n"
+"ワールドを保存するディレクトリです(全てのワールドはここに保存\n"
+"されます)。\n"
"メインメニューから開始する場合必要ありません。"
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "World start time"
+msgstr "ワールド開始時刻"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+"整列テクスチャは、いくつかのノードにまたがるように拡大縮小する\n"
+"ことができます。ただし、特別に設計されたテクスチャパックを使用\n"
+"している場合は特に、サーバーから必要なスケールが送信されない\n"
+"ことがあります。\n"
+"このオプションでは、クライアントはテクスチャサイズに基づいて\n"
+"自動的にスケールを決定しようとします。\n"
+"texture_min_size も参照してください。\n"
+"警告: このオプションは実験的なものです!"
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+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 "山の密度勾配ゼロのY。山を垂直方向に移動するために使用。"
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "大きな洞窟のY高さ上限。"
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr "大きな洞窟が最大サイズに拡大するYの距離。"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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レベル。"
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Y of upper limit of large pseudorandom caves."
-msgstr "大きい擬似ランダム洞窟の高さ(Y)の上限。"
+msgid "Y-level of cavern upper limit."
+msgstr "大きな洞窟の上限Yレベル。"
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr "崖を作る高い地形のYレベル。"
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr "低い地形と海底のYレベル。"
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr "海底のYレベル。"
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr "cURL"
#: src/settings_translation_file.cpp
msgid "cURL file download timeout"
msgstr "cURLファイルダウンロードタイムアウト"
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
-msgstr "cURLパラレル制限"
+msgid "cURL interactive timeout"
+msgstr "cURL インタラクティブタイムアウト"
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
-msgstr "cURLタイムアウト"
+msgid "cURL parallel limit"
+msgstr "cURL並行処理制限"
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- クリエイティブモード: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- ダメージ: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = 斜面情報付きの視差遮蔽マッピング(高速)。\n"
+#~ "1 = リリーフマッピング(正確だが低速)。"
+
+#~ msgid "Address / Port"
+#~ msgstr "アドレス / ポート"
+
+#~ msgid ""
+#~ "Adjust the gamma encoding for the light tables. Higher numbers are "
+#~ "brighter.\n"
+#~ "This setting is for the client only and is ignored by the server."
+#~ msgstr ""
+#~ "ライトテーブルのガンマ補正を調整します。数値が大きいほど明るくなります。\n"
+#~ "この設定はクライアント専用であり、サーバでは無視されます。"
+
+#~ msgid "Alters how mountain-type floatlands taper above and below midpoint."
+#~ msgstr "山型浮遊大陸が中間点の上下でどのように先細くなるかを変更します。"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "シングルプレイヤーのワールドをリセットしてよろしいですか?"
+
+#~ msgid "Back"
+#~ msgstr "戻る"
+
+#~ msgid "Basic"
+#~ msgstr "基本"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "フルスクリーンモードでのビット数(色深度)。"
+
+#~ msgid "Bump Mapping"
+#~ msgstr "バンプマッピング"
+
+#~ msgid "Bumpmapping"
+#~ msgstr "バンプマッピング"
+
+#~ msgid "Center of light curve mid-boost."
+#~ 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 ""
+#~ "メインメニューUIを変更:\n"
+#~ "- Full: 複数のシングルプレイヤーのワールド、ゲームの選択、\n"
+#~ "テクスチャパックの選択、その他。\n"
+#~ "- Simple: 1つのシングルプレイヤーのワールド、ゲームや\n"
+#~ "テクスチャパックの選択はありません。小さな画面で必要かもしれません。"
+
+#~ msgid "Config mods"
+#~ msgstr "Mod設定"
+
+#~ msgid "Configure"
+#~ msgstr "設定"
+
+#~ msgid "Connect"
+#~ msgstr "接続"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "液体中の沈降速度を制御します。"
+
+#~ msgid ""
+#~ "Controls the density of mountain-type floatlands.\n"
+#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value."
+#~ msgstr ""
+#~ "山型浮遊大陸の密度を制御します。\n"
+#~ "ノイズのオフセットは、'mgv7_np_mountain' ノイズ値に追加されます。"
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr "トンネルの幅を制御、小さい方の値ほど広いトンネルを生成します。"
+
+#~ msgid "Credits"
+#~ msgstr "クレジット"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "照準線の色 (R,G,B)。"
+
+#~ msgid "Damage enabled"
+#~ msgstr "ダメージ有効"
+
+#~ msgid "Darkness sharpness"
+#~ msgstr "暗さの鋭さ"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "cURLの既定のタイムアウト、ミリ秒で定めます。\n"
+#~ "cURLでコンパイルされた場合にのみ効果があります。"
+
+#~ msgid ""
+#~ "Defines areas of floatland smooth terrain.\n"
+#~ "Smooth floatlands occur when noise > 0."
+#~ msgstr ""
+#~ "浮遊大陸の滑らかな地形の地域を定義します。\n"
+#~ "ノイズが 0 より大きいとき、滑らかな浮遊大陸になります。"
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "テクスチャのサンプリング手順を定義します。\n"
+#~ "値が大きいほど、法線マップが滑らかになります。"
+
+#~ msgid "Del. Favorite"
+#~ msgstr "お気に入り削除"
+
+#~ msgid ""
+#~ "Deprecated, define and locate cave liquids using biome definitions "
+#~ "instead.\n"
+#~ "Y of upper limit of lava in large caves."
+#~ msgstr ""
+#~ "廃止予定、代わりにバイオーム定義を使用して洞窟の液体を定義および特定しま"
+#~ "す。\n"
+#~ "大きな洞窟内の溶岩のY高さ上限。"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr ""
+#~ "Minetest Game などのゲームを minetest.net からダウンロードしてください"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "minetest.netからダウンロードしてください"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1をインストールしています、お待ちください..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "VBOを有効化"
+
+#~ msgid "Enable register confirmation"
+#~ msgstr "登録確認を有効化"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "テクスチャのバンプマッピングを有効にします。法線マップは\n"
+#~ "テクスチャパックによって提供されるかまたは自動生成される必要があります。\n"
+#~ "シェーダーが有効である必要があります。"
+
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "フィルム調トーンマッピング有効にする"
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "法線マップ生成を臨機応変に有効にします(エンボス効果)。\n"
+#~ "バンプマッピングが有効である必要があります。"
+
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "視差遮蔽マッピングを有効にします。\n"
+#~ "シェーダーが有効である必要があります。"
+
+#~ msgid "Enter "
+#~ msgstr "エンター "
+
+#~ msgid ""
+#~ "Experimental option, might cause visible spaces between blocks\n"
+#~ "when set to higher number than 0."
+#~ msgstr ""
+#~ "実験的なオプションで、0 より大きい数値に設定すると、ブロック間に\n"
+#~ "目に見えるスペースが生じる可能性があります。"
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "ポーズメニューでのFPS"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "フォールバックフォントの影"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "フォールバックフォントの影の透過"
+
+#~ msgid "Fallback font size"
+#~ msgstr "フォールバックフォントの大きさ"
+
+#~ msgid "Filtering"
+#~ msgstr "フィルタリング"
+
+#~ msgid "Floatland base height noise"
+#~ msgstr "浮遊大陸の基準高さノイズ"
+
+#~ msgid "Floatland mountain height"
+#~ msgstr "浮遊大陸の山の高さ"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "フォントの影の透過 (不透明、0~255の間)。"
+
+#~ msgid "Font size of the fallback font in point (pt)."
+#~ msgstr "フォールバックフォントのフォント サイズ (pt)。"
+
+#~ msgid "FreeType fonts"
+#~ msgstr "フリータイプフォント"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "フルスクリーンのBPP"
+
+#~ msgid "Game"
+#~ msgstr "ゲーム"
+
+#~ msgid "Gamma"
+#~ msgstr "ガンマ"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "法線マップの生成"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "法線マップの生成"
+
+#~ msgid "HUD scale factor"
+#~ msgstr "HUDの倍率"
+
+#~ msgid "High-precision FPU"
+#~ msgstr "高精度FPU"
+
+#~ msgid "IPv6 support."
+#~ msgstr "IPv6 サポート。"
+
+#~ msgid "In-Game"
+#~ msgstr "ゲーム"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "インストール: ファイル: \"$1\""
+
+#~ msgid "Instrumentation"
+#~ msgstr "計測器"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "キー設定です。 (このメニューで失敗する場合は minetest.conf から該当する設"
+#~ "定を削除してください)"
+
+#~ msgid "Lava depth"
+#~ msgstr "溶岩の深さ"
+
+#~ msgid "Lightness sharpness"
+#~ msgstr "明るさの鋭さ"
+
+#~ msgid "Limit of emerge queues on disk"
+#~ msgstr "ディスク上に出現するキューの制限"
+
+#~ msgid "Main"
+#~ msgstr "メイン"
+
+#~ msgid "Main menu style"
+#~ msgstr "メインメニューのスタイル"
+
+#~ msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+#~ msgstr ""
+#~ "DirectX を LuaJIT と連携させます。問題がある場合は無効にしてください。"
+
+#~ msgid "Menus"
+#~ msgstr "メニュー"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "ミニマップ レーダーモード、ズーム x2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "ミニマップ レーダーモード、ズーム x4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "ミニマップ 表面モード、ズーム x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "ミニマップ 表面モード、ズーム x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "名前 / パスワード"
+
+#~ msgid "Name/Password"
+#~ msgstr "名前 / パスワード"
+
+#~ msgid "No"
+#~ msgstr "いいえ"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "法線マップのサンプリング"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "法線マップの強さ"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "視差遮蔽反復の回数です。"
+
+#~ msgid "Ok"
+#~ msgstr "決定"
+
+#~ msgid ""
+#~ "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and "
+#~ "255."
+#~ msgstr "フォールバックフォントの影の不透明度(透過)は0から255の間です。"
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "視差遮蔽効果の全体的バイアス、通常 スケール/2 です。"
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "視差遮蔽効果の全体的なスケールです。"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "視差遮蔽"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "視差遮蔽"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "視差遮蔽バイアス"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "視差遮蔽反復"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "視差遮蔽モード"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "視差遮蔽スケール"
+
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "視差遮蔽強度"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "TrueTypeフォントまたはビットマップへのパス。"
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "スクリーンショットを保存するパス。"
+
+#~ msgid "Player name"
+#~ msgstr "プレイヤー名"
+
+#~ msgid "Profiling"
+#~ msgstr "プロファイリング"
+
+#~ msgid "Projecting dungeons"
+#~ msgstr "突出するダンジョン"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP有効"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "ワールドをリセット"
+
+#~ msgid "Select Package File:"
+#~ msgstr "パッケージファイルを選択:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "サーバー / シングルプレイヤー"
+
+#~ msgid ""
+#~ "Set the shadow update time.\n"
+#~ "Lower value means shadows and map updates faster, but it consume more "
+#~ "resources.\n"
+#~ "Minimun value 0.001 seconds max value 0.2 seconds"
+#~ msgstr ""
+#~ "影の更新時間を設定します。\n"
+#~ "値が小さいほど影やマップの更新が速くなりますが、リソースを多く消費しま"
+#~ "す。\n"
+#~ "最小値0.001秒、最大値0.2秒"
+
+#~ msgid "Shadow limit"
+#~ msgstr "影の制限"
+
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr ""
+#~ "フォールバックフォントの影のオフセット(ピクセル単位)。 \n"
+#~ "0の場合、影は描画されません。"
+
+#~ msgid "Special"
+#~ msgstr "スペシャル"
-#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr "テクスチャ読み込み中..."
+#~ msgid "Special key"
+#~ msgstr "スペシャルキー"
-#~ msgid "Scaling factor applied to menu elements: "
-#~ msgstr "メニューの大きさとして設定されている数値: "
+#~ msgid "Start Singleplayer"
+#~ msgstr "シングルプレイスタート"
-#~ msgid "Touch free target"
-#~ msgstr "タッチ位置を自由にする"
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "生成された法線マップの強さです。"
-#~ msgid " KB/s"
-#~ msgstr " KB/秒"
+#~ msgid "Strength of light curve mid-boost."
+#~ msgstr "光度曲線ミッドブーストの強さ。"
-#~ msgid " MB/s"
-#~ msgstr " MB/秒"
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "このフォントは特定の言語で使用されます。"
-#~ msgid "Restart minetest for driver change to take effect"
-#~ msgstr "ドライバーを変更するためMinetestを再起動します"
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr ""
+#~ "シェーダーを有効にするにはOpenGLのドライバを使用する必要があります。"
-#~ msgid "Rendering:"
-#~ msgstr "レンダリング:"
+#~ msgid "Toggle Cinematic"
+#~ msgstr "映画風モード切替"
-#~ msgid "If enabled, "
-#~ msgstr "有効化の場合 "
+#~ msgid ""
+#~ "Typical maximum height, above and below midpoint, of floatland mountains."
+#~ msgstr "浮遊大陸の山の中間点の上と下の典型的な最大高さ。"
-#~ msgid "If disabled "
-#~ msgstr "無効化の場合 "
+#~ msgid "Variation of hill height and lake depth on floatland smooth terrain."
+#~ msgstr "浮遊大陸の滑らかな地形における丘の高さと湖の深さの変動。"
-#~ msgid "No!!!"
-#~ msgstr "いいえ!!!"
+#~ msgid "View"
+#~ msgstr "見る"
-#~ msgid "Generate Normalmaps"
-#~ msgstr "ノーマルマップの生成"
+#~ msgid "Waving Water"
+#~ msgstr "揺れる水"
-#~ msgid "Public Serverlist"
-#~ msgstr "公開サーバ一覧"
+#~ msgid "Waving water"
+#~ msgstr "揺れる水"
-#~ msgid "No of course not!"
-#~ msgstr "いいえ!"
+#~ 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 ""
+#~ "フリータイプフォントを使用するかどうかは、フリータイプをサポートして\n"
+#~ "コンパイルされている必要があります。 \n"
+#~ "無効にした場合、代わりにビットマップおよび XML ベクターフォントが使用され"
+#~ "ます。"
-#~ msgid "Useful for mod developers."
-#~ msgstr "Mod開発に便利。"
+#~ msgid "Whether dungeons occasionally project from the terrain."
+#~ msgstr "ダンジョンが時折地形から突出するかどうか。"
-#, fuzzy
-#~ msgid "Detailed mod profiling"
-#~ msgstr "詳細なModのプロファイル化"
+#~ msgid "Y of upper limit of lava in large caves."
+#~ msgstr "大きな洞窟内の溶岩のY高さ上限。"
-#, fuzzy
-#~ msgid "Detailed mod profile data. Useful for mod developers."
-#~ msgstr "詳細なModのプロファイルデータです。Mod開発者に便利です。"
+#~ msgid "Y-level of floatland midpoint and lake surface."
+#~ msgstr "浮遊大陸の中間点と湖面のYレベル。"
+
+#~ msgid "Y-level to which floatland shadows extend."
+#~ msgstr "浮遊大陸の影が広がるYレベル。"
+
+#~ msgid "Yes"
+#~ msgstr "はい"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "あなたはこのサーバ ーに名前 \"%s\" ではじめて参加しようとしています。\n"
+#~ "続行する場合、あなたの情報が新しいアカウントとしてこのサーバーに作成されま"
+#~ "す。\n"
+#~ "あなたのパスワードを再入力してから '参加登録' をクリックしてアカウント作成"
+#~ "するか、\n"
+#~ "キャンセルをクリックして中断してください。"
+
+#~ msgid "You died."
+#~ msgstr "あなたは死にました。"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po
index 0f91987e3..1f5f4e500 100644
--- a/po/jbo/minetest.po
+++ b/po/jbo/minetest.po
@@ -1,15 +1,10 @@
-# Language jbo translations for minetest package.
-# Copyright (C) 2015 THE minetest'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the minetest package.
-# Automatically generated, 2015.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Lojban (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2016-05-08 17:39+0000\n"
-"Last-Translator: senpi <saikos@openmailbox.org>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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"
@@ -17,52 +12,156 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.7-dev\n"
+"X-Generator: Weblate 4.5-dev\n"
-#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "minde"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "sisti tu'a le se kelci"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "minde"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "nonselkansa"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "nonselkansa"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
msgstr ""
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "tolcanci"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr ".i do morsi"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "minde"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "minde"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "fitytu'i"
+
#: builtin/fstk/ui.lua
-msgid "An error occured:"
-msgstr "lo selsrera cu pu fasnu:"
+msgid "<none available>"
+msgstr ""
#: builtin/fstk/ui.lua
#, fuzzy
-msgid "Main menu"
-msgstr "lo ralju"
+msgid "An error occurred in a Lua script:"
+msgstr ""
+".i da poi me la .luuas. ku samtci zo'u la'e di'e nabmi fi tu'a da noi la'a "
+"cu'i se samtcise'a"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "je'e"
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr ".i da nabmi"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "ralju liste"
#: builtin/fstk/ui.lua
-#, fuzzy
msgid "Reconnect"
-msgstr "samjongau"
+msgstr "za'u re'u samjo'e"
#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
-msgstr "le samse'u cu pu cpedu lo nu samjongau"
+msgstr ".i le samtcise'u cu cpedu pa nu za'u re'u co'a samjo'e"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr ".i ca'o samymo'i"
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr ".i ko cuxna fi lu'i le munje"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
msgid "Protocol version mismatch. "
-msgstr "le ve judrnporte favatcini na mapti"
+msgstr "le ve judrnporte favatcini na mapti "
#: builtin/mainmenu/common.lua
+#, fuzzy
msgid "Server enforces protocol version $1. "
-msgstr "le samci'ejudri cu jitro lo du'u ve judrnporte favytcini li $1"
+msgstr "le samci'ejudri cu jitro lo du'u ve judrnporte favytcini li $1 "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
#: builtin/mainmenu/common.lua
@@ -73,142 +172,505 @@ msgstr ""
msgid "We support protocol versions between version $1 and $2."
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "fitytoltu'i"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-#, fuzzy
-msgid "Depends:"
-msgstr "nitcu"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "jai se nitcu"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr ""
+msgid "Disable all"
+msgstr "ro co'e cu ganda"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr ""
+msgid "Disable modpack"
+msgstr "le se samtcise'a bakfu cu ganda"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr ""
+msgstr "ro co'e cu katci"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "le se samtcise'a bakfu cu katci"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
+msgid "Find More Mods"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr ""
+msgid "Mod:"
+msgstr "se samtcise'a"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr ""
+#, fuzzy
+msgid "No (optional) dependencies"
+msgstr "na'e se nitcu"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "to'i no da ve skicu le se kelci toi"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No hard dependencies"
+msgstr ".i nitcu no da"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "to'i no da ve skicu le se samtcise'a bakfu toi"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "No optional dependencies"
+msgstr "na'e se nitcu"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "na'e se nitcu"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
-msgstr "rejgau"
+msgstr "co'a vreji"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
-msgstr ""
+msgstr "munje"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
-msgstr "selpli"
+msgstr "katci"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr ".i ca'o samymo'i"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "se cmima ro bakfu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "xruti fi tu'a le ralju liste"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "cfari fa lo nu kelci"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr ".i ca'o samymo'i"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr ".i da nabmi fi le nu kibycpa la'o zoi. $1 .zoi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "se kelci"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "samtcise'a"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "samtcise'a"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "na'e se nitcu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "se samtcise'a"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ".i na kakne le ka kibycpa pa bakfu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ".i no da ckaji lo se sisku"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Texture packs"
+msgstr "jvinu bakfu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "to'e samtcise'a"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr ".i lo munje me'e la'o gy.$1.gy. cu zasti"
+msgstr ".i zoi zoi. $1 .zoi xa'o cmene pa munje"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "kevzda"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
-msgstr "zbasu"
+msgstr "cupra"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Decorations"
+msgstr "datni"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr ".i la'o zoi. Minimal development test .zoi na'o selpli lo favgau .o'i"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "kevdi'u"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
+msgid "Flat terrain"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
+msgid "Floating landmasses in the sky"
+msgstr "lo tumla cu fulta lo tsani"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Floatlands (experimental)"
+msgstr "fulta tumla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
msgstr ""
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "samtcise'a"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+#, fuzzy
msgid "Mapgen"
+msgstr "te cupra le munje"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "cmana"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr ".i do cuxna no se kelci"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
+msgid "Reduces humidity with altitude"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "rirxe"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr "le munje ke cunso namcu"
+msgstr "cunso namcu"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr ".i .e'unai la'o gy.Minimal Development Test.gy. cu tutci le finti"
+msgid "Smooth transition between biomes"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "World name"
-msgstr "munje cmene"
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+msgid "Very large caverns deep in the underground"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "cmene le munje"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ".i do samtcise'a no se kelci"
+
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr ".i xu do je'u djica lo nu vimcu la'o gy.$1.gy."
+msgstr ".i xu do djica le nu vimcu la'o zoi. $1 .zoi"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "vimcu"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
msgstr ""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
-msgstr ".i xu do djica lo nu vimcu lo munje be me'e zoi gy.$1.gy."
+msgstr ".i xu do djica le nu vimcu la'o zoi. $1 .zoi noi munje"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+#, fuzzy
+msgid "Confirm Password"
+msgstr "le rapli lerpoijaspu"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "lo lerpoijaspu"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr ".i lu'i le re lerpoijaspu na simxu le ka mintu"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
-msgstr "fitytu'i"
+msgstr "mulno"
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr ""
+msgstr "basti fi lo ka cmene le se samtcise'a bakfu"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
+msgstr "to'i no da ve skicu le te tcimi'e toi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -221,288 +683,397 @@ msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
+msgid "Content: Games"
+msgstr "kakne le ka se samtcise'a"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "kakne le ka se samtcise'a"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr "selpli"
+msgstr "ganda"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "binxo"
#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
msgid "Enabled"
-msgstr "selpli"
+msgstr "katci"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
+msgid "Lacunarity"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Octaves"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
+msgid "Please enter a valid integer."
+msgstr ".i ko samci'a da poi drani le ka lerpoi fi pa mulna'u"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr ".i ko samci'a da poi drani fi le ka lerpoi fi pa namcu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "xruti fi le zmiselcu'a"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "sisku"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
+msgid "Select directory"
+msgstr "cuxna fi lu'i le datnyveimei"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "cuxna fi lu'i le datnyvei"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
+msgid "The value must be at least $1."
+msgstr ".i sarcu fa le nu le namcu cu dubjavmau li $1"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr ".i sarcu fa le nu le namcu na zmadu li $1"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
+msgid "X spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
+msgid "Y"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
+msgid "Y spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
+msgid "Z"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
+msgid "Z spread"
msgstr ""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "absvalue"
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 "The value must be lower than $1."
+msgid "defaults"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 to'i katci toi"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "se samtcise'a fi la'o zoi. $1 .zoi"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr ""
+".i da nabmi fi le nu setca la'o zoi. $1 .zoi lu'i ro se datnyveimei be la'o "
+"zoi. $2 .zoi"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Close store"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Install"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "$1 moi le'i papri poi ke'a $1 mei"
-
-#: builtin/mainmenu/store.lua
-msgid "Rating"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "sisku"
-
-#: builtin/mainmenu/store.lua
-#, fuzzy
-msgid "Shortname:"
-msgstr "tordu cmene"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr ".i ca'o samymo'i"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "kalsa"
+#: 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 "
+"lo do te samjo'e"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
+msgstr "liste lu'i ro ca gunka"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "lo finti liste"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "cuxna fi lu'i le datnyveimei"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "liste lu'i ro pu je nai ca gunka"
+
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Content"
+msgstr "kakne le ka se samtcise'a"
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Disable Texture Pack"
+msgstr "le jvinu bakfu cu ganda"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "datni"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "pu mo'u se samtcise'a"
+
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "No dependencies."
+msgstr ".i nitcu no da"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "to'i no da ve skicu le bakfu toi"
-#: builtin/mainmenu/tab_mods.lua
+#: builtin/mainmenu/tab_content.lua
msgid "Rename"
-msgstr ""
+msgstr "basti fi le ka cmene"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "to'e samtcise'a le bakfu"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua
-#, fuzzy
-msgid "Address / Port"
-msgstr "lo samjudri jo'u judrnporte"
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "finti se kelci"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "lo samtciselse'u"
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "pilno lo selxai"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "samjongau"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Game"
+msgstr "cfari fa lo nu kelci"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "le nu finti kelci"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "co'a samtcise'u"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "cnino"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr ".i do no munje cu cupra ja cu cuxna"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "co'a kelci"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "judrnporte"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_local.lua
#, fuzzy
-msgid "Name / Password"
-msgstr "lo cmene .e lo lerpoijaspu"
+msgid "Select Mods"
+msgstr ".i ko cuxna fi lu'i le munje"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr ".i ko cuxna fi lu'i le munje"
-#: builtin/mainmenu/tab_server.lua
-msgid "Bind Address"
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "judrnporte le samtcise'u"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "co'a kelci"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- judri: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "finti se kelci"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Creative Mode"
-msgstr "le nu finti kelci"
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "nelci se tcita"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Enable Damage"
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "lo cmene .e lo lerpoijaspu"
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "co'a kansa fi le ka kelci"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "New"
-msgstr "cnino"
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "No world created or selected!"
-msgstr ".i lo no munje cu puzi zbasu gi'a cuxna"
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ".pin. temci"
-#: builtin/mainmenu/tab_server.lua
-msgid "Port"
-msgstr "lo judrnporte"
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "gubni"
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_online.lua
#, fuzzy
-msgid "Select World:"
-msgstr "cuxna lo munje"
+msgid "Remove favorite"
+msgstr "co'u cmima lu'i ro nelci se tcita"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "lo samtcise'u"
-
-#: builtin/mainmenu/tab_server.lua
-msgid "Server Port"
-msgstr "lo samtcise'u judrnporte"
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "ve skicu le samtcise'u"
-#: builtin/mainmenu/tab_server.lua
-msgid "Start Game"
-msgstr "cfari fa lo nu kelci"
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
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"
@@ -513,29 +1084,23 @@ msgid "8x"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr ""
+msgid "All Settings"
+msgstr "se cmima ro te tcimi'e"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr ".i xu do je'u djica lo nu kraga'igau le do za'e pavykelci munje"
+msgid "Autosave Screen Size"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Bilinear Filter"
-msgstr "lo puvyrelyli'iju'e"
+msgstr "puvyrelyli'iju'e"
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Bump Mapping"
-msgstr "lo puvrmipmepi"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -543,13 +1108,32 @@ msgstr ""
msgid "Connected Glass"
msgstr "lo jorne blaci"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Fancy Leaves"
msgstr "lo tolkli pezli"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
msgid "Mipmap"
msgstr "lo puvrmipmepi"
@@ -558,17 +1142,12 @@ msgid "Mipmap + Aniso. Filter"
msgstr "lo puvrmipmepi .e lo puvytolmanfyju'e"
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "na go'i"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "No Mipmap"
-msgstr "lo puvrmipmepi"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
@@ -580,45 +1159,47 @@ msgstr "lo xutla se gusni"
msgid "Node Outlining"
msgstr "lo xutla se gusni"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Normal Mapping"
-msgstr "lo puvrmipmepi"
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "lo tolkli pezli"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr "lo tolkli djacu"
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
+msgstr "tolkli djacu"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Particles"
-msgstr "lo kantu"
+msgstr "kantu"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr "kraga'igau le za'e pavykelci munje"
+msgid "Screen:"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
-msgstr ""
+msgstr "te tcimi'e"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr "lo ti'orkemsamtci"
+msgstr "ti'orkemsamtci"
#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "ti'orkemsamtci to na kakne toi"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (unavailable)"
+msgstr "ti'orkemsamtci to na kakne toi"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
msgid "Simple Leaves"
msgstr "lo sampu pezli"
@@ -631,23 +1212,26 @@ msgstr "lo xutla se gusni"
msgid "Texturing:"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
#, fuzzy
msgid "Tone Mapping"
msgstr "lo puvrmipmepi"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+msgid "Touch threshold (px):"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Trilinear Filter"
-msgstr "lo puvycibli'iju'e"
+msgstr "puvycibli'iju'e"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
@@ -656,152 +1240,251 @@ msgstr "lo melbi pezli"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Waving Plants"
-msgstr "lo melbi pezli"
+msgid "Waving Liquids"
+msgstr ".i ca'o samymo'i lo me la'o gy.node.gy."
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Waving Water"
+msgid "Waving Plants"
msgstr "lo melbi pezli"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "go'i"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "lo ralju"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "pa kelci"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
msgstr ""
+".i da nabmi fi le nu co'a jorne to la'a cu'i le temci cu dukse le ka clani "
+"toi"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr ""
+msgstr ".i mulno"
-#: src/client.cpp
+#: src/client/client.cpp
+#, fuzzy
msgid "Initializing nodes"
msgstr ".i ca'o samymo'i lo me la'o gy.node.gy."
-#: src/client.cpp
+#: src/client/client.cpp
+#, fuzzy
msgid "Initializing nodes..."
msgstr ".i ca'o samymo'i lo me la'o gy.node.gy."
-#: src/client.cpp
+#: src/client/client.cpp
+#, fuzzy
msgid "Loading textures..."
msgstr ".i ca'o samymo'i le tengu datnyvei"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr ""
#: src/client/clientlauncher.cpp
msgid "Connection error (timed out?)"
msgstr ""
+".i da nabmi fi le nu co'a jorne to la'a cu'i le temci cu dukse le ka clani "
+"toi"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr ""
+".i na cumki fa le nu le se kelci cu jai se facki je cu se samymo'i .i ky. du "
+"la'o zoi."
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
-msgstr ""
+msgstr ".i le se kelci ve skicu vreji na drani"
#: src/client/clientlauncher.cpp
msgid "Main Menu"
-msgstr ""
+msgstr "ralju liste"
#: src/client/clientlauncher.cpp
msgid "No world selected and no address provided. Nothing to do."
-msgstr ""
+msgstr ".i do cuxna no munje .i do ciska no judri .i do zukte no da"
#: src/client/clientlauncher.cpp
msgid "Player name too long."
+msgstr ".i le plicme cu dukse le ka clani"
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ".i ko ckaji le ka da zo'u jdice le du'u da cmene"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
msgstr ""
#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr ""
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "no"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
+"\n"
+".i sarcu fa le nu do cipcta la'o zoi. debug.txt .zoi kei tu'a le tcila"
-#: src/game.cpp
-msgid "Change Keys"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- judri: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- judrnporte: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- gubni: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+#, fuzzy
+msgid "- PvP: "
+msgstr "- kakne le ka simxu le ka xrani: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- cmene le samtcise'u: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr ".i da nabmi"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward disabled"
+msgstr "za'i ca'u muvdu"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "za'i ca'u muvdu"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
-msgstr "gafygau lo lerpoijaspu"
+msgstr "basti fi le ka lerpoijaspu"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode disabled"
+msgstr "le nu finti kelci"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "le nu finti kelci"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "lo samtciselse'u"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Connecting to server..."
-msgstr ".i ca'o troci lo za'i samjo'e lo samse'u"
+msgstr ".i ca'o samjo'e le samse'u"
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr "ranji"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Creating client..."
-msgstr ".i lo samtciselse'u cu se zbasu"
+msgstr ".i ca'o cupra le samtciselse'u"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Creating server..."
-msgstr ".i lo samtcise'u cu se zbasu"
+msgstr ".i ca'o cupra le samtcise'u"
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
-"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
-"- Mouse wheel: select item\n"
-"- T: chat\n"
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -817,502 +1500,862 @@ msgid ""
" --> place single item to slot\n"
msgstr ""
-#: src/game.cpp
-msgid "Exit to Menu"
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr ".i ca'o cupra le samtciselse'u"
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "sisti tu'a le se kelci"
+
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr "tolcfagau"
+msgstr "sisti tu'a le samtci"
-#: src/game.cpp
-#, fuzzy
-msgid "Item definitions..."
-msgstr ".i ca'o samymo'i tu'a le dacti"
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
-#: src/game.cpp
-msgid "KiB/s"
+#: src/client/game.cpp
+msgid "Fast mode enabled"
msgstr ""
-#: src/game.cpp
-msgid "Media..."
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
msgstr ""
-#: src/game.cpp
-msgid "MiB/s"
+#: src/client/game.cpp
+msgid "Fly mode disabled"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "Node definitions..."
-msgstr ".i ca'o samymo'i tu'a lo me la'o gy.node.gy."
+msgid "Fly mode enabled"
+msgstr "selpli"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr ".i ca'o troci lo nu facki lo samjudri"
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
-#: src/game.cpp
-msgid "Respawn"
-msgstr "gasnu lo nu mi tolcanci"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "selpli"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr ""
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "selpli"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr ""
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ".i datni le se kelci"
-#: src/game.cpp
-msgid "You died."
-msgstr ".i do pu morsi"
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ".i ca'o denpa fo le nu kelci"
-#: src/game.cpp src/guiFormSpecMenu.cpp
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ".i le samtci pe do cu samtcise'u"
+
+#: src/client/game.cpp
#, fuzzy
-msgid "ok"
-msgstr "je'e"
+msgid "Item definitions..."
+msgstr ".i ca'o samymo'i tu'a le dacti"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
+#: src/client/game.cpp
+msgid "KiB/s"
msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
+#: src/client/game.cpp
+msgid "Media..."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
+#: src/client/game.cpp
+msgid "MiB/s"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "za'i ti'a muvdu"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "samta'a"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "nonselkansa"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "minde"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "mu'e falcru"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Node definitions..."
+msgstr ".i ca'o samymo'i tu'a lo me la'o gy.node.gy."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "za'i ca'u muvdu"
+#: src/client/game.cpp
+msgid "Off"
+msgstr "ganda"
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "lo dacti uidje"
+#: src/client/game.cpp
+msgid "On"
+msgstr "katci"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "mu'e plipe"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "za'i zu'e muvdu"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ".i da poi na du le samtci pe do cu samtcise'u"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr ""
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ".i ca'o sisku le ka se judri da kau"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "mu'e cuxna fi le'i se kuspe"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ".i ca'o sisti"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "za'i ri'u muvdu"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "nonselkansa"
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "za'i masno cadzu"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "ni sance"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound muted"
+msgstr "lo ni sance "
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "mu'e co'a jonai mo'u sutra"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "mu'e co'a jonai mo'u vofli"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound unmuted"
+msgstr "lo ni sance "
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "mu'e pilno"
-
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "ko da'ergau le batke"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "gafygau"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "le rapli lerpoijaspu"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "lo cnino lerpoijaspu"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "lo slabu lerpoijaspu"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ".i fe lo ni sance cu cenba fi li %d ce'i"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr ".i lo lerpoijaspu na mintu"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Exit"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "lo ni sance "
+#: src/client/game.cpp
+msgid "ok"
+msgstr "je'e"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr ".i ca mipri le tavla .uidje"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr "la'o gy.Attn.gy."
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ".i ca viska le tavla .uidje"
-#: src/keycode.cpp
-msgid "Back"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ".i ca mipri le crakemsazycimde"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ".i ca viska le crakemsazycimde"
-#: src/keycode.cpp
-msgid "Capital"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
msgstr ""
-#: src/keycode.cpp
-msgid "Clear"
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
msgstr ""
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "slaka bu"
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
-#: src/keycode.cpp
-msgid "Control"
+#: src/client/keycode.cpp
+msgid "Backspace"
msgstr ""
-#: src/keycode.cpp
-msgid "Convert"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
msgstr ""
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr "la'o gy.CrSel.gy."
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr ""
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Erase EOF"
msgstr "la'o gy.Erase OEF.gy."
-#: src/keycode.cpp
-msgid "Escape"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr "la'o gy.ExSel.gy."
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr ""
-#: src/keycode.cpp
-msgid "Final"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr ""
-#: src/keycode.cpp
-msgid "Insert"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Accept"
+msgstr "fitytu'i"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
msgstr ""
-#: src/keycode.cpp
-msgid "Junja"
+#: src/client/keycode.cpp
+msgid "IME Escape"
msgstr ""
-#: src/keycode.cpp
-msgid "Kana"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Mode Change"
+msgstr "la'o gy.Mode Change.gy."
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
msgstr ""
-#: src/keycode.cpp
-msgid "Kanji"
+#: src/client/keycode.cpp
+msgid "Insert"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "zu'e muvdu"
+
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr "lo zulselpevysmacu"
+msgstr "zulselpevysmacu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr ""
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr "lo mijyselpevysmacu"
-
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "vu'u bu"
+msgstr "mijyselpevysmacu"
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "la'o gy.Mode Change.gy."
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
msgid "OEM Clear"
msgstr "la'o gy.OEM Clear.gy."
-#: src/keycode.cpp
-msgid "PA1"
-msgstr "la'o gy.PA1.gy."
-
-#: src/keycode.cpp
-msgid "Pause"
+#: src/client/keycode.cpp
+msgid "Page down"
msgstr ""
-#: src/keycode.cpp
-msgid "Period"
-msgstr "denpa bu"
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "su'i bu"
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
-#: src/keycode.cpp
-msgid "Print"
+#: src/client/keycode.cpp
+msgid "Play"
msgstr ""
-#: src/keycode.cpp
-msgid "Prior"
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "ri'u muvdu"
+
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr "lo prityselpevysmacu"
+msgstr "prityselpevysmacu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr ""
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
msgid "X Button 1"
msgstr "la'o gy.X Button 1.gy."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
msgid "X Button 2"
msgstr "la'o gy.X Button 2.gy."
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr ".i da nabmi fi le nu kibycpa la'o zoi. $1 .zoi"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Autoforward"
+msgstr "za'i ca'u muvdu"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "ti'a muvdu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "gafygau lo lerpoijaspu"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "tavla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "minde"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "samtrotci"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "jdikygau lo ni sance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "falcru"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "ca'u muvdu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "zengau lo ni sance"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "sorcu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "plipe"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Local command"
+msgstr "minde"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "se lamli'e fi lu'i le dacti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "lamli'e fi lu'i le dacti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "cuxna fi lu'i le se kuspe"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "vidnyxra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "masno cadzu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle HUD"
+msgstr "mu'e co'a jonai mo'u vofli"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle chat log"
+msgstr "mu'e co'a jonai mo'u sutra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fast"
+msgstr "mu'e co'a jonai mo'u sutra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fly"
+msgstr "mu'e co'a jonai mo'u vofli"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fog"
+msgstr "mu'e co'a jonai mo'u vofli"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle minimap"
+msgstr "mu'e co'a jonai mo'u sutra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle pitchmove"
+msgstr "mu'e co'a jonai mo'u sutra"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "press key"
+msgstr ".i ko da'ergau pa batke"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "basti"
+
+#: src/gui/guiPasswordChange.cpp
+#, fuzzy
+msgid "New Password"
+msgstr "lo cnino lerpoijaspu"
+
+#: src/gui/guiPasswordChange.cpp
+#, fuzzy
+msgid "Old Password"
+msgstr "lo slabu lerpoijaspu"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ".i lu'i le re lerpoijaspu na simxu le ka mintu"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "sisti"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy
+msgid "Muted"
+msgstr "ko da'ergau le batke"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "lo ni sance "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "jbo"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr ".i ko ckaji le ka da zo'u jdice le du'u da cmene"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1321,7 +2364,13 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1332,26 +2381,31 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server crashes."
-msgstr ""
+msgstr ".i benji le notci ro se samtcise'u ca ro nu le samtcise'u cu samfli"
#: src/settings_translation_file.cpp
msgid "A message to be displayed to all clients when the server shuts down."
msgstr ""
+".i benji le notci ro se samtcise'u ca ro nu le samtcise'u co'u samtcise'u"
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
+msgid "ABM interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
+msgid "Acceleration in air"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
+msgid "Acceleration of gravity, in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1359,6 +2413,10 @@ msgid "Active Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Active block range"
msgstr ""
@@ -1374,27 +2432,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "cmene le munje"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1402,7 +2482,11 @@ msgid "Ambient occlusion gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1411,29 +2495,85 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Announce server"
+msgstr "gubysku zo'e pe tu'a le samtcise'u"
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Ask to reconnect after crash"
+msgstr "krefu samjo'e te preti ba ro nu samfli"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Automatic forward key"
+msgstr "za'i ca'u muvdu"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "mu'e plipe"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1442,21 +2582,28 @@ msgid "Backward key"
msgstr "za'i ti'a muvdu"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
+msgid "Base ground level"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
+msgid "Base terrain height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
+msgstr "jicmu se curmi"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Bilinear filtering"
-msgstr "lo puvyrelyli'iju'e"
+msgstr "puvyrelyli'iju'e"
#: src/settings_translation_file.cpp
#, fuzzy
@@ -1464,7 +2611,35 @@ msgid "Bind address"
msgstr ".i ca'o troci lo nu facki lo samjudri"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1476,7 +2651,16 @@ msgid "Builtin"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
+#, fuzzy
+msgid "Camera"
+msgstr "gafygau lo lerpoijaspu"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -1492,6 +2676,10 @@ msgid "Camera update toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr ""
@@ -1504,7 +2692,50 @@ msgid "Cave width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "minde"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1513,38 +2744,35 @@ msgid "Chat key"
msgstr "samta'a"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
+msgid "Chat log level"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Chatcommands"
-msgstr "minde"
+msgid "Chat message count limit"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr ".i ca viska le tavla .uidje"
+
+#: src/settings_translation_file.cpp
msgid "Chunk size"
msgstr ""
@@ -1563,15 +2791,40 @@ msgid "Clean transparent textures"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "lo samtciselse'u"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
+#, fuzzy
+msgid "Client modding"
+msgstr "lo samtciselse'u"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client side modding restrictions"
+msgstr "lo samtciselse'u"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cloud height"
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "lo samtciselse'u"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1579,9 +2832,8 @@ msgid "Cloud radius"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Clouds"
-msgstr "le bliku dilnu"
+msgstr "dilnu"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
@@ -1594,6 +2846,22 @@ msgstr "lo ralju"
#: src/settings_translation_file.cpp
msgid "Colored fog"
+msgstr "le bumgapci cu skari"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Colored shadows"
+msgstr "le bumgapci cu skari"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1614,6 +2882,22 @@ msgid "Command key"
msgstr "minde"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Connect glass"
msgstr "lo jorne blaci"
@@ -1636,15 +2920,34 @@ msgid "Console color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Console key"
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "ContentDB URL"
+msgstr "ranji"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1654,14 +2957,14 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1673,7 +2976,10 @@ msgid "Controls steepness/height of hills."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1681,51 +2987,55 @@ msgid "Crash message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+msgid "Creative"
+msgstr "finti se kelci"
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha"
+msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color"
+msgid "DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
+msgid "Damage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid "Debug info toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "DPI"
+msgid "Debug log file size threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Damage"
+msgid "Debug log level"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug info toggle key"
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug log level"
+msgid "Dec. volume key"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1747,9 +3057,8 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Default password"
-msgstr "lo cnino lerpoijaspu"
+msgstr "zmiselcu'a fi lu'i ro lerpoijaspu"
#: src/settings_translation_file.cpp
msgid "Default privileges"
@@ -1760,15 +3069,50 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+msgid "Default stack size"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1776,6 +3120,24 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Delay in sending blocks after building"
msgstr ""
@@ -1788,21 +3150,27 @@ msgid "Deprecated Lua API handling"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1810,11 +3178,18 @@ msgid "Desynchronize block animation"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "datni"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "za'i ri'u muvdu"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "kakpa kantu"
#: src/settings_translation_file.cpp
#, fuzzy
@@ -1822,19 +3197,17 @@ msgid "Disable anticheat"
msgstr "lo kantu"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1854,17 +3227,65 @@ msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "selpli"
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1885,6 +3306,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1903,29 +3328,37 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
+msgid "Enables caching of facedir rotated meshes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1934,14 +3367,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1954,38 +3393,38 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font"
-msgstr "no"
-
-#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+#, fuzzy
+msgid "Fallback font path"
+msgstr "no"
#: src/settings_translation_file.cpp
msgid "Fast key"
@@ -2005,7 +3444,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
@@ -2014,27 +3453,22 @@ msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2044,13 +3478,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2058,6 +3500,38 @@ msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2070,11 +3544,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2086,15 +3572,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2102,12 +3616,52 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Forward key"
msgstr "za'i ca'u muvdu"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2123,7 +3677,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2131,10 +3689,6 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr ""
@@ -2151,15 +3705,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "se kelci"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2170,10 +3725,19 @@ msgstr ""
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2181,22 +3745,47 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr ".i ca viska le crakemsazycimde"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2210,15 +3799,48 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Hill steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2226,36 +3848,205 @@ msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2266,12 +4057,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2279,8 +4079,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2300,7 +4107,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2311,15 +4126,32 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+msgid "Ignore world errors"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2331,13 +4163,25 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2361,15 +4205,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2390,13 +4230,31 @@ msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2404,39 +4262,67 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Jump key"
msgstr "mu'e plipe"
@@ -2454,6 +4340,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2468,6 +4368,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2483,6 +4390,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2510,7 +4418,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2524,6 +4432,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2538,626 +4453,741 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Left key"
-msgstr "za'i zu'e muvdu"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "lo ralju"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu script"
-msgstr "lo ralju"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "bangu"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Large cave depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
+msgid "Large chat console key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+#, fuzzy
+msgid "Left key"
+msgstr "za'i zu'e muvdu"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "lo xutla se gusni"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Loading Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Main menu script"
+msgstr "lo ralju"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
+msgid "Mapgen Carpathian"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
+msgid "Mapgen Flat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
+msgid "Mapgen Fractal"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
+msgid "Mapgen Fractal specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
+msgid "Mapgen V5"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
+msgid "Mapgen V6"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
+msgid "Mapgen V7"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
+msgid "Mapgen Valleys"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
+msgid "Mapgen Valleys specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
+msgid "Mapgen debug"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3185,7 +5215,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3197,11 +5231,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3211,13 +5258,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3238,7 +5292,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3260,19 +5318,29 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Menus"
+msgid "Maximum users"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3292,6 +5360,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3304,24 +5376,39 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Mipmapping"
msgstr "lo puvrmipmepi"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod channels"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3333,6 +5420,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3341,21 +5448,30 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+#, fuzzy
+msgid "Mute key"
+msgstr "ko da'ergau le batke"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3371,7 +5487,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3381,6 +5497,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "te samjo'e"
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3393,6 +5514,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "lo xutla se gusni"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3401,91 +5527,121 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+#, fuzzy
+msgid "Pitch move key"
+msgstr "le nu finti kelci"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
+#, fuzzy
+msgid "Place key"
+msgstr "le nu finti kelci"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3495,16 +5651,17 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "puvyrelyli'iju'e"
#: src/settings_translation_file.cpp
msgid ""
@@ -3513,13 +5670,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3535,7 +5698,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3546,7 +5721,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3559,6 +5734,14 @@ msgid "Range select key"
msgstr "mu'e cuxna fi le'i se kuspe"
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr ""
@@ -3567,6 +5750,12 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
@@ -3575,28 +5764,62 @@ msgid "Report path"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Right key"
msgstr "za'i ri'u muvdu"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "River channel depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "River noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3604,20 +5827,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3625,15 +5868,16 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "vidnyxra"
#: src/settings_translation_file.cpp
-msgid "Screen width"
+msgid "Screen height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screenshot"
+msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3656,11 +5900,24 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "vidnyxra"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3676,34 +5933,71 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
-msgstr "pa kelci"
+msgid "Server"
+msgstr "veirjudri le samtcise'u"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server URL"
-msgstr "lo samtcise'u"
+msgid "Server Gameplay"
+msgstr "cmene le samtcise'u"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Server Security"
+msgstr "ve skicu le samtcise'u"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr "veirjudri le samtcise'u"
+
+#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr "lo samtcise'u judrnporte"
+msgstr "judri le samtcise'u"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server description"
-msgstr "lo samtcise'u judrnporte"
+msgstr "ve skicu le samtcise'u"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server name"
-msgstr "lo samtcise'u"
+msgstr "cmene le samtcise'u"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Server port"
-msgstr "lo samtcise'u judrnporte"
+msgstr "judrnporte le samtcise'u"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "judrnporte le samtcise'u"
#: src/settings_translation_file.cpp
#, fuzzy
@@ -3711,6 +6005,11 @@ msgid "Serverlist URL"
msgstr "lo samtcise'u"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "lo samtcise'u"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist file"
msgstr ""
@@ -3722,27 +6021,97 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "judri le ti'orkemsamtci"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3758,17 +6127,62 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3796,6 +6210,19 @@ msgid "Sneak key"
msgstr "za'i masno cadzu"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "za'i masno cadzu"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr ""
@@ -3808,15 +6235,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3824,7 +6288,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3832,7 +6310,32 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "te tcimi'e"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3850,11 +6353,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3864,13 +6392,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3884,13 +6428,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3910,22 +6471,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3935,6 +6509,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -3943,7 +6521,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3963,6 +6541,26 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Trilinear filtering"
msgstr "lo puvycibli'iju'e"
@@ -3971,7 +6569,7 @@ msgstr "lo puvycibli'iju'e"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3983,6 +6581,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -3991,6 +6602,14 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4007,12 +6626,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Use key"
-msgstr "ko da'ergau le batke"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4020,7 +6648,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4028,23 +6656,59 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4056,13 +6720,11 @@ msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4074,30 +6736,47 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
-msgstr "lo ni sance "
+msgstr "lo ni sance"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr ".i ca'o samymo'i le dacti ke tengu datnyvei"
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4118,23 +6797,31 @@ msgid "Waving leaves"
msgstr "lo melbi pezli"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr ".i ca'o samymo'i lo me la'o gy.node.gy."
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "lo melbi pezli"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "lo melbi pezli"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "lo melbi pezli"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4156,26 +6843,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4204,23 +6883,39 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4230,11 +6925,72 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "munje cmene"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4242,23 +6998,101 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "cURL interactive timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
+#~ msgid "- Creative Mode: "
+#~ msgstr "- finti se kelci: "
+
+#~ msgid "Address / Port"
+#~ msgstr "lo samjudri jo'u judrnporte"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr ".i xu do djica le nu xruti le do nonselkansa munje"
+
+#~ msgid "Back"
+#~ msgstr "xruti"
+
+#~ msgid "Basic"
+#~ msgstr "jicmu"
+
#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr ".i ca'o samymo'i le tengu datnyvei"
+#~ msgid "Bump Mapping"
+#~ msgstr "lo puvrmipmepi"
+
+#~ msgid "Configure"
+#~ msgstr "tcimi'e"
+
+#~ msgid "Connect"
+#~ msgstr "co'a samjo'e"
+
+#~ msgid "Credits"
+#~ msgstr "liste lu'i ro gunka"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr ""
+#~ ".i ko kibycpa pa se kelci to mupli fa la .maintest. se kelci toi la'o "
+#~ "zoi. minetest.net .zoi"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr ".i ko kibycpa pa se kelci la'o zoi. minetest.net .zoi"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr ".i ca'o kibycpa la'o zoi. $1 .zoi je cu samtcise'a ri .i ko denpa"
#, fuzzy
-#~ msgid "If enabled, "
+#~ msgid "Enable VBO"
#~ msgstr "selpli"
-#~ msgid "No!!!"
-#~ msgstr "nasai go'i"
+#~ msgid "Game"
+#~ msgstr "se kelci"
+
+#~ msgid "Main"
+#~ msgstr "ralju"
+
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "lo ralju"
+
+#~ msgid "Name / Password"
+#~ msgstr "lo cmene .e lo lerpoijaspu"
+
+#~ msgid "Name/Password"
+#~ msgstr "cmene .i lerpoijaspu"
+
+#~ msgid "No"
+#~ msgstr "na go'i"
+
+#~ msgid "Ok"
+#~ msgstr "je'e"
+
+#~ msgid "Player name"
+#~ msgstr "plicme"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "xruti le nonselkansa munje"
+
+#, fuzzy
+#~ msgid "Server / Singleplayer"
+#~ msgstr "pa kelci"
+
+#, fuzzy
+#~ msgid "Special key"
+#~ msgstr "za'i masno cadzu"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "co'a nonselkansa kelci"
+
+#~ msgid "Yes"
+#~ msgstr "go'i"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr ".i do morsi"
-#~ msgid "No of course not!"
-#~ msgstr "nasai go'i"
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/kk/minetest.po b/po/kk/minetest.po
new file mode 100644
index 000000000..7e97de7bd
--- /dev/null
+++ b/po/kk/minetest.po
@@ -0,0 +1,6872 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Kazakh (Minetest)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"kk/>\n"
+"Language: kk\n"
+"MIME-Version: 1.0\n"
+"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-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Мәзірге шығу"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Бір ойыншы"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Бір ойыншы"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua скриптінде қате кездесті:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Қате кездесті:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Басты мәзір"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Болдырмау"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr ""
+
+#: 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 ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Мод:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Ойын сипаттамасы жоқ."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Сақтау"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "қосылған"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Жүктелуде..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Ойындар"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Жою"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Модтар"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "Жаңарту"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Жою"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Жаңарту"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Development Test is meant for developers."
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Жою"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "Көлдер"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Жою"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Құпия сөзді өзгерту"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Іздеу"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Атауын өзгерту"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Жаңа"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D бұлттар"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Бисызықты фильтрация"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Жоқ"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Бөлшектер"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Баптаулар"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Текстурлеу:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Үшсызықты фильтрация"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr ""
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Басты мәзір"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Ойыншының аты тым ұзын."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Қате кездесті:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Құпия сөзді өзгерту"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Жалғастыру"
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Мәзірге шығу"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Ойыннан шығу"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Тұман қосылды"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Бір ойыншы"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Бір ойыншы"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Чат жасырылды"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Чат көрсетілді"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD жасырылды"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD көрсетілді"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Сол Win"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Ойнау"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Бос орын"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Миникарта жасырылды"
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "kk"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr "3D бұлттар"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "Алма ағаштары шуы"
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr "Қол инерциясы"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Чат көрсетілді"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "Чат көрсетілді"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Developer Options"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr "Тұман"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Ойындар"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr "Графика"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "Графика"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "Графика"
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr "Гравитация"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "HUD көрсетілді"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr "Физика"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshots"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Баптаулар"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr "Видеодрайвер"
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr "Жүру жылдамдығы"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr "Үлкен үңгірлердің жоғарғы шегінің Y координаты."
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "FreeType fonts"
+#~ msgstr "FreeType қаріптері"
+
+#~ msgid "Game"
+#~ msgstr "Ойын"
+
+#~ msgid "Main"
+#~ msgstr "Басты мәзір"
+
+#~ msgid "No"
+#~ msgstr "Жоқ"
+
+#~ msgid "Yes"
+#~ msgstr "Иә"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/kn/minetest.po b/po/kn/minetest.po
new file mode 100644
index 000000000..7d640cccf
--- /dev/null
+++ b/po/kn/minetest.po
@@ -0,0 +1,6897 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Kannada (Minetest)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"minetest/kn/>\n"
+"Language: kn\n"
+"MIME-Version: 1.0\n"
+"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"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "ಮುಖ್ಯ ಮೆನುಗೆ ಹಿಂತಿರುಗಿ"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "ಮತ್ತೆ ಹುಟ್ಟು"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "ನೀನು ಸತ್ತುಹೋದೆ"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr "ಸರಿ"
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "ಒಂದು ಲುವಾ ಸ್ಕ್ರಿಪ್ಟ್ ನಲ್ಲಿ ತಪ್ಪಾಗಿದೆ:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "ದೋಷ ವೊಂದು ಸಂಭವಿಸಿದೆ:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "ಮುಖ್ಯ ಮೆನು"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "ಮರುಸಂಪರ್ಕಿಸು"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "ಸರ್ವರ್ ಮರುಸಂಪರ್ಕ ಮಾಡಲು ಕೇಳಿದೆ:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿ ಹೊಂದಿಕೆಯಾಗಿಲ್ಲ. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "ಸರ್ವರ್ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿ $1 ಅನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "ಸರ್ವರ್ $1 ಮತ್ತು $2 ನಡುವೆಯ ಪ್ರೋಟೋಕಾಲ್ ಅವೃತ್ತಿಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "ನಾವು $ 1 ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಯನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತೇವೆ."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "ಆವೃತ್ತಿ $1 ಮತ್ತು $2 ನಡುವಿನ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಯನ್ನು ನಾವು ಬೆಂಬಲಿಸುತ್ತೇವೆ."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "ರದ್ದುಮಾಡಿ"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "ಅವಲಂಬನೆಗಳು:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "ಎಲ್ಲವನ್ನೂ ನಿಷ್ಕ್ರಿಯೆಗೊಳಿಸು"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "ಮಾಡ್ ಪ್ಯಾಕ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "ಎಲ್ಲವನ್ನೂ ಸಕ್ರಿಯಗೊಳಿಸಿ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "ಮಾಡ್ ಪ್ಯಾಕ್ ಕ್ರಿಯಾತ್ಮಕಗೊಳಿಸಿ"
+
+#: 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 ""
+"ಅನುಮತಿಸದೇ ಇರುವ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರುವ ುದರಿಂದ mod \"$1\" ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕಗೊಳಿಸಲು "
+"ವಿಫಲವಾಗಿದೆ. ಕೇವಲ ಅಕ್ಷರಗಳನ್ನು [a-z0-9_] ಗೆ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗುತ್ತದೆ."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr "ಇನ್ನಷ್ಟು ಮಾಡ್ ಗಳನ್ನು ಹುಡುಕಿ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "ಮಾಡ್:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "(ಐಚ್ಛಿಕ) ಅವಲಂಬನೆಗಳು ಇಲ್ಲ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "ಯಾವುದೇ ಆಟದ ವಿವರಣೆ ಒದಗಿಸಿಲ್ಲ."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "ಯಾವುದೇ ಗಟ್ಟಿ ಅವಲಂಬನೆಗಳಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "ಯಾವುದೇ ಮಾಡ್ಪ್ಯಾಕ್ ವಿವರಣೆ ಕೊಟ್ಟಿಲ್ಲ."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "ಯಾವುದೇ ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳು:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "ಸೇವ್"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "ಪ್ರಪಂಚ:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "ಡೌನ್ ಲೋಡ್ ಆಗುತ್ತಿದೆ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "ಎಲ್ಲಾ ಪ್ಯಾಕೇಜುಗಳು"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "ಮುಖ್ಯ ಮೆನುಗೆ ಹಿಂತಿರುಗಿ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "cURL ಇಲ್ಲದೆ ಮೈನ್ ಟೆಸ್ಟ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಿದಾಗ ContentDB ಲಭ್ಯವಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "ಡೌನ್ ಲೋಡ್ ಆಗುತ್ತಿದೆ..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1 ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಆಗಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "ಆಟಗಳು"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "ಇನ್ಸ್ಟಾಲ್"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "ಇನ್ಸ್ಟಾಲ್"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳು:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "ಮಾಡ್‍ಗಳು"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "ಯಾವುದೇ ಪ್ಯಾಕೇಜ್ ಗಳನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "ಫಲಿತಾಂಶಗಳಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "ನವೀಕರಿಸಿ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "ಟೆಕ್‍ಸ್ಚರ್ ಪ್ಯಾಕ್ಗಳು"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "ಅನ್ಇನ್ಸ್ಟಾಲ್"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "ನವೀಕರಿಸಿ"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "\"$1\" ಹೆಸರಿನ ಒಂದು ಪ್ರಪಂಚವು ಈಗಾಗಲೇ ಇದೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "ಹೆಚ್ಚುವರಿ ಭೂಪ್ರದೇಶ"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Biome blending"
+msgstr "ಪ್ರದೇಶ ಮಿಶ್ರಣ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Biomes"
+msgstr "ಪ್ರದೇಶಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caverns"
+msgstr "ಗುಹೆಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caves"
+msgstr "ಗುಹೆಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Create"
+msgstr "ರಚಿಸು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "ಅಲಂಕಾರಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Development Test is meant for developers."
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Dungeons"
+msgstr "ಡಂಗೆನ್ಸ್"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "ಸಮತಟ್ಟಾದ ಭೂಪ್ರದೇಶ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "ಆಕಾಶದಲ್ಲಿ ತೇಲುತ್ತಿರುವ ಭೂಭಾಗಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Floatlands (experimental)"
+msgstr "ತೇಲುವ ಭೂಮಿಗಳು (ಪ್ರಾಯೋಗಿಕ)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "ಫ್ರಾಕ್ಟಲ್ ಅಲ್ಲದ ಭೂಪ್ರದೇಶ ಸೃಷ್ಟಿಸಿ: ಸಾಗರಗಳು ಮತ್ತು ಭೂಗರ್ಭ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "ಬೆಟ್ಟಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Humid rivers"
+msgstr "ಆರ್ದ್ರ ನದಿಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "ನದಿಗಳ ಸುತ್ತ ತೇವಾಂಶ ವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "ಇನ್ಸ್ಟಾಲ್"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "ಕೆರೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr "ಕಡಿಮೆ ಆರ್ದ್ರತೆ ಮತ್ತು ಅಧಿಕ ಶಾಖವು ಆಳವಿಲ್ಲದ ಅಥವಾ ಶುಷ್ಕ ನದಿಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen"
+msgstr "ಮ್ಯಾಪ್ಜೆನ್"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mapgen flags"
+msgstr "ಮ್ಯಾಪ್ಜೆನ್ ಧ್ವಜಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mapgen-specific flags"
+msgstr "ಮ್ಯಾಪ್ಜೆನ್-ನಿರ್ದಿಷ್ಟ ಧ್ವಜಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "ಪರ್ವತಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mud flow"
+msgstr "ಮಣ್ಣಿನ ಹರಿವು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "ಸುರಂಗಗಳು ಮತ್ತು ಗುಹೆಗಳ ಜಾಲ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "ಯಾವುದೇ ಆಟ ಆಯ್ಕೆಯಾಗಿಲ್ಲ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "ಎತ್ತರದಲ್ಲಿ ಶಾಖವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "ಎತ್ತರದಲ್ಲಿ ತೇವಾಂಶವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "ನದಿಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "ಸಮುದ್ರ ಮಟ್ಟದಲ್ಲಿರುವ ನದಿಗಳು"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Seed"
+msgstr "ಬೀಜ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Smooth transition between biomes"
+msgstr "ಪ್ರದೇಶಗಳ ನಡುವೆ ಸುಗಮವಾದ ಸ್ಥಿತ್ಯಂತರ"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "ಹುಡುಕು"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 "ಪಬ್ಲಿಕ್ ಸರ್ವರ್ಲಿಸ್ಟ್ಅನ್ನು ರಿಎನೆಬಲ್ ಮಾಡಿ ಮತ್ತು ಅಂತರ್ಜಾಲ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "ಆರ್ದ್ರ ನದಿಗಳು"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "ತೇಲುವ ಭೂಮಿಗಳು (ಪ್ರಾಯೋಗಿಕ)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr ""
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "ದೋಷ ವೊಂದು ಸಂಭವಿಸಿದೆ:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "$1 ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಆಗಿಲ್ಲ"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "kn"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "ಅಲಂಕಾರಗಳು"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "ಆಟಗಳು"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshots"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "ಆರ್ದ್ರ ನದಿಗಳು"
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "Back"
+#~ msgstr "ಹಿಂದೆ"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "minetest.net ನಿಂದ ಮೈನ್ಟೆಸ್ಟ್ ಗೇಮ್ ನಂತಹ ಆಟವನ್ನು ಡೌನ್ ಲೋಡ್ ಮಾಡಿ"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "minetest.net ಇಂದ ಒಂದನ್ನು ಡೌನ್ ಲೋಡ್ ಮಾಡಿ"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 ಡೌನ್ಲೋಡ್ ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ, ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ..."
+
+#~ msgid "Game"
+#~ msgstr "ಆಟ"
+
+#~ msgid "Ok"
+#~ msgstr "ಸರಿ"
+
+#, fuzzy
+#~ msgid "View"
+#~ msgstr "ತೋರಿಸು"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "ನೀನು ಸತ್ತುಹೋದೆ"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/ko/minetest.po b/po/ko/minetest.po
index 44b1960a9..f30943348 100644
--- a/po/ko/minetest.po
+++ b/po/ko/minetest.po
@@ -1,15 +1,10 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Korean (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2015-07-08 23:30+0200\n"
-"Last-Translator: Tae Lim Kook <tkook11@gmail.com>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-05-08 00:22+0000\n"
+"Last-Translator: Han So Ri <2_0_2_0_@naver.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/minetest/minetest/"
"ko/>\n"
"Language: ko\n"
@@ -17,765 +12,1461 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.4-dev\n"
+"X-Generator: Weblate 4.12.1\n"
-#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
msgstr ""
-#: builtin/fstk/ui.lua
-msgid "An error occured:"
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "채팅 명렁어"
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr "메인 메뉴로 나가기"
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr "유효하지 않은 명령어: "
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
msgstr ""
-#: builtin/fstk/ui.lua
-msgid "Main menu"
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr "온라인 플레이어 목록"
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr "온라인 플레이어: "
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr "서버에서 사용 할 수 없는 명령어입니다."
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "리스폰"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "사망했습니다"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "지역 명령어"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "지역 명령어"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
msgstr ""
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
msgstr "확인"
#: builtin/fstk/ui.lua
-msgid "Reconnect"
+msgid "<none available>"
msgstr ""
#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua 스크립트에서 오류가 발생했습니다:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "오류가 발생했습니다:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "메인 메뉴"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "재연결"
+
+#: builtin/fstk/ui.lua
msgid "The server has requested a reconnect:"
+msgstr "서버에 재접속 하세요:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
msgstr ""
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "월드 선택:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Protocol version mismatch. "
+msgid "Later"
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Server enforces protocol version $1. "
+msgid "Never"
msgstr ""
#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "프로토콜 버전이 알맞지 않습니다. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "서버는 프로토콜 버전 $1을(를) 사용합니다. "
+
+#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr ""
+msgstr "서버가 프로토콜 버전 $1와(과) $2 두 가지를 제공합니다. "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr ""
+msgstr "프로토콜 버전 $1만 제공합니다."
#: builtin/mainmenu/common.lua
msgid "We support protocol versions between version $1 and $2."
+msgstr "프로토콜 버전 $1와(과) $2 사이의 버전을 제공합니다."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "취소"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr ""
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "의존:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr ""
+msgid "Disable all"
+msgstr "모두 사용안함"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr ""
+msgid "Disable modpack"
+msgstr "모드 팩 비활성화"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
-msgstr ""
+msgstr "모두 활성화"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "모드 팩 활성화"
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
+"\"$1\"은(는) 사용할 수 없는 문자이기에 모드를 활성화하지 못했습니다. 이름에"
+"는 [a-z,0-9,_]만 사용할 수 있습니다."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr ""
+msgid "Find More Mods"
+msgstr "더 많은 모드 찾기"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr ""
+msgid "Mod:"
+msgstr "모드:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
-msgstr ""
+msgid "No (optional) dependencies"
+msgstr "종속성 없음 (옵션)"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "게임 설명이 제공되지 않았습니다."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "요구사항 없음"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "모드 설명이 제공되지 않았습니다."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "선택되지 않은 종속성"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "종속성 선택:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "저장"
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
-msgstr ""
+msgstr "세계:"
#: builtin/mainmenu/dlg_config_world.lua
msgid "enabled"
+msgstr "활성화됨"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "다운 받는 중..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "모든 패키지"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "이미 설치됨"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "주 메뉴로 돌아가기"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "호스트 게임"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "cURL 없이 Minetest를 컴파일한 경우 ContentDB를 사용할 수 없습니다"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "다운 받는 중..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "$1을 다운로드하는 데에 실패했습니다"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "게임"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "설치"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "설치"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "종속성 선택:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"모드 설치: \"$1\"는(은) 지원 되지 않는 파일 형식 이거나 손상된 압축 파일입니"
+"다"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "모드"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "검색할 수 있는 패키지가 없습니다"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "결과 없음"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr "업데이트 없음"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr "찾을 수 없음"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "텍스처 팩"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "제거"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "업데이트"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
-msgstr ""
+msgstr "\"$1\" 은(는) 이미 존재합니다"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr "추가 지형"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr "한랭 고도"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr "건조한 고도"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr "혼합 생물 군계"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr "생물 군계"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr "석회동굴"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr "동굴"
#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
-msgstr ""
+msgstr "만들기"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr ""
+msgid "Decorations"
+msgstr "장식"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr ""
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "경고: Development Test는 개발자를 위한 모드입니다."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr "던전"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "평평한 지형"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr "하늘에 떠있는 광대한 대지"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr "평평한 땅 (실험용)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr "추상적이지 않은 지형 생성: 바다와 지하"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr "언덕"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr "습한 강"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr "강 주변의 습도 증가"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "설치"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
msgstr ""
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr "호수"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+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 "세계 생성기 신호"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr ""
+msgid "Mapgen-specific flags"
+msgstr "세계 생성기-특정 신호"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr "산"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "진흙 흐름"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr "터널과 동굴의 네트워크"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "선택된 게임이 없습니다"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr "고도에 따른 열 감소"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr "고도에 따른 습도 감소"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "강"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr "해수면 강"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
-msgstr ""
+msgstr "시드"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Smooth transition between biomes"
+msgstr "생물 군계 간 부드러운 전환"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
msgstr ""
+"지형에 나타나는 구조물 (v6에서 만든 나무와 정글 및 풀에는 영향을 주지 않음)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr "지형에 나타나는 구조물(일반적으로 나무와 식물)"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr "온대, 사막"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr "온대, 사막, 정글"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr "온대, 사막, 정글, 툰드라(한대), 침엽수 삼림 지대"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "침식된 지형"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr "나무와 정글 , 풀"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr "강 깊이 변화"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr "지하의 큰 동굴의 깊이 변화"
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
-msgstr ""
+msgstr "세계 이름"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
-msgstr ""
+msgid "You have no games installed."
+msgstr "게임이 설치되어 있지 않습니다."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
-msgstr ""
+msgstr "$1을(를) 삭제하시겠습니까?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
-msgstr ""
+msgstr "삭제"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: \"$1\"을(를) 삭제하지 못했습니다"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
-msgstr ""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: 잘못된 경로\"$1\""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
+msgstr "\"$1\"을(를) 삭제하시겠습니까?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "비밀번호 확인"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
msgstr ""
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
-msgid "Accept"
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Missing name"
+msgstr "Mapgen 이름"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
msgstr ""
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "새로운 비밀번호"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "비밀번호가 맞지 않습니다!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "등록하고 참여"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "수락"
+
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
-msgstr ""
+msgstr "모드 팩 이름 바꾸기:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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.conf에 명시적인 이름이 부여되어 있으며, 이는 여기서 이"
+"름을 바꾸는 것을 적용하지 않습니다."
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
-msgstr ""
+msgstr "(설정에 대한 설명이 없습니다)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2차원 소음"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< 설정 페이지로 돌아가기"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "열기"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "컨텐츠"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "컨텐츠"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
msgid "Disabled"
-msgstr ""
+msgstr "비활성화됨"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "수정"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Enabled"
-msgstr ""
+msgstr "활성화됨"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
-msgstr ""
+msgid "Lacunarity"
+msgstr "빈약도"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
-msgstr ""
+msgid "Octaves"
+msgstr "옥타브"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "오프셋"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr ""
+#, fuzzy
+msgid "Persistence"
+msgstr "플레이어 전송 거리"
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "유효한 정수를 입력해주세요."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
+msgid "Please enter a valid number."
+msgstr "유효한 숫자를 입력해주세요."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
-msgstr ""
+msgid "Restore Default"
+msgstr "기본값 복원"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "스케일"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "찾기"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
-msgstr ""
+msgid "Select directory"
+msgstr "경로를 선택하세요"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
-msgstr ""
+msgid "Select file"
+msgstr "파일 선택"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "기술적 이름 보기"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
-msgstr ""
+msgid "The value must be at least $1."
+msgstr "값은 $1 이상이어야 합니다."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
-msgstr ""
+msgid "The value must not be larger than $1."
+msgstr "값이 $1을 초과하면 안 됩니다."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
-msgstr ""
+msgid "X"
+msgstr "X"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
-msgstr ""
+msgid "X spread"
+msgstr "X 분산"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
-msgstr ""
+msgid "Y"
+msgstr "Y"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
-msgstr ""
+msgid "Y spread"
+msgstr "Y 분산"
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
-#: builtin/mainmenu/modmgr.lua
-msgid "Failed to install $1 to $2"
-msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Z 분산"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr ""
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "절댓값"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-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 "기본값"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "맵 부드러움"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (활성화됨)"
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 모드"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "$1을 $2에 설치하는데 실패했습니다"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "모드 설치: $1를(을) 찾을 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr "모드 설치: 모드 팩 $1 (이)의 올바른 폴더이름을 찾을 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "설치 모드: 모드 팩 $1 (이)의 올바른 폴더이름을 찾을 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "$1을 텍스쳐팩으로 설치할 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "$1을 설치할 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "$1 모드를 설치할 수 없습니다"
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "$1 모드팩을 설치할 수 없습니다"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Active Contributors"
-msgstr ""
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "불러오는 중..."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Core Developers"
-msgstr ""
+#: builtin/mainmenu/serverlistmgr.lua
+#, fuzzy
+msgid "Public server list is disabled"
+msgstr "클라이언트 스크립트가 비활성화됨"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr ""
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
+msgstr "인터넷 연결을 확인한 후 서버 목록을 새로 고쳐보세요."
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Core Developers"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "활동적인 공헌자"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Active renderer:"
+msgstr "객체 전달 범위 활성화"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "코어 개발자"
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "경로를 선택하세요"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "이전 공헌자들"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "이전 코어 개발자들"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr ""
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Share debug log"
+msgstr "디버그 정보 보기"
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "온라인 컨텐츠 검색"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "컨텐츠"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "비활성화된 텍스쳐 팩"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "정보:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "설치된 패키지:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "요구사항 없음."
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "사용 가능한 패키지 설명이 없습니다"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "이름 바꾸기"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "패키지 삭제"
-#: builtin/mainmenu/tab_server.lua
-msgid "Bind Address"
-msgstr ""
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "텍스쳐 팩 사용"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "서버 알리기"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "바인딩 주소"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
-msgstr ""
+msgstr "크리에이티브 모드"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
-msgstr ""
+msgstr "데미지 활성화"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "호스트 게임"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "호스트 서버"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr "ContentDB에서 게임 설치"
+
+#: builtin/mainmenu/tab_local.lua
msgid "New"
-msgstr ""
+msgstr "새로 만들기"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
-msgstr ""
+msgstr "월드를 만들거나 선택하지 않았습니다!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "게임하기"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
-msgstr ""
+msgstr "포트"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr ""
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "월드 선택:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
+msgstr "월드 선택:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "서버 포트"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "게임 시작"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- 주소: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "지우기"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "크리에이티브 모드"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "데미지"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "즐겨찾기"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "게임 참가"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Server Port"
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "핑"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "서버 알리기"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Start Game"
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "원격 포트"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "서버 설명"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
-msgstr ""
+msgstr "2 x"
#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
-msgstr ""
+msgstr "3D 구름 효과"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr ""
+msgstr "4 x"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr ""
+msgstr "8 배속"
#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
-msgstr ""
+msgid "All Settings"
+msgstr "모든 설정"
#: builtin/mainmenu/tab_settings.lua
msgid "Antialiasing:"
-msgstr ""
+msgstr "매끄럽게 표현하기:"
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
-msgstr ""
+msgid "Autosave Screen Size"
+msgstr "스크린 크기 자동 저장"
#: builtin/mainmenu/tab_settings.lua
msgid "Bilinear Filter"
-msgstr ""
+msgstr "이중 선형 필터"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "키 변경"
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
-msgstr ""
+msgid "Connected Glass"
+msgstr "연결된 유리"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dynamic shadows"
+msgstr "글꼴 그림자"
#: builtin/mainmenu/tab_settings.lua
-msgid "Connected Glass"
-msgstr ""
+#, fuzzy
+msgid "Dynamic shadows:"
+msgstr "글꼴 그림자"
#: builtin/mainmenu/tab_settings.lua
msgid "Fancy Leaves"
-msgstr ""
+msgstr "아름다운 나뭇잎 효과"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
+msgid "High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
+msgid "Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
+msgid "Medium"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "밉 맵"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "밉맵 + Aniso. 필터"
+
+#: 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 "Node 강조"
#: builtin/mainmenu/tab_settings.lua
msgid "Node Outlining"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr ""
+msgstr "Node 설명"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
+msgid "None"
+msgstr "없음"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
-msgstr ""
+msgstr "불투명한 나뭇잎 효과"
#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Water"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
+msgstr "불투명한 물 효과"
#: builtin/mainmenu/tab_settings.lua
msgid "Particles"
-msgstr ""
+msgstr "입자 효과"
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
-msgstr ""
+msgid "Screen:"
+msgstr "화면:"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
-msgstr ""
+msgstr "설정"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Shaders"
-msgstr ""
+msgstr "쉐이더"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "평평한 땅 (실험용)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+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 ""
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
+msgstr "질감:"
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
-msgstr ""
+msgstr "톤 매핑"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
-msgstr ""
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "터치 임계값: (픽셀)"
#: builtin/mainmenu/tab_settings.lua
msgid "Trilinear Filter"
-msgstr ""
+msgstr "선형 필터"
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Leaves"
+msgid "Very High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
+msgid "Very Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
-msgstr ""
+msgid "Waving Leaves"
+msgstr "움직이는 나뭇잎 효과"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr ""
+msgid "Waving Liquids"
+msgstr "물 등의 물결효과"
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "움직이는 식물 효과"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr ""
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "연결 오류 (시간초과)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
-msgstr ""
+msgstr "연결 시간이 초과했습니다."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
-msgstr ""
+msgstr "완료!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
-msgstr ""
+msgstr "node 초기값 설정중"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
-msgstr ""
+msgstr "node 초기값 설정중..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
-msgstr ""
+msgstr "텍스쳐 로딩중..."
-#: src/client.cpp
+#: 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 ""
+#, fuzzy
+msgid "Could not find or load game: "
+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 "Provided world path doesn't exist: "
-msgstr ""
+msgid "Please choose a name!"
+msgstr "이름을 선택하세요!"
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "yes"
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "패스워드 파일을 여는데 실패했습니다: "
-#: src/game.cpp
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "월드 경로가 존재하지 않습니다: "
+
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
+"\n"
+"자세한 내용은 debug.txt을 확인 합니다."
-#: src/game.cpp
-msgid "Change Keys"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- 주소: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- 모드: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- 포트: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- 공개: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- Player vs Player: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- 서버 이름: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "오류가 발생했습니다:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
msgstr ""
-#: src/game.cpp
-msgid "Change Password"
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "자동 전진 비활성화"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "자동 전진 활성화"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
msgstr ""
-#: src/game.cpp
-msgid "Connecting to server..."
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
msgstr ""
-#: src/game.cpp
-msgid "Continue"
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
msgstr ""
-#: src/game.cpp
-msgid "Creating client..."
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
msgstr ""
-#: src/game.cpp
-msgid "Creating server..."
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "카메라 업데이트 비활성화"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "카메라 업데이트 활성화"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
msgstr ""
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "비밀번호 변경"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "시네마틱 모드 비활성화"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "시네마틱 모드 활성화"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "클라이언트 모딩"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "클라이언트 스크립트가 비활성화됨"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "서버 연결중..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "계속"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
-msgstr ""
+"- %s: chat\n"
+msgstr ""
+"조작:\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
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "클라이언트 만드는 중..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "서버 만드는 중..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "디버그 정보 및 프로파일러 그래프 숨기기"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "디버그 정보 표시"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr "디버그 정보, 프로파일러 그래프 , 선 표현 숨김"
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -790,497 +1481,878 @@ msgid ""
"- touch&drag, tap 2nd finger\n"
" --> place single item to slot\n"
msgstr ""
-
-#: src/game.cpp
+"기본 컨트롤: \n"
+"메뉴 표시 없을 때:\n"
+"- 단일 탭: 버튼 활성화\n"
+"- 더블 탭: 배치/사용\n"
+"- 드래그: 둘러보기\n"
+" 메뉴/인벤토리:\n"
+"- 더블 탭 (외부):\n"
+" -->닫기\n"
+"- 무더기(stack) 터치, 슬롯 터치: \n"
+" --> 무더기(stack) 이동 \n"
+"- 터치 및 드래그, 다른 손가락으로 탭\n"
+" --> 슬롯에 한개의 아이템 배치\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "제한없는 시야 범위 비활성화"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "제한없는 시야 범위 활성화"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "클라이언트 만드는 중..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
-msgstr ""
+msgstr "메뉴로 나가기"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
-msgstr ""
+msgstr "게임 종료"
-#: src/game.cpp
-msgid "Item definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "고속 모드 비활성화"
-#: src/game.cpp
-msgid "KiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "고속 모드 활성화"
-#: src/game.cpp
-msgid "Media..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "고속 모드 활성화(참고 : '고속'에 대한 권한 없음)"
-#: src/game.cpp
-msgid "MiB/s"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "비행 모드 비활성화"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "비행 모드 활성화"
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "비행 모드 활성화 (참고 : '비행'에 대한 권한 없음)"
-#: src/game.cpp
-msgid "Respawn"
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "안개 비활성화"
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr ""
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "안개 활성화"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr ""
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "게임 정보:"
-#: src/game.cpp
-msgid "You died."
-msgstr ""
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "게임 일시정지"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr ""
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "호스팅 서버"
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr ""
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "아이템 정의중..."
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr ""
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr ""
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "미디어..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr ""
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr ""
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "게임 또는 모드에 의해 현재 미니맵 비활성화"
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr ""
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "싱글 플레이어"
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "Noclip 모드 비활성화"
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "Noclip 모드 활성화"
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr ""
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "Noclip 모드 활성화 (참고 : 'noclip'에 대한 권한 없음)"
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr ""
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Node 정의중..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr ""
+#: src/client/game.cpp
+msgid "Off"
+msgstr "끄기"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr ""
+#: src/client/game.cpp
+msgid "On"
+msgstr "켜기"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "피치 이동 모드 비활성화"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr ""
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "피치 이동 모드 활성화"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr ""
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "프로파일러 그래프 보이기"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr ""
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "원격 서버"
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr ""
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "주소 분석중..."
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr ""
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "서버가 닫혔습니다..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr ""
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "싱글 플레이어"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "볼륨 조절"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "음소거"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr "사운드 시스템 비활성화"
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr "본 빌드에서 지원되지 않는 사운드 시스템"
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr ""
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "음소거 해제"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "시야 범위 %d로 바꿈"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "시야 범위 최대치 : %d"
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "시야 범위 최소치 : %d"
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr ""
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "볼륨 %d%%로 바꿈"
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr ""
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "선 표면 보이기"
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr ""
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "게임 또는 모드에 의해 현재 확대 비활성화"
-#: src/keycode.cpp
-msgid "Apps"
-msgstr ""
+#: src/client/game.cpp
+msgid "ok"
+msgstr "확인"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "채팅 숨기기"
-#: src/keycode.cpp
-msgid "Back"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "채팅 보이기"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "HUD 숨기기"
-#: src/keycode.cpp
-msgid "Clear"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "HUD 보이기"
-#: src/keycode.cpp
-msgid "Comma"
-msgstr ""
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "프로파일러 숨기기"
-#: src/keycode.cpp
-msgid "Control"
-msgstr ""
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "프로파일러 보이기 (%d중 %d 페이지)"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "애플리케이션"
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "뒤로"
-#: src/keycode.cpp
-msgid "Down"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "캡스락"
-#: src/keycode.cpp
-msgid "End"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "컨트롤"
-#: src/keycode.cpp
-msgid "Erase OEF"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "아래"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "끝"
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "EOF 지우기"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Final"
-msgstr ""
+msgstr "실행"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
-msgstr ""
+msgstr "도움말"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
-msgstr ""
+msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME 확인"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME 변환"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME 종료"
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME 모드 변경"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME 변환 안함"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "왼쪽"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Button"
-msgstr ""
+msgstr "왼쪽 버튼"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
-msgstr ""
+msgstr "왼쪽 컨트롤"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
-msgstr ""
+msgstr "왼쪽 메뉴"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
-msgstr ""
+msgstr "왼쪽 쉬프트"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
-msgstr ""
+msgstr "왼쪽 창"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
-msgstr ""
+msgstr "메뉴"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Minus"
-msgstr ""
+msgstr "가운데 버튼"
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
-msgstr ""
+msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
-msgstr ""
+msgstr "숫자 키패드 *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
-msgstr ""
+msgstr "숫자 키패드 +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
-msgstr ""
+msgstr "숫자 키패드 -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "숫자 키패드 ."
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad /"
-msgstr ""
+msgstr "숫자 키패드 /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
-msgstr ""
+msgstr "숫자 키패드 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
-msgstr ""
+msgstr "숫자 키패드 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
-msgstr ""
+msgstr "숫자 키패드 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
-msgstr ""
+msgstr "숫자 키패드 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
-msgstr ""
+msgstr "숫자 키패드 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
-msgstr ""
+msgstr "숫자 키패드 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
-msgstr ""
+msgstr "숫자 키패드 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
-msgstr ""
+msgstr "숫자 키패드 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
-msgstr ""
+msgstr "숫자 키패드 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
-msgstr ""
+msgstr "숫자 키패드 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
-msgstr ""
+msgstr "OEM 초기화"
-#: src/keycode.cpp
-msgid "PA1"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "페이지 내리기"
-#: src/keycode.cpp
-msgid "Pause"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "페이지 올리기"
-#: src/keycode.cpp
-msgid "Period"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "일시 정지"
-#: src/keycode.cpp
-msgid "Plus"
-msgstr ""
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "시작"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
-msgstr ""
+msgstr "출력"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
-msgstr ""
+msgstr "되돌리기"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "오른쪽"
+
+#: src/client/keycode.cpp
msgid "Right Button"
-msgstr ""
+msgstr "오른쪽 버튼"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
-msgstr ""
+msgstr "오른쪽 컨트롤"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
-msgstr ""
+msgstr "오른쪽 메뉴"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
-msgstr ""
+msgstr "오른쪽 쉬프트"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
-msgstr ""
+msgstr "오른쪽 창"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
-msgstr ""
+msgstr "스크롤 락"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
-msgstr ""
+msgstr "선택"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
-msgstr ""
+msgstr "쉬프트"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
-msgstr ""
+msgstr "잠자기"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
-msgstr ""
+msgstr "스냅샷"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
-msgstr ""
+msgstr "스페이스바"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
-msgstr ""
+msgstr "탭"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
-msgstr ""
+msgstr "위"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
-msgstr ""
+msgstr "X 버튼 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
+msgstr "X 버튼 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "확대/축소"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "미니맵 숨김"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "레이더 모드의 미니맵, 1배 확대"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "표면 모드의 미니맵, 1배 확대"
+
+#: src/client/minimap.cpp
+#, fuzzy
+msgid "Minimap in texture mode"
+msgstr "최소 텍스처 크기"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "$1을 다운로드하는 데에 실패했습니다"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "계속하기"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "\"특별함\" = 아래로 타고 내려가기"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "자동전진"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "자동 점프"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "뒤로"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
msgstr ""
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "카메라 변경"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "채팅"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "명령어"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "콘솔"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "범위 감소"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "볼륨 줄이기"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "\"점프\"를 두번 탭하여 비행"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "드롭하기"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "앞으로"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "범위 증가"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "볼륨 늘리기"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "인벤토리"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "점프"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "이미 사용하고 있는 키입니다"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "지역 명령어"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "음소거"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "다음 아이템"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "이전.아이템"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "범위 선택"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "스크린샷"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "살금살금"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "HUD 토글"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "채팅 기록 토글"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "고속 스위치"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "비행 스위치"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "안개 토글"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "미니맵 토글"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "자유시점 스위치"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "피치 이동 토글"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "키를 누르세요"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "변경"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "새로운 비밀번호"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "현재 비밀번호"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "비밀번호가 맞지 않습니다!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "나가기"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "음소거"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "볼륨 조절: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "ko"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "이름을 선택하세요!"
+
+#: src/settings_translation_file.cpp
+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
+#, fuzzy
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+"(Android) 가상 조이스틱을 사용하여 \"aux\"버튼을 트리거합니다.\n"
+"활성화 된 경우 가상 조이스틱은 메인 서클에서 벗어날 때 \"aux\"버튼도 탭합니"
+"다."
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
+"(X, Y, Z) '스케일' 단위로 세계 중심을 기준으로 프랙탈 오프셋을 정합니다.\n"
+"원하는 지점을 (0, 0)으로 이동하여 적합한 스폰 지점을 만들거나 \n"
+"'스케일'을 늘려 원하는 지점에서 '확대'할 수 있습니다.\n"
+"기본값은 기본 매개 변수가있는 Mandelbrot 세트에 적합한 스폰 지점에 맞게 조정"
+"되어 있으며 \n"
+"다른 상황에서 변경해야 할 수도 있습니다. \n"
+"범위는 대략 -2 ~ 2입니다. \n"
+"노드의 오프셋에 대해\n"
+"'스케일'을 곱합니다."
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"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"
+"기존 모양에 대해 3 개의 숫자를 \n"
+"모두 동일하게 설정합니다."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr "산의 모양 / 크기를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr "언덕의 모양 / 크기를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr "계단 형태 산의 모양 / 크기를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr "능선 산맥의 크기 / 발생정도를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr "언덕의 크기 / 발생정도를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr "계단 형태의 산맥의 크기 / 발생정도를 제어하는 2D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr "강 계곡과 채널에 위치한 2D 노이즈."
#: src/settings_translation_file.cpp
msgid "3D clouds"
-msgstr ""
+msgstr "3D 구름 효과"
#: src/settings_translation_file.cpp
msgid "3D mode"
+msgstr "3D 모드"
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr "3D 모드 시차 강도"
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr "거대한 동굴을 정의하는 3D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+"산의 구조와 높이를 정의하는 3D 노이즈.\n"
+"또한 수상 지형 산악 지형의 구조를 정의합니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"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"
+"이 소음의 값 범위가 약 -2.0 ~ 2.0 일 때 플로 트랜드 테이퍼링이 가장 잘 작동하"
+"므로 \n"
+"조정해야합니다."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr "강 협곡 벽의 구조를 정의하는 3D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr "지형을 정의하는 3D 노이즈."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+"산 돌출부, 절벽 등에 대한 3D 노이즈. 일반적으로 작은 변화로 나타납니다."
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr "맵 당 던전 수를 결정하는 3D 노이즈."
#: src/settings_translation_file.cpp
msgid ""
@@ -1291,7 +2363,21 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+"3D 지원.\n"
+"현재 지원되는 것:\n"
+"- 없음: 3d 출력 없음.\n"
+"- 입체 사진: 청록색/자홍색 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.↵\n"
+"- topbottom: split screen top/bottom.↵\n"
+"- sidebyside: split screen side by side.↵\n"
+"- pageflip: quadbuffer based 3d."
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1299,42 +2385,52 @@ 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 "Absolute limit of emerge queues"
-msgstr ""
+msgid "ABM interval"
+msgstr "ABM 간격"
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
+msgid "ABM time budget"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
-msgstr ""
+msgid "Absolute limit of queued blocks to emerge"
+msgstr "대기중인 블록의 절대 한계"
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
-msgstr ""
+msgid "Acceleration in air"
+msgstr "공중에서 가속"
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr "중력 가속도, 노드는 초당 노드입니다."
#: src/settings_translation_file.cpp
msgid "Active Block Modifiers"
-msgstr ""
+msgstr "블록 수식어 활성"
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+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 ""
@@ -1342,496 +2438,919 @@ 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 "node를 부술 때의 파티클 효과를 추가합니다."
#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
+"화면에 맞게 dpi 구성을 조정합니다 (X11 미지원 / Android 만 해당). 4k 화면 용."
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"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
+#, fuzzy
+msgid "Admin name"
+msgstr "아이템 이름 추가"
#: src/settings_translation_file.cpp
msgid "Advanced"
-msgstr ""
+msgstr "고급"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"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 ""
+#, fuzzy
+msgid "Always fly fast"
+msgstr "항상 비행 및 고속 모드"
#: src/settings_translation_file.cpp
msgid "Ambient occlusion gamma"
-msgstr ""
+msgstr "주변 occlusion 감마"
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
-msgstr ""
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr "플레이어가 10 초당 보낼 수있는 메시지의 양."
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+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.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
-msgstr ""
+msgid "Announce to this serverlist."
+msgstr "이 서버 목록에 알림."
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr "아이템 이름 추가"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr "툴팁에 아이템 이름 추가."
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr "사과 나무 노이즈"
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Arm inertia"
+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 "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"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 "Autorun key"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr "자동 전진 키"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr "단일 노드 장애물에 대한 자동 점프."
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr "서버 목록에 자동으로 보고."
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr "스크린 크기 자동 저장"
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr "자동 스케일링 모드"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key"
+msgstr "점프 키"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Aux1 key for climbing/descending"
+msgstr "오르기/내리기 에 사용되는 특수키"
+
+#: src/settings_translation_file.cpp
msgid "Backward key"
-msgstr ""
+msgstr "뒤로 이동하는 키"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
-msgstr ""
+msgid "Base ground level"
+msgstr "기본 지면 수준"
#: src/settings_translation_file.cpp
-msgid "Basic"
-msgstr ""
+msgid "Base terrain height."
+msgstr "기본 지형 높이."
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
-msgstr ""
+msgid "Basic privileges"
+msgstr "기본 권한"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr "해변 잡음"
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+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
+#, fuzzy
+msgid "Biome API noise parameters"
+msgstr "Biome API 온도 및 습도 소음 매개 변수"
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome noise"
+msgstr "Biome 노이즈"
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr "블록 전송 최적화 거리"
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr "굵은 기울임 꼴 글꼴 경로"
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr "굵은 기울임 꼴 고정 폭 글꼴 경로"
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr "굵은 글꼴 경로"
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+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 "Bumpmapping"
+#, fuzzy
+msgid "Camera"
+msgstr "카메라 변경"
+
+#: src/settings_translation_file.cpp
+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 사이의 노드에서 카메라 '깎인 평면 근처'거리는 GLES 플랫폼에서만 작"
+"동합니다. \n"
+"대부분의 사용자는 이것을 변경할 필요가 없습니다.\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 "동굴 잡음"
#: 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 "Caves and tunnels form at the intersection of the two noises"
-msgstr ""
+msgid "Cave1 noise"
+msgstr "동굴1 잡음"
#: src/settings_translation_file.cpp
-msgid "Chat key"
-msgstr ""
+msgid "Cave2 noise"
+msgstr "동굴2 잡음"
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
-msgstr ""
+msgid "Cavern limit"
+msgstr "동굴 제한"
#: src/settings_translation_file.cpp
-msgid "Chatcommands"
-msgstr ""
+msgid "Cavern noise"
+msgstr "동굴 잡음"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr "동굴 테이퍼"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr "동굴 임계치"
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+msgstr "동굴 상한선"
#: src/settings_translation_file.cpp
msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+"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
+msgid "Chat command time message threshold"
+msgstr "채팅 메세지 강제퇴장 임계값"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "채팅 명렁어"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr "채팅 글자 크기"
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr "채팅"
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr "채팅 기록 수준"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr "채팅 메세지 수 제한"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr "채팅 메세지 포맷"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr "채팅 메세지 강제퇴장 임계값"
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr "채팅 메세지 최대 길이"
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr "채팅 스위치"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+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 "깨끗하고 투명한 텍스처"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "클라이언트"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
-msgstr ""
+msgstr "클라이언트와 서버"
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
-msgstr ""
+msgid "Client modding"
+msgstr "클라이언트 모딩"
#: src/settings_translation_file.cpp
-msgid "Cloud height"
-msgstr ""
+msgid "Client side modding restrictions"
+msgstr "클라이언트 측 모딩 제한"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr "클라이언트 측 노드 조회 범위 제한"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "클라이언트 모딩"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr "오르는 속도"
#: src/settings_translation_file.cpp
msgid "Cloud radius"
-msgstr ""
+msgstr "구름 반지름"
#: src/settings_translation_file.cpp
msgid "Clouds"
-msgstr ""
+msgstr "구름"
#: src/settings_translation_file.cpp
msgid "Clouds are a client side effect."
-msgstr ""
+msgstr "구름은 클라이언트에 측면 효과."
#: src/settings_translation_file.cpp
msgid "Clouds in menu"
-msgstr ""
+msgstr "메뉴에 구름"
#: src/settings_translation_file.cpp
msgid "Colored fog"
+msgstr "색깔있는 안개"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Colored shadows"
+msgstr "색깔있는 안개"
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
msgstr ""
+"컨텐츠 저장소에서 쉼표로 구분된 숨겨진 플래그 목록입니다.\n"
+"\"nonfree\"는 Free Software Foundation에서 정의한대로 '자유 소프트웨어'로 분"
+"류되지 않는 패키지를 숨기는 데 사용할 수 있습니다,\n"
+"콘텐츠 등급을 지정할 수도 있습니다.\n"
+"이 플래그는 Minetest 버전과 독립적이므로. \n"
+"https://content.minetest.net/help/content_flags/에서,\n"
+"전체 목록을 참조하십시오."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
msgstr ""
+"쉼표로 구분된 모드의 리스트는 HTTP API에 접근 할 수 있습니다,\n"
+"인터넷에서 데이터를 다운로드 하거나 업로드 할 수 있습니다."
#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of trusted mods that are allowed to access insecure\n"
"functions even when mod security is on (via request_insecure_environment())."
msgstr ""
+"mod 보안이 켜져있는 경우에도 안전하지 않은 기능에 액세스 할 수있는 쉼표로 구"
+"분 된 신뢰 할 수 있는 모드의 목록입니다\n"
+"(request_insecure_environment ()를 통해)."
#: src/settings_translation_file.cpp
msgid "Command key"
+msgstr "명령 키"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Connect glass"
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr "유리를 연결"
+
+#: src/settings_translation_file.cpp
msgid "Connect to external media server"
-msgstr ""
+msgstr "외부 미디어 서버에 연결"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
-msgstr ""
+msgstr "노드에서 지원하는 경우 유리를 연결합니다."
#: src/settings_translation_file.cpp
msgid "Console alpha"
-msgstr ""
+msgstr "콘솔 투명도"
#: src/settings_translation_file.cpp
msgid "Console color"
+msgstr "콘솔 색"
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr "콘솔 높이"
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Console key"
+msgid "ContentDB Flag Blacklist"
+msgstr "콘텐츠DB 블랙리스트 플래그"
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr "ContentDB URL주소"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
-msgstr ""
+msgstr "연속 전진"
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
+"연속 전진 이동, 자동 전진 키로 전환.\n"
+"비활성화하려면 자동 앞으로 이동 키를 다시 누르거나 뒤로 이동합니다."
#: src/settings_translation_file.cpp
msgid "Controls"
-msgstr ""
+msgstr "컨트롤"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
+"낮/밤 주기의 길이를 컨트롤.\n"
+"예: \n"
+"72 = 20 분, 360 = 4 분, 1 = 24 시간, 0 = 낮/밤/바뀌지 않고 그대로."
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Controls steepness/depth of lake depressions."
-msgstr ""
+msgstr "호수 침하의 경사/깊이를 조절."
#: src/settings_translation_file.cpp
msgid "Controls steepness/height of hills."
-msgstr ""
+msgstr "산의 높이/경사를 조절."
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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"
-msgstr ""
+msgstr "충돌 메시지"
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+msgid "Creative"
+msgstr "창의적인"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
-msgstr ""
+msgstr "십자선 투명도"
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
-msgstr ""
+#, fuzzy
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr "십자선 투명도 (불투명 함, 0과 255 사이)."
#: src/settings_translation_file.cpp
msgid "Crosshair color"
-msgstr ""
+msgstr "십자선 색"
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
msgid "DPI"
-msgstr ""
+msgstr "감도(DPI)"
#: src/settings_translation_file.cpp
msgid "Damage"
-msgstr ""
+msgstr "데미지"
#: src/settings_translation_file.cpp
msgid "Debug info toggle key"
-msgstr ""
+msgstr "디버그 정보 토글 키"
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr "디버그 로그 파일 크기 임계치"
#: src/settings_translation_file.cpp
msgid "Debug log level"
+msgstr "디버그 로그 수준"
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr "볼륨 낮추기 키"
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
-msgstr ""
+msgstr "전용 서버 단계"
#: src/settings_translation_file.cpp
msgid "Default acceleration"
-msgstr ""
+msgstr "기본 가속"
#: src/settings_translation_file.cpp
msgid "Default game"
-msgstr ""
+msgstr "기본 게임"
#: 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 ""
+"새로운 월드를 만들 때 기본 게임으로 시작합니다.\n"
+"주 메뉴에서 월드를 만들 때 재정의 될 것입니다."
#: src/settings_translation_file.cpp
msgid "Default password"
-msgstr ""
+msgstr "기본 비밀 번호"
#: src/settings_translation_file.cpp
msgid "Default privileges"
-msgstr ""
+msgstr "기본 권한"
#: src/settings_translation_file.cpp
msgid "Default report format"
-msgstr ""
+msgstr "기본 보고서 형식"
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr "기본 스택 크기"
#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr "나무에 사과가 있는 영역 정의."
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr "모래 해변이 있는 지역을 정의합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr "높은 지형의 분포와 절벽의 가파른 정도를 정의합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr "더 높은 지형의 분포를 정의합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgid "Defines large-scale river channel structure."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay in sending blocks after building"
+msgid "Defines location and terrain of optional hills and lakes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Delay showing tooltips, stated in milliseconds."
+msgid "Defines the base ground level."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Deprecated Lua API handling"
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find large caves."
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr "블록에 최대 플레이어 전송 거리를 정의 합니다 (0 = 무제한)."
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid "Defines the width of the river valley."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Defines tree areas and tree density."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr "건축 후 블록 전송 지연"
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr "도구 설명 표시 지연, 1000분의 1초."
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr "큰 동굴을 발견할 수 있는 깊이."
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr "큰 동굴을 발견할 수 있는 깊이."
+
+#: src/settings_translation_file.cpp
+msgid ""
"Description of server, to be displayed when players join and in the "
"serverlist."
-msgstr ""
+msgstr "플레이어가 서버리스트에서 조인 할때 서버의 설명이 보여질 것입니다."
#: src/settings_translation_file.cpp
-msgid "Desynchronize block animation"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr "블록 애니메이션 비동기화"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "장식"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "오른쪽 키"
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr "입자 효과"
+
+#: src/settings_translation_file.cpp
msgid "Disable anticheat"
-msgstr ""
+msgstr "Anticheat를 사용 안함"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
+msgstr "비밀번호 없으면 불가"
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr "도메인 서버의 이름은 서버리스트에 표시 됩니다."
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr "점프를 두번 탭하여 비행"
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr "점프키를 두번 누르면 비행 모드를 활성화시킵니다."
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr "아이템 드랍 키"
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr "Mapgen 디버그 정보를 덤프 합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Domain name of server, to be displayed in the serverlist."
+msgid "Dungeon minimum Y"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Double tap jump for fly"
+msgid "Dungeon noise"
+msgstr "던전 잡음"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Double-tapping the jump key toggles fly mode."
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Drop item key"
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Enable console window"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
+#, fuzzy
+msgid "Enable creative mode for all players"
+msgstr "새로 만든 맵에서 creative모드를 활성화시킵니다."
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr "조이스틱 활성화"
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "모드 채널 지원 활성화."
+
+#: src/settings_translation_file.cpp
msgid "Enable mod security"
-msgstr ""
+msgstr "모드 보안 적용"
#: src/settings_translation_file.cpp
msgid "Enable players getting damage and dying."
-msgstr ""
+msgstr "플레이어는 데미지를 받고 죽을 수 있습니다."
#: src/settings_translation_file.cpp
msgid "Enable random user input (only used for testing)."
-msgstr ""
+msgstr "랜덤 사용자 입력 (테스트에 사용)를 사용 합니다."
#: src/settings_translation_file.cpp
msgid ""
@@ -1840,6 +3359,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1847,6 +3370,10 @@ msgid ""
"to new servers, but they may not support all new features that you are "
"expecting."
msgstr ""
+"오래된 클라이언트 연결을 허락하지 않는것을 사용.\n"
+"이전 클라이언트는 서버에서 당신이 기대하는 새로운 특징들을 지원하지 않는다"
+"면 \n"
+"새로운 서버로 연결할 때 충돌하지 않을 것입니다."
#: src/settings_translation_file.cpp
msgid ""
@@ -1855,53 +3382,76 @@ msgid ""
"textures)\n"
"when connecting to the server."
msgstr ""
+"원격 미디어 서버 사용 가능(만약 서버에서 제공한다면).\n"
+"원격 서버들은 서버에 연결할 때 매우 빠르게 미디어를\n"
+"다운로드 할 수 있도록 제공합니다.(예: 텍스처)"
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"화면 흔들림 멀티플라이어\n"
+"예 : 0은 화면 흔들림 없음; 1.0은 노멀; 2.0은 더블."
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
+"IPv6 서버를 실행 활성화/비활성화.\n"
+"IPv6 서버는 IPv6 클라이언트 시스템 구성에 따라 제한 될 수 있습니다.\n"
+"만약 Bind_address가 설정 된 경우 무시 됩니다."
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
+msgid "Enables animation of inventory items."
+msgstr "인벤토리 아이템의 애니메이션 적용."
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Enables minimap."
-msgstr ""
+msgstr "미니맵 적용."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Engine profiler"
+msgstr "계곡 측면"
+
+#: src/settings_translation_file.cpp
msgid "Engine profiling data print interval"
-msgstr ""
+msgstr "엔진 프로 파일링 데이터 출력 간격"
#: src/settings_translation_file.cpp
msgid "Entity methods"
@@ -1909,159 +3459,281 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
-msgstr ""
+#, fuzzy
+msgid "FPS when unfocused or paused"
+msgstr "게임이 일시정지될때의 최대 FPS."
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Fallback font"
-msgstr "yes"
-
-#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
-msgstr ""
+msgid "Fall bobbing factor"
+msgstr "낙하 흔들림"
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
-msgstr ""
+msgid "Fallback font path"
+msgstr "대체 글꼴 경로"
#: src/settings_translation_file.cpp
msgid "Fast key"
-msgstr ""
+msgstr "빠른 키"
#: src/settings_translation_file.cpp
msgid "Fast mode acceleration"
-msgstr ""
+msgstr "고속 모드 가속"
#: src/settings_translation_file.cpp
msgid "Fast mode speed"
-msgstr ""
+msgstr "고속 모드 속도"
#: src/settings_translation_file.cpp
msgid "Fast movement"
-msgstr ""
+msgstr "빠른 이동"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
+"빠른 이동 ( \"특수\"키 사용).\n"
+"이를 위해서는 서버에 대한 \"빠른\"권한이 필요합니다."
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "시야"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
-msgstr ""
+msgstr "각도에 대한 시야."
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
+"멀티 플레이어 탭에 표시되는 즐겨 찾는 서버가 포함 된 \n"
+"client / serverlist /의 파일입니다."
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
-msgstr ""
+msgid "Filler depth"
+msgstr "강 깊이"
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Filmic tone mapping"
-msgstr ""
+msgstr "필름 형 톤 맵핑"
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "매끄럽게 표현하기:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
+msgstr "수정된 맵 시드"
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr "Floatland의 밀집도"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr "Floatland의 Y 최대값"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr "Floatland의 Y 최소값"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr "Floatland 노이즈"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr "Floatland의 테이퍼 지수"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr "Floatland의 테이퍼링 거리"
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr "Floatland의 물 높이"
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
-msgstr ""
+msgstr "비행 키"
#: src/settings_translation_file.cpp
msgid "Flying"
-msgstr ""
+msgstr "비행"
#: src/settings_translation_file.cpp
msgid "Fog"
+msgstr "안개"
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Fog toggle key"
+msgstr "안개 스위치"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Font"
+msgstr "글꼴 크기"
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Font shadow"
-msgstr ""
+msgstr "글꼴 그림자"
#: src/settings_translation_file.cpp
msgid "Font shadow alpha"
+msgstr "글꼴 그림자 투명도"
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr "글꼴 크기"
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid ""
+"Font size of the recent chat text and chat prompt in point (pt).\n"
+"Value 0 will use the default font size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Format of screenshots."
+msgstr "Screenshots의 형식입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr "게임 내에서 채팅 콘솔 배경 색상 (빨강, 초록, 파랑)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr "게임 내에서 채팅 콘솔 배경 알파 (불투명 함, 0와 255 사이)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr "게임 내에서 채팅 콘솔 배경 색상 (빨강, 초록, 파랑)."
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr "게임 내에서 채팅 콘솔 배경 알파 (불투명 함, 0와 255 사이)."
+
+#: src/settings_translation_file.cpp
msgid "Forward key"
+msgstr "앞으로 가는 키"
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2077,80 +3749,117 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
msgid "Full screen"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
+msgstr "전체 화면"
#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
-msgstr ""
+msgstr "전체 화면 모드."
#: src/settings_translation_file.cpp
msgid "GUI scaling"
-msgstr ""
+msgstr "GUI 크기 조정"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter"
-msgstr ""
+msgstr "GUI 크기 조정 필터"
#: src/settings_translation_file.cpp
msgid "GUI scaling filter txr2img"
-msgstr ""
+msgstr "GUI 크기 조정 필터 txr2img"
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "게임"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Global callbacks"
-msgstr ""
+msgstr "글로벌 콜백"
#: src/settings_translation_file.cpp
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Graphics"
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gravity"
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Graphics"
+msgstr "그래픽"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics Effects"
+msgstr "그래픽"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Graphics and Audio"
+msgstr "그래픽"
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr "중력"
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr "지면 수준"
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr "지면 노이즈"
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr "HTTP 모드"
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "GUI 크기 조정"
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
-msgstr ""
+msgstr "HUD 토글 키"
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2164,55 +3873,259 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Heat noise"
+msgstr "용암 잡음"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr "초기 창 크기의 높이 구성 요소입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr "높이 노이즈"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hill threshold"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr "언덕1 잡음"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr "언덕2 잡음"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr "언덕3 잡음"
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr "언덕4 잡음"
+
+#: src/settings_translation_file.cpp
msgid "Homepage of server, to be displayed in the serverlist."
+msgstr "서버의 홈페이지는 서버 리스트에 나타납니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr "핫바 슬롯 키 12"
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr "제작할 강의 깊이."
+
+#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
-"Higher value is smoother, but will use more RAM."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+#, fuzzy
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr "움직임에 대한 액체 저항을 높이려면 이 값을 줄입니다."
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr "제작할 강의 너비."
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "Humidity variation for biomes."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr "IPv6"
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr "IPv6 서버"
+
+#: src/settings_translation_file.cpp
msgid ""
"If FPS would go higher than this, limit it by sleeping\n"
"to not waste CPU power for no benefit."
@@ -2220,21 +4133,40 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+"활성화시, \"sneak\"키 대신 \"특수\"키가 내려가는데 \n"
+"사용됩니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2245,7 +4177,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "If enabled, disable cheat prevention in multiplayer."
-msgstr ""
+msgstr "적용할 경우, 멀티플레이어에서 치트 방지를 해제합니다."
#: src/settings_translation_file.cpp
msgid ""
@@ -2254,34 +4186,74 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr "적용할 경우, 새로운 플레이어는 빈 암호로 가입 할 수 없습니다."
+
+#: src/settings_translation_file.cpp
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
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+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 ""
#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr "적용할 경우, 플레이어는 지정된 위치에 항상 스폰 될 것입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr "월드 에러 무시"
+
+#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
-msgstr ""
+msgstr "게임 내에서 채팅 콘솔 배경 알파 (불투명 함, 0와 255 사이)."
#: src/settings_translation_file.cpp
msgid "In-game chat console background color (R,G,B)."
+msgstr "게임 내에서 채팅 콘솔 배경 색상 (빨,초,파)."
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr "게임 내에서 채팅 콘솔 배경 알파 (불투명 함, 0와 255 사이)."
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr "볼륨 증가 키"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2291,7 +4263,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2315,41 +4287,56 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
-msgstr ""
+#, fuzzy
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr "도구 설명 표시 지연, 1000분의 1초."
#: src/settings_translation_file.cpp
msgid "Inventory items animations"
-msgstr ""
+msgstr "인벤토리 아이템 애니메이션"
#: src/settings_translation_file.cpp
msgid "Inventory key"
-msgstr ""
+msgstr "인벤토리 키"
#: src/settings_translation_file.cpp
msgid "Invert mouse"
-msgstr ""
+msgstr "마우스 반전"
#: src/settings_translation_file.cpp
msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr "기울임꼴 경로"
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr "고정 폭 기울임 글꼴 경로"
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
+msgstr "아이템의 TTL(Time To Live)"
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2357,52 +4344,104 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Jump key"
+msgid "Julia w"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Jumping speed"
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr "점프 키"
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr "점프 속도"
+
+#: src/settings_translation_file.cpp
msgid ""
"Key for decreasing the viewing range.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"보여지는 범위 감소에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"볼륨 감소 키입니다.\n"
+"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 ""
+"점프키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2410,6 +4449,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"현재 선택된 아이템 드롭에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2417,6 +4459,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"보여지는 범위 증가에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"보여지는 범위 증가에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2424,6 +4479,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"점프키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2431,13 +4489,21 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"고속 모드에서 빠르게 이동하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"플레이어가 \n"
+"뒤쪽으로 움직이는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2445,6 +4511,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"플레이어가 앞으로 움직이는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2452,6 +4521,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"플레이어가 왼쪽으로 움직이는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2459,13 +4531,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"플레이어가 오른쪽으로 움직이는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"점프키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2473,6 +4551,19 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"명령어를 입력하기 위해 채팅창을 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+"로컬 명령어를 입력하기 위해 채팅창을 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2480,6 +4571,9 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"채팅창을 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
@@ -2487,627 +4581,917 @@ msgid ""
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"인벤토리를 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
+#, fuzzy
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"점프키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"인벤토리를 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"인벤토리를 여는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"13번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"14번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"15번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"16번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"17번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"18번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"19번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"20번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"21번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"22번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"23번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"24번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"25번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"26번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"27번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"28번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"29번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"30번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"31번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"32번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Left key"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"8번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"5번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"1번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"4번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"다음 아이템 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"9번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"이전 아이템 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"2번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"7번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"6번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"10번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"3번째 hotbar 슬롯을 선택하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"살금살금걷기 키입니다.\n"
+"만약 aux1_descends를 사용할 수 없는 경우에 물에서 내려가거나 올라올 수 있습니"
+"다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"1인칭에서 3인칭간 카메라 전환키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"스크린샷키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"자동전진 토글에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"시네마틱 모드 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"미니 맵 표시 설정/해제 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"고속 모드 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Main menu mod manager"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"비행 모드 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Main menu script"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"자유시점 모드 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"피치 이동 모드 토글에 대한 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"카메라 업데이트 스위치 키입니다. 개발을 위해서만 사용됩니다. \n"
+"참조 http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"채팅 디스플레이 토글 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"디버그 정보 표시 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"안개 디스플레이 토글 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"HUD 표시 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"채팅 콘솔 디스플레이 토글 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"제한없이 보여지는 범위에 대한 스위치 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
+"가능한 경우 시야 확대를 사용하는 키입니다.\n"
+"Http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3 참조"
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
-msgstr ""
+msgid "Language"
+msgstr "언어"
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
-msgstr ""
+msgid "Large cave depth"
+msgstr "큰 동굴 깊이"
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+msgid "Large chat console key"
+msgstr "큰 채팅 콘솔 키"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
-msgstr ""
+msgid "Leaves style"
+msgstr "나뭇잎 스타일"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
+"나뭇잎 스타일:\n"
+"- 아름다운: 모든 면 표시\n"
+"- 간단: 외부 면만 표시, special_tiles를 정의 하는 경우만 사용\n"
+"- 불투명: 투명도 사용 안 함"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
+msgid "Left key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
+"True로 설정하면 흔들리는 나뭇잎 효과가 적용됩니다.\n"
+"쉐이더를 활성화 해야 합니다."
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "부드러운 조명 효과"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
+"(0, 0, 0)에서 모든 6 개 방향의 노드에서 맵 생성 제한.\n"
+"mapgen 제한 내에 완전히 포함 된 맵 청크 만 생성됩니다.\n"
+"값은 세계별로 저장됩니다."
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
-msgstr ""
+msgid "Liquid sinking"
+msgstr "하강 속도"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Loading Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+msgid "Main menu script"
+msgstr "주 메뉴 스크립트"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
-msgstr ""
+msgid "Makes all liquids opaque"
+msgstr "모든 액체를 불투명하게 만들기"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
-msgstr ""
+msgid "Map generation limit"
+msgstr "맵 생성 제한"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
-msgstr ""
+msgid "Map save interval"
+msgstr "맵 저장 간격"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
-msgstr ""
+msgid "Mapblock mesh generation delay"
+msgstr "맵 블록 생성 지연"
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
-msgstr ""
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr "Mapblock 메시 생성기의 MapBlock 캐시 크기 (MB)"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
+msgid "Mapgen Carpathian"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+msgid "Mapgen Flat"
+msgstr "Mapgen 플랫"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+msgid "Mapgen Fractal"
+msgstr "Mapgen 형태"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+msgid "Mapgen Fractal specific flags"
+msgstr "Mapgen 형태 상세 플래그"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+msgid "Mapgen V5"
+msgstr "맵젠 V5"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+msgid "Mapgen V6"
+msgstr "맵젠 V6"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+msgid "Mapgen V7"
+msgstr "맵젠 V7"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
+msgid "Mapgen Valleys"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
+msgid "Mapgen Valleys specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
-msgstr ""
+msgid "Mapgen debug"
+msgstr "맵젠 디버그"
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
-msgstr ""
+msgid "Mapgen name"
+msgstr "Mapgen 이름"
#: src/settings_translation_file.cpp
msgid "Max block generate distance"
@@ -3115,7 +5499,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Max block send distance"
-msgstr ""
+msgstr "최대 블록 전송 거리"
#: src/settings_translation_file.cpp
msgid "Max liquids processed per step."
@@ -3131,26 +5515,44 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum FPS"
-msgstr ""
+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."
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum forceloaded blocks"
-msgstr ""
+msgstr "최대 강제 로딩 블럭"
#: src/settings_translation_file.cpp
msgid "Maximum hotbar width"
+msgstr "최대 hotbar 폭"
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+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 ""
#: src/settings_translation_file.cpp
@@ -3160,13 +5562,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3187,7 +5596,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr "동시접속 할 수 있는 최대 인원 수."
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3196,96 +5609,158 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Maximum objects per block"
-msgstr ""
+msgstr "블록 당 최대 개체"
#: src/settings_translation_file.cpp
msgid ""
"Maximum proportion of current window to be used for hotbar.\n"
"Useful if there's something to be displayed right or left of hotbar."
msgstr ""
+"현재 윈도우의 최대 부분은 hotbar를 사용할 것입니다.\n"
+"hotbar의 오른쪽이나 왼쪽에 무언가를 나타낼 때 유용합니다."
#: src/settings_translation_file.cpp
msgid "Maximum simultaneous block sends per client"
-msgstr ""
+msgstr "클라이언트 당 최대 동시 블록 전송"
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+#, fuzzy
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
+"ms 에서 파일을 다운로드하면 (예 : 모드 다운로드) 최대 시간이 걸릴 수 있습니"
+"다."
#: src/settings_translation_file.cpp
-msgid "Menus"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr "최대 사용자"
+
+#: src/settings_translation_file.cpp
msgid "Mesh cache"
-msgstr ""
+msgstr "메쉬 캐시"
#: src/settings_translation_file.cpp
msgid "Message of the day"
-msgstr ""
+msgstr "메시지"
#: src/settings_translation_file.cpp
msgid "Message of the day displayed to players connecting."
-msgstr ""
+msgstr "연결하는 플레이어에게 보여지는 메시지."
#: src/settings_translation_file.cpp
msgid "Method used to highlight selected object."
+msgstr "선택한 개체를 강조 표시 하는 데 사용 하는 방법입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Minimap"
-msgstr ""
+msgstr "미니맵"
#: src/settings_translation_file.cpp
msgid "Minimap key"
-msgstr ""
+msgstr "미니맵 키"
#: src/settings_translation_file.cpp
msgid "Minimap scan height"
+msgstr "미니맵 스캔 높이"
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr "최소 텍스처 크기"
+
+#: src/settings_translation_file.cpp
msgid "Mipmapping"
-msgstr ""
+msgstr "밉매핑(Mipmapping)"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+#, fuzzy
+msgid "Mod Profiler"
+msgstr "프로파일러"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Mod Security"
+msgstr "보안"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Monospace font path"
-msgstr ""
+msgstr "고정 폭 글꼴 경로"
#: src/settings_translation_file.cpp
msgid "Monospace font size"
+msgstr "고정 폭 글꼴 크기"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Monospace font size divisible by"
+msgstr "고정 폭 글꼴 크기"
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mouse sensitivity"
+msgid "Mountain noise"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr "산 0 수준"
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr "마우스 감도"
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity multiplier."
+msgstr "마우스 감도 멀티플라이어."
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3293,17 +5768,23 @@ msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
+"낙하 흔들림 멀티플라이어\n"
+"예 : 0은 화면 흔들림 없음; 1.0은 노말; 2.0은 더블."
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgid "Mute key"
+msgstr "음소거 키"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3312,14 +5793,17 @@ msgid ""
"When running a server, clients connecting with this name are admins.\n"
"When starting from the main menu, this is overridden."
msgstr ""
+"플레이어의 이름.\n"
+"서버가 열려 있을 때 이 이름으로 연결되는 클라이언트는 관리자입니다.\n"
+"메인 메뉴에서 시작할 때 이것은 재정의됩니다."
#: src/settings_translation_file.cpp
msgid ""
"Name of the server, to be displayed when players join and in the serverlist."
-msgstr ""
+msgstr "서버이름은 플레이어가 서버 리스트에 들어갈 때 나타납니다."
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3329,161 +5813,227 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Networking"
+msgstr "네트워크"
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
-msgstr ""
+msgstr "신규 사용자는 이 비밀번호를 입력해야 합니다."
#: src/settings_translation_file.cpp
msgid "Noclip"
-msgstr ""
+msgstr "노클립"
#: src/settings_translation_file.cpp
msgid "Noclip key"
-msgstr ""
+msgstr "노클립 키"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Node 강조"
#: src/settings_translation_file.cpp
msgid "Node highlighting"
-msgstr ""
+msgstr "Node 강조"
#: src/settings_translation_file.cpp
msgid "NodeTimer interval"
-msgstr ""
+msgstr "NodeTimer 간격"
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
-msgstr ""
+msgid "Noises"
+msgstr "소리"
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
-msgstr ""
+msgid "Opaque liquids"
+msgstr "불투명한 액체"
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
+"shader의 경로입니다. 어떠한 경로도 지정되지 않았다면 기본 위치가 쓰입니다."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
-msgstr ""
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr "텍스처 디렉터리 경로입니다. 모든 텍스처는 여기에서 먼저 검색 됩니다."
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
-msgstr ""
+msgid "Physics"
+msgstr "물리학"
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
-msgstr ""
+msgid "Pitch move key"
+msgstr "피치 이동 키"
#: src/settings_translation_file.cpp
-msgid "Physics"
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place key"
+msgstr "비행 키"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Place repetition interval"
+msgstr "오른쪽 클릭 반복 간격"
+
+#: src/settings_translation_file.cpp
msgid ""
"Player is able to fly without being affected by gravity.\n"
"This requires the \"fly\" privilege on the server."
msgstr ""
+"플레이어는 중력에 의해 영향을 받지 않고 날 수 있습니다.\n"
+"서버에서는 \"fly\" 권한을 필요로 합니다."
#: src/settings_translation_file.cpp
-msgid "Player name"
-msgstr ""
+msgid "Player transfer distance"
+msgstr "플레이어 전송 거리"
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
-msgstr ""
+msgid "Player versus player"
+msgstr "PVP"
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "이중 선형 필터링"
#: src/settings_translation_file.cpp
msgid ""
"Port to connect to (UDP).\n"
"Note that the port field in the main menu overrides this setting."
msgstr ""
+"(UDP)에 연결 하는 포트.\n"
+"참고 주 메뉴의 포트 필트는 이 설정으로 재정의 됩니다."
#: src/settings_translation_file.cpp
-msgid "Prevent mods from doing insecure things like running shell commands."
+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 ""
#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr "shell 명령어 실행 같은 안전 하지 않은 것으로부터 모드를 보호합니다."
+
+#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
+"엔진의 프로파일링 데이터를 규칙적인 간격(초단위)으로 출력합니다.\n"
+"0 = 사용안함. 개발자들에게 유용합니다."
#: src/settings_translation_file.cpp
msgid "Privileges that players with basic_privs can grant"
-msgstr ""
+msgstr "플레이어와 기본 특권을 부여할 수 있는 권한"
#: src/settings_translation_file.cpp
msgid "Profiler"
-msgstr ""
+msgstr "프로파일러"
#: src/settings_translation_file.cpp
msgid "Profiler toggle key"
+msgstr "프로파일러 토글 키"
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3492,78 +6042,148 @@ msgid ""
"Values larger than 26 will start to produce sharp cutoffs at cloud area "
"corners."
msgstr ""
+"64node 구름 사각형영역의 반지름.\n"
+"26보다 큰 수치들은 구름을 선명하게 만들고 모서리를 잘라낼 것입니다."
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
-msgstr ""
+msgid "Raises terrain to make valleys around the rivers."
+msgstr "강 주변에 계곡을 만들기 위해 지형을 올립니다."
#: src/settings_translation_file.cpp
msgid "Random input"
-msgstr ""
+msgstr "임의 입력"
#: src/settings_translation_file.cpp
msgid "Range select key"
+msgstr "범위 선택 키"
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr "보고서 경로"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
-msgstr ""
+msgstr "원격 미디어"
#: src/settings_translation_file.cpp
msgid "Remote port"
+msgstr "원격 포트"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
-msgstr ""
+msgstr "기본 주 메뉴를 커스텀 메뉴로 바꿉니다."
#: src/settings_translation_file.cpp
msgid "Report path"
-msgstr ""
+msgstr "보고서 경로"
#: src/settings_translation_file.cpp
-msgid "Right key"
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "Ridge mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
-msgstr ""
+msgid "Ridge noise"
+msgstr "능선 노이즈"
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "Ridge underwater noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+msgid "Ridged mountain size noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
-msgstr ""
+msgid "Right key"
+msgstr "오른쪽 키"
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr "강 깊이"
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr "강 너비"
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr "강 깊이"
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr "강 소리"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr "강 크기"
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr "강 계곡 폭"
#: src/settings_translation_file.cpp
msgid "Rollback recording"
+msgstr "롤백 레코딩"
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Round minimap"
+msgstr "원형 미니맵"
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
+msgstr "디스크에 클라이언트에서 받은 맵을 저장 합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Saving map received from server"
-msgstr ""
+msgstr "서버로부터 받은 맵을 저장"
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3571,28 +6191,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
-msgstr ""
+#, fuzzy
+msgid "Screen"
+msgstr "화면:"
#: src/settings_translation_file.cpp
-msgid "Screen width"
-msgstr ""
+msgid "Screen height"
+msgstr "화면 높이"
#: src/settings_translation_file.cpp
-msgid "Screenshot"
-msgstr ""
+msgid "Screen width"
+msgstr "화면 너비"
#: src/settings_translation_file.cpp
msgid "Screenshot folder"
-msgstr ""
+msgstr "스크린샷 폴더"
#: src/settings_translation_file.cpp
msgid "Screenshot format"
-msgstr ""
+msgstr "화면 캡처 형식"
#: src/settings_translation_file.cpp
msgid "Screenshot quality"
-msgstr ""
+msgstr "스크린샷 품질"
#: src/settings_translation_file.cpp
msgid ""
@@ -3600,141 +6221,377 @@ msgid ""
"1 means worst quality; 100 means best quality.\n"
"Use 0 for default quality."
msgstr ""
+"화면 캡처 품질입니다. JPEG 형식에만 사용.\n"
+"1은 최악의 품질; 100은 최고의 품질을 의미합니다.\n"
+"기본 품질을 사용하려면 0을 사용 합니다."
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "스크린샷"
#: src/settings_translation_file.cpp
-msgid "Security"
+msgid "Seabed noise"
+msgstr "해저 노이즈"
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr "Http://www.sqlite.org/pragma.html#pragma_synchronous 참조"
+
+#: src/settings_translation_file.cpp
msgid "Selection box border color (R,G,B)."
-msgstr ""
+msgstr "선택 박스 테두리 색 (빨, 초, 파)."
#: src/settings_translation_file.cpp
msgid "Selection box color"
-msgstr ""
+msgstr "선택 박스 컬러"
#: src/settings_translation_file.cpp
msgid "Selection box width"
-msgstr ""
+msgstr "선택 박스 너비"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+"9가지 공식에서 18 도형을 선택하세요.\n"
+"1 = 4 D \"Roundy\" 만델브로트 집합.\n"
+"2 = 4 D \"Roundy\" 줄리아 집합.\n"
+"3 = 4 D \"Squarry\" 만델브로트 집합.\n"
+"4 = 4 D \"Squarry\" 줄리아 집합.\n"
+"5 = 4 D \"맨디 사촌\" 만델브로트 집합.\n"
+"6 = 4 D \"맨디 사촌\" 줄리아 집합.\n"
+"7 = 4 D \"변형\" 만델브로트 집합.\n"
+"8 = 4 D \"변형\" 줄리아 집합.\n"
+"9 = 3D \"만델브로트/만델바\" 만델브로트 집합.\n"
+"10 = 3D \"만델브로트/만델바\" 줄리아 집합.\n"
+"11 = 3D \"크리스마스 트리\" 만델브로트 집합.\n"
+"12 = 3D \"크리스마스 트리\" 줄리아 집합.\n"
+"13 = 3D \"만델벌브\" 만델브로트 집합.\n"
+"14 = 3D \"만델벌브\" 줄리아 집합.\n"
+"15 = 3D \"코사인 만델벌브\" 만델브로트 집합.\n"
+"16 = 3D \"코사인 만델벌브\" 줄리아 집합.\n"
+"17 = 4 D \"만델벌브\" 만델브로트 집합.\n"
+"18 = 4 D \"만델벌브\" 줄리아 집합."
#: src/settings_translation_file.cpp
-msgid "Server / Singleplayer"
-msgstr ""
+#, fuzzy
+msgid "Server"
+msgstr "서버 URL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "서버 이름"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "서버 설명"
#: src/settings_translation_file.cpp
msgid "Server URL"
-msgstr ""
+msgstr "서버 URL"
#: src/settings_translation_file.cpp
msgid "Server address"
-msgstr ""
+msgstr "서버 주소"
#: src/settings_translation_file.cpp
msgid "Server description"
-msgstr ""
+msgstr "서버 설명"
#: src/settings_translation_file.cpp
msgid "Server name"
-msgstr ""
+msgstr "서버 이름"
#: src/settings_translation_file.cpp
msgid "Server port"
+msgstr "서버 포트"
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "서버 포트"
+
+#: src/settings_translation_file.cpp
msgid "Serverlist URL"
-msgstr ""
+msgstr "서버리스트 URL"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "서버리스트 URL"
#: src/settings_translation_file.cpp
msgid "Serverlist file"
-msgstr ""
+msgstr "서버리스트 파일"
#: src/settings_translation_file.cpp
msgid ""
"Set the language. Leave empty to use the system language.\n"
"A restart is required after changing this."
msgstr ""
+"언어 설정. 시스템 언어를 사용하려면 비워두세요.\n"
+"설정 적용 후 재시작이 필요합니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
"Requires shaders to be enabled."
msgstr ""
+"True로 설정하면 흔들리는 나뭇잎 효과가 적용됩니다.\n"
+"쉐이더를 활성화 해야 합니다."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
+"True로 설정하면 흔들리는 나뭇잎 효과가 적용됩니다.\n"
+"쉐이더를 활성화 해야 합니다."
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
+"True로 설정하면 물결효과가 적용됩니다.\n"
+"쉐이더를 활성화해야 합니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+"True로 설정하면 흔들리는 식물 효과가 적용됩니다.\n"
+"쉐이더를 활성화 해야 합니다."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr "쉐이더 경로"
#: src/settings_translation_file.cpp
msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
msgstr ""
+"쉐이더는 확장된 시각 효과를 제공하고 몇몇 비디오 카드의 성능이 증가할 수도 있"
+"습니다.\n"
+"이것은 OpenGL video backend에서만 \n"
+"작동합니다."
#: src/settings_translation_file.cpp
-msgid "Shape of the minimap. Enabled = round, disabled = square."
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "스크린샷 품질"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Show debug info"
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow map texture size"
+msgstr "최소 텍스처 크기"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr "글꼴 그림자 오프셋, 만약 0 이면 그림자는 나타나지 않을 것입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr "미니맵 모양. 활성화 = 원형, 비활성화 = 정사각형."
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr "디버그 정보 보기"
+
+#: src/settings_translation_file.cpp
msgid "Show entity selection boxes"
+msgstr "개체 선택 상자 보기"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+"언어 설정. 시스템 언어를 사용하려면 비워두세요.\n"
+"설정 적용 후 재시작이 필요합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Shutdown message"
+msgstr "서버닫힘 메시지"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Sky Body Orbit Tilt"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Smooth lighting"
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr "높이 수정을 위해 기울기와 채우기를 함께 작용합니다."
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr "부드러운 조명효과"
+
+#: src/settings_translation_file.cpp
msgid ""
"Smooths camera when looking around. Also called look or mouse smoothing.\n"
"Useful for recording videos."
msgstr ""
+"주위를 돌아볼 때 카메라를 부드럽게 해줍니다. 보기 또는 부드러운 마우스라고도 "
+"부릅니다.\n"
+"비디오를 녹화하기에 유용합니다."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
msgstr ""
+"시네마틱 모드에서 카메라의 회전을 매끄럽게 만듭니다. 사용 하지 않으려면 0을 "
+"입력하세요."
#: src/settings_translation_file.cpp
msgid "Smooths rotation of camera. 0 to disable."
-msgstr ""
+msgstr "카메라의 회전을 매끄럽게 만듭니다. 사용 하지 않으려면 0을 입력하세요."
#: src/settings_translation_file.cpp
msgid "Sneak key"
+msgstr "살금살금걷기 키"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr "걷는 속도"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Soft shadow radius"
+msgstr "글꼴 그림자 투명도"
+
+#: src/settings_translation_file.cpp
msgid "Sound"
-msgstr ""
+msgstr "사운드"
#: src/settings_translation_file.cpp
msgid ""
@@ -3745,23 +6602,74 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
+msgstr "고정된 스폰포인트"
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Step mountain size noise"
+msgstr "계단식 산 높이"
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Strength of 3D mode parallax."
+msgstr "자동으로 생성되는 노멀맵의 강도."
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
msgid "Strict protocol checking"
+msgstr "엄격한 프로토콜 검사"
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3769,10 +6677,35 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "설정"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr "지형 높이"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr "지형 기초 분산"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr "지형 높이"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr "지형 높이 분산"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr "지형 분산"
+
+#: src/settings_translation_file.cpp
msgid ""
"Terrain noise threshold for hills.\n"
"Controls proportion of world area covered by hills.\n"
@@ -3787,11 +6720,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
+msgstr "텍스처 경로"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3801,13 +6759,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
+msgstr "흙이나 다른 것의 깊이."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3819,15 +6793,35 @@ msgid ""
"The privileges that new users automatically get.\n"
"See /privs in game for a full list on your server and mod configuration."
msgstr ""
+"새로운 유저가 자동으로 얻는 권한입니다.\n"
+"게임에서 /privs를 입력하여 서버와 모드 환경설정의 전체 권한 목록을 확인하세"
+"요."
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3847,22 +6841,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3870,18 +6877,27 @@ msgid ""
"Time in seconds for item entity (dropped items) to live.\n"
"Setting it to -1 disables the feature."
msgstr ""
+"드랍된 아이템이 살아 있는 시간입니다.\n"
+"-1을 입력하여 비활성화합니다."
#: src/settings_translation_file.cpp
-msgid "Time send interval"
+msgid "Time of day when a new world is started, in millihours (0-23999)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr "시간 전송 간격"
+
+#: src/settings_translation_file.cpp
msgid "Time speed"
-msgstr ""
+msgstr "시간 속도"
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+#, fuzzy
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
+"메모리에서 사용 하지 않는 맵 데이터를 제거하기 위해 클라이언트에 대한 시간 제"
+"한입니다."
#: src/settings_translation_file.cpp
msgid ""
@@ -3890,72 +6906,129 @@ msgid ""
"This determines how long they are slowed down after placing or removing a "
"node."
msgstr ""
+"플레이어가 무엇을 건설할 때 렉을 줄이기 위해 블럭 전송이 느려집니다.\n"
+"이것은 node가 배치되거나 제거된 후 얼마나 오래 느려지는지를 결정합니다."
#: src/settings_translation_file.cpp
msgid "Toggle camera mode key"
-msgstr ""
+msgstr "카메라모드 스위치 키"
#: src/settings_translation_file.cpp
msgid "Tooltip delay"
+msgstr "도구 설명 지연"
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr "터치임계값 (픽셀)"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Touchscreen"
+msgstr "터치임계값 (픽셀)"
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Trilinear filtering"
+msgid "Transparency Sorting Distance"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr "삼중 선형 필터링"
+
+#: src/settings_translation_file.cpp
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
+"True = 256 \n"
+"False = 128 \n"
+"느린 컴퓨터에서 미니맵을 부드럽게 만들어줍니다."
#: src/settings_translation_file.cpp
msgid "Trusted mods"
-msgstr ""
+msgstr "신뢰할 수 있는 모드"
#: src/settings_translation_file.cpp
msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr "멀티 탭에 표시 된 서버 목록 URL입니다."
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr "좌표표집(Undersampling)"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
-msgstr ""
+msgstr "무제한 플레이어 전송 거리"
#: src/settings_translation_file.cpp
msgid "Unload unused server data"
+msgstr "사용하지 않은 서버 데이터 삭제"
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use 3D cloud look instead of flat."
+msgid "Upper Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr "평평하게 보는 대신에 3D 구름 효과를 사용합니다."
+
+#: src/settings_translation_file.cpp
msgid "Use a cloud animation for the main menu background."
-msgstr ""
+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 "Use key"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Use trilinear filtering when scaling textures."
-msgstr ""
+msgstr "삼중 선형 필터링은 질감 스케일링을 할 때 사용 합니다."
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3963,110 +7036,170 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr "수직동기화 V-Sync"
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr "계곡 깊이"
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr "계곡 채우기"
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr "계곡 측면"
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr "계곡 경사"
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr "숫자 의 마우스 설정."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Varies steepness of cliffs."
+msgstr "산의 높이/경사를 조절."
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Vertical screen synchronization."
-msgstr ""
+msgstr "세로 화면 동기화."
#: src/settings_translation_file.cpp
msgid "Video driver"
-msgstr ""
+msgstr "비디오 드라이버"
#: src/settings_translation_file.cpp
-msgid "View bobbing"
-msgstr ""
+msgid "View bobbing factor"
+msgstr "시야의 흔들리는 정도"
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
-msgstr ""
+msgid "View distance in nodes."
+msgstr "node의 보여지는 거리(최소 = 20)."
#: 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 "확대 키"
#: src/settings_translation_file.cpp
msgid "Viewing range"
+msgstr "시야 범위"
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
msgstr ""
#: src/settings_translation_file.cpp
msgid "Volume"
+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 ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Walking speed"
+msgid "Walking and flying speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Water Features"
+msgid "Walking speed"
+msgstr "걷는 속도"
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
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"
-msgstr ""
+msgstr "움직이는 Node"
#: src/settings_translation_file.cpp
msgid "Waving leaves"
-msgstr ""
+msgstr "흔들리는 나뭇잎 효과"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+msgid "Waving liquids"
+msgstr "물 움직임"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+msgid "Waving liquids wave height"
+msgstr "물결 높이"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+msgid "Waving liquids wave speed"
+msgstr "물결 속도"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
-msgstr ""
+msgid "Waving liquids wavelength"
+msgstr "물결 길이"
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
-msgstr ""
+msgid "Waving plants"
+msgstr "흔들리는 식물 효과"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Weblink color"
+msgstr "선택 박스 컬러"
#: src/settings_translation_file.cpp
msgid ""
@@ -4074,6 +7207,10 @@ 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"
+"(e.g. render-to-texture for nodes in inventory)."
#: src/settings_translation_file.cpp
msgid ""
@@ -4084,29 +7221,32 @@ msgid ""
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"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
+"이중선형/삼중선형/이방성 필터를 사용할 때 \n"
+"저해상도 택스쳐는 희미하게 보일 수 있습니다.\n"
+"so automatically upscale them with nearest-neighbor interpolation to "
+"preserve crisp pixels. \n"
+"This sets the minimum texture size for the upscaled textures; \n"
+"값이 높을수록 선명하게 보입니다. \n"
+"하지만 많은 메모리가 필요합니다. \n"
+"Powers of 2 are recommended. \n"
+"Setting this higher than 1 may not have a visible effect\n"
+"unless bilinear/trilinear/anisotropic filtering is enabled."
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4121,7 +7261,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid "Whether to allow players to damage and kill each other."
-msgstr ""
+msgstr "플레이어끼리 서로 공격하고 죽이는 것에 대한 허락 여부."
#: src/settings_translation_file.cpp
msgid ""
@@ -4135,23 +7275,42 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+#, fuzzy
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr "폭은 초기 창 크기로 구성되어 있습니다."
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
msgstr ""
+"node 주위 “selectionbox'” or (if UTF-8 supported) “selectionbox’” 라인의 너비"
+"입니다."
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4159,13 +7318,75 @@ msgid ""
"World directory (everything in the world is stored here).\n"
"Not needed if starting from the main menu."
msgstr ""
+"월드 디렉토리 (월드의 모든 것은 여기에 저장됩니다).\n"
+"주 메뉴에서 시작 하는 경우 필요 하지 않습니다."
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr "세계 시작 시간"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Y of flat ground."
+msgstr "평평한 땅의 Y값."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4173,9 +7394,346 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "cURL interactive timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- 크리에이티브 모드: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- 데미지: "
+
+#~ msgid ""
+#~ "0 = parallax occlusion with slope information (faster).\n"
+#~ "1 = relief mapping (slower, more accurate)."
+#~ msgstr ""
+#~ "0 = 경사 정보가 존재 (빠름).\n"
+#~ "1 = 릴리프 매핑 (더 느리고 정확함)."
+
+#~ msgid "Address / Port"
+#~ msgstr "주소/포트"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "싱글 플레이어 월드를 리셋하겠습니까?"
+
+#~ msgid "Back"
+#~ msgstr "뒤로"
+
+#~ msgid "Basic"
+#~ msgstr "기본"
+
+#~ msgid "Bits per pixel (aka color depth) in fullscreen mode."
+#~ msgstr "전체 화면 모드에서 (일명 색 농도) 픽셀 당 비트."
+
+#~ msgid "Bump Mapping"
+#~ msgstr "범프 매핑"
+
+#~ 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 ""
+#~ "메인 메뉴 UI 변경 :\n"
+#~ "-전체 : 여러 싱글 플레이어 월드, 게임 선택, 텍스처 팩 선택기 등.\n"
+#~ "-단순함 : 단일 플레이어 세계, 게임 또는 텍스처 팩 선택기가 없습니다. \n"
+#~ "작은 화면에 필요할 수 있습니다."
+
+#~ msgid "Config mods"
+#~ msgstr "모드 설정"
+
+#~ msgid "Configure"
+#~ msgstr "환경설정"
+
+#~ msgid "Connect"
+#~ msgstr "연결"
+
+#~ msgid "Controls sinking speed in liquid."
+#~ msgstr "액체의 하강 속도 제어."
+
+#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+#~ msgstr "터널 너비를 조절, 작은 수치는 넓은 터널을 만듭니다."
+
+#~ msgid "Credits"
+#~ msgstr "만든이"
+
+#~ msgid "Crosshair color (R,G,B)."
+#~ msgstr "십자선 색 (빨, 초, 파)."
+
+#~ msgid "Damage enabled"
+#~ msgstr "데미지 활성화"
+
+#~ msgid ""
+#~ "Default timeout for cURL, stated in milliseconds.\n"
+#~ "Only has an effect if compiled with cURL."
+#~ msgstr ""
+#~ "cURL에 대한 기본 제한 시간 (밀리 초 단위).\n"
+#~ "cURL로 컴파일 된 경우에만 효과가 있습니다."
+
+#~ msgid ""
+#~ "Defines sampling step of texture.\n"
+#~ "A higher value results in smoother normal maps."
+#~ msgstr ""
+#~ "텍스처의 샘플링 단계를 정의합니다.\n"
+#~ "일반 맵에 부드럽게 높은 값을 나타냅니다."
+
+#~ msgid "Del. Favorite"
+#~ msgstr "즐겨찾기 삭제"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "minetest.net에서 Minetest Game 같은 서브 게임을 다운로드하세요"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "minetest.net에서 다운로드 하세요"
+
+#, fuzzy
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "$1 를(을) 다운로드중입니다. 기다려주세요..."
+
+#~ msgid "Enable VBO"
+#~ msgstr "VBO 적용"
+
+#~ msgid ""
+#~ "Enables bumpmapping for textures. Normalmaps need to be supplied by the "
+#~ "texture pack\n"
+#~ "or need to be auto-generated.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "텍스처에 bumpmapping을 할 수 있습니다. \n"
+#~ "Normalmaps는 텍스쳐 팩에서 받거나 자동 생성될 필요가 있습니다.\n"
+#~ "쉐이더를 활성화 해야 합니다."
+
+#~ msgid ""
+#~ "Enables on the fly normalmap generation (Emboss effect).\n"
+#~ "Requires bumpmapping to be enabled."
+#~ msgstr ""
+#~ "비행 노멀맵 생성 적용 (엠보스 효과).\n"
+#~ "Bumpmapping를 활성화 해야 합니다."
+
+#~ msgid ""
+#~ "Enables parallax occlusion mapping.\n"
+#~ "Requires shaders to be enabled."
+#~ msgstr ""
+#~ "시차 교합 맵핑 적용.\n"
+#~ "쉐이더를 활성화 해야 합니다."
+
+#~ msgid "Enter "
+#~ msgstr "들어가기 "
+
+#~ msgid "FPS in pause menu"
+#~ msgstr "일시정지 메뉴에서 FPS"
+
+#~ msgid "Fallback font shadow"
+#~ msgstr "대체 글꼴 그림자"
+
+#~ msgid "Fallback font shadow alpha"
+#~ msgstr "대체 글꼴 그림자 투명도"
+
+#~ msgid "Fallback font size"
+#~ msgstr "대체 글꼴 크기"
+
+#~ msgid "Filtering"
+#~ msgstr "필터링"
+
+#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+#~ msgstr "글꼴 그림자 투명도 (불투명 함, 0과 255 사이)."
+
+#~ msgid "FreeType fonts"
+#~ msgstr "Freetype 글꼴"
+
+#~ msgid "Full screen BPP"
+#~ msgstr "전체 화면 BPP"
+
+#~ msgid "Game"
+#~ msgstr "게임"
+
+#~ msgid "Gamma"
+#~ msgstr "감마"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Normal maps 생성"
+
+#~ msgid "Generate normalmaps"
+#~ msgstr "Normalmaps 생성"
+
+#~ msgid "In-Game"
+#~ msgstr "인게임"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "모드 설치: 파일: \"$1\""
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Keybindings. (이 메뉴를 고정하려면 minetest.cof에서 stuff를 제거해야합니"
+#~ "다.)"
+
+#, fuzzy
+#~ msgid "Lava depth"
+#~ msgstr "큰 동굴 깊이"
+
+#~ msgid "Main"
+#~ msgstr "메인"
+
+#~ msgid "Main menu style"
+#~ msgstr "주 메뉴 스크립트"
+
+#~ msgid "Menus"
+#~ msgstr "메뉴"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "레이더 모드의 미니맵, 2배 확대"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "레이더 모드의 미니맵, 4배 확대"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "표면 모드의 미니맵, 2배 확대"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "표면 모드의 미니맵, 4배 확대"
+
+#~ msgid "Name / Password"
+#~ msgstr "이름/비밀번호"
+
+#~ msgid "Name/Password"
+#~ msgstr "이름/비밀번호"
+
+#~ msgid "No"
+#~ msgstr "아니오"
+
+#~ msgid "Normalmaps sampling"
+#~ msgstr "Normalmaps 샘플링"
+
+#~ msgid "Normalmaps strength"
+#~ msgstr "Normalmaps 강도"
+
+#~ msgid "Number of parallax occlusion iterations."
+#~ msgstr "시차 교합 반복의 수."
+
+#~ msgid "Ok"
+#~ msgstr "확인"
+
+#~ msgid "Overall bias of parallax occlusion effect, usually scale/2."
+#~ msgstr "일반적인 규모/2의 시차 교합 효과의 전반적인 바이어스."
+
+#~ msgid "Overall scale of parallax occlusion effect."
+#~ msgstr "시차 교합 효과의 전체 규모."
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "시차 교합"
+
+#~ msgid "Parallax occlusion"
+#~ msgstr "시차 교합"
+
+#~ msgid "Parallax occlusion bias"
+#~ msgstr "시차 교합 바이어스"
+
+#~ msgid "Parallax occlusion iterations"
+#~ msgstr "시차 교합 반복"
+
+#~ msgid "Parallax occlusion mode"
+#~ msgstr "시차 교합 모드"
+
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "시차 교합 규모"
+
+#, fuzzy
+#~ msgid "Parallax occlusion strength"
+#~ msgstr "시차 교합 강도"
+
+#~ msgid "Path to TrueTypeFont or bitmap."
+#~ msgstr "TrueTypeFont 또는 비트맵의 경로입니다."
+
+#~ msgid "Path to save screenshots at."
+#~ msgstr "스크린샷 저장 경로입니다."
+
+#~ msgid "Player name"
+#~ msgstr "플레이어 이름"
+
+#~ msgid "Profiling"
+#~ msgstr "프로 파일링"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP 가능"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "싱글 플레이어 월드 초기화"
+
+#, fuzzy
+#~ msgid "Select Package File:"
+#~ msgstr "선택한 모드 파일:"
+
+#~ msgid "Server / Singleplayer"
+#~ msgstr "서버 / 싱글 플레이어"
+
+#~ msgid "Shadow limit"
+#~ msgstr "그림자 제한"
+
+#~ msgid ""
+#~ "Shadow offset (in pixels) of the fallback font. If 0, then shadow will "
+#~ "not be drawn."
+#~ msgstr "글꼴 그림자 오프셋, 만약 0 이면 그림자는 나타나지 않을 것입니다."
+
+#~ msgid "Special"
+#~ msgstr "특별함"
+
+#~ msgid "Special key"
+#~ msgstr "특수 키"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "싱글 플레이어 시작"
+
+#~ msgid "Strength of generated normalmaps."
+#~ msgstr "자동으로 생성되는 노멀맵의 강도."
+
+#~ msgid "This font will be used for certain languages."
+#~ msgstr "이 글꼴은 특정 언어에 사용 됩니다."
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "쉐이더를 사용하려면 OpenGL 드라이버를 사용할 필요가 있습니다."
+
+#~ msgid "Toggle Cinematic"
+#~ msgstr "시네마틱 스위치"
+
+#~ msgid "View"
+#~ msgstr "보기"
+
+#~ msgid "Waving Water"
+#~ msgstr "물결 효과"
+
+#~ msgid "Waving water"
+#~ msgstr "물결 효과"
+
+#~ msgid "Yes"
+#~ msgstr "예"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "당신은 처음 \"%s\"라는 이름으로 이 서버에 참여하려고 합니다. \n"
+#~ "계속한다면, 자격이 갖춰진 새 계정이 이 서버에 생성됩니다. \n"
+#~ "비밀번호를 다시 입력하고 '등록 하고 참여'를 누르거나 '취소'를 눌러 중단하"
+#~ "십시오."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "사망했습니다"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/ky/minetest.po b/po/ky/minetest.po
index 3933c7fb8..5de3ad5f7 100644
--- a/po/ky/minetest.po
+++ b/po/ky/minetest.po
@@ -1,29 +1,110 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Kyrgyz (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2013-06-01 18:09+0200\n"
-"Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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/"
+"ky/>\n"
"Language: ky\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 1.4-dev\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.10-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "Команда"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Менюга чыгуу"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "Команда"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Бир кишилик"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Бир кишилик"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Кайтадан жаралуу"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+#, fuzzy
+msgid "You died"
+msgstr "Сиз өлдүңүз."
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "Команда"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "Команда"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
+msgid "<none available>"
msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred in a Lua script:"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
msgstr ""
#: builtin/fstk/ui.lua
@@ -31,10 +112,6 @@ msgstr ""
msgid "Main menu"
msgstr "Башкы меню"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr ""
-
#: builtin/fstk/ui.lua
#, fuzzy
msgid "Reconnect"
@@ -44,9 +121,30 @@ msgstr "Туташуу"
msgid "The server has requested a reconnect:"
msgstr ""
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Жүктөлүүдө..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Дүйнөнү тандаңыз:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -61,7 +159,7 @@ msgid "Server supports protocol versions between $1 and $2. "
msgstr ""
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
#: builtin/mainmenu/common.lua
@@ -72,28 +170,39 @@ msgstr ""
msgid "We support protocol versions between version $1 and $2."
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr "Жокко чыгаруу"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Depends:"
+msgid "Dependencies:"
msgstr "көз карандылыктары:"
#: builtin/mainmenu/dlg_config_world.lua
#, fuzzy
-msgid "Disable MP"
+msgid "Disable all"
msgstr "Баарын өчүрүү"
#: builtin/mainmenu/dlg_config_world.lua
#, fuzzy
-msgid "Enable MP"
-msgstr "Баарын күйгүзүү"
+msgid "Disable modpack"
+msgstr "Баарын өчүрүү"
#: builtin/mainmenu/dlg_config_world.lua
#, fuzzy
@@ -101,26 +210,51 @@ msgid "Enable all"
msgstr "Баарын күйгүзүү"
#: builtin/mainmenu/dlg_config_world.lua
+#, fuzzy
+msgid "Enable modpack"
+msgstr "Баарын күйгүзүү"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
#, fuzzy
-msgid "Hide Game"
-msgstr "Оюн"
+msgid "No hard dependencies"
+msgstr "көз карандылыктары:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
+msgid "No modpack description provided."
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Mod:"
+msgid "No optional dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Сактоо"
@@ -133,40 +267,324 @@ msgstr "Дүйнөнү тандаңыз:"
msgid "enabled"
msgstr "күйгүзүлгөн"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Жүктөлүүдө..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Back to Main Menu"
+msgstr "Башкы меню"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "Оюн"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "Жүктөлүүдө..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Failed to download $1"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Games"
+msgstr "Оюн"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Жаратуу"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
+msgid "Decorations"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
+msgid "Development Test is meant for developers."
msgstr ""
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Оюн"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr ""
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
+msgid "Mapgen-specific flags"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Rivers"
+msgstr "Оң Windows"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
@@ -174,25 +592,25 @@ msgid "World name"
msgstr "Дүйнө аты"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+msgid "You have no games installed."
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Өчүрүү"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
msgstr ""
#: builtin/mainmenu/dlg_delete_world.lua
@@ -200,7 +618,39 @@ msgstr ""
msgid "Delete World \"$1\"?"
msgstr "Дүйнөнү өчүрүү"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Сырсөздү аныктоо"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Жаңы сырсөз"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Сырсөздөр дал келген жок!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Кабыл алуу"
@@ -208,8 +658,10 @@ msgstr "Кабыл алуу"
msgid "Rename Modpack:"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -217,6 +669,10 @@ msgid "(No description of setting given)"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
msgstr ""
@@ -226,6 +682,16 @@ msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
+msgid "Content: Games"
+msgstr "Улантуу"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Улантуу"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+#, fuzzy
msgid "Disabled"
msgstr "Баарын өчүрүү"
@@ -239,30 +705,19 @@ msgid "Enabled"
msgstr "күйгүзүлгөн"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
+msgid "Lacunarity"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Octaves"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua
-#, fuzzy
-msgid "Games"
-msgstr "Оюн"
-
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
-msgstr ""
-
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
+msgid "Persistence"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -274,240 +729,352 @@ msgid "Please enter a valid number."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
+msgid "Restore Default"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
-msgid "Select path"
-msgstr "Тандоо"
+msgid "Select directory"
+msgstr "Дүйнөнү тандаңыз:"
#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Select file"
+msgstr "Дүйнөнү тандаңыз:"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "The value must be at least $1."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
+msgid "The value must not be larger than $1."
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-#, fuzzy
-msgid "Failed to install $1 to $2"
-msgstr "Дүйнөнү инициалдаштыруу катасы"
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Close store"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Install"
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
+#. ~ "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 ""
-#: builtin/mainmenu/store.lua
-msgid "Rating"
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 (Enabled)"
+msgstr "күйгүзүлгөн"
-#: builtin/mainmenu/store.lua
+#: builtin/mainmenu/pkgmgr.lua
#, fuzzy
-msgid "Shortname:"
-msgstr "Дүйнө аты"
+msgid "$1 mods"
+msgstr "Ырастоо"
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Failed to install $1 to $2"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Active Contributors"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Core Developers"
-msgstr ""
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Алкыштар"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a game as a $1"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Contributors"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a mod as a $1"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a modpack as a $1"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Жүктөлүүдө..."
+
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Previous Core Developers"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
+#: builtin/mainmenu/tab_about.lua
#, fuzzy
-msgid "Select Mod File:"
+msgid "Open User Data Directory"
msgstr "Дүйнөнү тандаңыз:"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua
-#, fuzzy
-msgid "Address / Port"
-msgstr "Дареги/порту"
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Туташуу"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Creative mode"
-msgstr "Жаратуу режими"
+msgid "Content"
+msgstr "Улантуу"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Damage enabled"
-msgstr "күйгүзүлгөн"
+msgid "Disable Texture Pack"
+msgstr "Баарын өчүрүү"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Del. Favorite"
-msgstr "Тандалмалар:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Favorite"
-msgstr "Тандалмалар:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "Name / Password"
-msgstr "Аты/сырсөзү"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-#, fuzzy
-msgid "PvP enabled"
-msgstr "күйгүзүлгөн"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Bind Address"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Ырастоо"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Жаратуу режими"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Убалды күйгүзүү"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Аты/сырсөзү"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Game"
+msgstr "Оюн"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Жаңы"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Play Game"
+msgstr "Оюнду баштоо/туташуу"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Жалпылык"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Дүйнөнү тандаңыз:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Дүйнөнү тандаңыз:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr ""
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
#, fuzzy
msgid "Start Game"
-msgstr "Оюнду баштоо/туташуу"
+msgstr "Оюн"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "Дареги/порту"
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Тазалоо"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Creative mode"
+msgstr "Жаратуу режими"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Убалды күйгүзүү"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Тандалмалар:"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Join Game"
+msgstr "Оюн"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Тандалмалар:"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
@@ -528,7 +1095,7 @@ msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Advanced Settings"
+msgid "All Settings"
msgstr "Ырастоолор"
#: builtin/mainmenu/tab_settings.lua
@@ -536,22 +1103,17 @@ msgid "Antialiasing:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Бир кишилик"
+msgid "Autosave Screen Size"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Bilinear Filter"
msgstr "Экисызык чыпкалоосу"
-#: builtin/mainmenu/tab_settings.lua
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
#, fuzzy
-msgid "Bump Mapping"
-msgstr "Mip-текстуралоо"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+msgid "Change Keys"
msgstr "Баскычтарды өзгөртүү"
#: builtin/mainmenu/tab_settings.lua
@@ -559,12 +1121,32 @@ msgstr "Баскычтарды өзгөртүү"
msgid "Connected Glass"
msgstr "Туташуу"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Fancy Leaves"
msgstr "Күңүрт суу"
#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Mipmap"
msgstr "Mip-текстуралоо"
@@ -574,10 +1156,6 @@ msgid "Mipmap + Aniso. Filter"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Жок"
-
-#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "No Filter"
msgstr "Анизатропия чыпкалоосу"
@@ -597,17 +1175,12 @@ msgstr "Тегиз жарык"
msgid "Node Outlining"
msgstr "Тегиз жарык"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Normal Mapping"
-msgstr "Mip-текстуралоо"
-
-#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
msgid "Opaque Leaves"
msgstr "Күңүрт суу"
@@ -616,10 +1189,6 @@ msgstr "Күңүрт суу"
msgid "Opaque Water"
msgstr "Күңүрт суу"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Particles"
@@ -627,8 +1196,8 @@ msgstr "Баарын күйгүзүү"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Бир кишилик"
+msgid "Screen:"
+msgstr "Тез сүрөт"
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -639,6 +1208,14 @@ msgid "Shaders"
msgstr "Көлөкөлөгүчтөр"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Simple Leaves"
msgstr "Күңүрт суу"
@@ -652,17 +1229,13 @@ msgstr "Тегиз жарык"
msgid "Texturing:"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
#, fuzzy
msgid "Tone Mapping"
msgstr "Mip-текстуралоо"
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+msgid "Touch threshold (px):"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -671,82 +1244,56 @@ msgid "Trilinear Filter"
msgstr "Үчсызык чыпкалоосу"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Leaves"
-msgstr "Кооз бактар"
+msgid "Very High"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Plants"
-msgstr "Кооз бактар"
+msgid "Very Low"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Waving Water"
+msgid "Waving Leaves"
msgstr "Кооз бактар"
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Ооба"
-
-#: builtin/mainmenu/tab_simple_main.lua
#, fuzzy
-msgid "Config mods"
-msgstr "Ырастоо"
+msgid "Waving Liquids"
+msgstr "Кооз бактар"
-#: builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Main"
-msgstr "Башкы меню"
+msgid "Waving Plants"
+msgstr "Кооз бактар"
-#: builtin/mainmenu/tab_simple_main.lua
+#: src/client/client.cpp
#, fuzzy
-msgid "Start Singleplayer"
-msgstr "Бир кишилик"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Ойноо"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Бир кишилик"
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr ""
+msgid "Connection aborted (protocol error?)."
+msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
#, fuzzy
msgid "Connection timed out."
msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
#, fuzzy
msgid "Loading textures..."
msgstr "Жүктөлүүдө..."
-#: src/client.cpp
+#: src/client/client.cpp
#, fuzzy
msgid "Rebuilding shaders..."
msgstr "Дареги чечилүүдө..."
@@ -756,7 +1303,8 @@ msgid "Connection error (timed out?)"
msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr "Оюнду табуу же жүктөө мүмкүн эмес \""
#: src/client/clientlauncher.cpp
@@ -776,14 +1324,18 @@ msgid "Player name too long."
msgstr ""
#: src/client/clientlauncher.cpp
-msgid "Provided world path doesn't exist: "
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
msgstr ""
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -791,45 +1343,132 @@ msgstr ""
"\n"
"Толугураак маалымат үчүн, debug.txt'ти текшериңиз."
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "Change Keys"
-msgstr "Баскычтарды өзгөртүү"
+msgid "- Address: "
+msgstr "Дареги/порту"
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "- Public: "
+msgstr "Жалпылык"
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward disabled"
+msgstr "Алга"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "Алга"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update enabled"
+msgstr "күйгүзүлгөн"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Сырсөздү өзгөртүү"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode disabled"
+msgstr "Жаратуу режими"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "Жаратуу режими"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Серверге туташтырылууда..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Улантуу"
-#: src/game.cpp
-msgid "Creating client..."
-msgstr "Клиент жаратылууда..."
-
-#: src/game.cpp
-#, fuzzy
-msgid "Creating server..."
-msgstr "Сервер жаратылууда...."
-
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
+"- %s: chat\n"
msgstr ""
"Жарыяланбас башкаруу:\n"
"- WASD: басуу\n"
@@ -843,7 +1482,33 @@ msgstr ""
"- Чычкан дөңгөлөгү: буюмду тандоо\n"
"- T: маек\n"
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Клиент жаратылууда..."
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Creating server..."
+msgstr "Сервер жаратылууда...."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -859,490 +1524,816 @@ msgid ""
" --> place single item to slot\n"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Клиент жаратылууда..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Менюга чыгуу"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Оюндан чыгуу"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode disabled"
+msgstr "Баарын өчүрүү"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode enabled"
+msgstr "күйгүзүлгөн"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode disabled"
+msgstr "Баарын өчүрүү"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode enabled"
+msgstr "күйгүзүлгөн"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "Баарын өчүрүү"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "күйгүзүлгөн"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Game paused"
+msgstr "Оюн"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Hosting server"
+msgstr "Сервер жаратылууда...."
+
+#: src/client/game.cpp
#, fuzzy
msgid "Item definitions..."
msgstr "Буюм текстуралары..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr ""
-#: src/game.cpp
-msgid "Node definitions..."
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
msgstr ""
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Дареги чечилүүдө..."
-
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Кайтадан жаралуу"
-
-#: src/game.cpp
+#: src/client/game.cpp
#, fuzzy
-msgid "Shutting down..."
-msgstr "Оюн өчүрүлүүдө..."
+msgid "Multiplayer"
+msgstr "Бир кишилик"
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Үн көлөмү"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
-#: src/game.cpp
-msgid "You died."
-msgstr "Сиз өлдүңүз."
+#: src/client/game.cpp
+#, fuzzy
+msgid "Noclip mode enabled"
+msgstr "күйгүзүлгөн"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
+#: src/client/game.cpp
+msgid "Node definitions..."
msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Улантуу"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
+#: src/client/game.cpp
+msgid "Off"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Артка"
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Маек"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Команда"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Консоль"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
+#: src/client/game.cpp
+msgid "Remote server"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Ыргытуу"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Дареги чечилүүдө..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Алга"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Shutting down..."
+msgstr "Оюн өчүрүлүүдө..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Мүлк-шайман"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Бир кишилик"
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Секирүү"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Үн көлөмү"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound muted"
+msgstr "Үн көлөмү"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Солго"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound unmuted"
+msgstr "Үн көлөмү"
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Оңго"
-
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Уурданып басуу"
-
-#: src/guiKeyChangeMenu.cpp
-#, fuzzy
-msgid "Toggle Cinematic"
-msgstr "Тез басууга которуу"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Тез басууга которуу"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Учууга которуу"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Колдонуу"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Масштаб"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "баскычты басыңыз"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Өзгөртүү"
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Сырсөздү аныктоо"
+#: src/client/gameui.cpp
+#, fuzzy
+msgid "Chat hidden"
+msgstr "Баскычтарды өзгөртүү"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Жаңы сырсөз"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Эски сырсөз"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Сырсөздөр дал келген жок!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Чыгуу"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Үн көлөмү: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Тиркемелер"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Backspace"
msgstr "Артка"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Caps Lock"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Тазалоо"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Үтүр"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Ctrl"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Ылдый"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
-msgstr "End"
+msgstr "Аягы"
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
msgstr ""
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Esc"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Аткаруу"
-#: src/keycode.cpp
-msgid "Final"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Жардам"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Home"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Insert"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Accept"
+msgstr "Кабыл алуу"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Escape"
+msgstr "Esc"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Mode Change"
+msgstr "Режимди өзгөртүү"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Кана"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Кандзи"
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Солго"
+
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Сол баскыч"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Сол Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Сол меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Сол Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Сол Windows"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Ортоңку баскыч"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Кемитүү белгиси"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Режимди өзгөртүү"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Кийинки"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "Кош. клав. *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "Кош. клав. +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "Кош. клав. -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad ."
+msgstr "Кош. клав. *"
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "Кош. клав. /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "Кош. клав. 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "Кош. клав. 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "Кош. клав. 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "Кош. клав. 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "Кош. клав. 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "Кош. клав. 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "Кош. клав. 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "Кош. клав. 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "Кош. клав. 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "Кош. клав. 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr ""
-#: src/keycode.cpp
-msgid "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Пауза"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Айланма сан"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Кошуу белгиси"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Ойноо"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Басма"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Оңго"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Оң баскыч"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Оң Ctrl"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Оң меню"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Оң Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Оң Windows"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Тандоо"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Уйку"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Тез сүрөт"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Боштук"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tab"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Өйдө"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr ""
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Масштаб"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Дүйнөнү инициалдаштыруу катасы"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Улантуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Autoforward"
+msgstr "Алга"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Артка"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "Баскычтарды өзгөртүү"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Маек"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Команда"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Консоль"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Ыргытуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Алга"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Inc. volume"
+msgstr "Үн көлөмү"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Мүлк-шайман"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Секирүү"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Local command"
+msgstr "Команда"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Next item"
+msgstr "Кийинки"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshot"
+msgstr "Тез сүрөт"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Уурданып басуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle HUD"
+msgstr "Учууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle chat log"
+msgstr "Тез басууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Тез басууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Учууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fog"
+msgstr "Учууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle minimap"
+msgstr "Тез басууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle pitchmove"
+msgstr "Тез басууга которуу"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "баскычты басыңыз"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Өзгөртүү"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Жаңы сырсөз"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Эски сырсөз"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Сырсөздөр дал келген жок!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Чыгуу"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy
+msgid "Muted"
+msgstr "баскычты басыңыз"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Үн көлөмү: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "ky"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1355,6 +2346,44 @@ msgid "3D mode"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1363,7 +2392,13 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1381,19 +2416,23 @@ msgid "A message to be displayed to all clients when the server shuts down."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
+msgid "ABM interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
+msgid "Acceleration in air"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
+msgid "Acceleration of gravity, in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1401,6 +2440,10 @@ msgid "Active Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Active block range"
msgstr ""
@@ -1416,27 +2459,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Дүйнө аты"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr "Кошумча"
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1444,7 +2509,11 @@ msgid "Ambient occlusion gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1457,14 +2526,29 @@ msgid "Announce server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1472,11 +2556,52 @@ msgid "Ask to reconnect after crash"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Automatic forward key"
+msgstr "Алга"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+#, fuzzy
+msgid "Aux1 key"
+msgstr "Секирүү"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1485,15 +2610,23 @@ msgid "Backward key"
msgstr "Артка"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
+msgid "Beach noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Beach noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1507,7 +2640,35 @@ msgid "Bind address"
msgstr "Дареги чечилүүдө..."
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1521,8 +2682,16 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Bumpmapping"
-msgstr "Mip-текстуралоо"
+msgid "Camera"
+msgstr "Баскычтарды өзгөртүү"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
msgid "Camera smoothing"
@@ -1537,6 +2706,10 @@ msgid "Camera update toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr ""
@@ -1549,7 +2722,50 @@ msgid "Cave width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Команда"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1559,35 +2775,32 @@ msgstr "Баскычтарды өзгөртүү"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chat toggle key"
+msgid "Chat log level"
msgstr "Баскычтарды өзгөртүү"
#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Команда"
+msgid "Chat toggle key"
+msgstr "Баскычтарды өзгөртүү"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat weblinks"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1609,15 +2822,37 @@ msgid "Clean transparent textures"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cloud height"
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1643,6 +2878,21 @@ msgid "Colored fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
@@ -1660,6 +2910,22 @@ msgid "Command key"
msgstr "Команда"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Connect glass"
msgstr "Туташуу"
@@ -1685,15 +2951,34 @@ msgstr "Консоль"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Console key"
+msgid "Console height"
msgstr "Консоль"
#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "ContentDB URL"
+msgstr "Улантуу"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1704,14 +2989,14 @@ msgstr "Ctrl"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1723,7 +3008,10 @@ msgid "Controls steepness/height of hills."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1731,23 +3019,18 @@ msgid "Crash message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+#, fuzzy
+msgid "Creative"
+msgstr "Жаратуу"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1755,11 +3038,9 @@ msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1776,10 +3057,22 @@ msgid "Debug info toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
msgstr ""
@@ -1811,15 +3104,50 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+msgid "Default stack size"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1827,6 +3155,24 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Delay in sending blocks after building"
msgstr ""
@@ -1839,21 +3185,27 @@ msgid "Deprecated Lua API handling"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1861,31 +3213,36 @@ msgid "Desynchronize block animation"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
+msgid "Developer Options"
msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Dig key"
+msgstr "Оң меню"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Digging particles"
+msgstr "Баарын күйгүзүү"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid "Disable anticheat"
msgstr "Бөлүкчөлөрдү күйгүзүү"
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1905,17 +3262,65 @@ msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "Баарын күйгүзүү"
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Enable mod security"
@@ -1936,6 +3341,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1954,31 +3363,38 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables filmic tone mapping"
-msgstr "Убалды күйгүзүү"
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
@@ -1987,56 +3403,62 @@ msgstr "Убалды күйгүзүү"
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
+msgid "Engine profiling data print interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+msgid "Entity methods"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
+msgid "Fallback font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2057,7 +3479,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
@@ -2066,27 +3488,22 @@ msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2096,21 +3513,60 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Filtering"
-msgstr "Анизатропия чыпкалоосу"
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2123,11 +3579,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2139,15 +3607,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2155,12 +3651,52 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Forward key"
msgstr "Алга"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2176,7 +3712,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2184,10 +3724,6 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr ""
@@ -2204,15 +3740,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Оюн"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2223,10 +3760,19 @@ msgstr ""
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2234,11 +3780,35 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "HTTP Mods"
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2247,9 +3817,9 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2263,15 +3833,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Height noise"
+msgstr "Оң Windows"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Hill threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2279,36 +3883,205 @@ msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2319,12 +4092,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2332,8 +4114,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2353,7 +4142,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2364,17 +4161,33 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Оюн"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
@@ -2385,13 +4198,26 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Inc. volume key"
+msgstr "Консоль"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2415,15 +4241,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2444,13 +4266,31 @@ msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2458,39 +4298,67 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Jump key"
msgstr "Секирүү"
@@ -2508,6 +4376,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2522,6 +4404,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2537,6 +4426,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2564,7 +4454,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2578,6 +4468,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2592,626 +4489,742 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Left key"
-msgstr "Сол меню"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "Башкы меню"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu script"
-msgstr "Башкы меню"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen Valleys"
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
+msgid "Language"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Large cave depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave width"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Large chat console key"
+msgstr "Консоль"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+#, fuzzy
+msgid "Left key"
+msgstr "Сол меню"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave width"
+msgid "Light curve boost spread"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Тегиз жарык"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Loading Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Main menu script"
+msgstr "Башкы меню"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
+msgid "Mapgen Carpathian"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
+msgid "Mapgen Flat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
+msgid "Mapgen Fractal"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
+msgid "Mapgen Fractal specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
+msgid "Mapgen V5"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
+msgid "Mapgen V6"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
+msgid "Mapgen V7"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
+msgid "Mapgen Valleys"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
+msgid "Mapgen Valleys specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
+msgid "Mapgen debug"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3239,7 +5252,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3251,11 +5268,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+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 ""
#: src/settings_translation_file.cpp
@@ -3265,13 +5295,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3292,7 +5329,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3314,21 +5355,30 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Меню"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3347,6 +5397,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3359,7 +5413,15 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3368,15 +5430,23 @@ msgid "Mipmapping"
msgstr "Mip-текстуралоо"
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod channels"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3388,6 +5458,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3396,21 +5486,30 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+#, fuzzy
+msgid "Mute key"
+msgstr "баскычты басыңыз"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3426,7 +5525,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3436,6 +5535,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3448,6 +5551,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Тегиз жарык"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3456,91 +5564,121 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+#, fuzzy
+msgid "Pitch move key"
+msgstr "Жаратуу режими"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
+#, fuzzy
+msgid "Place key"
+msgstr "Жаратуу режими"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3550,16 +5688,17 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
-msgstr ""
+#, fuzzy
+msgid "Poisson filtering"
+msgstr "Экисызык чыпкалоосу"
#: src/settings_translation_file.cpp
msgid ""
@@ -3568,13 +5707,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3590,7 +5735,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3601,7 +5758,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3613,6 +5770,15 @@ msgid "Range select key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Regular font path"
+msgstr "Тандоо"
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr ""
@@ -3621,6 +5787,12 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
@@ -3630,28 +5802,63 @@ msgid "Report path"
msgstr "Тандоо"
#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Right key"
msgstr "Оң меню"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "River channel depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+#, fuzzy
+msgid "River noise"
+msgstr "Оң Windows"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3659,20 +5866,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3680,6 +5907,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Тез сүрөт"
+
+#: src/settings_translation_file.cpp
msgid "Screen height"
msgstr ""
@@ -3688,11 +5920,6 @@ msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Screenshot"
-msgstr "Тез сүрөт"
-
-#: src/settings_translation_file.cpp
msgid "Screenshot folder"
msgstr ""
@@ -3714,11 +5941,24 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Тез сүрөт"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3734,11 +5974,43 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Жалпылык серверлердин тизмеси:"
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
+msgid "Server Gameplay"
msgstr "Бир кишилик"
#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Server URL"
msgstr ""
@@ -3759,12 +6031,25 @@ msgid "Server port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Serverlist URL"
msgstr "Жалпылык серверлердин тизмеси:"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Жалпылык серверлердин тизмеси:"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid "Serverlist file"
msgstr "Жалпылык серверлердин тизмеси:"
@@ -3776,27 +6061,99 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shader path"
+msgstr "Көлөкөлөгүчтөр"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shadow filter quality"
+msgstr "Тез сүрөт"
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3812,17 +6169,62 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3850,6 +6252,19 @@ msgid "Sneak key"
msgstr "Уурданып басуу"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Уурданып басуу"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr ""
@@ -3862,15 +6277,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3878,7 +6330,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3886,7 +6352,32 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Ырастоолор"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3904,11 +6395,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3918,13 +6434,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3938,13 +6470,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3964,22 +6513,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3989,6 +6551,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -3997,7 +6563,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4017,6 +6583,26 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Trilinear filtering"
msgstr "Үчсызык чыпкалоосу"
@@ -4025,7 +6611,7 @@ msgstr "Үчсызык чыпкалоосу"
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4037,6 +6623,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4045,6 +6644,14 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4061,12 +6668,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Use key"
-msgstr "баскычты басыңыз"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4074,7 +6690,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4082,23 +6698,59 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid "Varies steepness of cliffs."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4110,13 +6762,11 @@ msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4128,30 +6778,48 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Volume"
msgstr "Үн көлөмү"
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr "Буюм текстуралары..."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4171,23 +6839,31 @@ msgid "Waving leaves"
msgstr "Кооз бактар"
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Кооз бактар"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Кооз бактар"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Кооз бактар"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "Кооз бактар"
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4209,26 +6885,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4257,23 +6925,39 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4283,11 +6967,72 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "Дүйнө аты"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4295,108 +7040,128 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "cURL interactive timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr "Жүктөлүүдө..."
+#~ msgid "- Creative Mode: "
+#~ msgstr "Жаратуу режими"
#, fuzzy
-#~ msgid "Downloading"
-#~ msgstr "Ылдый"
+#~ msgid "- Damage: "
+#~ msgstr "Убалды күйгүзүү"
-#~ msgid "Left click: Move all items, Right click: Move single item"
-#~ msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу"
+#, fuzzy
+#~ msgid "Address / Port"
+#~ msgstr "Дареги/порту"
+
+#, fuzzy
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Бир кишилик"
-#~ msgid "is required by:"
-#~ msgstr "талап кылынганы:"
+#~ msgid "Back"
+#~ msgstr "Артка"
-#~ msgid "Configuration saved. "
-#~ msgstr "Конфигурация сакталды. "
+#, fuzzy
+#~ msgid "Bump Mapping"
+#~ msgstr "Mip-текстуралоо"
-#~ msgid "Warning: Configuration not consistent. "
-#~ msgstr "Эскертүү: Туура эмес конфигурация. "
+#, fuzzy
+#~ msgid "Bumpmapping"
+#~ msgstr "Mip-текстуралоо"
-#~ msgid "Show Public"
-#~ msgstr "Жалпылыкты көрсөтүү"
+#, fuzzy
+#~ msgid "Config mods"
+#~ msgstr "Ырастоо"
-#~ msgid "Show Favorites"
-#~ msgstr "Тандалмаларды көрсөтүү"
+#~ msgid "Configure"
+#~ msgstr "Ырастоо"
-#~ msgid "Leave address blank to start a local server."
-#~ msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз."
+#~ msgid "Connect"
+#~ msgstr "Туташуу"
-#~ msgid "Create world"
-#~ msgstr "Дүйнөнү жаратуу"
+#~ msgid "Credits"
+#~ msgstr "Алкыштар"
-#~ msgid "Address required."
-#~ msgstr "Дареги талап кылынат."
+#, fuzzy
+#~ msgid "Damage enabled"
+#~ msgstr "күйгүзүлгөн"
-#~ msgid "Cannot delete world: Nothing selected"
-#~ msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок"
+#, fuzzy
+#~ msgid "Enable VBO"
+#~ msgstr "Баарын күйгүзүү"
-#~ msgid "Files to be deleted"
-#~ msgstr "Өчүрүлө турган файлдар"
+#, fuzzy
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Убалды күйгүзүү"
-#~ msgid "Cannot create world: No games found"
-#~ msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок"
+#, fuzzy
+#~ msgid "Filtering"
+#~ msgstr "Анизатропия чыпкалоосу"
-#~ msgid "Cannot configure world: Nothing selected"
-#~ msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок"
+#~ msgid "Game"
+#~ msgstr "Оюн"
-#~ msgid "Failed to delete all world files"
-#~ msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок"
+#, fuzzy
+#~ msgid "In-Game"
+#~ msgstr "Оюн"
-#~ msgid ""
-#~ "Default Controls:\n"
-#~ "- WASD: Walk\n"
-#~ "- Mouse left: dig/hit\n"
-#~ "- Mouse right: place/use\n"
-#~ "- Mouse wheel: select item\n"
-#~ "- 0...9: select item\n"
-#~ "- Shift: sneak\n"
-#~ "- R: Toggle viewing all loaded chunks\n"
-#~ "- I: Inventory menu\n"
-#~ "- ESC: This menu\n"
-#~ "- T: Chat\n"
-#~ msgstr ""
-#~ "Жарыяланбас башкаруу:\n"
-#~ "- WASD: Басуу\n"
-#~ "- Сол кнопкасы: казуу/согуу\n"
-#~ "- Оң кнопкасы: коюу/колдонуу\n"
-#~ "- Чычкан дөңгөлөгү: буюмду тандоо\n"
-#~ "- 0...9: буюмду тандоо\n"
-#~ "- Shift: уурданып басуу\n"
-#~ "- R: алыс кароо\n"
-#~ "- I: мүлк-шайман\n"
-#~ "- ESC: бул меню\n"
-#~ "- T: маек\n"
+#, fuzzy
+#~ msgid "Main"
+#~ msgstr "Башкы меню"
#, fuzzy
-#~ msgid "Finite Liquid"
-#~ msgstr "Чектүү суюктук"
+#~ msgid "Main menu style"
+#~ msgstr "Башкы меню"
#, fuzzy
-#~ msgid "Password"
-#~ msgstr "Эски сырсөз"
+#~ msgid "Menus"
+#~ msgstr "Меню"
#, fuzzy
-#~ msgid "Game Name"
-#~ msgstr "Оюн"
+#~ msgid "Name / Password"
+#~ msgstr "Аты/сырсөзү"
+
+#~ msgid "Name/Password"
+#~ msgstr "Аты/сырсөзү"
+
+#~ msgid "No"
+#~ msgstr "Жок"
#, fuzzy
-#~ msgid "If enabled, "
+#~ msgid "PvP enabled"
#~ msgstr "күйгүзүлгөн"
#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Баарын өчүрүү"
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Бир кишилик"
#, fuzzy
-#~ msgid "Public Serverlist"
-#~ msgstr "Жалпылык серверлердин тизмеси:"
+#~ msgid "Select Package File:"
+#~ msgstr "Дүйнөнү тандаңыз:"
+
+#, fuzzy
+#~ msgid "Special key"
+#~ msgstr "Уурданып басуу"
+
+#, fuzzy
+#~ msgid "Start Singleplayer"
+#~ msgstr "Бир кишилик"
+
+#, fuzzy
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Тез басууга которуу"
+
+#~ msgid "Yes"
+#~ msgstr "Ооба"
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Сиз өлдүңүз."
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "yes"
diff --git a/po/lt/minetest.po b/po/lt/minetest.po
index 1a347ab34..041611ede 100644
--- a/po/lt/minetest.po
+++ b/po/lt/minetest.po
@@ -1,41 +1,116 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
-"Project-Id-Version: minetest\n"
+"Project-Id-Version: Lithuanian (Minetest)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-30 06:18+0200\n"
-"PO-Revision-Date: 2015-11-19 05:14+0000\n"
-"Last-Translator: Liudas Ališauskas <liudas@akmc.lt>\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2021-04-10 15:49+0000\n"
+"Last-Translator: Kornelijus Tvarijanavičius <kornelitvari@protonmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/minetest/"
"minetest/lt/>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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 2.5-dev\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.6-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Empty command."
+msgstr "Komanda"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Grįžti į meniu"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "Komanda"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Žaisti vienam"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Žaisti vienam"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Prisikelti"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Jūs numirėte"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "Komanda"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "Komanda"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
-msgstr "Klaida įvyko Lua scenarijuje, tokiame kaip papildinys:"
+msgid "An error occurred in a Lua script:"
+msgstr "Įvyko klaida Lua skripte:"
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "An error occurred:"
msgstr "Įvyko klaida:"
#: builtin/fstk/ui.lua
msgid "Main menu"
msgstr "Pagrindinis meniu"
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
-msgstr "Gerai"
-
#: builtin/fstk/ui.lua
msgid "Reconnect"
msgstr "Prisijungti iš naujo"
@@ -44,9 +119,30 @@ msgstr "Prisijungti iš naujo"
msgid "The server has requested a reconnect:"
msgstr "Serveris paprašė prisijungti iš naujo:"
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
-msgstr "Įkeliama..."
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Pasirinkite pasaulį:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
#: builtin/mainmenu/common.lua
msgid "Protocol version mismatch. "
@@ -58,68 +154,101 @@ msgstr "Serveris reikalauja naudoti versijos $1 protokolą. "
#: builtin/mainmenu/common.lua
msgid "Server supports protocol versions between $1 and $2. "
-msgstr ""
+msgstr "Serveris palaiko protokolo versijas nuo $1 iki $2 "
#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+msgid "Visit website"
msgstr ""
-"Pabandykite dar kart įjungti viešą serverių sąrašą ir patikrinkite savo "
-"interneto ryšį."
#: builtin/mainmenu/common.lua
msgid "We only support protocol version $1."
-msgstr ""
+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 tarp $1 ir $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
-msgstr "Atsisakyti"
+msgstr "Atšaukti"
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
-msgstr "Priklauso:"
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Priklauso nuo:"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
-msgstr "Išjungti papildinį"
+msgid "Disable all"
+msgstr "Išjungti visus papildinius"
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
-msgstr "Įjungti papildinį"
+msgid "Disable modpack"
+msgstr "Išjungti papildinį"
#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr "Įjungti visus"
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Aktyvuoti papildinį"
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
msgstr ""
-"Nepavyko įjungti papildinio „$1“, nes jis turi neleistų rašmenų. Tik "
+"Nepavyko įjungti papildinio „$1“, nes jis turi neleistinų rašmenų. Tik "
"rašmenys [a-z0-9_] yra leidžiami."
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
-msgstr "Slėpti vidinius"
-
-#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
-msgstr "Slėpti papild. pakų turinį"
+msgid "Find More Mods"
+msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr "Papildinys:"
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Nepateiktas žaidimo aprašymas."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Nėra būtinų priklausomybių"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Nepateiktas papildinio aprašymas."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr "Įrašyti"
@@ -131,73 +260,397 @@ msgstr "Pasaulis:"
msgid "enabled"
msgstr "įjungtas"
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr "$1 atsiunčiama..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr "Jau įdiegta"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Atgal į Pagrindinį Meniu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr "Pagrindinis Žaidimas:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr "ContentDB nėra prieinama, kai Minetest sukompiliuojamas be cURL"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr "Siunčiama..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Nepavyko parsiųsti $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Žaidimai"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Įdiegti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Įdiegti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "Inicijuojami mazgai"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+"Papildinio diegimas: nepalaikomas failo tipas „$1“ arba sugadintas archyvas"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Papildiniai"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "Atnaujinti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Texture packs"
+msgstr "Tekstūrų paketai"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Uninstall"
+msgstr "Įdiegti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr "Atnaujinti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
#: builtin/mainmenu/dlg_create_world.lua
msgid "A world named \"$1\" already exists"
msgstr "Pasaulis, pavadintas „$1“ jau yra"
#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
msgid "Create"
msgstr "Sukurti"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
-msgstr "Atsisiųskite sub žaidimą, tokį kaip minetest_game, iš minetest.net"
+msgid "Decorations"
+msgstr "Dekoracijos"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
-msgstr "Atsisiųsti vieną iš minetest.net"
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr "Dėmesio: Minimalus kūrimo bandymas yra skirtas vystytojams."
-#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
-msgstr "Žaidimas"
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Įdiegti"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
msgid "Mapgen"
msgstr "Žemėlapių generavimas"
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Mapgen-specific flags"
+msgstr "Žemėlapių generavimas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "No game selected"
+msgstr "Intervalo pasirinkimas"
+
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
-msgstr "Nepateiktas joks pasaulio pavadinimas, arba nepasirinktas žaidimas"
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Rivers"
+msgstr "Dešinieji langai"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Seed"
msgstr "Sėkla"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
-msgstr "Dėmesio: Minimalus kūrimo bandymas yra skirtas vystytojams."
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
msgid "World name"
msgstr "Pasaulio pavadinimas"
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+#, fuzzy
+msgid "You have no games installed."
msgstr "Neturite įdiegę sub žaidimų."
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr "Ar tikrai norite ištrinti „$1“?"
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr "Ištrinti"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: failed to delete \"$1\""
msgstr "Papildtvrk: nepavyko ištrinti „$1“"
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+#, fuzzy
+msgid "pkgmgr: invalid path \"$1\""
msgstr "Papildtvrk: netinkamas papildinio kelias „$1“"
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr "Ištrinti pasaulį „$1“?"
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Patvirtinti slaptažodį"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Password"
+msgstr "Naujas slaptažodis"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Slaptažodžiai nesutampa!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Accept"
msgstr "Priimti"
@@ -205,30 +658,46 @@ msgstr "Priimti"
msgid "Rename Modpack:"
msgstr "Pervadinti papildinių paką:"
-#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+#: 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 ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "(No description of setting given)"
+msgstr "(Nėra nustatymo aprašymo)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "< Back to Settings page"
-msgstr ""
+msgstr "< Atgal į Nustatymus"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Browse"
-msgstr ""
+msgstr "Naršyti"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Tęsti"
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
+msgid "Content: Mods"
+msgstr "Tęsti"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+#, fuzzy
msgid "Disabled"
msgstr "Išjungti papildinį"
#: builtin/mainmenu/dlg_settings_advanced.lua
msgid "Edit"
-msgstr ""
+msgstr "Keisti"
#: builtin/mainmenu/dlg_settings_advanced.lua
#, fuzzy
@@ -236,291 +705,409 @@ msgid "Enabled"
msgstr "įjungtas"
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
+msgid "Lacunarity"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
-msgstr "Žaidimai"
+msgid "Persistence"
+msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
-msgstr "Papildiniai"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Prašome įvesti sveikąjį skaičių."
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
+msgid "Please enter a valid number."
+msgstr "Prašome įvesti skaičių."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
msgstr ""
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Ieškoti"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Pasirinkite aplanką"
+
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
+msgid "Select file"
+msgstr "Pasirinkite failą"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid integer."
+msgid "The value must be at least $1."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a valid number."
+msgid "The value must not be larger than $1."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
+msgid "X"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Restore Default"
+msgid "X spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
+msgid "Y"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Show technical names"
+msgid "Y spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "Z"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
+msgid "Z spread"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
msgstr ""
-"\n"
-"Papildinio diegimas: nepalaikomas failo tipas „$1“, arba sugadintas archyvas"
-#: builtin/mainmenu/modmgr.lua
+#. ~ "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
+#, fuzzy
+msgid "defaults"
+msgstr "keisti žaidimą"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 (Enabled)"
+msgstr "įjungtas"
+
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "$1 mods"
+msgstr "Konfigūruoti papildinius"
+
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr "Nepavyko įdiegti $1 į $2"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
-msgstr "Įdiegti papildinį: failas: „$1“"
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr "Papildinio diegimas: nepavyksta rasti tikro pavadinimo skirto: $1"
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
"Papildinio diegimas: nepavyksta rasti tinkamo aplanko pavadinimo papildinio "
"paketui $1"
-#: builtin/mainmenu/store.lua
-msgid "Close store"
-msgstr "Užverti parduotuvę"
-
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
-msgstr "Atsiunčiama $1, prašome palaukti..."
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+"Papildinio diegimas: nepavyksta rasti tinkamo aplanko pavadinimo papildinio "
+"paketui $1"
-#: builtin/mainmenu/store.lua
-msgid "Install"
-msgstr "Įdiegti"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Nepavyko įdiegti $1 į $2"
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
-msgstr "Puslapis $1 iš $2"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a game as a $1"
+msgstr "Nepavyko įdiegti $1 į $2"
-#: builtin/mainmenu/store.lua
-msgid "Rating"
-msgstr "Įvertinimas"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a mod as a $1"
+msgstr "Nepavyko įdiegti $1 į $2"
-#: builtin/mainmenu/store.lua
-msgid "Search"
-msgstr "Ieškoti"
+#: builtin/mainmenu/pkgmgr.lua
+#, fuzzy
+msgid "Unable to install a modpack as a $1"
+msgstr "Nepavyko įdiegti $1 į $2"
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
-msgstr "Trumpas pavadinimas:"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
+msgstr "Įkeliama..."
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
-msgstr "Sėkmingai įdiegta:"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
+msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
-msgstr "Nerikiuota"
+#: 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 "
+"interneto ryšį."
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
-msgstr "Įdiegti iš naujo"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr "Aktyvūs pagalbininkai"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr "Pagrindiniai kūrėjai"
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
-msgstr "Padėkos"
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "Pasirinkite aplanką"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr "Ankstesni bendradarbiai"
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr "Ankstesni pagrindiniai kūrėjai"
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr "Įdiegti papildiniai:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
-msgstr "Papildinio informacija:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
-msgstr "Papildinio aprašymas nepateiktas"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
-msgstr "Pervadinti"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
-msgstr "Pasirinkite papildinio failą:"
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
-msgstr "Pašalinti pasirinktą papildinį"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
-msgstr "Pašalinti pasirinktą papildinį"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Address / Port"
-msgstr "Adresas / Prievadas :"
+msgid "Content"
+msgstr "Tęsti"
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
-msgstr "Žaisti tinkle(klientas)"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Pasirinkite tekstūros paketą"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
-msgstr "Jungtis"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Information:"
+msgstr "Papildinio informacija:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
-msgstr "Kūrybinė veiksena"
+#: builtin/mainmenu/tab_content.lua
+#, fuzzy
+msgid "Installed Packages:"
+msgstr "Įdiegti papildiniai:"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
-msgstr "Žalojimas įjungtas"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Del. Favorite"
-msgstr "Mėgiami:"
+msgid "No package description available"
+msgstr "Papildinio aprašymas nepateiktas"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Pervadinti"
+
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Favorite"
-msgstr "Mėgiami:"
+msgid "Uninstall Package"
+msgstr "Pašalinti pasirinktą papildinį"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
+#: builtin/mainmenu/tab_content.lua
#, fuzzy
-msgid "Name / Password"
-msgstr "Vardas / Slaptažodis :"
+msgid "Use Texture Pack"
+msgstr "Tekstūrų paketai"
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
-msgstr "PvP įjungtas"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Paskelbti Serverį"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr "Susieti adresą"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
-msgstr "Konfigūruoti"
-
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Creative Mode"
msgstr "Kūrybinė veiksena"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Enable Damage"
msgstr "Leisti sužeidimus"
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
-msgstr "Vardas/slaptažodis"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Game"
+msgstr "Slėpti vidinius"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Host Server"
+msgstr "Serveris"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "New"
msgstr "Naujas"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr "Nesukurtas ar pasirinktas joks pasaulis!"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Play Game"
+msgstr "Pradėti žaidimą"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr "Prievadas"
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
-msgstr "Viešas"
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Pasirinkite pasaulį:"
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Select World:"
msgstr "Pasirinkite pasaulį:"
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
-msgstr "Serveris"
-
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr "Serverio prievadas"
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
msgid "Start Game"
-msgstr "Pradėti žaidimą"
+msgstr "Slėpti vidinius"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- Adresas: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Išvalyti"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Kūrybinė veiksena"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "Leisti sužeidimus"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Mėgiami:"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Join Game"
+msgstr "Slėpti vidinius"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Paskelbti Serverį"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Pašalinti iš mėgiamų"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "Serverio prievadas"
#: builtin/mainmenu/tab_settings.lua
-msgid "2x"
+msgid "(game support required)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
msgid "3D Clouds"
-msgstr "Trimačiai debesys"
+msgstr "3D Debesys"
#: builtin/mainmenu/tab_settings.lua
msgid "4x"
-msgstr ""
+msgstr "4x"
#: builtin/mainmenu/tab_settings.lua
msgid "8x"
-msgstr ""
+msgstr "8x"
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
-msgid "Advanced Settings"
+msgid "All Settings"
msgstr "Nustatymai"
#: builtin/mainmenu/tab_settings.lua
@@ -528,20 +1115,15 @@ msgid "Antialiasing:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Are you sure to reset your singleplayer world?"
-msgstr "Atstatyti vieno žaidėjo pasaulį"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Bilinear Filter"
+msgid "Autosave Screen Size"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
-msgstr ""
+msgid "Bilinear Filter"
+msgstr "„Bilinear“ filtras"
-#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr "Nustatyti klavišus"
#: builtin/mainmenu/tab_settings.lua
@@ -549,22 +1131,38 @@ msgstr "Nustatyti klavišus"
msgid "Connected Glass"
msgstr "Jungtis"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Fancy Leaves"
msgstr "Nepermatomi lapai"
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap"
+msgid "High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Mipmap + Aniso. Filter"
+msgid "Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
-msgstr "Ne"
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
@@ -584,15 +1182,11 @@ msgstr "Apšvietimo efektai"
msgid "Node Outlining"
msgstr "Apšvietimo efektai"
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
+#: builtin/mainmenu/tab_settings.lua
msgid "None"
msgstr "Joks"
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
-msgstr ""
-
-#: builtin/mainmenu/tab_settings.lua
msgid "Opaque Leaves"
msgstr "Nepermatomi lapai"
@@ -600,19 +1194,14 @@ msgstr "Nepermatomi lapai"
msgid "Opaque Water"
msgstr "Nepermatomas vanduo"
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
-msgstr "Paralaksinė okliuzija"
-
#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Particles"
msgstr "Įjungti visus"
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Reset singleplayer world"
-msgstr "Atstatyti vieno žaidėjo pasaulį"
+msgid "Screen:"
+msgstr ""
#: builtin/mainmenu/tab_settings.lua
msgid "Settings"
@@ -623,6 +1212,14 @@ msgid "Shaders"
msgstr "Šešėliavimai"
#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
#, fuzzy
msgid "Simple Leaves"
msgstr "Nepermatomi lapai"
@@ -636,16 +1233,12 @@ msgstr "Apšvietimo efektai"
msgid "Texturing:"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
msgid "Tone Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+msgid "Touch threshold (px):"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -653,75 +1246,53 @@ msgid "Trilinear Filter"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-#, fuzzy
-msgid "Waving Leaves"
-msgstr "Nepermatomi lapai"
-
-#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Plants"
+msgid "Very High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
+msgid "Very Low"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
-msgstr "Taip"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr "Konfigūruoti papildinius"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr "Pagrindinis"
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr "Atstatyti vieno žaidėjo pasaulį"
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
-msgstr "Žaisti"
-
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr "Žaisti vienam"
+#, fuzzy
+msgid "Waving Leaves"
+msgstr "Nepermatomi lapai"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
-msgstr "Nėra pasiekiamos informacijos"
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Waving Liquids"
+msgstr "Nepermatomi lapai"
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
-msgstr "Pasirinkite tekstūros paketą:"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
-msgstr "Tekstūrų paketai"
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Ryšio klaida (baigėsi prijungimo laikas?)"
-#: src/client.cpp
+#: src/client/client.cpp src/client/game.cpp
msgid "Connection timed out."
msgstr "Baigėsi prijungimo laikas."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr "Atlikta!"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr "Inicijuojami mazgai"
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr "Inicijuojami mazgai..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr "Įkeliamos tekstūros..."
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr "Perstatomi šešėliavimai..."
@@ -730,7 +1301,8 @@ msgid "Connection error (timed out?)"
msgstr "Ryšio klaida (baigėsi prijungimo laikas?)"
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+#, fuzzy
+msgid "Could not find or load game: "
msgstr "Nepavyko rasti ar įkelti žaidimo „"
#: src/client/clientlauncher.cpp
@@ -751,14 +1323,18 @@ msgid "Player name too long."
msgstr "Žaidėjo vardas per ilgas."
#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
msgid "Provided world path doesn't exist: "
msgstr "Pateiktas pasaulio kelias neegzistuoja: "
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
-msgstr "reikia_atsarginio_šrifto"
-
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
@@ -766,57 +1342,174 @@ msgstr ""
"\n"
"Patikrinkite debug.txt dėl papildomos informacijos."
-#: src/game.cpp
-msgid "Change Keys"
-msgstr "Nustatyti klavišus"
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Adresas: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Prievadas: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Viešas: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Serverio pavadinimas: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Įvyko klaida:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward disabled"
+msgstr "Pirmyn"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Automatic forward enabled"
+msgstr "Pirmyn"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Camera update enabled"
+msgstr "Žalojimas įjungtas"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Change Password"
msgstr "Keisti slaptažodį"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode disabled"
+msgstr "Kūrybinė veiksena"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Cinematic mode enabled"
+msgstr "Kūrybinė veiksena"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Client disconnected"
+msgstr "Žaisti tinkle(klientas)"
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Connecting to server..."
msgstr "Jungiamasi prie serverio..."
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
msgid "Continue"
msgstr "Tęsti"
-#: src/game.cpp
-msgid "Creating client..."
-msgstr "Kuriamas klientas..."
-
-#: src/game.cpp
-msgid "Creating server..."
-msgstr "Kuriamas serveris...."
-
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
+"- %s: chat\n"
msgstr ""
"Numatytas valdymas:\n"
-"- WASD: judėti\n"
-"- Tarpas: šokti/lipti\n"
-"- Lyg2: leistis/eiti žemyn\n"
-"- Q: išmesti elementą\n"
-"- I: inventorius\n"
+"- %s: judėti į priekį\n"
+"- %s: judėti atgal\n"
+"- %s: judėti į kairę\n"
+"- %s: judėti į dešinę\n"
+"- %s: šokti/lipti\n"
+"- %s: leistis/eiti žemyn\n"
+"- %s: išmesti daiktą\n"
+"- %s: inventorius\n"
"- Pelė: sukti/žiūrėti\n"
"- Pelės kairys: kasti/smugiuoti\n"
"- Pelės dešinys: padėti/naudoti\n"
"- Pelės ratukas: pasirinkti elementą\n"
-"- T: kalbėtis\n"
+"- %s: kalbėtis\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Kuriamas klientas..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Kuriamas serveris...."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -844,487 +1537,815 @@ msgstr ""
"- liesti&tempti, liesti antru pirštu\n"
" --> padėti vieną elementą į angą\n"
-#: src/game.cpp
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Kuriamas klientas..."
+
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr "Grįžti į meniu"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr "Išeiti iš žaidimo"
-#: src/game.cpp
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode disabled"
+msgstr "Išjungti papildinį"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fast mode enabled"
+msgstr "Žalojimas įjungtas"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode disabled"
+msgstr "Išjungti papildinį"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fly mode enabled"
+msgstr "Žalojimas įjungtas"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog disabled"
+msgstr "Išjungti papildinį"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Fog enabled"
+msgstr "įjungtas"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Game paused"
+msgstr "Žaidimo pavadinimas"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Kuriamas serveris"
+
+#: src/client/game.cpp
msgid "Item definitions..."
msgstr "Elemento apibrėžimai..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "KiB/s"
msgstr "KiB/s"
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Media..."
msgstr "Medija..."
-#: src/game.cpp
+#: src/client/game.cpp
msgid "MiB/s"
msgstr "MiB/s"
-#: src/game.cpp
-msgid "Node definitions..."
-msgstr "Mazgo apibrėžimai..."
-
-#: src/game.cpp
-msgid "Resolving address..."
-msgstr "Ieškoma adreso..."
-
-#: src/game.cpp
-msgid "Respawn"
-msgstr "Prisikelti"
-
-#: src/game.cpp
-msgid "Shutting down..."
-msgstr "Išjungiama..."
-
-#: src/game.cpp
-msgid "Sound Volume"
-msgstr "Garso lygis"
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
-#: src/game.cpp
-msgid "You died."
-msgstr "Jūs numirėte."
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Žaisti vienam"
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
-msgstr "gerai"
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
-msgstr "Įvesti"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Noclip mode enabled"
+msgstr "Žalojimas įjungtas"
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
-msgstr "Vykdyti"
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
-msgstr "„Naudoti“ = kopti žemyn"
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Mazgo apibrėžimai..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
-msgstr "Atgal"
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
-msgstr "Susirašinėti"
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
-msgstr "Komanda"
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
-msgstr "Pultas"
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
-msgstr "Du kart paliesti „šokti“, kad įjungti skrydį"
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
-msgstr "Mesti"
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
-msgstr "Pirmyn"
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Ieškoma adreso..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
-msgstr "Inventorius"
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Išjungiama..."
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
-msgstr "Pašokti"
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Žaisti vienam"
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
-msgstr "Klavišas jau naudojamas"
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Garso lygis"
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
-msgstr "Klavišai. (Jei šis meniu sugenda, pašalinkite įrašus iš minetest.conf)"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound muted"
+msgstr "Garso lygis"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Left"
-msgstr "Kairėn"
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
-msgstr "Spausdinti rietuves"
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
-msgstr "Intervalo pasirinkimas"
+#: src/client/game.cpp
+#, fuzzy
+msgid "Sound unmuted"
+msgstr "Garso lygis"
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Right"
-msgstr "Dešinėn"
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
-msgstr "Sėlinti"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
-msgstr "Įjungti kinematografinį"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
-msgstr "Įjungti greitą"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
-msgstr "Įjungti skrydį"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
-msgstr "Įjungti noclip"
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
-msgstr "Naudoti"
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
-msgstr "Pritraukti"
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
-msgstr "paspauskite klavišą"
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
-msgstr "Pakeisti"
+#: src/client/game.cpp
+msgid "ok"
+msgstr "gerai"
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
-msgstr "Patvirtinti slaptažodį"
+#: src/client/gameui.cpp
+#, fuzzy
+msgid "Chat hidden"
+msgstr "Nustatyti klavišus"
-#: src/guiPasswordChange.cpp
-msgid "New Password"
-msgstr "Naujas slaptažodis"
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
-msgstr "Senas slaptažodis"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
-msgstr "Slaptažodžiai nesutampa!"
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Exit"
-msgstr "Išeiti"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
-msgstr "Garso lygis: "
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Apps"
msgstr "Programos"
-#: src/keycode.cpp
-msgid "Attn"
-msgstr ""
-
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Backspace"
msgstr "Atgal"
-#: src/keycode.cpp
-msgid "Capital"
-msgstr "Sostinė"
-
-#: src/keycode.cpp
-msgid "Clear"
-msgstr "Išvalyti"
-
-#: src/keycode.cpp
-msgid "Comma"
-msgstr "Kablelis"
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Control"
msgstr "Valdymas"
-#: src/keycode.cpp
-msgid "Convert"
-msgstr "Konvertuoti"
-
-#: src/keycode.cpp
-msgid "CrSel"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Down"
msgstr "Žemyn"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "End"
msgstr "Baigti"
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Erase EOF"
msgstr "Ištrinti OEF"
-#: src/keycode.cpp
-msgid "Escape"
-msgstr "Atšaukti"
-
-#: src/keycode.cpp
-msgid "ExSel"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Execute"
msgstr "Vykdyti"
-#: src/keycode.cpp
-msgid "Final"
-msgstr "Galutinis"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Help"
msgstr "Pagalba"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Home"
msgstr "Pradžia"
-#: src/keycode.cpp
-msgid "Insert"
-msgstr "Įterpti"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Accept"
+msgstr "Priimti"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Convert"
+msgstr "Konvertuoti"
+
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Escape"
+msgstr "Atšaukti"
-#: src/keycode.cpp
-msgid "Junja"
-msgstr "Junja"
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "IME Mode Change"
+msgstr "Būsenos keitimas"
-#: src/keycode.cpp
-msgid "Kana"
-msgstr "Kana"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
-#: src/keycode.cpp
-msgid "Kanji"
-msgstr "Kanji"
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Įterpti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Kairėn"
+
+#: src/client/keycode.cpp
msgid "Left Button"
msgstr "Kairysis mygtukas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Control"
msgstr "Kairysis Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Menu"
msgstr "Kairysis meniu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Shift"
msgstr "Kairysis Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Left Windows"
msgstr "Kairieji langai"
-#: src/keycode.cpp
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
msgid "Menu"
msgstr "Meniu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Middle Button"
msgstr "Vidurinis mygtukas"
-#: src/keycode.cpp
-msgid "Minus"
-msgstr "Minus"
-
-#: src/keycode.cpp
-msgid "Mode Change"
-msgstr "Būsenos keitimas"
-
-#: src/keycode.cpp
-msgid "Next"
-msgstr "Kitas"
-
-#: src/keycode.cpp
-msgid "Nonconvert"
-msgstr ""
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Num Lock"
msgstr "Num Lock"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad *"
msgstr "SkaitKlav *"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad +"
msgstr "SkaitKlav +"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad -"
msgstr "SkaitKlav -"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
+#, fuzzy
+msgid "Numpad ."
+msgstr "SkaitKlav *"
+
+#: src/client/keycode.cpp
msgid "Numpad /"
msgstr "SkaitKlav /"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 0"
msgstr "SkaitKlav 0"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 1"
msgstr "SkaitKlav 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 2"
msgstr "SkaitKlav 2"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 3"
msgstr "SkaitKlav 3"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 4"
msgstr "SkaitKlav 4"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 5"
msgstr "SkaitKlav 5"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 6"
msgstr "SkaitKlav 6"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 7"
msgstr "SkaitKlav 7"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 8"
msgstr "SkaitKlav 8"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Numpad 9"
msgstr "SkaitKlav 9"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "OEM Clear"
msgstr "OEM valymas"
-#: src/keycode.cpp
-msgid "PA1"
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
msgstr ""
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Pause"
msgstr "Pause"
-#: src/keycode.cpp
-msgid "Period"
-msgstr "Periodas"
-
-#: src/keycode.cpp
-msgid "Plus"
-msgstr "Plius"
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Žaisti"
-#: src/keycode.cpp
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
msgid "Print"
msgstr "Spausdinti"
-#: src/keycode.cpp
-msgid "Prior"
-msgstr "Ankstesnis"
-
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Return"
msgstr "Grįžti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Dešinėn"
+
+#: src/client/keycode.cpp
msgid "Right Button"
msgstr "Dešinysis mygtukas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Control"
msgstr "Dešinysis Control"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Menu"
msgstr "Dešinysis meniu"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Shift"
msgstr "Dešinysis Shift"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Right Windows"
msgstr "Dešinieji langai"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Scroll Lock"
msgstr "Scroll Lock"
-#: src/keycode.cpp
+#. ~ Key name
+#: src/client/keycode.cpp
msgid "Select"
msgstr "Pasirinkti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Shift"
msgstr "Shift (Lyg2)"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Sleep"
msgstr "Užmigdyti"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Snapshot"
msgstr "Užlaikymas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Space"
msgstr "Tarpas"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Tab"
msgstr "Tabuliacija"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "Up"
msgstr "Aukštyn"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 1"
msgstr "X mygtukas 1"
-#: src/keycode.cpp
+#: src/client/keycode.cpp
msgid "X Button 2"
msgstr "X mygtukas 2"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Pritraukti"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Nepavyko parsiųsti $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Vykdyti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "„Naudoti“ = kopti žemyn"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Autoforward"
+msgstr "Pirmyn"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Atgal"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Change camera"
+msgstr "Nustatyti klavišus"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Susirašinėti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Komanda"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Pultas"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Du kart paliesti „šokti“, kad įjungti skrydį"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Mesti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Pirmyn"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Inc. volume"
+msgstr "Garso lygis"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventorius"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Pašokti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Klavišas jau naudojamas"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Local command"
+msgstr "Komanda"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Next item"
+msgstr "Kitas"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Intervalo pasirinkimas"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Sėlinti"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle HUD"
+msgstr "Įjungti skrydį"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle chat log"
+msgstr "Įjungti greitą"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Įjungti greitą"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Įjungti skrydį"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle fog"
+msgstr "Įjungti skrydį"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle minimap"
+msgstr "Įjungti noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "Įjungti noclip"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "Toggle pitchmove"
+msgstr "Įjungti greitą"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "paspauskite klavišą"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Pakeisti"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Naujas slaptažodis"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Senas slaptažodis"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Slaptažodžiai nesutampa!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Išeiti"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy
+msgid "Muted"
+msgstr "paspauskite klavišą"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Garso lygis: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "lt"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
#: src/settings_translation_file.cpp
msgid ""
-"(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n"
-"Used to move a suitable spawn area of low land close to (0, 0).\n"
-"The default is suitable for mandelbrot sets, it needs to be edited for julia "
-"sets.\n"
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1337,6 +2358,44 @@ msgid "3D mode"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"3D support.\n"
"Currently supported:\n"
@@ -1345,7 +2404,13 @@ msgid ""
"- interlaced: odd/even line based polarisation screen support.\n"
"- topbottom: split screen top/bottom.\n"
"- sidebyside: split screen side by side.\n"
-"- pageflip: quadbuffer based 3d."
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1363,19 +2428,23 @@ msgid "A message to be displayed to all clients when the server shuts down."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Absolute limit of emerge queues"
+msgid "ABM interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Acceleration in air"
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Management interval"
+msgid "Acceleration in air"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Active Block Modifier interval"
+msgid "Acceleration of gravity, in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1383,6 +2452,10 @@ msgid "Active Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Active block range"
msgstr ""
@@ -1398,27 +2471,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
"screens."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
msgid ""
-"Adjust the gamma encoding for the light tables. Lower numbers are brighter.\n"
-"This setting is for the client only and is ignored by the server."
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Pasaulio pavadinimas"
+
+#: src/settings_translation_file.cpp
msgid "Advanced"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Altitude Chill"
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Always fly fast"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1426,7 +2521,11 @@ msgid "Ambient occlusion gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Amplifies the valleys"
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1438,14 +2537,29 @@ msgid "Announce server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Announce to this serverlist.\n"
-"If you want to announce your ipv6 address, use serverlist_url = v6.servers."
-"minetest.net."
+msgid "Announce to this serverlist."
+msgstr "Paskelbti tai serverių sąrašui"
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Approximate (X,Y,Z) scale of fractal in nodes."
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1453,11 +2567,52 @@ msgid "Ask to reconnect after crash"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Automaticaly report to the serverlist."
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Automatic forward key"
+msgstr "Pirmyn"
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+#, fuzzy
+msgid "Aux1 key"
+msgstr "Pašokti"
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1466,15 +2621,23 @@ msgid "Backward key"
msgstr "Atgal"
#: src/settings_translation_file.cpp
-msgid "Base terrain height"
+msgid "Base ground level"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
+msgid "Base terrain height."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic Privileges"
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1487,7 +2650,35 @@ msgid "Bind address"
msgstr "Ieškoma adreso..."
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1499,7 +2690,16 @@ msgid "Builtin"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
+#, fuzzy
+msgid "Camera"
+msgstr "Nustatyti klavišus"
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -1515,6 +2715,10 @@ msgid "Camera update toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Cave noise #1"
msgstr ""
@@ -1527,7 +2731,50 @@ msgid "Cave width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Caves and tunnels form at the intersection of the two noises"
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Komanda"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1537,35 +2784,32 @@ msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chat toggle key"
+msgid "Chat log level"
msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Chatcommands"
-msgstr "Komanda"
+msgid "Chat toggle key"
+msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
-msgid ""
-"Choice of 18 fractals from 9 formulas.\n"
-"1 = 4D \"Roundy\" mandelbrot set.\n"
-"2 = 4D \"Roundy\" julia set.\n"
-"3 = 4D \"Squarry\" mandelbrot set.\n"
-"4 = 4D \"Squarry\" julia set.\n"
-"5 = 4D \"Mandy Cousin\" mandelbrot set.\n"
-"6 = 4D \"Mandy Cousin\" julia set.\n"
-"7 = 4D \"Variation\" mandelbrot set.\n"
-"8 = 4D \"Variation\" julia set.\n"
-"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n"
-"10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n"
-"11 = 3D \"Christmas Tree\" mandelbrot set.\n"
-"12 = 3D \"Christmas Tree\" julia set.\n"
-"13 = 3D \"Mandelbulb\" mandelbrot set.\n"
-"14 = 3D \"Mandelbulb\" julia set.\n"
-"15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n"
-"16 = 3D \"Cosine Mandelbulb\" julia set.\n"
-"17 = 4D \"Mandelbulb\" mandelbrot set.\n"
-"18 = 4D \"Mandelbulb\" julia set."
+msgid "Chat weblinks"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1587,15 +2831,40 @@ msgid "Clean transparent textures"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr "Žaisti tinkle(klientas)"
+
+#: src/settings_translation_file.cpp
msgid "Client and Server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Climbing speed"
+#, fuzzy
+msgid "Client modding"
+msgstr "Žaisti tinkle(klientas)"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Client side modding restrictions"
+msgstr "Žaisti tinkle(klientas)"
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cloud height"
+#, fuzzy
+msgid "Client-side Modding"
+msgstr "Žaisti tinkle(klientas)"
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1621,6 +2890,21 @@ msgid "Colored fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
"allow them to upload and download data to/from the internet."
@@ -1638,14 +2922,29 @@ msgid "Command key"
msgstr "Komanda"
#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Connect glass"
msgstr "Jungtis"
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Connect to external media server"
-msgstr "Jungiamasi prie serverio..."
+msgstr "Prisijungti prie išorinio medijos serverio"
#: src/settings_translation_file.cpp
msgid "Connects glass if supported by node."
@@ -1661,15 +2960,34 @@ msgstr ""
#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Console key"
+msgid "Console height"
msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "ContentDB URL"
+msgstr "Tęsti"
+
+#: src/settings_translation_file.cpp
msgid "Continuous forward"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1680,14 +2998,14 @@ msgstr "Kairysis Control"
#: src/settings_translation_file.cpp
msgid ""
"Controls length of day/night cycle.\n"
-"Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays "
-"unchanged."
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Controls size of deserts and beaches in Mapgen v6.\n"
-"When snowbiomes are enabled 'mgv6_freq_desert' is ignored."
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1699,7 +3017,10 @@ msgid "Controls steepness/height of hills."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Controls width of tunnels, a smaller value creates wider tunnels."
+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 ""
#: src/settings_translation_file.cpp
@@ -1707,23 +3028,18 @@ msgid "Crash message"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable lava features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Creates unpredictable water features in caves.\n"
-"These can make mining difficult. Zero disables them. (0-10)"
-msgstr ""
+#, fuzzy
+msgid "Creative"
+msgstr "Sukurti"
#: src/settings_translation_file.cpp
msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair alpha (opaqueness, between 0 and 255)."
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1731,11 +3047,9 @@ msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Crosshair color (R,G,B)."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Crouch speed"
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1752,10 +3066,22 @@ msgid "Debug info toggle key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Debug log level"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Dedicated server step"
msgstr ""
@@ -1788,15 +3114,51 @@ msgid "Default report format"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Default stack size"
+msgstr "keisti žaidimą"
+
+#: src/settings_translation_file.cpp
msgid ""
-"Default timeout for cURL, stated in milliseconds.\n"
-"Only has an effect if compiled with cURL."
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1804,6 +3166,24 @@ msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Delay in sending blocks after building"
msgstr ""
@@ -1816,21 +3196,27 @@ msgid "Deprecated Lua API handling"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Depth below which you'll find large caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Depth below which you'll find massive caves."
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Descending speed"
+msgid "Desert noise threshold"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Description of server, to be displayed when players join and in the "
-"serverlist."
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1838,30 +3224,36 @@ msgid "Desynchronize block animation"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Determines terrain shape.\n"
-"The 3 numbers in brackets control the scale of the\n"
-"terrain, the 3 numbers should be identical."
-msgstr ""
+#, fuzzy
+msgid "Developer Options"
+msgstr "Dekoracijos"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Dig key"
+msgstr "Dešinėn"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Digging particles"
+msgstr "Įjungti visus"
#: src/settings_translation_file.cpp
msgid "Disable anticheat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disable escape sequences"
+msgid "Disallow empty passwords"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Disable escape sequences, e.g. chat coloring.\n"
-"Use this if you want to run a server with pre-0.4.14 clients and you want to "
-"disable\n"
-"the escape sequences generated by mods."
+msgid "Display Density Scaling Factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Disallow empty passwords"
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1881,17 +3273,65 @@ msgid "Drop item key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Dump the mapgen debug infos."
+msgid "Dump the mapgen debug information."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Dungeon maximum Y"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enable VBO"
-msgstr "Įjungti papildinį"
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr "Įjungti papildinių kanalų palaikymą."
#: src/settings_translation_file.cpp
#, fuzzy
@@ -1913,6 +3353,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Enable to disallow old clients from connecting.\n"
"Older clients are compatible in the sense that they will not crash when "
@@ -1931,89 +3375,101 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable/disable running an IPv6 server. An IPv6 server may be restricted\n"
-"to IPv6 clients, depending on system configuration.\n"
-"Ignored if bind_address is set."
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables animation of inventory items."
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables caching of facedir rotated meshes."
+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 ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Enables filmic tone mapping"
-msgstr "Leisti sužeidimus"
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
msgid "Enables minimap."
-msgstr "Leisti sužeidimus"
+msgstr "Įjungia minimapą."
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Engine profiling data print interval"
+msgid "Engine profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Entity methods"
+msgid "Engine profiling data print interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+msgid "Entity methods"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fall bobbing"
+msgid "FPS when unfocused or paused"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow"
+msgid "Factor noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font shadow alpha"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fallback font size"
+msgid "Fallback font path"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2034,17 +3490,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
+"Fast movement (via the \"Aux1\" key).\n"
"This requires the \"fast\" privilege on the server."
msgstr ""
#: src/settings_translation_file.cpp
msgid "Field of view"
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
-msgstr ""
+msgstr "Matymo laukas"
#: src/settings_translation_file.cpp
msgid "Field of view in degrees."
@@ -2052,18 +3504,17 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Field of view while zooming in degrees.\n"
-"This requires the \"zoom\" privilege on the server."
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+msgid "Filler depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filler Depth"
+msgid "Filler depth noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2073,13 +3524,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2087,6 +3546,38 @@ msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fly key"
msgstr ""
@@ -2099,11 +3590,23 @@ msgid "Fog"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Fog toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font path"
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2115,15 +3618,43 @@ msgid "Font shadow alpha"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow alpha (opaqueness, between 0 and 255)."
+msgid "Font size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font shadow offset, if 0 then shadow will not be drawn."
+msgid "Font size divisible by"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Font size"
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2131,12 +3662,52 @@ msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Forward key"
msgstr "Pirmyn"
#: src/settings_translation_file.cpp
-msgid "Freetype fonts"
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2152,7 +3723,11 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"From how far clients know about objects, stated in mapblocks (16 nodes)."
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
#: src/settings_translation_file.cpp
@@ -2160,10 +3735,6 @@ msgid "Full screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Fullscreen mode."
msgstr ""
@@ -2180,15 +3751,16 @@ msgid "GUI scaling filter txr2img"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Gamma"
+msgid "GUIs"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "General"
-msgstr ""
+#, fuzzy
+msgid "Gamepads"
+msgstr "Žaidimai"
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "General"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2199,10 +3771,19 @@ msgstr ""
msgid ""
"Global map generation attributes.\n"
"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
-"and junglegrass, in all other mapgens this flag controls all decorations.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2210,23 +3791,47 @@ msgid "Graphics"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Gravity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "HTTP Mods"
+msgid "HTTP mods"
msgstr "Papildiniai"
#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "HUD toggle key"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Handling for deprecated lua api calls:\n"
-"- legacy: (try to) mimic old behaviour (default for release).\n"
-"- log: mimic and log backtrace of deprecated call (default for debug).\n"
+"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 ""
@@ -2240,15 +3845,49 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Heat blend noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height on which clouds are appearing."
+msgid "Heat noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "High-precision FPU"
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Height noise"
+msgstr "Dešinieji langai"
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2256,36 +3895,205 @@ msgid "Homepage of server, to be displayed in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How deep to make rivers"
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How large area of blocks are subject to the active block stuff, stated in "
-"mapblocks (16 nodes).\n"
-"In active blocks objects are loaded and ABMs run."
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"How much the server will wait before unloading unused mapblocks.\n"
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
"Higher value is smoother, but will use more RAM."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "How wide to make rivers"
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6"
+msgid "How wide to make rivers."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 server"
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "IPv6 support."
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2296,12 +4104,21 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" 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\n"
"enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"If enabled together with fly mode, player is able to fly through solid "
"nodes.\n"
"This requires the \"noclip\" privilege on the server."
@@ -2309,8 +4126,15 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2330,7 +4154,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If enabled, new players cannot join with an empty password."
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2341,17 +4173,33 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "If this is set, players will always (re)spawn at the given position."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Ignore world errors"
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "In-Game"
-msgstr "Žaidimas"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
@@ -2362,13 +4210,26 @@ msgid "In-game chat console background color (R,G,B)."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Inc. volume key"
+msgstr "Nustatyti klavišus"
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Instrument builtin.\n"
"This is usually only needed by core/builtin contributors"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrument chatcommands on registration."
+msgid "Instrument chat commands on registration."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2392,15 +4253,11 @@ msgid "Instrument the methods of entities on registration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Instrumentation"
-msgstr ""
-
-#: src/settings_translation_file.cpp
msgid "Interval of saving important changes in the world, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Interval of sending time of day to clients."
+msgid "Interval of sending time of day to clients, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -2421,13 +4278,31 @@ msgid "Invert vertical mouse movement."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Iterations of the recursive function.\n"
-"Controls the amount of fine detail."
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
msgstr ""
#: src/settings_translation_file.cpp
@@ -2435,39 +4310,67 @@ msgid "Joystick button repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Joystick frustum sensitivity"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: W component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: X component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Y component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Julia set only: Z component of hypercomplex constant determining julia "
-"shape.\n"
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Jump key"
msgstr "Pašokti"
@@ -2485,6 +4388,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for dropping the currently selected item.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2499,6 +4416,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for jumping.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2514,6 +4438,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2541,7 +4466,7 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
+"Key for muting the game.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
@@ -2555,6 +4480,13 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"Key for opening the chat window.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
@@ -2569,630 +4501,751 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
+"Key for placing.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
+"Key for selecting the 11th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
+"Key for selecting the 12th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
+"Key for selecting the 13th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
+"Key for selecting the 14th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
+"Key for selecting the 15th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
+"Key for selecting the 16th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
+"Key for selecting the 17th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
+"Key for selecting the 18th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
+"Key for selecting the 19th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
+"Key for selecting the 20th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
+"Key for selecting the 21st hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
+"Key for selecting the 22nd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
+"Key for selecting the 23rd hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
+"Key for selecting the 24th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
+"Key for selecting the 25th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
+"Key for selecting the 26th hotbar slot.\n"
"See http://irrlicht.sourceforge.net/docu/namespaceirr."
"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Language"
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Large cave depth"
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Lava Features"
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Left key"
-msgstr "Kairėn"
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Length of a server tick and the interval at which objects are generally "
-"updated over network."
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between ABM execution cycles"
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Length of time between NodeTimer execution cycles"
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Level of logging to be written to debug.txt:\n"
-"- <nothing> (no logging)\n"
-"- none (messages with no level)\n"
-"- error\n"
-"- warning\n"
-"- action\n"
-"- info\n"
-"- verbose"
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues on disk"
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Limit of emerge queues to generate"
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Limits number of parallel HTTP requests. Affects:\n"
-"- Media fetch if server uses remote_media setting.\n"
-"- Serverlist download and server announcement.\n"
-"- Downloads performed by main menu (e.g. mod manager).\n"
-"Only has an effect if compiled with cURL."
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity"
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid fluidity smoothing"
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid loop max"
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid queue purge time"
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid sink"
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update interval in seconds."
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Liquid update tick"
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Load the game profiler"
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Load the game profiler to collect game profiling data.\n"
-"Provides a /profiler command to access the compiled profile.\n"
-"Useful for mod developers and server operators."
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Loading Block Modifiers"
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Main menu game manager"
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu mod manager"
-msgstr "Pagrindinis meniu"
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Main menu script"
-msgstr "Pagrindinis meniu"
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles."
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map directory"
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen Valleys.\n"
-"'altitude_chill' makes higher elevations colder, which may cause biome "
-"issues.\n"
-"'humid_rivers' modifies the humidity around rivers and in areas where water "
-"would tend to pool,\n"
-"it may interfere with delicately adjusted biomes.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen flat.\n"
-"Occasional lakes and hills can be added to the flat world.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v6.\n"
-"When snowbiomes are enabled jungles are automatically enabled, the 'jungles' "
-"flag is ignored.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Map generation attributes specific to Mapgen v7.\n"
-"The 'ridges' flag controls the rivers.\n"
-"Flags that are not specified in the flag string are not modified from the "
-"default.\n"
-"Flags starting with 'no' are used to explicitly disable them."
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map generation limit"
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Map save interval"
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock limit"
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapblock unload timeout"
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen Valleys"
-msgstr "Žemėlapių generavimas"
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome heat noise parameters"
+msgid "Lake steepness"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity blend noise parameters"
+msgid "Lake threshold"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen biome humidity noise parameters"
+msgid "Language"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen debug"
+msgid "Large cave depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flags"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat"
-msgstr "Žemėlapių generavimas"
+msgid "Large cave minimum number"
+msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen flat cave width"
-msgstr "Žemėlapių generavimas"
+msgid "Large cave proportion flooded"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave1 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Large chat console key"
+msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat cave2 noise parameters"
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat filler depth noise parameters"
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat flags"
-msgstr ""
+#, fuzzy
+msgid "Left key"
+msgstr "Kairėn"
#: src/settings_translation_file.cpp
-msgid "Mapgen flat ground level"
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill steepness"
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat hill threshold"
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake steepness"
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat lake threshold"
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat large cave depth"
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen flat terrain noise parameters"
+msgid "Light curve boost"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal"
+msgid "Light curve boost center"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Mapgen fractal cave width"
-msgstr "Žemėlapių generavimas"
+msgid "Light curve boost spread"
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave1 noise parameters"
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal cave2 noise parameters"
+msgid "Light curve high gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal filler depth noise parameters"
+msgid "Light curve low gradient"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal fractal"
-msgstr ""
+#, fuzzy
+msgid "Lighting"
+msgstr "Apšvietimo efektai"
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal iterations"
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia w"
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia x"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia y"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal julia z"
+msgid "Liquid loop max"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal offset"
+msgid "Liquid queue purge time"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal scale"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal seabed noise parameters"
+msgid "Liquid update interval in seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen fractal slice w"
+msgid "Liquid update tick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen heat blend noise parameters"
+msgid "Load the game profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen name"
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5"
+msgid "Loading Block Modifiers"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave width"
+msgid "Lower Y limit of dungeons."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave1 noise parameters"
+msgid "Lower Y limit of floatlands."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Main menu script"
+msgstr "Pagrindinis meniu"
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 factor noise parameters"
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 filler depth noise parameters"
+msgid "Makes all liquids opaque"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v5 height noise parameters"
+msgid "Map Compression Level for Disk Storage"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6"
+msgid "Map Compression Level for Network Transfer"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 apple trees noise parameters"
+msgid "Map directory"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach frequency"
+msgid "Map generation attributes specific to Mapgen Carpathian."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 beach noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 biome noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 cave noise parameters"
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 desert frequency"
+msgid "Map generation attributes specific to Mapgen v5."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 flags"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 height select noise parameters"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 humidity noise parameters"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 mud noise parameters"
+msgid "Map save interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 steepness noise parameters"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain altitude noise parameters"
+msgid "Mapblock limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 terrain base noise parameters"
+msgid "Mapblock mesh generation delay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v6 trees noise parameters"
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7"
+msgid "Mapblock unload timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave width"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Carpathian"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave1 noise parameters"
+msgid "Mapgen Carpathian specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 cave2 noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Flat"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 filler depth noise parameters"
+msgid "Mapgen Flat specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 flags"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 height select noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Fractal specific flags"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mount height noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V5"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 mountain noise parameters"
+msgid "Mapgen V5 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V6"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 ridge water noise parameters"
+msgid "Mapgen V6 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain altitude noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen V7"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain base noise parameters"
+msgid "Mapgen V7 specific flags"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mapgen v7 terrain persistation noise parameters"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Valleys"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Massive cave depth"
-msgstr ""
+#, fuzzy
+msgid "Mapgen Valleys specific flags"
+msgstr "Žemėlapių generavimas"
#: src/settings_translation_file.cpp
-msgid "Massive cave noise"
+msgid "Mapgen debug"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Massive caves form here."
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3220,7 +5273,11 @@ msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3232,11 +5289,24 @@ msgid "Maximum hotbar width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent in total."
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of blocks that are simultaneously sent per client."
+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 ""
#: src/settings_translation_file.cpp
@@ -3246,13 +5316,20 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be generated.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Maximum number of blocks to be queued that are to be loaded from file.\n"
-"Set to blank for an appropriate amount to be chosen automatically."
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3273,7 +5350,11 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum number of players that can connect simultaneously."
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3295,21 +5376,30 @@ msgid "Maximum simultaneous block sends per client"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum simultaneous block sends total"
+msgid "Maximum size of the out chat queue"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum time in ms a file download (e.g. a mod download) may take."
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum users"
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Menus"
-msgstr "Meniu"
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Mesh cache"
@@ -3328,6 +5418,10 @@ msgid "Method used to highlight selected object."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Minimap"
msgstr ""
@@ -3340,7 +5434,15 @@ msgid "Minimap scan height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3348,15 +5450,24 @@ msgid "Mipmapping"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore details URL"
+msgid "Misc"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore download URL"
+msgid "Mod Profiler"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Modstore mods list URL"
+#, fuzzy
+msgid "Mod Security"
+msgstr "Papildiniai internete"
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3368,6 +5479,26 @@ msgid "Monospace font size"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Mouse sensitivity"
msgstr ""
@@ -3376,21 +5507,30 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid ""
"Multiplier for fall bobbing.\n"
"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"Multiplier for view bobbing.\n"
-"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+#, fuzzy
+msgid "Mute key"
+msgstr "paspauskite klavišą"
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"Name of map generator to be used when creating a new world.\n"
-"Creating a world in the main menu will override this."
+"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 ""
#: src/settings_translation_file.cpp
@@ -3406,7 +5546,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3416,6 +5556,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "New users need to input this password."
msgstr ""
@@ -3428,6 +5572,11 @@ msgid "Noclip key"
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Apšvietimo efektai"
+
+#: src/settings_translation_file.cpp
msgid "Node highlighting"
msgstr ""
@@ -3436,91 +5585,121 @@ msgid "NodeTimer interval"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noise parameters for biome API temperature, humidity and biome blend."
+msgid "Noises"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noises"
+msgid "Number of emerge threads"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of emerge threads"
+msgid "Opaque liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of emerge threads to use. Make this field blank, or increase this "
-"number\n"
-"to use multiple threads. On multiprocessor systems, this will improve mapgen "
-"speed greatly\n"
-"at the cost of slightly buggy caves."
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Number of extra blocks that can be loaded by /clearobjects at once.\n"
-"This is a trade-off between sqlite transaction overhead and\n"
-"memory consumption (4096=100MB, as a rule of thumb)."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Optional override for chat weblink color."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+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 ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Path to texture directory. All textures are first searched from here."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Per-player limit of queued blocks load from disk"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to TrueTypeFont or bitmap."
+msgid "Per-player limit of queued blocks to generate"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to save screenshots at."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Path to texture directory. All textures are first searched from here."
+#, fuzzy
+msgid "Pitch move key"
+msgstr "Kūrybinė veiksena"
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Physics"
+#, fuzzy
+msgid "Place key"
+msgstr "Kūrybinė veiksena"
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3530,15 +5709,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player name"
+msgid "Player transfer distance"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player transfer distance"
+msgid "Player versus player"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Player versus Player"
+msgid "Poisson filtering"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3548,13 +5727,19 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Prevent mods from doing insecure things like running shell commands."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Print the engine's profiling data in regular intervals (in seconds). 0 = "
-"disable. Useful for developers."
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3570,7 +5755,19 @@ msgid "Profiler toggle key"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiling"
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3581,7 +5778,7 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Raises terrain to make valleys around the rivers"
+msgid "Raises terrain to make valleys around the rivers."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3593,6 +5790,14 @@ msgid "Range select key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Remote media"
msgstr ""
@@ -3601,6 +5806,12 @@ msgid "Remote port"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Replaces the default main menu with a custom one."
msgstr ""
@@ -3609,28 +5820,63 @@ msgid "Report path"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Right key"
msgstr "Dešinėn"
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "River channel depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Depth"
+msgid "River channel width"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Noise"
+msgid "River depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River Size"
+#, fuzzy
+msgid "River noise"
+msgstr "Dešinieji langai"
+
+#: src/settings_translation_file.cpp
+msgid "River size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "River noise -- rivers occur close to zero"
+msgid "River valley width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3638,20 +5884,40 @@ msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Round minimap"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Saving map received from server"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Scale gui by a user specified value.\n"
+"Scale GUI by a user specified value.\n"
"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
"This will smooth over some of the rough edges, and blend\n"
"pixels when scaling down, at the cost of blurring some\n"
@@ -3659,15 +5925,15 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
+msgid "Screen"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen width"
+msgid "Screen height"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screenshot"
+msgid "Screen width"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3690,11 +5956,24 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Security"
+#, fuzzy
+msgid "Screenshots"
+msgstr "Užlaikymas"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "See http://www.sqlite.org/pragma.html#pragma_synchronous"
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3710,9 +5989,42 @@ msgid "Selection box width"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
#, fuzzy
-msgid "Server / Singleplayer"
-msgstr "Žaisti vienam"
+msgid "Server"
+msgstr "Serveris"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "Serveris"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Serverio prievadas"
#: src/settings_translation_file.cpp
#, fuzzy
@@ -3740,12 +6052,26 @@ msgid "Server port"
msgstr "Serverio prievadas"
#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Serverio prievadas"
+
+#: src/settings_translation_file.cpp
#, fuzzy
msgid "Serverlist URL"
msgstr "Viešų serverių sąrašas"
#: src/settings_translation_file.cpp
#, fuzzy
+msgid "Serverlist and MOTD"
+msgstr "Viešų serverių sąrašas"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
msgid "Serverlist file"
msgstr "Viešų serverių sąrašas"
@@ -3757,27 +6083,98 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
+"Set to true to enable waving liquids (like water).\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
+"Set to true to enable waving plants.\n"
"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Shader path"
+msgstr "Šešėliavimai"
+
+#: src/settings_translation_file.cpp
+msgid ""
"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"video\n"
+"cards.\n"
+"This only works with the OpenGL video backend."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3793,17 +6190,62 @@ msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Shutdown message"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Size of chunks to be generated at once by mapgen, stated in mapblocks (16 "
-"nodes)."
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Slope and fill work together to modify the heights"
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3831,6 +6273,19 @@ msgid "Sneak key"
msgstr "Nustatyti klavišus"
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Sneaking speed"
+msgstr "Nustatyti klavišus"
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Sound"
msgstr ""
@@ -3843,15 +6298,52 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
msgid "Static spawnpoint"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
#: src/settings_translation_file.cpp
@@ -3859,7 +6351,21 @@ msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3867,7 +6373,32 @@ msgid "Synchronous SQLite"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Terrain Height"
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Nustatymai"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3885,11 +6416,36 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Texture path"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The altitude at which temperature drops by 20C"
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
msgstr ""
#: src/settings_translation_file.cpp
@@ -3899,13 +6455,29 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The depth of dirt or other filler"
+msgid "The depth of dirt or other biome filler node."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The file path relative to your worldpath in which profiles will be saved "
-"to.\n"
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3919,13 +6491,30 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "The rendering back-end for Irrlicht."
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"in-game view frustum around."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3945,22 +6534,35 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
"The time in seconds it takes between repeated events\n"
"when holding down a joystick button combination."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "This font will be used for certain languages."
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Time in between active block management cycles"
+msgid "Third of 4 2D noises that together define hill/mountain range height."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3970,6 +6572,10 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Time send interval"
msgstr ""
@@ -3978,7 +6584,7 @@ msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Timeout for client to remove unused map data from memory."
+msgid "Timeout for client to remove unused map data from memory, in seconds."
msgstr ""
#: src/settings_translation_file.cpp
@@ -3998,6 +6604,26 @@ msgid "Tooltip delay"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Trilinear filtering"
msgstr ""
@@ -4005,7 +6631,7 @@ msgstr ""
msgid ""
"True = 256\n"
"False = 128\n"
-"Useable to make minimap smoother on slower machines."
+"Usable to make minimap smoother on slower machines."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4017,6 +6643,19 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Unlimited player transfer distance"
msgstr ""
@@ -4025,6 +6664,14 @@ msgid "Unload unused server data"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Use 3D cloud look instead of flat."
msgstr ""
@@ -4041,12 +6688,21 @@ msgid "Use bilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Use key"
-msgstr "paspauskite klavišą"
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4054,7 +6710,7 @@ msgid "Use trilinear filtering when scaling textures."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "User Interfaces"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4062,23 +6718,59 @@ msgid "VBO"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Depth"
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Fill"
+msgid "Variation of number of caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Profile"
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valley Slope"
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Valleys C Flags"
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4090,13 +6782,11 @@ msgid "Video driver"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View bobbing"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
-msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+msgid "View distance in nodes."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4108,29 +6798,47 @@ msgid "View range increase key"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Viewing range"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Volume"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"W co-ordinate of the generated 3D slice of a 4D fractal.\n"
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
"Has no effect on 3D fractals.\n"
"Range roughly -2 to 2."
msgstr ""
#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-#, fuzzy
-msgid "Water Features"
-msgstr "Elemento tekstūros..."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
#: src/settings_translation_file.cpp
msgid "Water level"
@@ -4149,23 +6857,31 @@ msgid "Waving leaves"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving plants"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids"
+msgstr "Nepermatomi lapai"
#: src/settings_translation_file.cpp
-msgid "Waving water"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave height"
+msgstr "Nepermatomi lapai"
#: src/settings_translation_file.cpp
-msgid "Waving water height"
-msgstr ""
+#, fuzzy
+msgid "Waving liquids wave speed"
+msgstr "Nepermatomi lapai"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Waving liquids wavelength"
+msgstr "Nepermatomi lapai"
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Weblink color"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4187,26 +6903,18 @@ msgstr ""
msgid ""
"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
-msgstr ""
-
-#: src/settings_translation_file.cpp
-msgid ""
-"Where the map generator stops.\n"
-"Please note:\n"
-"- Limited to 31000 (setting above has no effect)\n"
-"- The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n"
-"- Those groups have an offset of -32, -32 nodes from the origin.\n"
-"- Only groups which are within the map_generation_limit are generated"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether freetype fonts are used, requires freetype support to be compiled in."
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4235,23 +6943,39 @@ msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to show the client debug info (has the same effect as hitting F5)."
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width of the selectionbox's lines around nodes."
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
msgstr ""
#: src/settings_translation_file.cpp
@@ -4261,11 +6985,72 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "World start time"
+msgstr "Pasaulio pavadinimas"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Y of flat ground."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Y of upper limit of large pseudorandom caves."
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
msgstr ""
#: src/settings_translation_file.cpp
@@ -4273,77 +7058,142 @@ msgid "cURL file download timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL parallel limit"
+msgid "cURL interactive timeout"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "cURL timeout"
+msgid "cURL parallel limit"
msgstr ""
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Kūrybinis režimas "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Sužeidimai: "
+
+#~ msgid "Address / Port"
+#~ msgstr "Adresas / Prievadas"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr "Ar tikrai norite perkurti savo lokalų pasaulį?"
+
+#~ msgid "Back"
+#~ msgstr "Atgal"
+
+#~ msgid "Config mods"
+#~ msgstr "Konfigūruoti papildinius"
+
+#~ msgid "Configure"
+#~ msgstr "Konfigūruoti"
+
+#~ msgid "Connect"
+#~ msgstr "Jungtis"
+
+#~ msgid "Credits"
+#~ msgstr "Padėkos"
+
+#~ msgid "Damage enabled"
+#~ msgstr "Žalojimas įjungtas"
+
#, fuzzy
-#~ msgid "Preload inventory textures"
-#~ msgstr "Įkeliama..."
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Atsisiųskite sub žaidimą, tokį kaip minetest_game, iš minetest.net"
-#~ msgid "Add mod:"
-#~ msgstr "Pridėti papildinį:"
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Atsisiųsti vieną iš minetest.net"
+
+#, fuzzy
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Atsiunčiama $1, prašome palaukti..."
-#~ msgid "MODS"
-#~ msgstr "PAPILDINIAI"
+#, fuzzy
+#~ msgid "Enable VBO"
+#~ msgstr "Įjungti papildinį"
-#~ msgid "SINGLE PLAYER"
-#~ msgstr "VIENAS ŽAIDĖJAS"
+#, fuzzy
+#~ msgid "Enables filmic tone mapping"
+#~ msgstr "Leisti sužeidimus"
-#~ msgid "SETTINGS"
-#~ msgstr "NUSTATYMAI"
+#~ msgid "Enter "
+#~ msgstr "Įvesti "
-#~ msgid "Password"
-#~ msgstr "Slaptažodis"
+#~ msgid "Game"
+#~ msgstr "Žaidimas"
-#~ msgid "Name"
-#~ msgstr "Vardas"
+#, fuzzy
+#~ msgid "In-Game"
+#~ msgstr "Žaidimas"
-#~ msgid "START SERVER"
-#~ msgstr "PALEISTI SERVERĮ"
+#, fuzzy
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Įdiegti papildinį: failas: „$1“"
-#~ msgid "CLIENT"
-#~ msgstr "ŽAISTI TINKLE"
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Klavišai. (Jei šis meniu sugenda, pašalinkite įrašus iš minetest.conf)"
-#~ msgid "<<-- Add mod"
-#~ msgstr "<<-- Pridėti papildinį"
+#~ msgid "Main"
+#~ msgstr "Pagrindinis"
-#~ msgid "Remove selected mod"
-#~ msgstr "Pašalinti pasirinktą papildinį"
+#, fuzzy
+#~ msgid "Main menu style"
+#~ msgstr "Pagrindinis meniu"
#, fuzzy
-#~ msgid "EDIT GAME"
-#~ msgstr "KEISTI ŽAIDIMĄ"
+#~ msgid "Menus"
+#~ msgstr "Meniu"
-#~ msgid "new game"
-#~ msgstr "naujas žaidimas"
+#~ msgid "Name / Password"
+#~ msgstr "Vardas / Slaptažodis"
-#~ msgid "Mods:"
-#~ msgstr "Papildiniai:"
+#~ msgid "Name/Password"
+#~ msgstr "Vardas/slaptažodis"
-#~ msgid "GAMES"
-#~ msgstr "ŽAIDIMAI"
+#~ msgid "No"
+#~ msgstr "Ne"
-#~ msgid "Game Name"
-#~ msgstr "Žaidimo pavadinimas"
+#~ msgid "Ok"
+#~ msgstr "Gerai"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Paralaksinė okliuzija"
+
+#, fuzzy
+#~ msgid "Parallax occlusion scale"
+#~ msgstr "Paralaksinė okliuzija"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP įjungtas"
+
+#, fuzzy
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Atstatyti vieno žaidėjo pasaulį"
+
+#, fuzzy
+#~ msgid "Select Package File:"
+#~ msgstr "Pasirinkite papildinio failą:"
#, fuzzy
-#~ msgid "If enabled, "
-#~ msgstr "įjungtas"
+#~ msgid "Server / Singleplayer"
+#~ msgstr "Žaisti vienam"
#, fuzzy
-#~ msgid "If disabled "
-#~ msgstr "Išjungti papildinį"
+#~ msgid "Special key"
+#~ msgstr "Nustatyti klavišus"
-#~ msgid "Public Serverlist"
-#~ msgstr "Viešų serverių sąrašas"
+#~ msgid "Start Singleplayer"
+#~ msgstr "Atstatyti vieno žaidėjo pasaulį"
-#~ msgid "No of course not!"
-#~ msgstr "Ne, tikrai ne!"
+#~ msgid "Toggle Cinematic"
+#~ msgstr "Įjungti kinematografinį"
+
+#~ msgid "Yes"
+#~ msgstr "Taip"
#, fuzzy
-#~ msgid "Useful for mod developers."
-#~ msgstr "Pagrindiniai kūrėjai"
+#~ msgid "You died."
+#~ msgstr "Jūs numirėte"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/lv/minetest.po b/po/lv/minetest.po
new file mode 100644
index 000000000..b5aabb6d2
--- /dev/null
+++ b/po/lv/minetest.po
@@ -0,0 +1,7083 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-07-14 11:16+0000\n"
+"Last-Translator: Cow Boy <cowboylv@tutanota.com>\n"
+"Language-Team: Latvian <https://hosted.weblate.org/projects/minetest/"
+"minetest/lv/>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= "
+"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
+"X-Generator: Weblate 4.14-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Exit to main menu"
+msgstr "Iziet uz izvēlni"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Invalid command: "
+msgstr "Lokālā komanda"
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "List online players"
+msgstr "Viena spēlētāja režīms"
+
+#: builtin/client/chatcommands.lua
+#, fuzzy
+msgid "Online players: "
+msgstr "Viena spēlētāja režīms"
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "Atdzīvoties"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "Jūs nomirāt"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands:"
+msgstr "Lokālā komanda"
+
+#: builtin/common/chatcommands.lua
+#, fuzzy
+msgid "Available commands: "
+msgstr "Lokālā komanda"
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr "Lua skriptā radās kļūme:"
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr "Radās kļūme:"
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr "Galvenā izvēlne"
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr "Atjaunot savienojumu"
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr "Serveris ir pieprasījis savienojuma atjaunošanu:"
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+#, fuzzy
+msgid "Client Mods"
+msgstr "Izvēlieties pasauli:"
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr "Protokola versiju neatbilstība. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr "Serveris pieprasa protokola versiju $1. "
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr "Serveris atbalsta protokola versijas starp $1 un $2. "
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr "Mēs atbalstam tikai protokola versiju $1."
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr "Mēs atbalstam protokola versijas starp $1 un $2."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr "Atcelt"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr "Atkarības:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr "Atspējot visus"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr "Atspējot modu komplektu"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr "Iespējot visus"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr "Iespējot modu komplektu"
+
+#: 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 ""
+"Neizdevās iespējot modu \"$1\", jo tas satur neatļautus simbolus. Tikai "
+"sekojošie simboli ir atļauti: [a-z0-9_]."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr "Mods:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr "Nav (neobligāto) atkarību"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr "Nav atrasts spēles apraksts."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr "Nav obligāto atkarību"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr "Nav atrasts modu komplekta apraksts."
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr "Nav neobligāto atkarību"
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr "Neobligātās atkarības:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr "Saglabāt"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr "Pasaule:"
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr "iespējots"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "$1 downloading..."
+msgstr "Ielāde..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr "Visi papildinājumi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Already installed"
+msgstr "Šis taustiņš jau tiek izmantots"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr "Atpakaļ uz Galveno Izvēlni"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Base Game:"
+msgstr "Spēlēt (kā serveris)"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Downloading..."
+msgstr "Ielāde..."
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr "Neizdevās lejuplādēt $1"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr "Spēles"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr "Instalēt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install $1"
+msgstr "Instalēt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install missing dependencies"
+msgstr "Neobligātās atkarības:"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Install: Unsupported file type or broken archive"
+msgstr "Instalācija: Neatbalstīts faila tips “$1” vai arī sabojāts arhīvs"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr "Modi"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr "Nevarēja iegūt papildinājumus"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr "Nav rezultātu"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "No updates"
+msgstr "Atjaunot"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr "Tekstūru komplekti"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr "Atinstalēt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+#, fuzzy
+msgid "Update"
+msgstr "Atjaunināt"
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr "Pasaule ar nosaukumu “$1” jau pastāv"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Caves"
+msgstr "Oktāvas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr "Izveidot"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr "Dekorācijas"
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Development Test is meant for developers."
+msgstr ""
+"Uzmanību: “Minimal development test” ir domāts priekš spēles izstrādātājiem."
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#, fuzzy
+msgid "Install a game"
+msgstr "Instalēt"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr "Kartes ģenerators"
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr "Nav izvēlētas spēles"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr "Sēkla"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr "Pasaules nosaukums"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr "Jums nav instalēta neviena spēle."
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr "Vai Jūs esat pārliecināts, ka vēlaties izdzēst “$1”?"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr "Izdzēst"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr "pkgmgr: neizdevās izdzēst “$1”"
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr "pkgmgr: nepieejama atrašanās vieta “$1”"
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr "Vai izdzēst pasauli “$1”?"
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr "Apstiprināt paroli"
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr "Vārds"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr "Parole"
+
+#: builtin/mainmenu/dlg_register.lua
+#, fuzzy
+msgid "Passwords do not match"
+msgstr "Paroles nesakrīt!"
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Register"
+msgstr "Reģistrēties un pievienoties"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr "Piekrist"
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+msgstr "Pārsaukt modu komplektu:"
+
+#: 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 ""
+"Šim modu komplektam ir noteikts nosaukums, kas uzdots failā modpack.conf, un "
+"tas anulēs jebkādu pārsaukšanu šeit."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr "(Nav iestatījuma apraksta)"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr "2D Troksnis"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr "< Atpakaļ uz Iestatījumu lapu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr "Pārlūkot"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Games"
+msgstr "Saturs"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Content: Mods"
+msgstr "Saturs"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr "Atspējots"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr "Izmainīt"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr "Iespējots"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr "Oktāvas"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr "Nobīde"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+#, fuzzy
+msgid "Persistence"
+msgstr "Noturība"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr "Lūdzu ievadiet derīgu veselu skaitli."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr "Lūdzu ievadiet derīgu skaitli."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr "Atiestatīt uz noklusējumu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr "Mērogs"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr "Meklēšana"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr "Izvēlēties mapi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr "Izvēlēties failu"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr "Rādīt tehniskos nosaukumus"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr "Vērtībai jābūt vismaz $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr "Vērtībai jābūt ne lielākai par $1."
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr "X"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr "Izkaisījums pa X asi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr "Y"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr "Izkaisījums pa Y asi"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr "Z"
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr "Izkaisījums pa Z asi"
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr "absolūtā vērtība"
+
+#. ~ "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 "noklusējuma"
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr "atvieglots"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr "$1 (Iespējots)"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr "$1 modi"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr "Neizdevās instalēt $1 uz $2"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr "Moda instalācija: Neizdevās atrast īsto moda nosaukumu priekš “$1”"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+"Moda instalācija: Neizdevās atrast derīgu mapes nosaukumu priekš modu "
+"komplekta “$1”"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr "Neizdevās atrast derīgu modu vai modu komplektu"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr "Neizdevās ieinstalēt $1 kā tekstūru paku"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr "Neizdevās instalēt spēli kā $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr "Neizdevās instalēt modu kā $1"
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr "Neizdevās instalēt modu komplektu kā $1"
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 "
+"interneta savienojumu."
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr "Aktīvie dalībnieki"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr "Pamata izstrādātāji"
+
+#: builtin/mainmenu/tab_about.lua
+#, fuzzy
+msgid "Open User Data Directory"
+msgstr "Izvēlēties mapi"
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr "Bijušie dalībnieki"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr "Bijušie pamata izstrādātāji"
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr "Pārlūkot tiešsaistes saturu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr "Saturs"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr "Atspējot tekstūru komplektu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr "Informācija:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr "Instalētie papildinājumi:"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr "Nav atkarību."
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr "Nav atrasts papildinājuma apraksts"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr "Pārsaukt"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr "Atinstalēt papildinājumu"
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr "Iespējot tekstūru komplektu"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr "Paziņot par serveri"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr "Piesaistes adrese"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr "Radošais režīms"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr "Iespējot bojājumus"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr "Spēlēt (kā serveris)"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr "Palaist serveri"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr "Jauns"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr "Pasaule nav ne izveidota, ne izvēlēta!"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr "Spēlēt"
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr "Ports"
+
+#: builtin/mainmenu/tab_local.lua
+#, fuzzy
+msgid "Select Mods"
+msgstr "Izvēlieties pasauli:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr "Izvēlieties pasauli:"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr "Servera ports"
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr "Sākt spēli"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Address"
+msgstr "- Adrese: "
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr "Notīrīt"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr "Radošais režīms"
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Damage / PvP"
+msgstr "- Bojājumi: "
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Favorites"
+msgstr "Pievienot izlasei"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr "Pievienoties spēlei"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr "Pings"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Public Servers"
+msgstr "Paziņot par serveri"
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Remove favorite"
+msgstr "Izdzēst no izlases"
+
+#: builtin/mainmenu/tab_online.lua
+#, fuzzy
+msgid "Server Description"
+msgstr "Servera ports"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr "2x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr "3D mākoņi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr "4x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr "8x"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr "Visi iestatījumi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr "Gludināšana:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr "Atcerēties ekrāna izmēru"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr "Bilineārais filtrs"
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr "Nomainīt kontroles"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr "Savienots stikls"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr "Skaistas lapas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr "“Mipmap”"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr "“Mipmap” + anizotr. filtrs"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr "Bez filtra"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr "Bez “mipmap”"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr "Bloku izcelšana"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr "Bloku konturēšana"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr "Nekas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr "Necaurredzamas lapas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr "Necaurredzams ūdens"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr "Daļiņas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr "Ekrāns:"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr "Uzstādījumi"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr "Šeideri"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Shaders (experimental)"
+msgstr "Šeideri (nepieejami)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr "Šeideri (nepieejami)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr "Vienkāršas lapas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr "Gluds apgaismojums"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr "Teksturēšana:"
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr "Toņu atbilstība"
+
+#: builtin/mainmenu/tab_settings.lua
+#, fuzzy
+msgid "Touch threshold (px):"
+msgstr "Pieskārienslieksnis: (px)"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr "Trilineārais filtrs"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr "Viļņojošas lapas"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr "Viļņojoši šķidrumi"
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr "Viļņojoši augi"
+
+#: src/client/client.cpp
+#, fuzzy
+msgid "Connection aborted (protocol error?)."
+msgstr "Savienojuma kļūme (noildze?)"
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr "Savienojuma noildze."
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr "Gatavs!"
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr "Inicializē blokus"
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr "Inicializē blokus..."
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr "Ielādē tekstūras..."
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr "Pārbūvē šeiderus..."
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr "Savienojuma kļūme (noildze?)"
+
+#: src/client/clientlauncher.cpp
+#, fuzzy
+msgid "Could not find or load game: "
+msgstr "Nevarēja atrast vai ielādēt spēli \""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr "Nederīga spēles specifikācija."
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr "Galvenā izvēlne"
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr "Nav izvēlēta ne pasaule, ne adrese. Nav, ko darīt."
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr "Spēlētāja vārds ir pārāk garš."
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr "Lūdzu, izvēlieties vārdu!"
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr "Neizdevās atvērt iestatīto paroļu failu: "
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr "Sniegtā pasaules atrašanās vieta neeksistē: "
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+"\n"
+"Vairāk informācijas failā debug.txt."
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr "- Adrese: "
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr "- Režīms: "
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr "- Ports: "
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr "- Publisks: "
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr "- PvP: "
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr "- Severa nosaukums: "
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "A serialization error occurred:"
+msgstr "Radās kļūme:"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr "Automātiskā pārvietošanās izslēgta"
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr "Automātiskā pārvietošanās ieslēgta"
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr "Kameras atjaunošana atspējota"
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr "Kameras atjaunošana iespējota"
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr "Nomainīt paroli"
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr "Kino režīms izslēgts"
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr "Kino režīms ieslēgts"
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr "Klienta puses skriptēšana ir atspējota"
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr "Savienojas ar serveri..."
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr "Turpināt"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+"Kontroles:\n"
+"- %s: uz priekšu\n"
+"- %s: uz atpakaļu\n"
+"- %s: pa kreisi\n"
+"- %s: pa labi\n"
+"- %s: lekt/kāpt\n"
+"- %s: lavīties/nolaisties\n"
+"- %s: nomest priekšmetu\n"
+"- %s: inventārs\n"
+"- Pele: griezties/skatīties\n"
+"- Peles kreisā poga: rakt/sist\n"
+"- Peles labā poga: likt/izmantot\n"
+"- Peles rullītis: izvēlēties priekšmetu\n"
+"- %s: čats\n"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr "Izveido klientu..."
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr "Izveido serveri..."
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr "Atkļūdošanas informācija un profilēšanas grafiks paslēpti"
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr "Atkļūdošanas informācija parādīta"
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+"Atkļūdošanas informācija, profilēšanas grafiks un karkasattēlojums atspējoti"
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+"Noklusējuma kontroles:\n"
+"Ne izvēlnē:\n"
+"- pieskāriens: aktivizē pogu\n"
+"- dubultpieskāriens: nolikt/izmantot\n"
+"- vilkt ar pirksto: skatīties apkārt\n"
+"Izvēlnē/inventārā:\n"
+"- dubultpieskāriens (ārpus izvēlnes)\n"
+" --> aizvērt izvēlni\n"
+"- pieskāriens priekšmetiem, pieskāriens kastītei:\n"
+" --> pārvietot priekšmetus\n"
+"- pieskāriens&vilkšana, ar otru pirkstu pieskāriens:\n"
+" --> novietot vienu priekšmetu kastītē\n"
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr "Atspējots neierobežots redzamības diapazons"
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr "Iespējots neierobežots redzamības diapazons"
+
+#: src/client/game.cpp
+#, fuzzy, c-format
+msgid "Error creating client: %s"
+msgstr "Izveido klientu..."
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr "Iziet uz izvēlni"
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr "Iziet uz OS"
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr "Ātrais režīms izslēgts"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr "Ātrais režīms ieslēgts"
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr "Ātrais režīms ieslēgts (bet: nav “fast” privilēģijas)"
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr "Lidošanas režīms izslēgts"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr "Lidošanas režīms ieslēgts"
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr "Lidošanas režīms ieslēgts (bet: nav “fly” privilēģijas)"
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr "Migla atspējota"
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr "Migla iespējota"
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr "Spēles informācija:"
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr "Spēle nopauzēta"
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr "Lokāls serveris"
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr "Priekšmetu apraksti..."
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr "Mēdiji..."
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr "Minikarte šobrīd atspējota vai nu spēlei, vai modam"
+
+#: src/client/game.cpp
+#, fuzzy
+msgid "Multiplayer"
+msgstr "Viena spēlētāja režīms"
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr "“Noclip” režīms izslēgts"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr "“Noclip” režīms ieslēgts"
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr "“Noclip” režīms ieslēgts (bet: nav “noclip” privilēģijas)"
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr "Bloku apraksti..."
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr "Izslēgts"
+
+#: src/client/game.cpp
+msgid "On"
+msgstr "Ieslēgts"
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr "Kustība uz augšu/leju pēc skatīšanās virziena izslēgta"
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr "Kustība uz augšu/leju pēc skatīšanās virziena ieslēgta"
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr "Profilēšanas grafiks parādīts"
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr "Attālināts serveris"
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr "Atrisina adresi..."
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr "Beidz darbu..."
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr "Viena spēlētāja režīms"
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr "Skaņas skaļums"
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "Skaņa izslēgta"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr "Skaņa ieslēgta"
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr "Redzamības diapazons nomainīts uz %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr "Redzamības diapazons ir maksimāls: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr "Redzamības diapazons ir minimāls: %d"
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr "Skaļums nomainīts uz %d%%"
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr "Karkasattēlojums iespējots"
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr "Tuvināšana šobrīd atspējota vai nu spēlei, vai modam"
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr "ok"
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr "Čats paslēpts"
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr "Čats parādīts"
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr "Spēles saskarne paslēpta"
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr "Spēles saskarne parādīta"
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr "Profilētājs paslēpts"
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr "Profilētājs parādīts (lapa %d no %d)"
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr "Menu"
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr "Ctrl"
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr "Uz leju"
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr "End"
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr "Erase EOF"
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr "Execute"
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr "Palīdzība"
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr "Home"
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr "IME Accept"
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr "IME Convert"
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr "IME Escape"
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr "IME Mode Change"
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr "IME Nonconvert"
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr "Insert"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr "Pa kreisi"
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr "Kreisā poga"
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr "Kreisais Ctrl"
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr "Kreisais Alt"
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr "Kreisais Shift"
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr "Kreisā Windows poga"
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr "Alt"
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr "Vidējā poga"
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr "Ciparbloka *"
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr "Ciparbloka +"
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr "Ciparbloka -"
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr "Ciparbloka ."
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr "Ciparbloka /"
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr "Ciparbloka 0"
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr "Ciparbloka 1"
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr "Ciparbloka 2"
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr "Ciparbloka 3"
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr "Ciparbloka 4"
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr "Ciparbloka 5"
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr "Ciparbloka 6"
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr "Ciparbloka 7"
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr "Ciparbloka 8"
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr "Ciparbloka 9"
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr "OEM Clear"
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr "Page down"
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr "Page up"
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr "Pause"
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr "Play"
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr "Print Screen"
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr "Return"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr "Pa labi"
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr "Labā poga"
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr "Labais Ctrl"
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr "Labais Alt"
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr "Labais Shift"
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr "Labā Windows poga"
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr "Select"
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr "Shift"
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr "Sleep"
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr "Snapshot"
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr "Atstarpe"
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr "Tab"
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr "Uz augšu"
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr "X Poga 1"
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr "X Poga 2"
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr "Zoom"
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr "Minikarte paslēpta"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr "Minikarte radara režīmā, palielinājums x1"
+
+#: src/client/minimap.cpp
+#, fuzzy, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr "Minikarte virsmas režīmā, palielinājums x1"
+
+#: src/client/minimap.cpp
+#, fuzzy
+msgid "Minimap in texture mode"
+msgstr "Minikarte virsmas režīmā, palielinājums x1"
+
+#: src/gui/guiChatConsole.cpp
+#, fuzzy
+msgid "Failed to open webpage"
+msgstr "Neizdevās lejuplādēt $1"
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr "Turpināt"
+
+#: src/gui/guiKeyChangeMenu.cpp
+#, fuzzy
+msgid "\"Aux1\" = climb down"
+msgstr "“Speciālais” = kāpt lejā"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr "Auto-iešana"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr "Automātiskā lekšana"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr "Atmuguriski"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr "Mainīt kameru"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr "Čats"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr "Komanda"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr "Konsole"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr "Sam. diapazonu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr "Sam. skaļumu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr "Nospied “lekt” divreiz, lai lidotu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr "Mest"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr "Uz priekšu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr "Pal. diapazonu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr "Pal. skaļumu"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr "Inventārs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr "Lekt"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr "Šis taustiņš jau tiek izmantots"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr "Lokālā komanda"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr "Skaņa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr "Nāk. priekšmets"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr "Iepr. priekšmets"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr "Redzamības diapazons"
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr "Ekrānšāviņš"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr "Lavīties"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr "Spēles saskarne"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr "Čata logs"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr "Ātrā pārvietošanās"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr "Lidot"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr "Migla"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr "Minikarte"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr "“Noclip”"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr "Pārvietoties pēc skatīšanās leņķa"
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr "nospiediet pogu"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr "Nomainīt"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr "Jaunā parole"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr "Vecā parole"
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr "Paroles nesakrīt!"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr "Iziet"
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr "Apklusināts"
+
+#: src/gui/guiVolumeChange.cpp
+#, fuzzy, c-format
+msgid "Sound Volume: %d%%"
+msgstr "Skaņas skaļums: "
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr "lv"
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+#, fuzzy
+msgid "Name is taken. Please choose another name"
+msgstr "Lūdzu, izvēlieties vārdu!"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Admin name"
+msgstr "Pasaules nosaukums"
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr "Būvēt iekšā spēlētājā"
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Camera"
+msgstr "Mainīt kameru"
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat commands"
+msgstr "Komanda"
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Chat weblinks"
+msgstr "Čats parādīts"
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr "Vadība"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Developer Options"
+msgstr "Dekorācijas"
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr "Ātrā pārvietošanās"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+"Spēlētājs var lidot ignorējot gravitāciju.\n"
+"Šim ir vajadzīga “fly” privilēģija servera pusē."
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Filtering and Antialiasing"
+msgstr "Gludināšana:"
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr "Lidošana"
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Gamepads"
+msgstr "Spēles"
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "HUD scaling"
+msgstr "Spēles saskarne parādīta"
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+"Ja iespējota, liek visām kustībām peldot un lidojot būt relatīvām pret "
+"spēlētāja skatīšanās virziena."
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+"Ja iespējots, varat novietot blokus, kur Jūs stāvat.\n"
+"Šis ir noderīgi, kad jābūvē šaurās vietās."
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Lighting"
+msgstr "Gluds apgaismojums"
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Node and Entity Highlighting"
+msgstr "Bloku izcelšana"
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr "Kustība uz augšu/leju pēc skatīšanās virziena"
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+"Spēlētājs var lidot ignorējot gravitāciju.\n"
+"Šim ir vajadzīga “fly” privilēģija servera pusē."
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screen"
+msgstr "Ekrāns:"
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Screenshots"
+msgstr "Ekrānšāviņš"
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server"
+msgstr "Palaist serveri"
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Gameplay"
+msgstr "- Severa nosaukums: "
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server Security"
+msgstr "Servera ports"
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Server/Env Performance"
+msgstr "Servera ports"
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, fuzzy
+msgid "Temporary Settings"
+msgstr "Uzstādījumi"
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
+
+#~ msgid "- Creative Mode: "
+#~ msgstr "- Radošais režīms: "
+
+#~ msgid "- Damage: "
+#~ msgstr "- Bojājumi: "
+
+#~ msgid "Address / Port"
+#~ msgstr "Adrese / Ports"
+
+#~ msgid "Are you sure to reset your singleplayer world?"
+#~ msgstr ""
+#~ "Vai esat pārliecināts, ka vēlaties atiestatīt savu viena spēlētāja "
+#~ "pasauli?"
+
+#~ msgid "Back"
+#~ msgstr "Atpakaļ"
+
+#~ msgid "Bump Mapping"
+#~ msgstr "“Bump Mapping”"
+
+#~ msgid "Config mods"
+#~ msgstr "Iestatīt modus"
+
+#~ msgid "Configure"
+#~ msgstr "Iestatīt"
+
+#~ msgid "Connect"
+#~ msgstr "Pieslēgties"
+
+#~ msgid "Credits"
+#~ msgstr "Pateicības"
+
+#~ msgid "Damage enabled"
+#~ msgstr "Bojājumi iespējoti"
+
+#~ msgid "Download a game, such as Minetest Game, from minetest.net"
+#~ msgstr "Lejuplādējiet spēles, kā piemēram, “Minetest Game”, no minetest.net"
+
+#~ msgid "Download one from minetest.net"
+#~ msgstr "Varat tās lejuplādēt no minetest.net"
+
+#~ msgid "Downloading and installing $1, please wait..."
+#~ msgstr "Lejuplādējas un instalējas $1, lūdzu uzgaidiet..."
+
+#~ msgid "Enter "
+#~ msgstr "Ievadiet "
+
+#~ msgid "Game"
+#~ msgstr "Spēle"
+
+#~ msgid "Generate Normal Maps"
+#~ msgstr "Izveidot normāl-kartes"
+
+#~ msgid "Install: file: \"$1\""
+#~ msgstr "Instalācija: fails: “$1”"
+
+#~ msgid ""
+#~ "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#~ msgstr ""
+#~ "Taustiņu iestatījumi. (Ja šī izvēlne salūzt, izdzēsiet iestatījumus no "
+#~ "minetest.conf)"
+
+#~ msgid "Main"
+#~ msgstr "Galvenā izvēlne"
+
+#~ msgid "Minimap in radar mode, Zoom x2"
+#~ msgstr "Minikarte radara režīmā, palielinājums x2"
+
+#~ msgid "Minimap in radar mode, Zoom x4"
+#~ msgstr "Minikarte radara režīmā, palielinājums x4"
+
+#~ msgid "Minimap in surface mode, Zoom x2"
+#~ msgstr "Minikarte virsmas režīmā, palielinājums x2"
+
+#~ msgid "Minimap in surface mode, Zoom x4"
+#~ msgstr "Minikarte virsmas režīmā, palielinājums x4"
+
+#~ msgid "Name / Password"
+#~ msgstr "Vārds / Parole"
+
+#~ msgid "Name/Password"
+#~ msgstr "Vārds/Parole"
+
+#~ msgid "No"
+#~ msgstr "Nē"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
+
+#~ msgid "Parallax Occlusion"
+#~ msgstr "Tekstūru dziļums"
+
+#~ msgid "PvP enabled"
+#~ msgstr "PvP iespējots"
+
+#~ msgid "Reset singleplayer world"
+#~ msgstr "Atiestatīt viena spēlētāja pasauli"
+
+#~ msgid "Special"
+#~ msgstr "Speciālais"
+
+#~ msgid "Start Singleplayer"
+#~ msgstr "Sākt viena spēlētāja spēli"
+
+#~ msgid "To enable shaders the OpenGL driver needs to be used."
+#~ msgstr "Lai iespējotu šeiderus, jāizmanto OpenGL draiveris."
+
+#~ msgid "Yes"
+#~ msgstr "Jā"
+
+#, c-format
+#~ msgid ""
+#~ "You are about to join this server with the name \"%s\" for the first "
+#~ "time.\n"
+#~ "If you proceed, a new account using your credentials will be created on "
+#~ "this server.\n"
+#~ "Please retype your password and click 'Register and Join' to confirm "
+#~ "account creation, or click 'Cancel' to abort."
+#~ msgstr ""
+#~ "Jūs tūlīt pievienosieties šim serverim ar vārdu \"%s\" pirmo reizi.\n"
+#~ "Ja Jūs turpināsiet, šajā serverī tiks izveidots jauns lietotājs ar jūsu "
+#~ "pierakstīšanās informāciju.\n"
+#~ "Lūdzu ievadiet savu paroli vēlreiz un nospiediet “Reģistrēties un "
+#~ "pievienoties”, lai apstiprinātu lietotāja izveidi, vai arī nospiediet "
+#~ "“Atcelt”, lai pārtrauktu šo darbību."
+
+#, fuzzy
+#~ msgid "You died."
+#~ msgstr "Jūs nomirāt"
+
+#~ msgid "needs_fallback_font"
+#~ msgstr "no"
diff --git a/po/lzh/minetest.po b/po/lzh/minetest.po
new file mode 100644
index 000000000..eae0e2009
--- /dev/null
+++ b/po/lzh/minetest.po
@@ -0,0 +1,6842 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the minetest package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: minetest\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\n"
+"PO-Revision-Date: 2022-01-20 14:35+0000\n"
+"Last-Translator: Gao Tiesuan <yepifoas@666email.com>\n"
+"Language-Team: Chinese (Literary) <https://hosted.weblate.org/projects/"
+"minetest/minetest/lzh/>\n"
+"Language: lzh\n"
+"MIME-Version: 1.0\n"
+"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.11-dev\n"
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr "空令。"
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
+msgstr "令之传者: "
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr "复生"
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr "尔死矣"
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "<none available>"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "Main menu"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "Reconnect"
+msgstr ""
+
+#: builtin/fstk/ui.lua
+msgid "The server has requested a reconnect:"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Protocol version mismatch. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Server enforces protocol version $1. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Server supports protocol versions between $1 and $2. "
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We only support protocol version $1."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "We support protocol versions between version $1 and $2."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Enabled, has error)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
+#: builtin/mainmenu/dlg_rename_modpack.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
+msgid "Cancel"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Enable modpack"
+msgstr ""
+
+#: 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 ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Mod:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No modpack description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
+msgid "Save"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "World:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caverns"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Create"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Development Test is meant for developers."
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr "平地"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install another game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mapgen-specific flags"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr "泥流"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "No game selected"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr "川"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr "地表之蚀"
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "World name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "Are you sure you want to delete \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
+msgid "Delete"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_world.lua
+msgid "Delete World \"$1\"?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Rename Modpack:"
+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 ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "2D Noise"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "< Back to Settings page"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Edit"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Lacunarity"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Octaves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Persistence"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid integer."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Please enter a valid number."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Restore Default"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select directory"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Select file"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Show technical names"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must be at least $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "The value must not be larger than $1."
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y spread"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z spread"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+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 ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Failed to install $1 to $2"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
+msgstr ""
+
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
+msgstr ""
+
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+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 ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Contributors"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Previous Core Developers"
+msgstr ""
+
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
+msgstr ""
+
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Bind Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "No world created or selected!"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
+msgid "Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Server Port"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "(game support required)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "2x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "3D Clouds"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "4x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "8x"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "All Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Antialiasing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Autosave Screen Size"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Bilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Connected Glass"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Dynamic shadows:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Fancy Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Mipmap + Aniso. Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "No Mipmap"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Highlighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Node Outlining"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Opaque Water"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Particles"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Shaders"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Shaders (unavailable)"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Simple Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Smooth Lighting"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Texturing:"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Tone Mapping"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Touch threshold (px):"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Trilinear Filter"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very High"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Leaves"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Liquids"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Waving Plants"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
+msgstr ""
+
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Done!"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes"
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Initializing nodes..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Loading textures..."
+msgstr ""
+
+#: src/client/client.cpp
+msgid "Rebuilding shaders..."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Connection error (timed out?)"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Could not find or load game: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Invalid gamespec."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Main Menu"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "No world selected and no address provided. Nothing to do."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Provided world path doesn't exist: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"\n"
+"Check debug.txt for details."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Address: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Mode: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Port: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Public: "
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Change Password"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Continue"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
+"- Mouse: turn/look\n"
+"- Mouse wheel: select item\n"
+"- %s: chat\n"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid ""
+"Default Controls:\n"
+"No menu visible:\n"
+"- single tap: button activate\n"
+"- double tap: place/use\n"
+"- slide finger: look around\n"
+"Menu/Inventory visible:\n"
+"- double tap (outside):\n"
+" -->close\n"
+"- touch stack, touch slot:\n"
+" --> move stack\n"
+"- touch&drag, tap 2nd finger\n"
+" --> place single item to slot\n"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to Menu"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Exit to OS"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game info:"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Game paused"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Hosting server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Off"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "On"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Remote server"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Shutting down..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound Volume"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr "消音"
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Chat shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "HUD shown"
+msgstr ""
+
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
+msgstr ""
+
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Apps"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Erase EOF"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Execute"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Help"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Accept"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Convert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Escape"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Insert"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Left"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Left Windows"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Num Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad *"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad +"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad -"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad ."
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad /"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 0"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 3"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 4"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 5"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 6"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 7"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 8"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Numpad 9"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "OEM Clear"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Play"
+msgstr ""
+
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Right"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Control"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Right Windows"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
+msgstr ""
+
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Sleep"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Snapshot"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
+msgstr ""
+
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
+msgstr ""
+
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
+msgstr ""
+
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
+msgstr ""
+
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
+msgstr ""
+
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n"
+"Can be used to move a desired point to (0, 0) to create a\n"
+"suitable spawn point, or to allow 'zooming in' on a desired\n"
+"point by increasing 'scale'.\n"
+"The default is tuned for a suitable spawn point for Mandelbrot\n"
+"sets with default parameters, it may need altering in other\n"
+"situations.\n"
+"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"(X,Y,Z) scale of fractal in nodes.\n"
+"Actual fractal size will be 2 to 3 times larger.\n"
+"These numbers can be made very large, the fractal does\n"
+"not have to fit inside the world.\n"
+"Increase these to 'zoom' into the detail of the fractal.\n"
+"Default is for a vertically-squashed shape suitable for\n"
+"an island, set all 3 numbers equal for the raw shape."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of ridged mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the shape/size of step mountains."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of ridged mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of rolling hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that controls the size/occurrence of step mountain ranges."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "2D noise that locates the river valleys and channels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining mountain structure and height.\n"
+"Also defines structure of floatland mountain terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D noise defining structure of floatlands.\n"
+"If altered from the default, the noise 'scale' (0.7 by default) may need\n"
+"to be adjusted, as floatland tapering functions best when this noise has\n"
+"a value range of approximately -2.0 to 2.0."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining structure of river canyon walls."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server crashes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "A message to be displayed to all clients when the server shuts down."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ABM time budget"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Absolute limit of queued blocks to emerge"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration in air"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block management interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active block range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Active object send range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Address to connect to.\n"
+"Leave this blank to start a local server.\n"
+"Note that the address field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k "
+"screens."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adjust the detected display density, used for scaling UI elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+#, c-format
+msgid ""
+"Adjusts the density of the floatland layer.\n"
+"Increase value to increase density. Can be positive or negative.\n"
+"Value = 0.0: 50% of volume is floatland.\n"
+"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n"
+"to be sure) creates a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Admin name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Advanced"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ambient occlusion gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amplifies the valleys."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Apple trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ask to reconnect after crash"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"At this distance the server will aggressively optimize which blocks are sent "
+"to\n"
+"clients.\n"
+"Small values potentially improve performance a lot, at the expense of "
+"visible\n"
+"rendering glitches (some blocks will not be rendered under water and in "
+"caves,\n"
+"as well as sometimes on land).\n"
+"Setting this to a value greater than max_block_send_distance disables this\n"
+"optimization.\n"
+"Stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatic forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically jump up single-node obstacles."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autoscaling mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Backward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Base terrain height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Basic privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Beach noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bind address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Block send optimize distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold and italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bold monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Build inside player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Builtin"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera update toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #1"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave noise #2"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern upper limit"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat command time message threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat commands"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chunk size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cinematic mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side node lookup range restriction"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Climbing speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cloud radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of mods that are allowed to access HTTP APIs, which\n"
+"allow them to upload and download data to/from the internet."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Comma-separated list of trusted mods that are allowed to access insecure\n"
+"functions even when mod security is on (via request_insecure_environment())."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Command key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when saving mapblocks to disk.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Compression level to use when sending mapblocks to the client.\n"
+"-1 - use default compression level\n"
+"0 - least compression, fastest\n"
+"9 - best compression, slowest"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connect to external media server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Continuous forward"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Continuous forward movement, toggled by autoforward key.\n"
+"Press the autoforward key again or the backwards movement to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/depth of lake depressions."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Controls steepness/height of hills."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Crash message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Creative"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Damage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug info toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log file size threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debug log level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Debugging"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dec. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dedicated server step"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default game"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Default password"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default privileges"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default report format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas where trees have apples."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines areas with sandy beaches."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain and steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines distribution of higher terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines large-scale river channel structure."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines location and terrain of optional hills and lakes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the base ground level."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the depth of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river channel."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines the width of the river valley."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines tree areas and tree density."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Delay between mesh updates on the client in ms. Increasing this will slow\n"
+"down the rate of mesh updates, thus reducing jitter on slower clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay in sending blocks after building"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Deprecated Lua API handling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Depth below which you'll find large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desert noise threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Deserts occur when np_biome exceeds this value.\n"
+"When the 'snowbiomes' flag is enabled, this is ignored."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Desynchronize block animation"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Developer Options"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dig key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disable anticheat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Display Density Scaling Factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Distance in nodes at which transparency depth sorting is enabled\n"
+"Use this to limit the performance impact of transparency depth sorting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Drop item key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dump the mapgen debug information."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable IPv6 support (for both client and server).\n"
+"Required for IPv6 connections to work at all."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Lua modding support on client.\n"
+"This support is experimental and API can change."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable console window"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable creative mode for all players"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable joysticks. Requires a restart to take effect"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod channels support."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable mod security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable players getting damage and dying."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable random user input (only used for testing)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enable split login/register"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable usage of remote media server (if provided by server).\n"
+"Remote servers offer a significantly faster way to download media (e.g. "
+"textures)\n"
+"when connecting to the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable vertex buffer objects.\n"
+"This should greatly improve graphics performance."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables caching of facedir rotated meshes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables minimap."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables the sound system.\n"
+"If disabled, this completely disables all sounds everywhere and the in-game\n"
+"sound controls will be non-functional.\n"
+"Changing this setting requires a restart."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Engine profiling data print interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Entity methods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Exponent of the floatland tapering. Alters the tapering behaviour.\n"
+"Value = 1.0 creates a uniform, linear tapering.\n"
+"Values > 1.0 create a smooth tapering suitable for the default separated\n"
+"floatlands.\n"
+"Values < 1.0 (for example 0.25) create a more defined surface level with\n"
+"flatter lowlands, suitable for a solid floatland layer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "FSAA"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fall bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fallback font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode acceleration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast mode speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fast movement"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Fast movement (via the \"Aux1\" key).\n"
+"This requires the \"fast\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"File in client/serverlist/ that contains your favorite servers displayed in "
+"the\n"
+"Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland density"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland taper exponent"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland tapering distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Floatland water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fly key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Flying"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font bold by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font italic by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font shadow alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"For pixel-style fonts that do not scale well, this ensures that font sizes "
+"used\n"
+"with this font will always be divisible by this value, in pixels. For "
+"instance,\n"
+"a pixel font 16 pixels tall should have this set to 16, so it will only ever "
+"be\n"
+"sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Format of player chat messages. The following strings are valid "
+"placeholders:\n"
+"@name, @message, @timestamp (optional)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Default Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec default background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Forward key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fourth of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fractal type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far blocks are sent to clients, stated in mapblocks (16 nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"From how far clients know about objects, stated in mapblocks (16 nodes).\n"
+"\n"
+"Setting this larger than active_block_range will also cause the server\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gamepads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Global callbacks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at maximum light level.\n"
+"Controls the contrast of the highest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Gradient of light curve at minimum light level.\n"
+"Controls the contrast of the lowest light levels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HTTP mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Have the profiler instrument itself:\n"
+"* Instrument an empty function.\n"
+"This estimates the overhead, that instrumentation is adding (+1 function "
+"call).\n"
+"* Instrument the sampler being used to update the statistics."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height select noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hill threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness3 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hilliness4 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar next key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar previous key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 1 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 10 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 11 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 12 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 13 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 14 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 15 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 16 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 17 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 18 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 19 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 2 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 20 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 21 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 22 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 23 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 24 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 25 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 26 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 27 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 28 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 29 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 3 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 30 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 31 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 32 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 4 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 5 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 6 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 7 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 8 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Hotbar slot 9 key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How deep to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How long the server will wait before unloading unused mapblocks, stated in "
+"seconds.\n"
+"Higher value is smoother, but will use more RAM."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "How wide to make rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "IPv6 server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled the server will perform map block occlusion culling based on\n"
+"on the eye position of the player. This can reduce the number of blocks\n"
+"sent to the client 50-80%. The client will not longer receive most "
+"invisible\n"
+"so that the utility of noclip mode is reduced."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled together with fly mode, player is able to fly through solid "
+"nodes.\n"
+"This requires the \"noclip\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If enabled, disable cheat prevention in multiplayer."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, invalid world data won't cause the server to shut down.\n"
+"Only enable this if you know what you are doing."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, makes move directions relative to the player's pitch when flying "
+"or swimming."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If the execution of a chat command takes longer than this specified time in\n"
+"seconds, add the time information to the chat command message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ignore world errors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inc. volume key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument builtin.\n"
+"This is usually only needed by core/builtin contributors"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument chat commands on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument global callback functions on registration.\n"
+"(anything you pass to a minetest.register_*() function)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Active Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Instrument the action function of Loading Block Modifiers on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Instrument the methods of entities on registration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of saving important changes in the world, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Interval of sending time of day to clients, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Invert vertical mouse movement."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Italic monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Item entity TTL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Iterations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick ID"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick button repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick dead zone"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick frustum sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Joystick type"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"W component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"X component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Y component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Julia set only.\n"
+"Z component of hypercomplex constant.\n"
+"Alters the shape of the fractal.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia x"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Julia z"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jump key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for decreasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for digging.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for dropping the currently selected item.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the viewing range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for increasing the volume.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for jumping.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving fast in fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player backward.\n"
+"Will also disable autoforward, when active.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player forward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player left.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for moving the player right.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for muting the game.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window to type local commands.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the chat window.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for opening the inventory.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for placing.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 11th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 12th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 13th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 14th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 15th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 16th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 17th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 18th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 19th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 20th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 21st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 22nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 23rd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 24th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 25th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 26th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 27th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 28th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 29th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 30th hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 31st hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the 32nd hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the eighth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fifth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the first hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the fourth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the next item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the ninth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the previous item in the hotbar.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the second hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the seventh hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the sixth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the tenth hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for selecting the third hotbar slot.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for sneaking.\n"
+"Also used for climbing down and descending in water if aux1_descends is "
+"disabled.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for switching between first- and third-person camera.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for taking screenshots.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling autoforward.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling cinematic mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling display of minimap.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling fast mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling flying.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling noclip mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling pitch move mode.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the camera update. Only used for development\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of chat.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of debug info.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of fog.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the HUD.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the large chat console.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling the display of the profiler. Used for development.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key for toggling unlimited view range.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Key to use view zoom when possible.\n"
+"See http://irrlicht.sourceforge.net/docu/namespaceirr."
+"html#a54da2a0e231901735e3da1b0edf72eb3"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Keyboard and Mouse"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake steepness"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lake threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large cave proportion flooded"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Large chat console key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Left key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of a server tick and the interval at which objects are generally "
+"updated over\n"
+"network, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between Active Block Modifier (ABM) execution cycles, stated "
+"in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Length of time between NodeTimer execution cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Length of time between active block management cycles, stated in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Level of logging to be written to debug.txt:\n"
+"- <nothing> (no logging)\n"
+"- none (messages with no level)\n"
+"- error\n"
+"- warning\n"
+"- action\n"
+"- info\n"
+"- verbose\n"
+"- trace"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost center"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve boost spread"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve high gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve low gradient"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Limits number of parallel HTTP requests. Affects:\n"
+"- Media fetch if server uses remote_media setting.\n"
+"- Serverlist download and server announcement.\n"
+"- Downloads performed by main menu (e.g. mod manager).\n"
+"Only has an effect if compiled with cURL."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid fluidity smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid loop max"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid queue purge time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid sinking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update interval in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Liquid update tick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Load the game profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Load the game profiler to collect game profiling data.\n"
+"Provides a /profiler command to access the compiled profile.\n"
+"Useful for mod developers and server operators."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Loading Block Modifiers"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Main menu script"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Disk Storage"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map Compression Level for Network Transfer"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map directory"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen Carpathian."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Flat.\n"
+"Occasional lakes and hills can be added to the flat world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Fractal.\n"
+"'terrain' enables the generation of non-fractal terrain:\n"
+"ocean, islands and underground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Map generation attributes specific to Mapgen Valleys.\n"
+"'altitude_chill': Reduces heat with altitude.\n"
+"'humid_rivers': Increases humidity around rivers.\n"
+"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n"
+"to become shallower and occasionally dry.\n"
+"'altitude_dry': Reduces humidity with altitude."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map save interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map shadows update frames"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generation delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock mesh generator's MapBlock cache size in MB"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapblock unload timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Carpathian specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Flat specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Fractal specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V7 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen Valleys specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen debug"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block send distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max liquids processed per step."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. clearobjects extra blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max. packets per iteration"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum forceloaded blocks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of blocks that can be queued for loading."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of blocks to be queued that are to be loaded from file.\n"
+"This limit is enforced per player."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of forceloaded mapblocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of mapblocks for client to be kept in memory.\n"
+"Set to -1 for unlimited amount."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of packets sent per send step, if you have a slow connection\n"
+"try reducing it, but don't reduce it to a number below double of targeted\n"
+"client number."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of statically stored objects in a block."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum objects per block"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum simultaneous block sends per client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum size of the out chat queue"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum size of the out chat queue.\n"
+"0 to disable queueing and -1 to make the queue size unlimited."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time a file download (e.g. a mod download) may take, stated in "
+"milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum time an interactive request (e.g. server list fetch) may take, "
+"stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mesh cache"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimal level of logging to be written to chat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimap scan height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of large caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum limit of random number of small caves per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Minimum texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Misc"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mod channels"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Monospace font size divisible by"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain variation noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mountain zero level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mouse sensitivity multiplier."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mud noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "New users need to input this password."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noclip key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "NodeTimer interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Number of emerge threads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of emerge threads to use.\n"
+"Value 0:\n"
+"- Automatic selection. The number of emerge threads will be\n"
+"- 'number of processors - 2', with a lower limit of 1.\n"
+"Any other value:\n"
+"- Specifies the number of emerge threads, with a lower limit of 1.\n"
+"WARNING: Increasing the number of emerge threads increases engine mapgen\n"
+"speed, but this may harm game performance by interfering with other\n"
+"processes, especially in singleplayer and/or when running Lua code in\n"
+"'on_generated'. For many users the optimum setting may be '1'."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Number of extra blocks that can be loaded by /clearobjects at once.\n"
+"This is a trade-off between SQLite transaction overhead and\n"
+"memory consumption (4096=100MB, as a rule of thumb)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path of the fallback font. Must be a TrueType font.\n"
+"This font will be used for certain languages or if the default font is "
+"unavailable."
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to shader directory. If no path is defined, default location will be "
+"used."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Path to texture directory. All textures are first searched from here."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the default font. Must be a TrueType font.\n"
+"The fallback font will be used if the font cannot be loaded."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Path to the monospace font. Must be a TrueType font.\n"
+"This font is used for e.g. the console and profiler screen."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pause on lost window focus"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks load from disk"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Per-player limit of queued blocks to generate"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Physics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Pitch move mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Place repetition interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Player is able to fly without being affected by gravity.\n"
+"This requires the \"fly\" privilege on the server."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Player versus player"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Port to connect to (UDP).\n"
+"Note that the port field in the main menu overrides this setting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Prevent mods from doing insecure things like running shell commands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Print the engine's profiling data in regular intervals (in seconds).\n"
+"0 = disable. Useful for developers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Privileges that players with basic_privs can grant"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Profiler toggle key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Prometheus listener address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Prometheus listener address.\n"
+"If Minetest is compiled with ENABLE_PROMETHEUS option enabled,\n"
+"enable metrics listener for Prometheus on that address.\n"
+"Metrics can be fetched on http://127.0.0.1:30000/metrics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Radius of cloud area stated in number of 64 node cloud squares.\n"
+"Values larger than 26 will start to produce sharp cutoffs at cloud area "
+"corners."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Raises terrain to make valleys around the rivers."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Random input"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Range select key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Regular font path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote media"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Remote port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Replaces the default main menu with a custom one."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Report path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridge underwater noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ridged mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Right key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River channel width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "River valley width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rollback recording"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hill size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Rolling hills spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Round minimap"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Safe digging and placing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sandy beaches occur when np_beach exceeds this value."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshots"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Seabed noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Selects one of 18 fractal types.\n"
+"1 = 4D \"Roundy\" Mandelbrot set.\n"
+"2 = 4D \"Roundy\" Julia set.\n"
+"3 = 4D \"Squarry\" Mandelbrot set.\n"
+"4 = 4D \"Squarry\" Julia set.\n"
+"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n"
+"6 = 4D \"Mandy Cousin\" Julia set.\n"
+"7 = 4D \"Variation\" Mandelbrot set.\n"
+"8 = 4D \"Variation\" Julia set.\n"
+"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n"
+"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n"
+"11 = 3D \"Christmas Tree\" Mandelbrot set.\n"
+"12 = 3D \"Christmas Tree\" Julia set.\n"
+"13 = 3D \"Mandelbulb\" Mandelbrot set.\n"
+"14 = 3D \"Mandelbulb\" Julia set.\n"
+"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n"
+"16 = 3D \"Cosine Mandelbulb\" Julia set.\n"
+"17 = 4D \"Mandelbulb\" Mandelbrot set.\n"
+"18 = 4D \"Mandelbulb\" Julia set."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server Gameplay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server Security"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server description"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server side occlusion culling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server/Env Performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist and MOTD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Serverlist file"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the maximum length of a chat message (in characters) sent by clients."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shader path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow filter quality"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture in 32 bits"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Shadow offset (in pixels) of the default font. If 0, then shadow will not be "
+"drawn."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shape of the minimap. Enabled = round, disabled = square."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show debug info"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Show entity selection boxes\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shutdown message"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n"
+"WARNING!: There is no benefit, and there are several dangers, in\n"
+"increasing this value above 5.\n"
+"Reducing this value increases cave and dungeon density.\n"
+"Altering this value is for special usage, leaving it unchanged is\n"
+"recommended."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Size of the MapBlock cache of the mesh generator. Increasing this will\n"
+"increase the cache hit %, reducing the data being copied from the main\n"
+"thread, thus reducing jitter."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sky Body Orbit Tilt"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slice w"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Slope and fill work together to modify the heights."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave maximum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small cave minimum number"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneak key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sneaking speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Soft shadow radius"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Steepness noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain size noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Step mountain spread noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Strict protocol checking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strip color codes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Surface level of optional water placed on a solid floatland layer.\n"
+"Water is disabled by default and will only be placed if this value is set\n"
+"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n"
+"upper tapering).\n"
+"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n"
+"When enabling water placement the floatlands must be configured and tested\n"
+"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n"
+"required value depending on 'mgv7_np_floatland'), to avoid\n"
+"server-intensive extreme water flow and to avoid vast flooding of the\n"
+"world surface below."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Synchronous SQLite"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temporary Settings"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain alternative noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain base noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain higher noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for hills.\n"
+"Controls proportion of world area covered by hills.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Terrain noise threshold for lakes.\n"
+"Controls proportion of world area covered by lakes.\n"
+"Adjust towards 0.0 for a larger proportion."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Terrain persistence noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Texture path"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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"
+"the latter makes stairs and microblocks fit surroundings better.\n"
+"However, as this possibility is new, thus may not be used by older servers,\n"
+"this option allows enforcing it for certain node types. Note though that\n"
+"that is considered EXPERIMENTAL and may not work properly."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The dead zone of the joystick"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "The depth of dirt or other biome filler node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The file path relative to your worldpath in which profiles will be saved to."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The identifier of the joystick to use"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The network interface that the server listens on."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The radius of the volume of blocks around every player that is subject to "
+"the\n"
+"active block stuff, stated in mapblocks (16 nodes).\n"
+"In active blocks objects are loaded and ABMs run.\n"
+"This is also the minimum range in which active objects (mobs) are "
+"maintained.\n"
+"This should be configured together with active_object_send_range_blocks."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The rendering back-end.\n"
+"A restart is required after changing this.\n"
+"Note: On Android, stick with OGLES1 if unsure! App may fail to start "
+"otherwise.\n"
+"On other platforms, OpenGL is recommended.\n"
+"Shaders are supported by OpenGL (desktop only) and OGLES2 (experimental)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The sensitivity of the joystick axes for moving the\n"
+"in-game view frustum around."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time (in seconds) that the liquids queue may grow beyond processing\n"
+"capacity until an attempt is made to decrease its size by dumping old queue\n"
+"items. A value of 0 disables the functionality."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time budget allowed for ABMs to execute on each step\n"
+"(as a fraction of the ABM Interval)"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated events\n"
+"when holding down a joystick button combination."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The type of joystick"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n"
+"enabled. Also the vertical distance over which humidity drops by 10 if\n"
+"'altitude_dry' is enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Third of 4 2D noises that together define hill/mountain range height."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time send interval"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Timeout for client to remove unused map data from memory, in seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"To reduce lag, block transfers are slowed down when a player is building "
+"something.\n"
+"This determines how long they are slowed down after placing or removing a "
+"node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Toggle camera mode key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tradeoffs for performance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Transparency Sorting Distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trees noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"True = 256\n"
+"False = 128\n"
+"Usable to make minimap smoother on slower machines."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trusted mods"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "URL to the server list displayed in the Multiplayer Tab."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unlimited player transfer distance"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Unload unused server data"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of floatlands."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VBO"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "VSync"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley depth"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley fill"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley profile"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Valley slope"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of maximum mountain height (in nodes)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of number of caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies depth of biome surface nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Varies roughness of terrain.\n"
+"Defines the 'persistence' value for terrain_base and terrain_alt noises."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Varies steepness of cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical climbing speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Vertical screen synchronization."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Video driver"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View bobbing factor"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range decrease key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View range increase key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View zoom key"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Virtual joystick triggers Aux1 button"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Volume"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"W coordinate of the generated 3D slice of a 4D fractal.\n"
+"Determines which 3D slice of the 4D shape is generated.\n"
+"Alters the shape of the fractal.\n"
+"Has no effect on 3D fractals.\n"
+"Range roughly -2 to 2."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking and flying speed, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water level"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wave speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving liquids wavelength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving plants"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag 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 ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to allow players to damage and kill each other."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to ask clients to reconnect after a (Lua) crash.\n"
+"Set this to true if your server is set up to restart automatically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show technical names.\n"
+"Affects mods and texture packs in the Content and Select Mods menus, as well "
+"as\n"
+"setting names in All Settings.\n"
+"Controlled by the checkbox in the \"All settings\" menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to show the client debug info (has the same effect as hitting F5)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Windows systems only: Start Minetest with the command line window in the "
+"background.\n"
+"Contains the same information as the file debug.txt (default name)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World directory (everything in the world is stored here).\n"
+"Not needed if starting from the main menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"World-aligned textures may be scaled to span several nodes. However,\n"
+"the server may not send the scale you want, especially if you use\n"
+"a specially-designed texture pack; with this option, the client tries\n"
+"to determine the scale automatically basing on the texture size.\n"
+"See also texture_min_size.\n"
+"Warning: This option is EXPERIMENTAL!"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World-aligned textures mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of flat ground."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y of mountain density gradient zero level. Used to shift mountains "
+"vertically."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y of upper limit of large caves."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Y-distance over which floatlands taper from full density to nothing.\n"
+"Tapering starts at this distance from the Y limit.\n"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of higher terrain that creates cliffs."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of lower terrain and seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of seabed."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL file download timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL interactive timeout"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "cURL parallel limit"
+msgstr ""
diff --git a/po/minetest.pot b/po/minetest.pot
index 46a74b448..084a5ff30 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: 2016-08-30 06:18+0200\n"
+"POT-Creation-Date: 2022-07-20 21:43+0200\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"
@@ -17,36 +17,101 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: builtin/fstk/ui.lua
-msgid "The server has requested a reconnect:"
+#: builtin/client/chatcommands.lua
+msgid "Issued command: "
msgstr ""
-#: builtin/fstk/ui.lua
-msgid "Main menu"
+#: builtin/client/chatcommands.lua
+msgid "Empty command."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Invalid command: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "List online players"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "This command is disabled by server."
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Online players: "
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Exit to main menu"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "Clear the out chat queue"
+msgstr ""
+
+#: builtin/client/chatcommands.lua
+msgid "The out chat queue is now empty."
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "You died"
+msgstr ""
+
+#: builtin/client/death_formspec.lua src/client/game.cpp
+msgid "Respawn"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid ""
+"Use '.help <cmd>' to get more information, or '.help all' to list everything."
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Available commands:"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Command not available: "
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "[all | <cmd>]"
+msgstr ""
+
+#: builtin/common/chatcommands.lua
+msgid "Get help for commands"
+msgstr ""
+
+#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp
+msgid "OK"
msgstr ""
#: builtin/fstk/ui.lua
-msgid "Reconnect"
+msgid "<none available>"
msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured in a Lua script, such as a mod:"
+msgid "The server has requested a reconnect:"
msgstr ""
#: builtin/fstk/ui.lua
-msgid "An error occured:"
+msgid "Reconnect"
msgstr ""
-#: builtin/fstk/ui.lua builtin/mainmenu/store.lua
-msgid "Ok"
+#: builtin/fstk/ui.lua
+msgid "Main menu"
msgstr ""
-#: builtin/mainmenu/common.lua src/game.cpp
-msgid "Loading..."
+#: builtin/fstk/ui.lua
+msgid "An error occurred in a Lua script:"
msgstr ""
-#: builtin/mainmenu/common.lua
-msgid "Try reenabling public serverlist and check your internet connection."
+#: builtin/fstk/ui.lua
+msgid "An error occurred:"
msgstr ""
#: builtin/mainmenu/common.lua
@@ -69,45 +134,104 @@ msgstr ""
msgid "Protocol version mismatch. "
msgstr ""
+#: builtin/mainmenu/common.lua
+msgid "Client Mods"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "A new $1 version is available"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid ""
+"Installed version: $1\n"
+"New version: $2\n"
+"Visit $3 to find out how to get the newest version and stay up to date with "
+"features and bugfixes."
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Visit website"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Later"
+msgstr ""
+
+#: builtin/mainmenu/common.lua
+msgid "Never"
+msgstr ""
+
#: builtin/mainmenu/dlg_config_world.lua
msgid "World:"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide Game"
+msgid "No modpack description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No game description provided."
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "(Unsatisfied)"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Hide mp content"
+msgid "(Enabled, has error)"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
msgid "Mod:"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua
-msgid "Depends:"
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No (optional) dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No hard dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua
+msgid "Optional dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/tab_content.lua
+msgid "Dependencies:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "No optional dependencies"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp
msgid "Save"
msgstr ""
-#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
+#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_contentstore.lua
+#: builtin/mainmenu/dlg_create_world.lua
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/dlg_register.lua
#: builtin/mainmenu/dlg_rename_modpack.lua
-#: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp
+#: src/gui/guiKeyChangeMenu.cpp src/gui/guiPasswordChange.cpp
msgid "Cancel"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Enable MP"
+msgid "Find More Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable modpack"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
-msgid "Disable MP"
+msgid "Enable modpack"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
@@ -115,133 +239,499 @@ msgid "enabled"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
+msgid "Disable all"
+msgstr ""
+
+#: builtin/mainmenu/dlg_config_world.lua
msgid "Enable all"
msgstr ""
#: builtin/mainmenu/dlg_config_world.lua
msgid ""
"Failed to enable mod \"$1\" as it contains disallowed characters. Only "
-"chararacters [a-z0-9_] are allowed."
+"characters [a-z0-9_] are allowed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "ContentDB is not available when Minetest was compiled without cURL"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "All packages"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Games"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Mods"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Texture packs"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Failed to download $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install: Unsupported file type or broken archive"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Already installed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 by $2"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Not found"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 and $2 dependencies will be installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 will be installed, and $2 dependencies will be skipped."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 required dependencies could not be found."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Please check that the base game is correct."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Base Game:"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install missing dependencies"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Install"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "\"$1\" already exists. Would you like to overwrite it?"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Overwrite"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Back to Main Menu"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid ""
+"$1 downloading,\n"
+"$2 queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "$1 downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No updates"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update All [$1]"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No results"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "No packages could be retrieved"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Downloading..."
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Queued"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Update"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "Uninstall"
+msgstr ""
+
+#: builtin/mainmenu/dlg_contentstore.lua
+msgid "View more information in a web browser"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "World name"
+msgid "Caverns"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Seed"
+msgid "Very large caverns deep in the underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Sea level rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mountains"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floatlands (experimental)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Floating landmasses in the sky"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Mapgen"
+msgid "Altitude chill"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces heat with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Altitude dry"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Reduces humidity with altitude"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Humid rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Increases humidity around rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Vary river depth"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Low humidity and high heat causes shallow or dry rivers"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Hills"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Lakes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Additional terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Generate non-fractal terrain: Oceans and underground"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Trees and jungle grass"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Flat terrain"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Mud flow"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Terrain surface erosion"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle, Tundra, Taiga"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert, Jungle"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Temperate, Desert"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "You have no games installed."
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Install a game"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Dungeons"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Decorations"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid ""
+"Structures appearing on the terrain (no effect on trees and jungle grass "
+"created by v6)"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Structures appearing on the terrain, typically trees and plants"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Network of tunnels and caves"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biomes"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Biome blending"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "Smooth transition between biomes"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
-msgid "Game"
+msgid "Mapgen flags"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Create"
+msgid "Mapgen-specific flags"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "You have no subgames installed."
+msgid "World name"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download one from minetest.net"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Seed"
+msgstr ""
+
+#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp
+msgid "Mapgen"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Warning: The minimal development test is meant for developers."
+msgid "Development Test is meant for developers."
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "Download a subgame, such as minetest_game, from minetest.net"
+msgid "Install another game"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "A world named \"$1\" already exists"
+msgid "Create"
msgstr ""
#: builtin/mainmenu/dlg_create_world.lua
-msgid "No worldname given or no game selected"
+msgid "No game selected"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
+#: builtin/mainmenu/dlg_create_world.lua
+msgid "A world named \"$1\" already exists"
+msgstr ""
+
+#: builtin/mainmenu/dlg_delete_content.lua
msgid "Are you sure you want to delete \"$1\"?"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-#: src/keycode.cpp
+#: builtin/mainmenu/dlg_delete_content.lua
+#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua
+#: src/client/keycode.cpp
msgid "Delete"
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: failed to delete \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: failed to delete \"$1\""
msgstr ""
-#: builtin/mainmenu/dlg_delete_mod.lua
-msgid "Modmgr: invalid modpath \"$1\""
+#: builtin/mainmenu/dlg_delete_content.lua
+msgid "pkgmgr: invalid path \"$1\""
msgstr ""
#: builtin/mainmenu/dlg_delete_world.lua
msgid "Delete World \"$1\"?"
msgstr ""
+#: builtin/mainmenu/dlg_register.lua
+msgid "Joining $1"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua
+#: builtin/mainmenu/tab_online.lua
+msgid "Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp
+msgid "Confirm Password"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua
+msgid "Register"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Missing name"
+msgstr ""
+
+#: builtin/mainmenu/dlg_register.lua
+msgid "Passwords do not match"
+msgstr ""
+
+#: builtin/mainmenu/dlg_rename_modpack.lua
+msgid "Accept"
+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 ""
+
#: builtin/mainmenu/dlg_rename_modpack.lua
msgid "Rename Modpack:"
msgstr ""
-#: builtin/mainmenu/dlg_rename_modpack.lua src/keycode.cpp
-msgid "Accept"
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Content: Games"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Games"
+msgid "Content: Mods"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua
-msgid "Mods"
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_settings.lua
+msgid "Disabled"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "(No description of setting given)"
+msgid "Enabled"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Browse"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Offset"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
+msgid "Scale"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Please enter a comma seperated list of flags."
+msgid "X spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Possible values are: "
+msgid "Y spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid ""
-"Format: <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, "
-"<octaves>, <persistence>"
+msgid "2D Noise"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Optionally the lacunarity can be appended with a leading comma."
+msgid "Z spread"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Format is 3 numbers separated by commas and inside brackets."
+msgid "Octaves"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Disabled"
+msgid "Persistence"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Enabled"
+msgid "Lacunarity"
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 "Browse"
+msgid "defaults"
+msgstr ""
+
+#. ~ "eased" is a noise parameter flag.
+#. It is used to make the map smoother and
+#. can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "eased"
+msgstr ""
+
+#. ~ "absvalue" is a noise parameter flag.
+#. It is short for "absolute value".
+#. It can be enabled in noise settings in
+#. main menu -> "All Settings".
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "absvalue"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "X"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Y"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "Z"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua
+msgid "(No description of setting given)"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -249,11 +739,11 @@ msgid "Please enter a valid integer."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be greater than $1."
+msgid "The value must be at least $1."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "The value must be lower than $1."
+msgid "The value must not be larger than $1."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -261,11 +751,15 @@ msgid "Please enter a valid number."
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "\"$1\" is not a valid flag."
+msgid "Select directory"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
-msgid "Select path"
+msgid "Select file"
+msgstr ""
+
+#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua
+msgid "Search"
msgstr ""
#: builtin/mainmenu/dlg_settings_advanced.lua
@@ -280,208 +774,251 @@ msgstr ""
msgid "Restore Default"
msgstr ""
-#: builtin/mainmenu/dlg_settings_advanced.lua
+#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp
msgid "Show technical names"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: file: \"$1\""
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 (Enabled)"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid ""
-"\n"
-"Install Mod: unsupported filetype \"$1\" or broken archive"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a $1 as a texture pack"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
+#: builtin/mainmenu/pkgmgr.lua
msgid "Failed to install $1 to $2"
msgstr ""
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find suitable foldername for modpack $1"
-msgstr ""
-
-#: builtin/mainmenu/modmgr.lua
-msgid "Install Mod: unable to find real modname for: $1"
-msgstr ""
-
-#: builtin/mainmenu/store.lua
-msgid "Unsorted"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to find a valid mod or modpack"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Search"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a modpack as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Downloading $1, please wait..."
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find suitable folder name for modpack $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Successfully installed:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a mod as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Shortname:"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Install Mod: Unable to find real mod name for: $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Rating"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "Unable to install a game as a $1"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "re-Install"
+#: builtin/mainmenu/pkgmgr.lua
+msgid "$1 mods"
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Install"
+#: builtin/mainmenu/serverlistmgr.lua src/client/game.cpp
+msgid "Loading..."
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Close store"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Try reenabling public serverlist and check your internet connection."
msgstr ""
-#: builtin/mainmenu/store.lua
-msgid "Page $1 of $2"
+#: builtin/mainmenu/serverlistmgr.lua
+msgid "Public server list is disabled"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
-msgid "Credits"
+#: builtin/mainmenu/tab_about.lua
+msgid "About"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Core Developers"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Active Contributors"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Core Developers"
msgstr ""
-#: builtin/mainmenu/tab_credits.lua
+#: builtin/mainmenu/tab_about.lua
msgid "Previous Contributors"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Installed Mods:"
-msgstr ""
-
-#: builtin/mainmenu/tab_mods.lua
-msgid "No mod description available"
+#: builtin/mainmenu/tab_about.lua
+msgid "Active renderer:"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Mod information:"
+#: builtin/mainmenu/tab_about.lua
+msgid "Share debug log"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Rename"
+#: builtin/mainmenu/tab_about.lua
+msgid ""
+"Opens the directory that contains user-provided worlds, games, mods,\n"
+"and texture packs in a file manager / explorer."
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected modpack"
+#: builtin/mainmenu/tab_about.lua
+msgid "Open User Data Directory"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Uninstall selected mod"
+#: builtin/mainmenu/tab_content.lua
+msgid "Installed Packages:"
msgstr ""
-#: builtin/mainmenu/tab_mods.lua
-msgid "Select Mod File:"
+#: builtin/mainmenu/tab_content.lua
+msgid "Browse online content"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua
-msgid "Address / Port"
+#: builtin/mainmenu/tab_content.lua
+msgid "No package description available"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Name / Password"
+#: builtin/mainmenu/tab_content.lua
+msgid "Rename"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Connect"
+#: builtin/mainmenu/tab_content.lua
+msgid "No dependencies."
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Del. Favorite"
+#: builtin/mainmenu/tab_content.lua
+msgid "Disable Texture Pack"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Favorite"
+#: builtin/mainmenu/tab_content.lua
+msgid "Use Texture Pack"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Creative mode"
+#: builtin/mainmenu/tab_content.lua
+msgid "Information:"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "Damage enabled"
+#: builtin/mainmenu/tab_content.lua
+msgid "Uninstall Package"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua
-msgid "PvP enabled"
+#: builtin/mainmenu/tab_content.lua
+msgid "Content"
msgstr ""
-#: builtin/mainmenu/tab_multiplayer.lua src/settings_translation_file.cpp
-msgid "Client"
+#: builtin/mainmenu/tab_local.lua
+msgid "Install games from ContentDB"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "New"
+#: builtin/mainmenu/tab_local.lua
+msgid "Creative Mode"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Configure"
+#: builtin/mainmenu/tab_local.lua
+msgid "Enable Damage"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Start Game"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Server"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
-msgid "Select World:"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select Mods"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Creative Mode"
+#: builtin/mainmenu/tab_local.lua
+msgid "New"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Enable Damage"
+#: builtin/mainmenu/tab_local.lua
+msgid "Select World:"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Public"
+#: builtin/mainmenu/tab_local.lua
+msgid "Host Game"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Name/Password"
+#: builtin/mainmenu/tab_local.lua
+msgid "Announce Server"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Bind Address"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua
msgid "Port"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
+#: builtin/mainmenu/tab_local.lua
msgid "Server Port"
msgstr ""
-#: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua
+#: builtin/mainmenu/tab_local.lua
+msgid "Play Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_local.lua
msgid "No world created or selected!"
msgstr ""
-#: builtin/mainmenu/tab_server.lua
-msgid "Server"
+#: builtin/mainmenu/tab_local.lua
+msgid "Start Game"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua src/client/keycode.cpp
+msgid "Clear"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Refresh"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Address"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Server Description"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Login"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Remove favorite"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Ping"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Creative mode"
+msgstr ""
+
+#. ~ PvP = Player versus Player
+#: builtin/mainmenu/tab_online.lua
+msgid "Damage / PvP"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Favorites"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Public Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Incompatible Servers"
+msgstr ""
+
+#: builtin/mainmenu/tab_online.lua
+msgid "Join Game"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -505,6 +1042,10 @@ msgid "Node Highlighting"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
+msgid "None"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
msgid "No Filter"
msgstr ""
@@ -528,10 +1069,6 @@ msgstr ""
msgid "Mipmap + Aniso. Filter"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua
-msgid "None"
-msgstr ""
-
#: builtin/mainmenu/tab_settings.lua
msgid "2x"
msgstr ""
@@ -545,15 +1082,23 @@ msgid "8x"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Are you sure to reset your singleplayer world?"
+msgid "Very Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Low"
+msgstr ""
+
+#: builtin/mainmenu/tab_settings.lua
+msgid "Medium"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Yes"
+msgid "High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "No"
+msgid "Very High"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -589,39 +1134,39 @@ msgid "Shaders"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Reset singleplayer world"
+msgid "Shaders (experimental)"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Change keys"
+msgid "Shaders (unavailable)"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua
-msgid "Advanced Settings"
+#: builtin/mainmenu/tab_settings.lua src/client/game.cpp
+msgid "Change Keys"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Touchthreshold (px)"
+msgid "All Settings"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Bump Mapping"
+msgid "Touch threshold (px):"
msgstr ""
-#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Tone Mapping"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Screen:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Normal Mapping"
+msgid "Autosave Screen Size"
msgstr ""
#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
-msgid "Parallax Occlusion"
+msgid "Tone Mapping"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Waving Water"
+msgid "Waving Liquids"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
@@ -633,66 +1178,46 @@ msgid "Waving Plants"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "To enable shaders the OpenGL driver needs to be used."
+msgid "Dynamic shadows:"
msgstr ""
#: builtin/mainmenu/tab_settings.lua
-msgid "Settings"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Start Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Config mods"
-msgstr ""
-
-#: builtin/mainmenu/tab_simple_main.lua
-msgid "Main"
-msgstr ""
-
-#: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp
-msgid "Play"
+msgid "(game support required)"
msgstr ""
-#: builtin/mainmenu/tab_singleplayer.lua
-msgid "Singleplayer"
-msgstr ""
-
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Select texture pack:"
+#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp
+msgid "Dynamic shadows"
msgstr ""
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "No information available"
+#: builtin/mainmenu/tab_settings.lua
+msgid "Settings"
msgstr ""
-#: builtin/mainmenu/tab_texturepacks.lua
-msgid "Texturepacks"
+#: src/client/client.cpp src/client/game.cpp
+msgid "Connection timed out."
msgstr ""
-#: src/client.cpp
-msgid "Connection timed out."
+#: src/client/client.cpp
+msgid "Connection aborted (protocol error?)."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Loading textures..."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Rebuilding shaders..."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes..."
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Initializing nodes"
msgstr ""
-#: src/client.cpp
+#: src/client/client.cpp
msgid "Done!"
msgstr ""
@@ -701,11 +1226,19 @@ msgid "Main Menu"
msgstr ""
#: src/client/clientlauncher.cpp
-msgid "Player name too long."
+msgid "Connection error (timed out?)"
msgstr ""
#: src/client/clientlauncher.cpp
-msgid "Connection error (timed out?)"
+msgid "Provided password file failed to open: "
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Please choose a name!"
+msgstr ""
+
+#: src/client/clientlauncher.cpp
+msgid "Player name too long."
msgstr ""
#: src/client/clientlauncher.cpp
@@ -717,26 +1250,271 @@ msgid "Provided world path doesn't exist: "
msgstr ""
#: src/client/clientlauncher.cpp
-msgid "Could not find or load game \""
+msgid "Could not find or load game: "
msgstr ""
#: src/client/clientlauncher.cpp
msgid "Invalid gamespec."
msgstr ""
-#: src/fontengine.cpp
-msgid "needs_fallback_font"
+#: src/client/game.cpp
+msgid "Shutting down..."
msgstr ""
-#: src/game.cpp
-msgid "You died."
+#: src/client/game.cpp
+msgid "Creating server..."
msgstr ""
-#: src/game.cpp
-msgid "Respawn"
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to listen on %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Creating client..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connection failed for unknown reason"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Singleplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Multiplayer"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Resolving address..."
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Couldn't resolve address: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Unable to connect to %s because IPv6 is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Error creating client: %s"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Access denied. Reason: %s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Connecting to server..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client disconnected"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Item definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Node definitions..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Media..."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "KiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "MiB/s"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Client side scripting is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound muted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound unmuted"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is disabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Volume changed to %d%%"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Sound system is not supported on this build"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "ok"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode enabled (note: no 'fly' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fly mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Pitch move mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode enabled (note: no 'fast' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fast mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode enabled (note: no 'noclip' privilege)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Noclip mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Cinematic mode disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Can't show block bounds (disabled by mod or game)"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for current block"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for nearby blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Block bounds shown for all blocks"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Automatic forward disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Minimap currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Fog enabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Profiler graph shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Wireframe shown"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info, profiler graph, and wireframe hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Debug info and profiler graph hidden"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update disabled"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Camera update enabled"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at maximum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range changed to %d"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
+#, c-format
+msgid "Viewing range is at minimum: %d"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Enabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Disabled unlimited viewing range"
+msgstr ""
+
+#: src/client/game.cpp
+msgid "Zoom currently disabled by game or mod"
+msgstr ""
+
+#: src/client/game.cpp
msgid ""
"Default Controls:\n"
"No menu visible:\n"
@@ -752,509 +1530,614 @@ msgid ""
" --> place single item to slot\n"
msgstr ""
-#: src/game.cpp
-msgid ""
-"Default Controls:\n"
-"- WASD: move\n"
-"- Space: jump/climb\n"
-"- Shift: sneak/go down\n"
-"- Q: drop item\n"
-"- I: inventory\n"
+#: src/client/game.cpp
+#, c-format
+msgid ""
+"Controls:\n"
+"- %s: move forwards\n"
+"- %s: move backwards\n"
+"- %s: move left\n"
+"- %s: move right\n"
+"- %s: jump/climb up\n"
+"- %s: dig/punch\n"
+"- %s: place/use\n"
+"- %s: sneak/climb down\n"
+"- %s: drop item\n"
+"- %s: inventory\n"
"- Mouse: turn/look\n"
-"- Mouse left: dig/punch\n"
-"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
-"- T: chat\n"
+"- %s: chat\n"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Continue"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Change Password"
msgstr ""
-#: src/game.cpp
-msgid "Sound Volume"
+#: src/client/game.cpp
+msgid "Game paused"
msgstr ""
-#: src/game.cpp
-msgid "Change Keys"
+#: src/client/game.cpp
+msgid "Sound Volume"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to Menu"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid "Exit to OS"
msgstr ""
-#: src/game.cpp
-msgid "Shutting down..."
+#: src/client/game.cpp
+msgid "Game info:"
msgstr ""
-#: src/game.cpp
-msgid "Creating server..."
+#: src/client/game.cpp
+msgid "- Mode: "
msgstr ""
-#: src/game.cpp
-msgid "Creating client..."
+#: src/client/game.cpp
+msgid "Remote server"
msgstr ""
-#: src/game.cpp
-msgid "Resolving address..."
+#: src/client/game.cpp
+msgid "- Address: "
msgstr ""
-#: src/game.cpp
-msgid "Connecting to server..."
+#: src/client/game.cpp
+msgid "Hosting server"
msgstr ""
-#: src/game.cpp
-msgid "Item definitions..."
+#: src/client/game.cpp
+msgid "- Port: "
msgstr ""
-#: src/game.cpp
-msgid "Node definitions..."
+#: src/client/game.cpp
+msgid "On"
msgstr ""
-#: src/game.cpp
-msgid "Media..."
+#: src/client/game.cpp
+msgid "Off"
msgstr ""
-#: src/game.cpp
-msgid "KiB/s"
+#. ~ PvP = Player versus Player
+#: src/client/game.cpp
+msgid "- PvP: "
msgstr ""
-#: src/game.cpp
-msgid "MiB/s"
+#: src/client/game.cpp
+msgid "- Public: "
msgstr ""
-#: src/game.cpp src/guiFormSpecMenu.cpp
-msgid "ok"
+#: src/client/game.cpp
+msgid "- Server Name: "
+msgstr ""
+
+#: src/client/game.cpp
+#, c-format
+msgid "The server is probably running a different version of %s."
+msgstr ""
+
+#: src/client/game.cpp
+msgid "A serialization error occurred:"
msgstr ""
-#: src/game.cpp
+#: src/client/game.cpp
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Proceed"
+#: src/client/gameui.cpp
+msgid "Chat shown"
msgstr ""
-#: src/guiFormSpecMenu.cpp
-msgid "Enter "
+#: src/client/gameui.cpp
+msgid "Chat hidden"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
+#: src/client/gameui.cpp
+msgid "HUD shown"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "\"Use\" = climb down"
+#: src/client/gameui.cpp
+msgid "HUD hidden"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Double tap \"jump\" to toggle fly"
+#: src/client/gameui.cpp
+#, c-format
+msgid "Profiler shown (page %d of %d)"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Key already in use"
+#: src/client/gameui.cpp
+msgid "Profiler hidden"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "press key"
+#: src/client/keycode.cpp
+msgid "Left Button"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Forward"
+#: src/client/keycode.cpp
+msgid "Right Button"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Backward"
+#: src/client/keycode.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 1"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "X Button 2"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Backspace"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Tab"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Return"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Shift"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Control"
+msgstr ""
+
+#. ~ Key name, common on Windows keyboards
+#: src/client/keycode.cpp
+msgid "Menu"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Pause"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Caps Lock"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Space"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page up"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Page down"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "End"
+msgstr ""
+
+#: src/client/keycode.cpp
+msgid "Home"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
msgid "Left"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
+#: src/client/keycode.cpp
+msgid "Up"
+msgstr ""
+
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
msgid "Right"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Use"
+#: src/client/keycode.cpp
+msgid "Down"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Jump"
+#. ~ Key name
+#: src/client/keycode.cpp
+msgid "Select"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Sneak"
+#. ~ "Print screen" key
+#: src/client/keycode.cpp
+msgid "Print"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Drop"
+#: src/client/keycode.cpp
+msgid "Execute"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Inventory"
+#: src/client/keycode.cpp
+msgid "Snapshot"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Chat"
+#: src/client/keycode.cpp
+msgid "Insert"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Command"
+#: src/client/keycode.cpp
+msgid "Help"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Console"
+#: src/client/keycode.cpp
+msgid "Left Windows"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fly"
+#: src/client/keycode.cpp
+msgid "Right Windows"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle fast"
+#: src/client/keycode.cpp
+msgid "Numpad 0"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle Cinematic"
+#: src/client/keycode.cpp
+msgid "Numpad 1"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Toggle noclip"
+#: src/client/keycode.cpp
+msgid "Numpad 2"
msgstr ""
-#: src/guiKeyChangeMenu.cpp
-msgid "Range select"
+#: src/client/keycode.cpp
+msgid "Numpad 3"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
-msgid "Print stacks"
+#: src/client/keycode.cpp
+msgid "Numpad 4"
msgstr ""
-#: src/guiKeyChangeMenu.cpp src/keycode.cpp
-msgid "Zoom"
+#: src/client/keycode.cpp
+msgid "Numpad 5"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Old Password"
+#: src/client/keycode.cpp
+msgid "Numpad 6"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "New Password"
+#: src/client/keycode.cpp
+msgid "Numpad 7"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Confirm Password"
+#: src/client/keycode.cpp
+msgid "Numpad 8"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Change"
+#: src/client/keycode.cpp
+msgid "Numpad 9"
msgstr ""
-#: src/guiPasswordChange.cpp
-msgid "Passwords do not match!"
+#: src/client/keycode.cpp
+msgid "Numpad *"
msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Sound Volume: "
+#: src/client/keycode.cpp
+msgid "Numpad +"
msgstr ""
-#: src/guiVolumeChange.cpp
-msgid "Exit"
+#: src/client/keycode.cpp
+msgid "Numpad ."
msgstr ""
-#: src/keycode.cpp
-msgid "Left Button"
+#: src/client/keycode.cpp
+msgid "Numpad -"
msgstr ""
-#: src/keycode.cpp
-msgid "Middle Button"
+#: src/client/keycode.cpp
+msgid "Numpad /"
msgstr ""
-#: src/keycode.cpp
-msgid "Right Button"
+#: src/client/keycode.cpp
+msgid "Num Lock"
msgstr ""
-#: src/keycode.cpp
-msgid "X Button 1"
+#: src/client/keycode.cpp
+msgid "Scroll Lock"
msgstr ""
-#: src/keycode.cpp
-msgid "Back"
+#: src/client/keycode.cpp
+msgid "Left Shift"
msgstr ""
-#: src/keycode.cpp
-msgid "Clear"
+#: src/client/keycode.cpp
+msgid "Right Shift"
msgstr ""
-#: src/keycode.cpp
-msgid "Return"
+#: src/client/keycode.cpp
+msgid "Left Control"
msgstr ""
-#: src/keycode.cpp
-msgid "Tab"
+#: src/client/keycode.cpp
+msgid "Right Control"
msgstr ""
-#: src/keycode.cpp
-msgid "X Button 2"
+#: src/client/keycode.cpp
+msgid "Left Menu"
msgstr ""
-#: src/keycode.cpp
-msgid "Capital"
+#: src/client/keycode.cpp
+msgid "Right Menu"
msgstr ""
-#: src/keycode.cpp
-msgid "Control"
+#: src/client/keycode.cpp
+msgid "IME Escape"
msgstr ""
-#: src/keycode.cpp
-msgid "Kana"
+#: src/client/keycode.cpp
+msgid "IME Convert"
msgstr ""
-#: src/keycode.cpp
-msgid "Menu"
+#: src/client/keycode.cpp
+msgid "IME Nonconvert"
msgstr ""
-#: src/keycode.cpp
-msgid "Pause"
+#: src/client/keycode.cpp
+msgid "IME Accept"
msgstr ""
-#: src/keycode.cpp
-msgid "Shift"
+#: src/client/keycode.cpp
+msgid "IME Mode Change"
msgstr ""
-#: src/keycode.cpp
-msgid "Convert"
+#: src/client/keycode.cpp
+msgid "Apps"
msgstr ""
-#: src/keycode.cpp
-msgid "Escape"
+#: src/client/keycode.cpp
+msgid "Sleep"
msgstr ""
-#: src/keycode.cpp
-msgid "Final"
+#: src/client/keycode.cpp
+msgid "Erase EOF"
msgstr ""
-#: src/keycode.cpp
-msgid "Junja"
+#: src/client/keycode.cpp
+msgid "Play"
msgstr ""
-#: src/keycode.cpp
-msgid "Kanji"
+#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp
+msgid "Zoom"
msgstr ""
-#: src/keycode.cpp
-msgid "Nonconvert"
+#: src/client/keycode.cpp
+msgid "OEM Clear"
msgstr ""
-#: src/keycode.cpp
-msgid "End"
+#: src/client/minimap.cpp
+msgid "Minimap hidden"
msgstr ""
-#: src/keycode.cpp
-msgid "Home"
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in surface mode, Zoom x%d"
msgstr ""
-#: src/keycode.cpp
-msgid "Mode Change"
+#: src/client/minimap.cpp
+#, c-format
+msgid "Minimap in radar mode, Zoom x%d"
msgstr ""
-#: src/keycode.cpp
-msgid "Next"
+#: src/client/minimap.cpp
+msgid "Minimap in texture mode"
msgstr ""
-#: src/keycode.cpp
-msgid "Prior"
+#: src/gui/guiChatConsole.cpp
+msgid "Opening webpage"
msgstr ""
-#: src/keycode.cpp
-msgid "Space"
+#: src/gui/guiChatConsole.cpp
+msgid "Failed to open webpage"
msgstr ""
-#: src/keycode.cpp
-msgid "Down"
+#: src/gui/guiFormSpecMenu.cpp
+msgid "Proceed"
msgstr ""
-#: src/keycode.cpp
-msgid "Execute"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Keybindings."
msgstr ""
-#: src/keycode.cpp
-msgid "Print"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "\"Aux1\" = climb down"
msgstr ""
-#: src/keycode.cpp
-msgid "Select"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Double tap \"jump\" to toggle fly"
msgstr ""
-#: src/keycode.cpp
-msgid "Up"
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Automatic jumping"
msgstr ""
-#: src/keycode.cpp
-msgid "Help"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Key already in use"
msgstr ""
-#: src/keycode.cpp
-msgid "Insert"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "press key"
msgstr ""
-#: src/keycode.cpp
-msgid "Snapshot"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Forward"
msgstr ""
-#: src/keycode.cpp
-msgid "Left Windows"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Backward"
msgstr ""
-#: src/keycode.cpp
-msgid "Apps"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Aux1"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 0"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Jump"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 1"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Sneak"
msgstr ""
-#: src/keycode.cpp
-msgid "Right Windows"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Drop"
msgstr ""
-#: src/keycode.cpp
-msgid "Sleep"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inventory"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 2"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Prev. item"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 3"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Next item"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 4"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Change camera"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 5"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle minimap"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 6"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fly"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 7"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle pitchmove"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad *"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fast"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad +"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle noclip"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad -"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Mute"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad /"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. volume"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 8"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. volume"
msgstr ""
-#: src/keycode.cpp
-msgid "Numpad 9"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Autoforward"
msgstr ""
-#: src/keycode.cpp
-msgid "Num Lock"
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Chat"
msgstr ""
-#: src/keycode.cpp
-msgid "Scroll Lock"
+#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp
+msgid "Screenshot"
msgstr ""
-#: src/keycode.cpp
-msgid "Left Shift"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Range select"
msgstr ""
-#: src/keycode.cpp
-msgid "Right Shift"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Dec. range"
msgstr ""
-#: src/keycode.cpp
-msgid "Left Control"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Inc. range"
msgstr ""
-#: src/keycode.cpp
-msgid "Left Menu"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Console"
msgstr ""
-#: src/keycode.cpp
-msgid "Right Control"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Command"
msgstr ""
-#: src/keycode.cpp
-msgid "Right Menu"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Local command"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Block bounds"
+msgstr ""
+
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle HUD"
msgstr ""
-#: src/keycode.cpp
-msgid "Comma"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle chat log"
msgstr ""
-#: src/keycode.cpp
-msgid "Minus"
+#: src/gui/guiKeyChangeMenu.cpp
+msgid "Toggle fog"
msgstr ""
-#: src/keycode.cpp
-msgid "Period"
+#: src/gui/guiPasswordChange.cpp
+msgid "Old Password"
msgstr ""
-#: src/keycode.cpp
-msgid "Plus"
+#: src/gui/guiPasswordChange.cpp
+msgid "New Password"
msgstr ""
-#: src/keycode.cpp
-msgid "Attn"
+#: src/gui/guiPasswordChange.cpp
+msgid "Change"
msgstr ""
-#: src/keycode.cpp
-msgid "CrSel"
+#: src/gui/guiPasswordChange.cpp
+msgid "Passwords do not match!"
msgstr ""
-#: src/keycode.cpp
-msgid "Erase OEF"
+#: src/gui/guiVolumeChange.cpp
+#, c-format
+msgid "Sound Volume: %d%%"
msgstr ""
-#: src/keycode.cpp
-msgid "ExSel"
+#: src/gui/guiVolumeChange.cpp
+msgid "Exit"
msgstr ""
-#: src/keycode.cpp
-msgid "OEM Clear"
+#: src/gui/guiVolumeChange.cpp
+msgid "Muted"
msgstr ""
-#: src/keycode.cpp
-msgid "PA1"
+#: src/network/clientpackethandler.cpp
+msgid ""
+"Name is not registered. To create an account on this server, click 'Register'"
+msgstr ""
+
+#: src/network/clientpackethandler.cpp
+msgid "Name is taken. Please choose another name"
+msgstr ""
+
+#. ~ DO NOT TRANSLATE THIS LITERALLY!
+#. This is a special string which needs to contain the translation's
+#. language code (e.g. "de" for German).
+#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp
+msgid "LANG_CODE"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1262,6 +2145,10 @@ msgid "Controls"
msgstr ""
#: src/settings_translation_file.cpp
+msgid "General"
+msgstr ""
+
+#: src/settings_translation_file.cpp
msgid "Build inside player"
msgstr ""
@@ -1273,60 +2160,86 @@ msgid ""
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Flying"
+msgid "Cinematic mode"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Player is able to fly without being affected by gravity.\n"
-"This requires the \"fly\" privilege on the server."
+"Smooths camera when looking around. Also called look or mouse smoothing.\n"
+"Useful for recording videos."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fast movement"
+msgid "Camera smoothing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Camera smoothing in cinematic mode"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Aux1 key for climbing/descending"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Fast movement (via use key).\n"
-"This requires the \"fast\" privilege on the server."
+"If enabled, \"Aux1\" key instead of \"Sneak\" key is used for climbing down "
+"and\n"
+"descending."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noclip"
+msgid "Double tap jump for fly"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Double-tapping the jump key toggles fly mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Always fly fast"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled together with fly mode, player is able to fly through solid "
-"nodes.\n"
-"This requires the \"noclip\" privilege on the server."
+"If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n"
+"enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cinematic mode"
+msgid "Place repetition interval"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Smooths camera when looking around. Also called look or mouse smoothing.\n"
-"Useful for recording videos."
+"The time in seconds it takes between repeated node placements when holding\n"
+"the place button."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Camera smoothing"
+msgid "Automatically jump up single-node obstacles."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Smooths rotation of camera. 0 to disable."
+msgid "Safe digging and placing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Camera smoothing in cinematic mode"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Smooths rotation of camera in cinematic mode. 0 to disable."
+msgid "Keyboard and Mouse"
msgstr ""
#: src/settings_translation_file.cpp
@@ -1346,470 +2259,1005 @@ msgid "Mouse sensitivity multiplier."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Key use for climbing/descending"
+msgid "Touchscreen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Touch screen threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The length in pixels it takes for touch screen interaction to start."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed virtual joystick"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If enabled, \"use\" key instead of \"sneak\" key is used for climbing down "
-"and descending."
+"(Android) Fixes the position of virtual joystick.\n"
+"If disabled, virtual joystick will center to first-touch's position."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Double tap jump for fly"
+msgid "Virtual joystick triggers Aux1 button"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Double-tapping the jump key toggles fly mode."
+msgid ""
+"(Android) Use virtual joystick to trigger \"Aux1\" button.\n"
+"If enabled, virtual joystick will also tap \"Aux1\" button when out of main "
+"circle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics and Audio"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Graphics"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screen width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width component of the initial window size. Ignored in fullscreen mode."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Always fly and fast"
+msgid "Screen height"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If disabled \"use\" key is used to fly fast if both fly and fast mode are "
-"enabled."
+"Height component of the initial window size. Ignored in fullscreen mode."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Autosave screen size"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save window size automatically when modified."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Full screen"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fullscreen mode."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Rightclick repetition interval"
+msgid "Pause on lost window focus"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated right clicks when holding the "
-"right mouse button."
+"Open the pause menu when the window's focus is lost. Does not pause if a "
+"formspec is\n"
+"open."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Random input"
+msgid "FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable random user input (only used for testing)."
+msgid "Maximum FPS"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward"
+msgid ""
+"If FPS would go higher than this, limit it by sleeping\n"
+"to not waste CPU power for no benefit."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Continuous forward movement (only used for testing)."
+msgid "VSync"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable Joysticks"
+msgid "Vertical screen synchronization."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Joystick button repetition interval"
+msgid "FPS when unfocused or paused"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum FPS when the window is not focused, or when the game is paused."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Viewing range"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "View distance in nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Undersampling"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The time in seconds it takes between repeated events\n"
-"when holding down a joystick button combination."
+"Undersampling is similar to using a lower screen resolution, but it applies\n"
+"to the game world only, keeping the GUI intact.\n"
+"It should give a significant performance boost at the cost of less detailed "
+"image.\n"
+"Higher values result in a less detailed image."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Joystick frustum sensitivity"
+msgid "Graphics Effects"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Opaque liquids"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Makes all liquids opaque"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Leaves style"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"The sensitivity of the joystick axes for moving the\n"
-"ingame view frustum around."
+"Leaves style:\n"
+"- Fancy: all faces visible\n"
+"- Simple: only outer faces, if defined special_tiles are used\n"
+"- Opaque: disable transparency"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Forward key"
+msgid "Connect glass"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Connects glass if supported by node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Smooth lighting"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for moving the player forward.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Enable smooth lighting with simple ambient occlusion.\n"
+"Disable for speed or for different looks."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Backward key"
+msgid "Tradeoffs for performance"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for moving the player backward.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Enables tradeoffs that reduce CPU load or increase rendering performance\n"
+"at the expense of minor visual glitches that do not impact game playability."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Left key"
+msgid "Digging particles"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Adds particles when digging a node."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3d"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D mode"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for moving the player left.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"3D support.\n"
+"Currently supported:\n"
+"- none: no 3d output.\n"
+"- anaglyph: cyan/magenta color 3d.\n"
+"- interlaced: odd/even line based polarisation screen support.\n"
+"- topbottom: split screen top/bottom.\n"
+"- sidebyside: split screen side by side.\n"
+"- crossview: Cross-eyed 3d\n"
+"- pageflip: quadbuffer based 3d.\n"
+"Note that the interlaced mode requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Right key"
+msgid "3D mode parallax strength"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Strength of 3D mode parallax."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bobbing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Arm inertia"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for moving the player right.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Arm inertia, gives a more realistic movement of\n"
+"the arm when the camera moves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Jump key"
+msgid "View bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for jumping.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Enable view bobbing and amount of view bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Sneak key"
+msgid "Fall bobbing factor"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for sneaking.\n"
-"Also used for climbing down and descending in water if aux1_descends is "
-"disabled.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Multiplier for fall bobbing.\n"
+"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Inventory key"
+msgid "Camera"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Near plane"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the inventory.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Field of view"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use key"
+msgid "Field of view in degrees."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Light curve gamma"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for moving fast in fast mode.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Alters the light curve by applying 'gamma correction' to it.\n"
+"Higher values make middle and lower light levels brighter.\n"
+"Value '1.0' leaves the light curve unaltered.\n"
+"This only has significant effect on daylight and artificial\n"
+"light, it has very little effect on natural night light."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Chat key"
+msgid "Ambient occlusion gamma"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat window.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"The strength (darkness) of node ambient-occlusion shading.\n"
+"Lower is darker, Higher is lighter. The valid range of values for this\n"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "Command key"
+msgid "Screenshots"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot folder"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat window to type commands.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Screenshot format"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Format of screenshots."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Console key"
+msgid "Screenshot quality"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for opening the chat console.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Screenshot quality. Only used for JPEG format.\n"
+"1 means worst quality; 100 means best quality.\n"
+"Use 0 for default quality."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Range select key"
+msgid "Node and Entity Highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Node highlighting"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Method used to highlight selected object."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show entity selection boxes"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling unlimited view range.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Show entity selection boxes\n"
+"A restart is required after changing this."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fly key"
+msgid "Selection box color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box border color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Selection box width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Width of the selection box lines around nodes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling flying.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Crosshair color (R,G,B).\n"
+"Also controls the object crosshair color"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fast key"
+msgid "Crosshair alpha"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling fast mode.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Crosshair alpha (opaqueness, between 0 and 255).\n"
+"This also applies to the object crosshair."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Noclip key"
+msgid "Fog"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Whether to fog out the end of the visible area."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored fog"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling noclip mode.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Make fog and sky colors depend on daytime (dawn/sunset) and view direction."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fog start"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fraction of the visible distance at which fog starts to be rendered"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Autorun key"
+msgid "Clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds are a client side effect."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D clouds"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use 3D cloud look instead of flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filtering and Antialiasing"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mipmapping"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling autorun.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Use mipmapping to scale textures. May slightly increase performance,\n"
+"especially when using a high resolution texture pack.\n"
+"Gamma correct downscaling is not supported."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Cinematic mode key"
+msgid "Anisotropic filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use anisotropic filtering when viewing at textures from an angle."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Bilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use bilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Trilinear filtering"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use trilinear filtering when scaling textures."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clean transparent textures"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling cinematic mode.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
+"which PNG optimizers usually discard, often resulting in dark or\n"
+"light edges to transparent textures. Apply a filter to clean that up\n"
+"at texture load time. This is automatically enabled if mipmapping is enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimap key"
+msgid "Minimum texture size"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling display of minimap.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
+"can be blurred, so automatically upscale them with nearest-neighbor\n"
+"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
+"for the upscaled textures; higher values look sharper, but require more\n"
+"memory. Powers of 2 are recommended. This setting is ONLY applied if\n"
+"bilinear/trilinear/anisotropic filtering is enabled.\n"
+"This is also used as the base node texture size for world-aligned\n"
+"texture autoscaling."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screenshot"
+msgid "FSAA"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for taking screenshots.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Use multi-sample antialiasing (MSAA) to smooth out block edges.\n"
+"This algorithm smooths out the 3D viewport while keeping the image sharp,\n"
+"but it doesn't affect the insides of textures\n"
+"(which is especially noticeable with transparent textures).\n"
+"Visible spaces appear between nodes when shaders are disabled.\n"
+"If set to 0, MSAA is disabled.\n"
+"A restart is required after changing this option."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Drop item key"
+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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Filmic tone mapping"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for dropping the currently selected item.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "HUD toggle key"
+msgid "Waving Nodes"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Waving leaves"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the HUD.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Set to true to enable waving leaves.\n"
+"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Chat toggle key"
+msgid "Waving plants"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the chat.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Set to true to enable waving plants.\n"
+"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fog toggle key"
+msgid "Waving liquids"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the fog.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Set to true to enable waving liquids (like water).\n"
+"Requires shaders to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Camera update toggle key"
+msgid "Waving liquids wave height"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the camera update. Only used for development\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"The maximum height of the surface of waving liquids.\n"
+"4.0 = Wave height is two nodes.\n"
+"0.0 = Wave doesn't move at all.\n"
+"Default is 1.0 (1/2 node).\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Debug info toggle key"
+msgid "Waving liquids wavelength"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of debug info.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Length of liquid waves.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Profiler toggle key"
+msgid "Waving liquids wave speed"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for toggling the display of the profiler. Used for development.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"How fast liquid waves will move. Higher = faster.\n"
+"If negative, liquid waves will move backwards.\n"
+"Requires waving liquids to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Toggle camera mode key"
+msgid ""
+"Set to true to enable Shadow Mapping.\n"
+"Requires shaders to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow strength gamma"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for switching between first- and third-person camera.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Set the shadow strength gamma.\n"
+"Adjusts the intensity of in-game dynamic shadows.\n"
+"Lower value means lighter shadows, higher value means darker shadows."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View range increase key"
+msgid "Shadow map max distance in nodes to render shadows"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum distance to render shadows."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Shadow map texture size"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for increasing the viewing range.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Texture size to render the shadow map on.\n"
+"This must be a power of two.\n"
+"Bigger numbers create better shadows but it is also more expensive."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "View range decrease key"
+msgid "Shadow map texture in 32 bits"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for decreasing the viewing range.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Sets shadow texture quality to 32 bits.\n"
+"On false, 16 bits texture will be used.\n"
+"This can cause much more artifacts in the shadow."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Poisson filtering"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Key for printing debug stacks. Used for development.\n"
-"See http://irrlicht.sourceforge.net/docu/namespaceirr."
-"html#a54da2a0e231901735e3da1b0edf72eb3"
+"Enable Poisson disk filtering.\n"
+"On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF "
+"filtering."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Network"
+msgid "Shadow filter quality"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Server address"
+msgid ""
+"Define shadow filtering quality.\n"
+"This simulates the soft shadows effect by applying a PCF or Poisson disk\n"
+"but also uses more resources."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Colored shadows"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Address to connect to.\n"
-"Leave this blank to start a local server.\n"
-"Note that the address field in the main menu overrides this setting."
+"Enable colored shadows.\n"
+"On true translucent nodes cast colored shadows. This is expensive."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Remote port"
+msgid "Map shadows update frames"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Port to connect to (UDP).\n"
-"Note that the port field in the main menu overrides this setting."
+"Spread a complete update of shadow map over given amount of frames.\n"
+"Higher values might make shadows laggy, lower values\n"
+"will consume more resources.\n"
+"Minimum value: 1; maximum value: 16"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Support older servers"
+msgid "Soft shadow radius"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Whether to support older servers before protocol version 25.\n"
-"Enable if you want to connect to 0.4.12 servers and before.\n"
-"Servers starting with 0.4.13 will work, 0.4.12-dev servers may work.\n"
-"Disabling this option will protect your password better."
+"Set the soft shadow radius size.\n"
+"Lower values mean sharper shadows, bigger values mean softer shadows.\n"
+"Minimum value: 1.0; maximum value: 15.0"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Saving map received from server"
+msgid "Sky Body Orbit Tilt"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Save the map received by the client on disk."
+msgid ""
+"Set the tilt of Sun/Moon orbit in degrees.\n"
+"Value of 0 means no tilt / vertical orbit.\n"
+"Minimum value: 0.0; maximum value: 60.0"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Show entity selection boxes"
+msgid "Audio"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Connect to external media server"
+msgid "Volume"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable usage of remote media server (if provided by server).\n"
-"Remote servers offer a significantly faster way to download media (e.g. "
-"textures)\n"
-"when connecting to the server."
+"Volume of all sounds.\n"
+"Requires the sound system to be enabled."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mute sound"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether to mute sounds. You can unmute sounds at any time, unless the\n"
+"sound system is disabled (enable_sound=false).\n"
+"In-game, you can toggle the mute state with the mute key or by using the\n"
+"pause menu."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "User Interfaces"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Language"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Set the language. Leave empty to use the system language.\n"
+"A restart is required after changing this."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUIs"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Scale GUI by a user specified value.\n"
+"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n"
+"This will smooth over some of the rough edges, and blend\n"
+"pixels when scaling down, at the cost of blurring some\n"
+"edge pixels when images are scaled by non-integer sizes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Inventory items animations"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Enables animation of inventory items."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Opacity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background opacity (between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec Full-Screen Background Color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Formspec full-screen background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter is true, all GUI images need to be\n"
+"filtered in software, but some images are generated directly\n"
+"to hardware (e.g. render-to-texture for nodes in inventory)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "GUI scaling filter txr2img"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"When gui_scaling_filter_txr2img is true, copy those images\n"
+"from hardware to software for scaling. When false, fall back\n"
+"to the old scaling method, for video drivers that don't\n"
+"properly support downloading textures back from hardware."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Tooltip delay"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Delay showing tooltips, stated in milliseconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Append item name to tooltip."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Clouds in menu"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Use a cloud animation for the main menu background."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "HUD scaling"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Modifies the size of the HUD elements."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Show name tag backgrounds by default"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Whether name tag backgrounds should be shown by default.\n"
+"Mods may still set a background."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Recent Chat Messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of recent chat messages to show"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console height"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background color (R,G,B)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Console alpha"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "In-game chat console background alpha (opaqueness, between 0 and 255)."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum hotbar width"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum proportion of current window to be used for hotbar.\n"
+"Useful if there's something to be displayed right or left of hotbar."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat weblinks"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console "
+"output."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Weblink color"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Optional override for chat weblink color."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat font size"
+msgstr ""
+
+#: 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 ""
+
+#: src/settings_translation_file.cpp
+msgid "Content Repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "The URL for the content repository"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Flag Blacklist"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+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 "
+"software',\n"
+"as defined by the Free Software Foundation.\n"
+"You can also specify content ratings.\n"
+"These flags are independent from Minetest versions,\n"
+"so see a full list at https://content.minetest.net/help/content_flags/"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "ContentDB Max Concurrent Downloads"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Maximum number of concurrent downloads. Downloads exceeding this limit will "
+"be queued.\n"
+"This should be lower than curl_parallel_limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client and Server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Saving map received from server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Save the map received by the client on disk."
msgstr ""
#: src/settings_translation_file.cpp
@@ -1821,1315 +3269,2168 @@ msgid "URL to the server list displayed in the Multiplayer Tab."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Serverlist file"
+msgid "Enable split login/register"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"File in client/serverlist/ that contains your favorite servers displayed in "
-"the Multiplayer Tab."
+"If enabled, account registration is separate from login in the UI.\n"
+"If disabled, new accounts will be registered automatically when logging in."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Graphics"
+msgid "Server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "In-Game"
+msgid "Admin name"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Basic"
+msgid ""
+"Name of the player.\n"
+"When running a server, clients connecting with this name are admins.\n"
+"When starting from the main menu, this is overridden."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "VBO"
+msgid "Serverlist and MOTD"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enable VBO"
+msgid "Server name"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fog"
+msgid ""
+"Name of the server, to be displayed when players join and in the serverlist."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Whether to fog out the end of the visible area."
+msgid "Server description"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Leaves style"
+msgid ""
+"Description of server, to be displayed when players join and in the "
+"serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server address"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Domain name of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server URL"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Homepage of server, to be displayed in the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce server"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Automatically report to the serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Announce to this serverlist."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Message of the day displayed to players connecting."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum users"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Maximum number of players that can be connected simultaneously."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Static spawnpoint"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "If this is set, players will always (re)spawn at the given position."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Networking"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Server port"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Leaves style:\n"
-"- Fancy: all faces visible\n"
-"- Simple: only outer faces, if defined special_tiles are used\n"
-"- Opaque: disable transparency"
+"Network port to listen (UDP).\n"
+"This value will be overridden when starting from the main menu."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Connect glass"
+msgid "Bind address"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Connects glass if supported by node."
+msgid "The network interface that the server listens on."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Smooth lighting"
+msgid "Strict protocol checking"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enable smooth lighting with simple ambient occlusion.\n"
-"Disable for speed or for different looks."
+"Enable to disallow old clients from connecting.\n"
+"Older clients are compatible in the sense that they will not crash when "
+"connecting\n"
+"to new servers, but they may not support all new features that you are "
+"expecting."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Clouds"
+msgid "Remote media"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Clouds are a client side effect."
+msgid ""
+"Specifies URL from which client fetches media instead of using UDP.\n"
+"$filename should be accessible from $remote_media$filename via cURL\n"
+"(obviously, remote_media should end with a slash).\n"
+"Files that are not present will be fetched the usual way."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "3D clouds"
+msgid "IPv6 server"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use 3D cloud look instead of flat."
+msgid ""
+"Enable/disable running an IPv6 server.\n"
+"Ignored if bind_address is set.\n"
+"Needs enable_ipv6 to be enabled."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Node highlighting"
+msgid "Server Security"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Method used to highlight selected object."
+msgid "Default password"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filtering"
+msgid "New users need to input this password."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Mipmapping"
+msgid "Disallow empty passwords"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"If enabled, players cannot join without a password or change theirs to an "
+"empty password."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use mip mapping to scale textures. May slightly increase performance."
+msgid "Default privileges"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Anisotropic filtering"
+msgid ""
+"The privileges that new users automatically get.\n"
+"See /privs in game for a full list on your server and mod configuration."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use anisotropic filtering when viewing at textures from an angle."
+msgid "Basic privileges"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bilinear filtering"
+msgid "Privileges that players with basic_privs can grant"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use bilinear filtering when scaling textures."
+msgid "Disable anticheat"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Trilinear filtering"
+msgid "If enabled, disable cheat prevention in multiplayer."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Use trilinear filtering when scaling textures."
+msgid "Rollback recording"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Clean transparent textures"
+msgid ""
+"If enabled, actions are recorded for rollback.\n"
+"This option is only read when server starts."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client-side Modding"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Client side modding restrictions"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Filtered textures can blend RGB values with fully-transparent neighbors,\n"
-"which PNG optimizers usually discard, sometimes resulting in a dark or\n"
-"light edge to transparent textures. Apply this filter to clean that up\n"
-"at texture load time."
+"Restricts the access of certain client-side functions on servers.\n"
+"Combine the byteflags below to restrict client-side features, or set to 0\n"
+"for no restrictions:\n"
+"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n"
+"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n"
+"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n"
+"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n"
+"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n"
+"csm_restriction_noderange)\n"
+"READ_PLAYERINFO: 32 (disable get_player_names call client-side)"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Minimum texture size for filters"
+msgid "Client side node lookup range restriction"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n"
-"can be blurred, so automatically upscale them with nearest-neighbor\n"
-"interpolation to preserve crisp pixels. This sets the minimum texture size\n"
-"for the upscaled textures; higher values look sharper, but require more\n"
-"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n"
-"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n"
-"enabled."
+"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 ""
#: src/settings_translation_file.cpp
-msgid "FSAA"
+msgid "Strip color codes"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Experimental option, might cause visible spaces between blocks\n"
-"when set to higher number than 0."
+"Remove color codes from incoming chat messages\n"
+"Use this to stop players from being able to use color in their messages"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message max length"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Shaders allow advanced visual effects and may increase performance on some "
-"video cards.\n"
-"Thy only work with the OpenGL video backend."
+"Set the maximum length of a chat message (in characters) sent by clients."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Filmic tone mapping"
+msgid "Chat message count limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Amount of messages a player may send per 10 seconds."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Chat message kick threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Kick players who sent more than X messages per 10 seconds."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Enables filmic tone mapping"
+msgid "Server Gameplay"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bumpmapping"
+msgid "Time speed"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables bumpmapping for textures. Normalmaps need to be supplied by the "
-"texture pack\n"
-"or need to be auto-generated.\n"
-"Requires shaders to be enabled."
+"Controls length of day/night cycle.\n"
+"Examples:\n"
+"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "World start time"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Time of day when a new world is started, in millihours (0-23999)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Generate normalmaps"
+msgid "Item entity TTL"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables on the fly normalmap generation (Emboss effect).\n"
-"Requires bumpmapping to be enabled."
+"Time in seconds for item entity (dropped items) to live.\n"
+"Setting it to -1 disables the feature."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Default stack size"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps strength"
+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 ""
#: src/settings_translation_file.cpp
-msgid "Strength of generated normalmaps."
+msgid "Physics"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Normalmaps sampling"
+msgid "Default acceleration"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Defines sampling step of texture.\n"
-"A higher value results in smoother normal maps."
+"Horizontal and vertical acceleration on ground or when climbing,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion"
+msgid "Acceleration in air"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Enables parallax occlusion mapping.\n"
-"Requires shaders to be enabled."
+"Horizontal acceleration in air when jumping or falling,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion mode"
+msgid "Fast mode acceleration"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"0 = parallax occlusion with slope information (faster).\n"
-"1 = relief mapping (slower, more accurate)."
+"Horizontal and vertical acceleration in fast mode,\n"
+"in nodes per second per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion strength"
+msgid "Walking speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Strength of parallax."
+msgid "Walking and flying speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion iterations"
+msgid "Sneaking speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Number of parallax occlusion iterations."
+msgid "Sneaking speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion Scale"
+msgid "Fast mode speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall scale of parallax occlusion effect."
+msgid "Walking, flying and climbing speed in fast mode, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Parallax occlusion bias"
+msgid "Climbing speed"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Overall bias of parallax occlusion effect, usually scale/2."
+msgid "Vertical climbing speed, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving Nodes"
+msgid "Jumping speed"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Initial vertical speed when jumping, in nodes per second."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water"
+msgid "Liquid fluidity"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving water.\n"
-"Requires shaders to be enabled."
+"How much you are slowed down when moving inside a liquid.\n"
+"Decrease this to increase liquid resistance to movement."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water height"
+msgid "Liquid fluidity smoothing"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water length"
+msgid ""
+"Maximum liquid resistance. Controls deceleration when entering liquid at\n"
+"high speed."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving water speed"
+msgid "Liquid sinking"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Waving leaves"
+msgid ""
+"Controls sinking speed in liquid when idling. Negative values will cause\n"
+"you to rise instead."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Gravity"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Acceleration of gravity, in nodes per second per second."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Fixed map seed"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving leaves.\n"
-"Requires shaders to be enabled."
+"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 ""
#: src/settings_translation_file.cpp
-msgid "Waving plants"
+msgid "Mapgen name"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"Set to true enables waving plants.\n"
-"Requires shaders to be enabled."
+"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 ""
#: src/settings_translation_file.cpp
-msgid "Advanced"
+msgid "Water level"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS"
+msgid "Water surface level of the world."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Max block generate distance"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"If FPS would go higher than this, limit it by sleeping\n"
-"to not waste CPU power for no benefit."
+"From how far blocks are generated for clients, stated in mapblocks (16 "
+"nodes)."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "FPS in pause menu"
+msgid "Map generation limit"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Maximum FPS when game is paused."
+msgid ""
+"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n"
+"Only mapchunks completely within the mapgen limit are generated.\n"
+"Value is stored per-world."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Viewing range"
+msgid ""
+"Global map generation attributes.\n"
+"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n"
+"and jungle grass, in all other mapgens this flag controls all decorations."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Biome API noise parameters"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Temperature variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Heat blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale temperature variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity variation for biomes."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Humidity blend noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Small-scale humidity variation for blending biomes on borders."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V5 specific flags"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Map generation attributes specific to Mapgen v5."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave width"
msgstr ""
#: src/settings_translation_file.cpp
msgid ""
-"View distance in nodes.\n"
-"Min = 20"
+"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 ""
#: src/settings_translation_file.cpp
-msgid "Screen width"
+msgid "Large cave depth"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Width component of the initial window size."
+msgid "Y of upper limit of large caves."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Screen height"
+msgid "Small cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Height component of the initial window size."
+msgid "Minimum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen"
+msgid "Small cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Fullscreen mode."
+msgid "Maximum limit of random number of small caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Full screen BPP"
+msgid "Large cave minimum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Bits per pixel (aka color depth) in fullscreen mode."
+msgid "Minimum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "V-Sync"
+msgid "Large cave maximum number"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Vertical screen synchronization."
+msgid "Maximum limit of random number of large caves per mapchunk."
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view"
+msgid "Large cave proportion flooded"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view in degrees."
+msgid "Proportion of large caves that contain liquid."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern limit"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of cavern upper limit."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern taper"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-distance over which caverns expand to full size."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern threshold"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Defines full size of caverns, smaller values create larger caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon minimum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Lower Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon maximum Y"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Upper Y limit of dungeons."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Noises"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Filler depth noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Variation of biome filler depth."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Factor noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid ""
+"Variation of terrain vertical scale.\n"
+"When noise is < -0.55 terrain is near-flat."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Height noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Y-level of average terrain surface."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave1 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "First of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cave2 noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Second of two 3D noises that together define tunnels."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Cavern noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise defining giant caverns."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Ground noise"
msgstr ""
#: src/settings_translation_file.cpp
-msgid "Field of view for zoom"
+msgid "3D noise defining terrain."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Dungeon noise"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "3D noise that determines number of dungeons per mapchunk."
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6"
+msgstr ""
+
+#: src/settings_translation_file.cpp
+msgid "Mapgen V6 specific flags"